- 在线时间
- 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神经网络预测; M) O7 y p+ ]) n/ v+ o
%6月6位于第28行2 V: ?, ]6 R' Y7 ^) [ _
clc,clear
! k, x k; s' ~5 `# U9 X" @. Bload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
) d; M% L5 W+ P- g' c' JPA=PA(2:29,:);
7 ?) R _* Y# T3 x%数据的标准化9 Y7 t# i' X" b0 d
N=size(PA);
* v4 a9 g0 u; A$ E$ Qfor j=1:N(1,2)
/ X2 K, t6 i f8 }% S) m6 `1 V PAHminmax=minmax(PA(:,j)');" {1 b: O$ w) ~1 \8 F
for i=1:N(1,1)$ T: Y6 K: U7 J6 H
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
, P$ [$ e1 r$ D0 v# A8 g end9 y1 K5 _* y5 [) o
end
& g( E3 i1 p) O, i+ m: N9 d%以每天的从0时计数起,每隔十五分钟作为输入/ w% ?% K2 ?! P5 _! ^4 V& T
P=PA(7:27,:);
( R! d! ?4 ~* Y1 S7 Y%以6月6的间隔十五分钟的发电量作为目标向量
( q! n6 H' `$ r% H' oT=PA(28,:);
0 `; D: M7 O6 c; m%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
* P/ @3 J; S! s1 X# ?%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
6 k0 r% D3 `8 L' s%训练函数为梯度下降函数,即标准学习算法4 X' |9 N I2 c$ K4 w5 v0 v: f
for i=1:21- n% }' {" V9 V; e o) Z0 V
a(i,1)=0;) v( R& Z0 m( z- q
a(i,2)=1;/ M4 m5 C' f* N/ X
end
0 [- `- e8 K; H* U/ lnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
3 B+ [+ M& j) o/ r& D/ ~6 K- Onet.trainParam.epochs=30000;
# Z# r/ L7 `1 w" E, Znet.trainParam.goal=0.01;$ _6 _7 {4 z0 _- Z8 J' x* t. j
%设置学习速率为0.19 y& Q! ]* _: S* z! g
LP.lr=0.1;; Y Y! ~ Q, q
%训练网络
7 b6 ]* J( L( H# K2 Znet=train(net,P,T);
# Q/ ^ A: f3 A3 {%预测6月6的发电量数据
$ c6 X! k5 l/ Z! w+ j. n4 D7 UT1=sim(net,P);%预测值
* e, L0 ?* k8 d n% F8 {9 A%PA.6月6日发电量真实值/ ]# c7 ]6 p. N7 S% t! x) W
T0=PA(28,:);1 \# B1 p0 H9 `( q y
%预测值与实际值的误差' N6 R# x* [8 k
for i=1:N(1,2)* v7 z' [1 Z# }+ p
error(1,i)=T1(1,i)-T0(1,i);1 ~% _+ K h }. W) Q- C( N$ n
end
9 e; ^2 }% V* C2 i# z/ _# t%绘制误差图
4 U, G0 K; ^4 B. K7 g; f( v, pfigure(1)7 F& j; L3 n& J# O5 D' G+ C
plot(1:N(1,2),error(1,1:N(1,2)),'-*')9 b2 e2 C, M" ^0 H4 u, e" l
grid on
6 Q0 Z4 d0 K0 B5 p9 z a5 oxlabel('时点x'),ylabel('发电功率误差y');! Q, R8 D7 `* u. a3 Q1 ^( ^
title('PA6.6.0.0-6.6.23.45发电功率误差图像')) u' x1 E+ P+ b! V
%绘制实时函数图
) J( l8 M( H: X; W0 y5 _8 b) [figure(2)
8 j! T5 a2 Y% P" N7 {plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')+ V; H( ^. w/ t; ^8 Q
grid on! d9 S- l9 ]2 X# B2 Z ]
legend('实际值','预测值',2)* q. j6 D9 g3 a- C
xlabel('时点x'),ylabel('发电功率y');% R/ N' b* l/ K) s
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
# I9 d- ?8 s+ N3 k6 ^) v web('http://www.ilovematlab.cn/forum-238-1.html','-browser')1 E2 E, B/ k$ C2 G' t- t
0 H! O) X8 @( b. u7 S H6 y, b0 }
$ b8 z( J S+ _# G
3 w% }' o9 M- H( P2 C- D
* V5 r9 Y$ Y0 q+ S! a/ \0 e* V
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
1 e7 }, S. F7 v& z: G7 _
% R9 K% p# e/ G- @/ k" I |
zan
|