- 在线时间
- 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神经网络预测
5 r- J, Z4 \) v9 f0 c7 X/ M. n%6月6位于第28行' v% E3 Z! s/ v; V$ D" B7 V
clc,clear t2 x) b$ s' ~; r: k; r
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中, g$ j1 g7 h5 ^% Y9 X* x
PA=PA(2:29,:);
: o9 M+ p6 E, u1 F% i; r3 ]: A%数据的标准化
# ~. d7 R9 J: G2 N: q1 iN=size(PA);0 M. Y4 f( n. o* N5 }
for j=1:N(1,2)
4 _8 w& `) q" w( z& }$ K PAHminmax=minmax(PA(:,j)');8 O5 j8 }5 ~3 c; U& e5 A
for i=1:N(1,1)2 Z* i5 [6 @5 u: A, v
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
& C2 ]& B7 ~: D% P* X* H* k. Y% W" S end+ V1 e$ c) N; G# B
end
. ?$ P0 `, Z- I%以每天的从0时计数起,每隔十五分钟作为输入0 V$ }4 F" h9 r9 L* w5 c: i$ ^
P=PA(7:27,:);: q: X: z: X% }) u" Q
%以6月6的间隔十五分钟的发电量作为目标向量
9 Y5 x5 h: F3 Q( @' k3 wT=PA(28,:);1 x9 E% b1 Q; n* n' _
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
3 Y7 \" f8 O6 K8 Z%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,8 z* Q6 G! F4 | @5 {+ z! R
%训练函数为梯度下降函数,即标准学习算法
- m- i! V4 A6 W- m0 o+ nfor i=1:211 ]) k Z2 F, Q9 V' W+ Q5 u' Y) o" p
a(i,1)=0;
5 V! c( x% T6 i! C5 J* h a(i,2)=1;
1 t# ~; f) z" o4 c2 L# |% Send" L2 F6 S5 Y( ^% g
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
- p5 ?2 {& h5 L0 {" Vnet.trainParam.epochs=30000;
( s! m0 [, w r/ c0 Q. ynet.trainParam.goal=0.01;( D! D( g3 t* N$ t
%设置学习速率为0.1
& C' K w% S+ f) W- OLP.lr=0.1;. S- H, ~/ H$ R, L% _6 s
%训练网络) J- u2 B- X: X7 J" |) ]) c U
net=train(net,P,T);
! p6 }8 @5 t4 A1 b) x H( l' u% L%预测6月6的发电量数据5 r4 t: ~6 R$ D5 E3 K. \
T1=sim(net,P);%预测值
9 o* f; A' X* z( B%PA.6月6日发电量真实值
# v) m# C |$ u2 TT0=PA(28,:);: |6 f; |6 g' b4 P
%预测值与实际值的误差
, H$ a P) S' U5 G9 ufor i=1:N(1,2)
& ?( K# H: H4 h* g- ]7 r error(1,i)=T1(1,i)-T0(1,i);
' ]' t' `) v) u" o) X% {: Q7 xend1 [5 c' o, r8 \+ U* }# g |
%绘制误差图, l. [* d! O$ z/ [5 @
figure(1): z- T m! g. A' R' E# F4 d! I
plot(1:N(1,2),error(1,1:N(1,2)),'-*') A. _5 P; i, C7 m( W6 F7 p5 e
grid on$ F, |5 S6 @) X2 `0 d4 r
xlabel('时点x'),ylabel('发电功率误差y');
/ z) q$ x7 X! v/ o Q8 D9 Xtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
/ }+ B6 r3 f% ]: [%绘制实时函数图
: D6 ^% b$ Z( I( b7 L3 ifigure(2)
3 B k+ G; ?9 L1 X' R% m/ R5 F( Jplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
# Z0 Q4 n# y+ Agrid on
$ r3 Q, |+ b3 {legend('实际值','预测值',2). X1 Z* Y: l$ y" M4 E
xlabel('时点x'),ylabel('发电功率y');
2 ]$ O; B" E6 c. A1 R4 b6 s/ M* G6 G0 stitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')+ E1 b" Q5 c2 l1 a% O0 t5 _4 _
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')7 `, [; l$ K# g0 o4 n" }3 I
5 X5 y) Y: E; y5 q0 M( C# e1 t4 l3 u" N- Z8 l8 f
4 b) s) E. f8 T' | `7 P0 l+ K5 y
0 G+ g$ x6 S5 L. l% H" y7 n4 q一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?& ?" z5 {( s( k7 o# W- J" k4 H
7 w, w) M- N% L* L5 l: f
|
zan
|