- 在线时间
- 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神经网络预测% K) ]9 ^6 ?! H! ?' P6 k
%6月6位于第28行8 h" J) A6 b! P4 }3 `
clc,clear1 ^8 v4 X) ?3 Q' c F, z: a
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
; Q& T1 I3 O, LPA=PA(2:29,:);2 O8 d. W" L% b( v, P1 {$ {4 f
%数据的标准化
+ b" E; J% Y7 P: {! RN=size(PA);& `9 Z$ u) B v$ _
for j=1:N(1,2)
3 p4 T+ S& Y9 i0 W* Z) \. _ PAHminmax=minmax(PA(:,j)');* m0 c! V! f/ ^9 t. H4 ^
for i=1:N(1,1)
: L6 x! |* _5 f PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));) O- F# ~% t* s$ @; M7 u/ S
end4 B5 X6 A# S# M4 ?. _) W% i% Z
end- n2 ]* W& F; ~1 ^# C
%以每天的从0时计数起,每隔十五分钟作为输入+ }" H c4 M$ v* U2 u2 o: o' O8 c
P=PA(7:27,:);
4 G, o- E/ z. i* P0 g" b%以6月6的间隔十五分钟的发电量作为目标向量
0 D1 u+ S! q0 ^( D: @6 u* ZT=PA(28,:);8 _; ?; K5 M# o h0 T
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,# ~/ c9 p4 s* z& t
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
( E3 f/ Y, i4 L! `! _' p; c* J* l%训练函数为梯度下降函数,即标准学习算法5 M: m' N e- u$ \
for i=1:21
# J8 l( j! o8 ~- [- g+ x4 { a(i,1)=0;' P x) ]2 {; @
a(i,2)=1;; T9 w1 {, }- i4 Z
end
2 V+ H, r. u) i1 q8 ynet=newff(a,[21,1],{'tansig','logsig'},'traingd');
# D* J" n2 z" h- enet.trainParam.epochs=30000;
$ G d$ k2 M1 R* a# V( d2 u; H/ fnet.trainParam.goal=0.01;
3 J- v, `) V q9 S6 D1 V0 ?%设置学习速率为0.1
, D) U. S' C4 h1 t* ^LP.lr=0.1;4 W$ p: S& E1 N
%训练网络. I. ]) B8 S% ]$ e& d% e
net=train(net,P,T);
8 T+ ?- G. _0 q( f6 R5 v7 o; n) L& F%预测6月6的发电量数据
2 o+ a ~& t/ f5 W* X% P( |T1=sim(net,P);%预测值9 q6 \& h; ^% ^1 T" d& z
%PA.6月6日发电量真实值) A x& T4 e7 ^6 v3 i' b* x# ?5 _
T0=PA(28,:);
! u* \3 v7 B! W0 D ^%预测值与实际值的误差, f; l! q6 I9 K2 k+ m+ S; b
for i=1:N(1,2)
* ?' C. G$ z9 U' _! @3 q! @ error(1,i)=T1(1,i)-T0(1,i);* ?5 Q. c6 C) I
end
% Q. p' I% `# V- I3 G%绘制误差图
9 G8 S7 z8 C' T5 \5 ^+ ~figure(1)
' Y& z0 J& q4 D/ P) x/ o# U) Eplot(1:N(1,2),error(1,1:N(1,2)),'-*')
. Q7 I- D7 g& l) C( Q$ Y. O" Vgrid on
. C6 `* ~1 C! z5 Q. o3 Y0 axlabel('时点x'),ylabel('发电功率误差y');
+ J" J: E! G0 ]5 E! u @title('PA6.6.0.0-6.6.23.45发电功率误差图像')1 K8 c5 e- G& |" _
%绘制实时函数图; n& @' e- T/ F' p9 u8 A
figure(2)
8 Y) Q) R6 Y7 k6 A* wplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')( _5 Y* p/ Q3 Q3 J
grid on0 w- M1 w8 B* b6 D
legend('实际值','预测值',2)
# j8 X2 O9 v. e. [1 yxlabel('时点x'),ylabel('发电功率y');
: h1 [2 m4 z# W+ ~title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')% u- F; b5 a% H/ q: V
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')5 g- y( J3 |2 \: c2 E. z
5 q$ @$ u2 a( ?
2 N; @9 [/ ^) A3 g/ \' U- W& ^2 b8 D& r% A5 V- t
3 L; j# o ~0 V$ d8 k; q, R( Z; t5 X一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?4 i& F: i- z- a) ~
4 U& H5 U8 ~) _1 w5 V: d |
zan
|