- 在线时间
- 13 小时
- 最后登录
- 2016-2-1
- 注册时间
- 2015-4-15
- 听众数
- 10
- 收听数
- 0
- 能力
- 0 分
- 体力
- 68 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 40
- 相册
- 0
- 日志
- 2
- 记录
- 0
- 帖子
- 37
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 2
升级   36.84% TA的每日心情 | 怒 2016-1-29 14:03 |
|---|
签到天数: 16 天 [LV.4]偶尔看看III
- 自我介绍
- 暂无
 群组: 2015国赛优秀论文解析 |
%PA 6月6:0:0 计算的MATLAB 程序如下:BP神经网络预测$ W. k: K% P9 M3 P; U' D4 W
%6月6位于第28行
! [9 Q5 P( \( fclc,clear4 m1 P. {- v* d4 Z K2 D
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
, q7 ~: h+ Y U7 e9 B9 Z$ GPA=PA(2:29,:);
( l! l q/ ]7 F' O& [9 N! t%数据的标准化
: Y7 L1 Y {7 CN=size(PA);2 d( s5 n/ ] o' e; b
for j=1:N(1,2)* t+ y2 n L5 \
PAHminmax=minmax(PA(:,j)');% e7 p v; ]" p8 Z' A3 X/ f4 k
for i=1:N(1,1)
2 y( s: p( E ^& x9 s# e PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
$ k6 n" u$ j1 p8 g end
0 F B2 j+ J2 e8 B: uend& r( _/ L+ w3 X
%以每天的从0时计数起,每隔十五分钟作为输入
S) N% Q3 S1 i$ F8 ?P=PA(7:27,:);
. y0 R' V+ n# d. Q7 ^( d, {%以6月6的间隔十五分钟的发电量作为目标向量
- d- t' K; N' `' b: P) qT=PA(28,:);$ h0 @6 u, I% C( U- L
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,, I- a Y. h/ {% D3 W* s
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,$ _6 k+ |+ q6 s( E
%训练函数为梯度下降函数,即标准学习算法$ \& y3 t* v9 L7 v) J1 a
for i=1:21/ _9 r+ k' Q+ F: T' J
a(i,1)=0;
- Z. l2 M+ K9 x a(i,2)=1;
* d! S+ b0 d4 }% o& [/ Rend2 m" k* q9 e q4 b; X2 y& Q
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
; S, @: M% s* unet.trainParam.epochs=30000;
. s5 i; g6 I5 ?5 Tnet.trainParam.goal=0.01;
0 I0 t. M" U1 V) v! b%设置学习速率为0.16 P8 }9 l4 k. c- O7 V6 H4 U
LP.lr=0.1;
4 g5 e) J: B# o" S' |%训练网络
6 o9 ~* y7 v5 B' q3 Y: }& J% ?net=train(net,P,T);* b- u( s% g1 N: O) I
%预测6月6的发电量数据
$ W9 f5 k7 h4 ]1 AT1=sim(net,P);%预测值
j5 D3 ]) X& r$ P" F% @! R%PA.6月6日发电量真实值
0 G; s$ m1 y% `5 s8 Z/ g/ bT0=PA(28,:);
9 Q1 d- W6 C8 r) A%预测值与实际值的误差) C( I2 s2 ?$ D/ Y/ E6 C
for i=1:N(1,2): x( X, w& K" K! A- W
error(1,i)=T1(1,i)-T0(1,i);% O2 o0 Y+ f# P6 _8 Q
end
- i: d& @' O6 y%绘制误差图1 S( X: H: a9 H7 u& P
figure(1)2 u) m6 u/ t; b+ X! |
plot(1:N(1,2),error(1,1:N(1,2)),'-*')" F4 g o# |' X3 m$ d
grid on
( V4 c# I' S' qxlabel('时点x'),ylabel('发电功率误差y');
( n& f* l6 A4 N, j5 ]9 Ytitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
d4 j& k1 [/ H" S, M4 P* ~/ O%绘制实时函数图
7 C6 [9 H8 l7 {& `3 i' Pfigure(2)6 R4 k* S) l1 a; F+ d, H6 P
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')) N- s0 E. F# e- g! Q
grid on
9 f @9 ^# ~& d3 u$ k* m4 }legend('实际值','预测值',2); U* x, V# Y+ R: [! I1 L4 Q8 _
xlabel('时点x'),ylabel('发电功率y');% ?; ]- M+ K' H
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
2 l7 m ?9 g; M* M$ | web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
' }- t; Y1 A. t$ D
1 ^' j) {8 g9 x9 o" F( Y
S3 e8 h. s" G2 N0 @/ R: w( U2 p. z
* _/ ]; w& W. t- W! F) ~3 w5 \% t一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
- T; W$ s3 L! R: x& B2 C) p6 {. ~, V
|
zan
|