- 在线时间
- 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神经网络预测
; }9 K R- S% \$ h7 v%6月6位于第28行
% y; a- W! X5 W7 E* Gclc,clear
" J' B. ~# h! J! g. A. B7 |load ('data.mat')%原始数据以列向量的方式存放在workplace文件中; W- l% a5 L! }: F1 v
PA=PA(2:29,:);
, o2 X G* [6 l$ X }4 O%数据的标准化( Q9 k' i( \+ S! e: }& }+ H
N=size(PA);7 J) [2 i2 x( A( u; l
for j=1:N(1,2)/ E) m3 L* m/ l7 c/ Y: E
PAHminmax=minmax(PA(:,j)');2 {' I' R0 ^- s) f; O9 v
for i=1:N(1,1)$ T" h% t/ K0 C/ b& w6 V! p
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));' s9 d' V1 d- u
end3 }) B- v3 S: y
end! h0 h; ^( D/ Z# ]0 J& I% ?) N4 o
%以每天的从0时计数起,每隔十五分钟作为输入
; R8 o" W0 r( Z4 k, r& \P=PA(7:27,:);
. P8 `, ]* E% {. q7 X%以6月6的间隔十五分钟的发电量作为目标向量/ y* F, G2 D& k7 f* y
T=PA(28,:);% W/ O6 n. w/ P" h3 v
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,- h4 h; K- R8 T8 Z. q2 R
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
5 f( q3 D8 v- @' v%训练函数为梯度下降函数,即标准学习算法
+ {3 {: B U9 A5 B1 H! u& v. ~% H# Bfor i=1:21
# l; P0 ^. B7 ]$ d a(i,1)=0;1 c$ n" ?6 k8 r' H0 s
a(i,2)=1;
" j# [' l' s- x1 W5 }( I, rend
: P. \ p* P; z% g5 E( ?net=newff(a,[21,1],{'tansig','logsig'},'traingd');
. R+ H7 ?5 D4 k( `3 C9 O6 dnet.trainParam.epochs=30000;/ d! V: M; |% P& {% {! O8 t
net.trainParam.goal=0.01;
' y0 S7 f9 r, h0 e! ?2 {/ K%设置学习速率为0.1
4 R0 q) q& K4 DLP.lr=0.1;
+ R, e5 f( B4 _% ?%训练网络8 V+ l* f& V- \4 d) \: y' l, C" h6 f) `
net=train(net,P,T);
" O# R* P0 _! K0 E m%预测6月6的发电量数据$ ~3 s! Z* x6 G# d" Q$ Y
T1=sim(net,P);%预测值
5 k2 Y1 H8 P P1 T8 X6 z%PA.6月6日发电量真实值/ X' d. M$ G# }
T0=PA(28,:);0 r$ I+ d0 L% J- R
%预测值与实际值的误差$ {9 J$ [; b! c( p: R- r8 ]
for i=1:N(1,2)
) J& O) W+ J/ N/ u. S error(1,i)=T1(1,i)-T0(1,i);9 Z, l9 H1 J- p: G( \
end
0 H7 Q8 \, C: ^: V$ {%绘制误差图
& i4 K7 q6 `8 x% qfigure(1)) F. q& K' i' ^6 n# i3 I
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
9 i3 M! n2 @3 e5 Y2 dgrid on
- X$ ~% U( E* l: N( E" A8 q' zxlabel('时点x'),ylabel('发电功率误差y');
+ ^. }4 }: n* u8 h# htitle('PA6.6.0.0-6.6.23.45发电功率误差图像')2 \0 m; S6 Q# p. y4 I6 ~
%绘制实时函数图$ P2 [0 J" |+ M
figure(2)
$ ?! b% R+ O# H6 Pplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
. \. f/ @( D9 b! o6 }, rgrid on7 p; ^' m5 Y* `7 B6 T. C
legend('实际值','预测值',2)0 I7 |( i" {! z% p9 s3 t, q; W J5 @
xlabel('时点x'),ylabel('发电功率y');( d' C3 B9 l% G% s. I( G
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')' M& Q+ [. u* |% `2 ~
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')3 @% w3 Y& ^1 @
, E3 x$ }6 d# w0 I: H5 p! b" f% D
7 h2 f/ A& B8 c5 Q) r, p0 F
( g* I8 H8 [* M- O8 p' r7 ]
3 d( ?( K7 _ w% L6 v6 V% r! S一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
) L l! p. H8 r$ ^! U
7 Y: X& a2 S6 U( m4 Q* x n |
zan
|