- 在线时间
- 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神经网络预测% O6 B6 n1 x6 T P1 N6 ^5 I5 U3 r
%6月6位于第28行
8 Y7 I! T+ F6 v. Y# _clc,clear% q L& x5 E9 l- T/ X5 V/ }8 U$ y& [
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中* J5 {" m, Y6 M8 |& J) u& F( q
PA=PA(2:29,:);
- A9 Q4 D7 ]6 K7 |$ Q%数据的标准化
. j* O L$ w$ `, U; l4 L$ [N=size(PA);
# w& T# }1 _+ wfor j=1:N(1,2)
* S9 Z8 p( q7 z' n4 x' T o& { PAHminmax=minmax(PA(:,j)');
* x) W3 ` D0 s5 h for i=1:N(1,1)7 r m, f/ c) D3 @; C" ] Q0 n# D: r
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));; s# ^" _9 O, w
end# m! W& o" A2 g. a* o1 P, G( v
end1 f5 e' h' @! l4 O
%以每天的从0时计数起,每隔十五分钟作为输入
0 S+ m: o% T" V7 S ^- M a8 UP=PA(7:27,:);
% K2 h+ S. Y0 p0 I. R" S9 d; ?%以6月6的间隔十五分钟的发电量作为目标向量
% Y+ v+ M5 H+ Z# _: }( J1 uT=PA(28,:);9 A9 l, I# l* J, _* g0 r
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,+ [4 X. m) H# y! f: ?! w
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,9 m5 O7 u4 a9 |0 l% O
%训练函数为梯度下降函数,即标准学习算法
4 e5 V8 g1 b0 w6 x8 hfor i=1:21
) A* `4 f+ P ^. C( p1 w" [- I a(i,1)=0;
8 V2 C h2 R# F: n5 j+ o% ~$ @5 r a(i,2)=1;% t7 @/ q K; o# @2 l3 \
end
' q( p, D$ o( {& b* `net=newff(a,[21,1],{'tansig','logsig'},'traingd');
. f3 T9 I$ {# R c$ Y3 knet.trainParam.epochs=30000;8 S, _; a0 J$ v8 g/ |
net.trainParam.goal=0.01;
/ U2 u+ d/ v$ ]% N: N%设置学习速率为0.14 |" H8 g3 E' i; J9 X
LP.lr=0.1; z* r6 @( x6 M" G) p8 K6 x' Y
%训练网络
# p; Y/ y$ l6 {9 N Vnet=train(net,P,T);
9 y, ] R8 k+ d2 ]0 e%预测6月6的发电量数据% G5 \( {9 L8 S
T1=sim(net,P);%预测值3 t- L+ _: \* L' _0 T
%PA.6月6日发电量真实值
! A8 }; k w5 ~: qT0=PA(28,:);+ I. K9 V% Y" c" o! M9 k; H
%预测值与实际值的误差
% L( F6 [: t" T5 d2 P& I8 j) W# }7 Yfor i=1:N(1,2)
! E( v5 z: p0 ~& d+ i" i8 D2 p1 f error(1,i)=T1(1,i)-T0(1,i);) A6 a; J0 A% C7 J' z1 k, }9 ]. T
end
% H" s* A" Q9 N$ w% M%绘制误差图
1 w0 y1 g/ s# R! g/ p' G* zfigure(1)/ I* ^. A3 g' A0 c2 w' T1 \# S
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
5 _) s F2 |4 [* X0 a( K' i" @3 M, Bgrid on
; J: d+ _$ c+ L3 Kxlabel('时点x'),ylabel('发电功率误差y');
9 l( C" }) S) v Jtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')7 P' h5 u% B5 W( j9 u
%绘制实时函数图
+ u. K* z! \ j* z, lfigure(2)
! |* B* z, B* {& N0 Eplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
% s8 O. B) ~- `3 q0 }6 X# |- Xgrid on
9 f3 p9 J% c: D5 K2 blegend('实际值','预测值',2)
1 G# B* h* K! r- w- k" [5 H6 g! {xlabel('时点x'),ylabel('发电功率y');
' b0 ^( R0 ?: j( ?title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')5 D: c/ ~: S5 j
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
* x2 n3 x8 _; z# U% p
" M3 \$ z% ^$ [& E6 E* q* A$ O" j% T+ K1 K1 \
, v8 O- h+ D; |. m, Y) n2 o5 l6 h* ^- A
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?% H* b2 |* j- Y3 L6 ~% i& k: @
+ `8 v- f8 A" ], ? |
zan
|