- 在线时间
- 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神经网络预测% E6 q2 ]- ~; _$ K
%6月6位于第28行
2 Z% P) I; {0 u. m" p) o! ~! C) ^clc,clear
. c( C, o' `, |0 Z- y$ k1 ^" rload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
0 u' K3 a7 f" d6 u0 \' I b5 zPA=PA(2:29,:);
m0 E5 P, u% C! S M1 ?; E%数据的标准化
9 G( W$ f3 b( V- G# B# L% F1 x5 hN=size(PA);
8 J8 X7 L: B1 t: N# N( @/ ifor j=1:N(1,2)9 Z" Q- J A4 L
PAHminmax=minmax(PA(:,j)');
' Y3 o7 M* I+ Z4 U for i=1:N(1,1)3 c( m% _( o/ |3 y7 ]
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));* n2 r, s. a6 z
end
, @+ w0 t' ]) H2 ~( mend
- C# c% s! o+ {& Y& g6 a%以每天的从0时计数起,每隔十五分钟作为输入8 ~$ `7 c. z; e& J- i
P=PA(7:27,:);, O9 Z9 z. s% K/ g
%以6月6的间隔十五分钟的发电量作为目标向量2 D! w6 L! F7 S( S
T=PA(28,:);' E6 h5 c0 Y6 o t
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,+ V* I+ o, O: }0 z& Z, p
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
$ h9 D7 t, o& t! H6 z* x%训练函数为梯度下降函数,即标准学习算法
6 R$ z4 B9 ^( p" d& U: rfor i=1:213 w3 P3 C$ u- o: ?+ e* n
a(i,1)=0;
" B; b) F! j$ e. A7 o5 Z. z a(i,2)=1;
7 W, _1 M" D, G. W; s! @) X" yend8 x, c9 O( B# b- z5 d, W8 f+ [
net=newff(a,[21,1],{'tansig','logsig'},'traingd');: F' @4 z1 T/ v. p; k2 q; I& w
net.trainParam.epochs=30000;
. R# [* y4 o+ L8 n( Gnet.trainParam.goal=0.01;
# F) H' f; j" z6 c/ h) v% T2 o%设置学习速率为0.1" W; h4 b% P$ q! f
LP.lr=0.1; |% z- M% E+ K3 L0 _5 B
%训练网络
. D8 G ?# H- c3 F3 Y" \net=train(net,P,T);
* L$ E3 b* E0 m* Q! U% H ]%预测6月6的发电量数据' t1 D5 @9 N1 M7 G
T1=sim(net,P);%预测值- R; T, z* ]9 o2 O
%PA.6月6日发电量真实值' |& v% D4 [9 J* O4 G1 F
T0=PA(28,:);
3 F0 ^% p C+ }& {8 l$ S%预测值与实际值的误差
p' O" x4 C4 ?5 ^% D0 \/ Y* hfor i=1:N(1,2)
0 s; W- f) Z% ] error(1,i)=T1(1,i)-T0(1,i);( }% H, b9 h, G3 A# P
end
1 C# R+ M9 J) }5 A+ {# @& N( I%绘制误差图$ Z4 \5 y5 n' k3 y$ j* h
figure(1)
' v6 J( R/ G; A3 V! `plot(1:N(1,2),error(1,1:N(1,2)),'-*')0 x& }& S8 K+ L4 B+ M& Q
grid on
$ b/ D8 n0 m# a6 P7 {- Y( Bxlabel('时点x'),ylabel('发电功率误差y');$ g# j) e/ q* M
title('PA6.6.0.0-6.6.23.45发电功率误差图像') W$ y7 w) V- v5 L B
%绘制实时函数图
# l% x9 ?6 p/ }3 Xfigure(2)
% [# ?( y, k' m1 _% Gplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
& G1 D8 r$ I) h$ sgrid on. G: g" Q/ K5 ~6 e* n/ H+ C6 o
legend('实际值','预测值',2) ?0 a- {/ q* {# [
xlabel('时点x'),ylabel('发电功率y');$ S4 q1 |. `1 s% w( l' }( g
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')1 d; ~' @, x; I/ h
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')* n L4 l7 e& O' T
4 P5 V L* t* m9 g$ d
1 ?/ I$ L) ~/ c- h
4 D+ S6 }$ h/ ?: n3 d- Z4 z
p5 O2 ]0 o( u) X5 l& I一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
, m" L% q6 P8 O6 f7 ]8 }1 ]5 C5 M& Q- {& c1 g
|
zan
|