- 在线时间
- 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神经网络预测
" ^0 T# ^: _% E# C3 u A%6月6位于第28行/ P. ?* n) x! J9 [. i' _' n1 {
clc,clear( g5 W: T% }) T o1 p H
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
# w& j/ c2 d2 @4 a. RPA=PA(2:29,:);
7 x. l6 A3 f( M8 j5 z%数据的标准化# a' ]# V/ {6 s
N=size(PA);
, Z4 P" {( N6 W8 y& Jfor j=1:N(1,2)
- C# Q, M) C2 t% L PAHminmax=minmax(PA(:,j)');/ Y `/ G* m0 I8 H& W
for i=1:N(1,1)/ i+ y& @9 t" M
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));6 P8 B6 d/ Y0 x- @9 p7 x# T
end$ E2 s C" n& V
end- u0 f4 F- m# g4 i
%以每天的从0时计数起,每隔十五分钟作为输入; w; k; P' H9 ^% {5 k+ K) D
P=PA(7:27,:); `) ]5 Q3 P# `8 }
%以6月6的间隔十五分钟的发电量作为目标向量
, M7 p4 u; p# o; x/ e1 ~1 dT=PA(28,:);
5 r' q. c" m7 @/ f4 G& j" n4 y8 v%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,) w% [/ b* X% k
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
2 u5 J9 q+ n9 @+ k$ i% ]9 I%训练函数为梯度下降函数,即标准学习算法
+ t! `, _, g- J; v0 J) @5 b n) Ufor i=1:21
+ l/ N( d- l$ o" d2 K8 R0 c2 b/ _ a(i,1)=0;2 Y. U$ Q" W0 H: Q" |: G
a(i,2)=1;
: A4 F+ @- X& j$ S! O1 v9 rend
# K0 j J H4 u! M N+ J( N# h# wnet=newff(a,[21,1],{'tansig','logsig'},'traingd');+ s" l1 k# z5 a/ R& x; V
net.trainParam.epochs=30000;
# l$ N4 m4 w8 `0 Onet.trainParam.goal=0.01;
4 c/ [' L5 z' O( [%设置学习速率为0.1
+ O/ M9 j/ _! p2 Z: aLP.lr=0.1;
) \+ |9 z9 k- h# V7 ~/ z. v%训练网络+ P9 N: b5 ?% ^% y
net=train(net,P,T);
$ p0 g, q5 l9 a; d# ]%预测6月6的发电量数据
^9 z$ b3 A. M- X$ iT1=sim(net,P);%预测值3 ?5 h; V& K* S5 _- ?4 D" s
%PA.6月6日发电量真实值
3 E$ @- C7 u: N w1 l9 o5 uT0=PA(28,:);
3 r( ?8 z& X# d7 D%预测值与实际值的误差4 R5 K3 i ~; J7 f3 ^0 e4 n! C
for i=1:N(1,2); F) q5 q& }' G( K5 F5 W y
error(1,i)=T1(1,i)-T0(1,i);( Q: S! b9 _5 ?+ K2 J* m" K
end
/ S% }' l7 A2 r3 i/ r9 C2 m4 ^%绘制误差图
, T R7 m$ C4 n/ Zfigure(1)1 n& G B) Q* L: b) H2 p
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
+ u) w- Z1 k9 }5 b8 |grid on- _! N% k% b5 f6 G6 k" {) l) x
xlabel('时点x'),ylabel('发电功率误差y');
/ L( S! w$ W# ~6 M. n. ~/ R# ~: ]title('PA6.6.0.0-6.6.23.45发电功率误差图像')
; N' x5 t% g( [! F! o%绘制实时函数图# U/ c& H9 u) Y* ]2 p7 P+ t
figure(2)7 y3 L" c' @& h, {4 i
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
0 E! [8 t; b, Q1 R+ z+ @grid on
& z! g$ z6 z4 x, X' e# blegend('实际值','预测值',2)$ D( {; i/ j- P% b* y
xlabel('时点x'),ylabel('发电功率y');
7 N) I( W3 }! a* c7 [& xtitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
1 i, n, W2 [! I9 U# j' C; n web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
$ a8 d" `$ m! Y
8 f! M' F8 b _* E2 m7 M& z, D$ v3 y. N
3 }! R- X( ]+ b+ P9 k. l* v, W/ ]9 x9 H0 i
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
( T9 b& ?% t1 m0 e$ `! a+ {2 z4 R, u3 F4 }( b' O/ A
|
zan
|