- 在线时间
- 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神经网络预测! U* n$ s# F K& S
%6月6位于第28行8 r6 E M8 S- O/ I4 E K' w
clc,clear
9 r' T J) ~9 `4 x6 O9 Cload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
% t7 g O6 D4 d1 JPA=PA(2:29,:);; v9 f/ n8 h) N/ \" v8 j
%数据的标准化
( z; |5 {: G& W4 C2 r6 X5 kN=size(PA);
5 o W6 C* X1 i% E k, Y' vfor j=1:N(1,2)* V: E9 x' i6 x I* Q
PAHminmax=minmax(PA(:,j)');
0 @( B# s# ]" B8 U$ |( J' W) J0 ?" G9 N for i=1:N(1,1)
( p3 s6 s6 ]6 k/ Y& b* ^; h PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
4 z2 s: P, f2 ]0 Z U9 h. d end
" q, \6 Z/ ~, |end4 n/ @3 n$ s3 G9 {: \* Y1 ^: K# L4 ]
%以每天的从0时计数起,每隔十五分钟作为输入
B9 s, f; [' J1 vP=PA(7:27,:);+ S3 ]0 ^ O, d' a6 a+ s
%以6月6的间隔十五分钟的发电量作为目标向量0 `0 S1 g6 h( L8 E1 n3 |" q% q8 K
T=PA(28,:);& V. h: {* h/ g' M: U8 O1 D+ L
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
2 l5 U1 u$ L) c4 H+ x%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
% f4 y% r* k+ N%训练函数为梯度下降函数,即标准学习算法0 u) n2 b% u4 C1 ^3 Y
for i=1:21
' w% W4 |0 w4 a# Y* v a(i,1)=0;
$ f& K0 S* V2 e a(i,2)=1;
/ B" Y& B* ]; _+ p7 r0 ~end
) U2 v6 E% y( tnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
4 F7 m/ H9 i* u. G8 t* Fnet.trainParam.epochs=30000;
: s4 \) ^ N: i! bnet.trainParam.goal=0.01;/ G/ I# }2 @: |: P3 |6 ?5 Y1 Y+ H
%设置学习速率为0.1
: J" b9 u% D! g8 N$ `& j! ~6 T1 eLP.lr=0.1;0 G( G6 V" o" {* O8 }! H, S
%训练网络
" s3 J8 k7 \: X. X qnet=train(net,P,T);+ s7 Q4 z& y: w, `8 t2 C
%预测6月6的发电量数据
: I6 v8 t9 b, @* sT1=sim(net,P);%预测值
7 _0 X# e3 u) m4 m' z5 C" g%PA.6月6日发电量真实值
' O, ], }; f' [# _T0=PA(28,:);
3 O3 d$ \4 \/ y: R- j%预测值与实际值的误差
; d: _. Z6 d- }/ ufor i=1:N(1,2)
: c* L1 b( j, e% d" j! a% [3 T5 y error(1,i)=T1(1,i)-T0(1,i);' I3 O$ m' a N5 g( d
end
) S& s6 [" U; h3 J' T, i# N! y%绘制误差图
* d9 H8 Y `' f Pfigure(1)
- W. w5 @6 z2 d# p- t) splot(1:N(1,2),error(1,1:N(1,2)),'-*'): q: T: q+ O( G# Y# e. a
grid on) Z4 N9 V1 s/ g4 j) K
xlabel('时点x'),ylabel('发电功率误差y');
4 c2 u0 k* L( I+ w( s9 ~' Atitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
7 J! P* e" w' f+ ~/ f%绘制实时函数图" T9 K9 s1 k7 d! j. b+ k
figure(2)
) K& g/ a! s0 A) x1 x, fplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')/ N& s6 y9 B# x" |
grid on
& z0 }+ j( H; Q2 ~$ B/ Ylegend('实际值','预测值',2)
4 Q1 ~! ]: I5 S9 @xlabel('时点x'),ylabel('发电功率y');
# H2 i4 k* [( j2 X: G. U2 O2 [title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
0 o/ G0 M6 K% K) v5 V! n web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
) \" }* k% a1 ~7 w5 d. n* K/ `- R( ~' q7 Q
- K, q* O$ h4 }5 x1 E0 H' J& l- @1 K, ~! F9 K
- u) X- y1 G+ [3 Q) p# A9 i
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
8 ^$ `% h$ ~& S* G, v$ z. }4 ?
|
zan
|