- 在线时间
- 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神经网络预测
7 S b5 t5 h+ x' ~, x%6月6位于第28行
2 f. }- \9 v& g9 s- oclc,clear# L; v0 X, F8 s( Z) J( S* I+ f
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中6 W# b! l$ g' | q' C) C
PA=PA(2:29,:);" a5 [! K% I/ H
%数据的标准化; @( C4 Q: S5 L- _3 s
N=size(PA);) @' b# P% _2 \& o
for j=1:N(1,2)
9 N; k: m8 k$ \) X PAHminmax=minmax(PA(:,j)');
/ g" C# u" M; y! |% @; w for i=1:N(1,1)# E' U( A3 \$ u: B
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
$ `2 v; G: i \" X. O5 ^2 E end
" Y- S. ?$ u6 w" `8 J+ dend: ?, O5 W: X5 `/ y3 f S- k% [
%以每天的从0时计数起,每隔十五分钟作为输入
; b& P h- W1 n) Y8 B# dP=PA(7:27,:);* ^. ?: m) T) D; f- Y% Q
%以6月6的间隔十五分钟的发电量作为目标向量
9 q& ^) u$ l7 l9 h' k+ j6 Q* b1 PT=PA(28,:);
+ K l; z% n/ B% v1 e%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
5 E6 V% Y4 M5 {( i' n%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,3 \% M/ a5 N2 E. }& T p
%训练函数为梯度下降函数,即标准学习算法! d- j( s* \: q+ D# L j. B1 p
for i=1:21
4 s& O7 n2 G. _& r' }# K. V a(i,1)=0;
4 c3 z$ _- e: W+ Q, Q& \3 d a(i,2)=1;& j4 i& I) O( |5 @( @3 O
end7 k% v2 ~# p4 W/ ]2 h
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
1 l$ d8 }3 v3 h* u; X0 B( ~net.trainParam.epochs=30000;; @# b9 o0 Z% K
net.trainParam.goal=0.01;- K2 ^+ V% r& b+ l
%设置学习速率为0.1+ M4 y7 R& f! j) K/ h" Y& j) @
LP.lr=0.1;$ a* N) p& ~4 [2 B8 ^1 O9 C% e
%训练网络: Q# m" k& X$ a0 ?1 N7 h6 S
net=train(net,P,T);& U! I& J% I. N* [
%预测6月6的发电量数据
' H/ I( v, I! Q* X2 H+ c1 zT1=sim(net,P);%预测值4 ^! K) ^1 G9 L+ @+ N+ `+ H
%PA.6月6日发电量真实值8 H# ]5 v" s% v% s6 ]) |
T0=PA(28,:);
' ~2 a: |' G: |# u%预测值与实际值的误差' ~0 d: O& z5 y/ C& Q
for i=1:N(1,2)8 a) r0 h( P) X& {/ Z3 f
error(1,i)=T1(1,i)-T0(1,i); H3 L, R4 u2 S" C3 u7 B3 U
end' \2 |5 w8 Q2 f: B I2 ]
%绘制误差图
" q; k8 `5 \2 t/ ^3 }" [figure(1)
1 _6 o2 C: o' f4 f$ h$ zplot(1:N(1,2),error(1,1:N(1,2)),'-*')
7 _0 Y5 B( z. Mgrid on- T1 k" B8 w7 b+ `
xlabel('时点x'),ylabel('发电功率误差y');' o5 `# m! g$ }$ }5 ~2 a
title('PA6.6.0.0-6.6.23.45发电功率误差图像')% G! K, q1 A5 L
%绘制实时函数图
: s' _- t2 e8 ~8 J9 U5 s& \8 pfigure(2)
( L3 J# t2 R% u' W" N" `8 N: b- E+ rplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
; _2 c2 L2 o+ a" i# ^grid on8 ]) R7 w8 Q8 X0 x
legend('实际值','预测值',2)0 H) ?& ]9 U* P0 T3 q3 {
xlabel('时点x'),ylabel('发电功率y');$ `4 C. X: s& r' |) D% w7 J6 I
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
( ~2 k& K1 {; W web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
: m. p( R1 K8 D+ ^
# C4 V/ d0 [5 c6 J) o
1 C# o( m( _, R9 b8 t
# T8 J/ C. o# ?* n% C- Y
+ l. ?; j! K: ^一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?4 _; T2 d' V. \* ~( P) a
- E* I8 V7 u. F |
zan
|