- 在线时间
- 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神经网络预测. j/ q: B: F2 J. b ~0 D4 F
%6月6位于第28行
1 y1 e, x+ r0 R, f! Bclc,clear. h+ D$ f: w" o% @; x" K5 Q
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
6 ~3 j6 l" d3 y: v3 |8 _% E! dPA=PA(2:29,:);
J! `% [5 @$ H* C4 ~1 P( ~%数据的标准化: o9 J1 V4 w8 q
N=size(PA);" x3 f+ t/ d+ ~7 i& q
for j=1:N(1,2)3 L! e. `) G: Y
PAHminmax=minmax(PA(:,j)');% L- i( P4 e; [) Q7 U7 @+ D
for i=1:N(1,1)
4 e0 m- g8 c! x6 }% G PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
& ~) c4 D8 g! a7 D, Y end
5 J4 f' J6 z+ H: e- U; d) gend
1 b# f4 k/ E4 R2 S%以每天的从0时计数起,每隔十五分钟作为输入
' q `/ O( M: d! |: y/ S( [6 oP=PA(7:27,:);
* b3 t- P9 V: r8 [- ]%以6月6的间隔十五分钟的发电量作为目标向量5 h) u8 Y; l- T6 `; p% w! E3 f1 R
T=PA(28,:);8 B0 j J' ~# q+ L/ z
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
/ `" K/ G. C8 T* s. ?%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
& [! _7 W6 W, N, J4 B( B' A4 J%训练函数为梯度下降函数,即标准学习算法
- l, S4 ]7 W# V) N/ ?$ vfor i=1:21
4 E9 G1 f, ~- n8 s a(i,1)=0;
' V# n g3 O) a @4 r! n a(i,2)=1;$ [3 {7 @; X* i* B
end. \# L7 U1 o& i' h* X
net=newff(a,[21,1],{'tansig','logsig'},'traingd'); L9 }) N; Y8 J7 a' y4 x5 c9 }
net.trainParam.epochs=30000; \% b! c2 O" [ f$ [; d+ ^
net.trainParam.goal=0.01;( e9 G" O% C$ K; A
%设置学习速率为0.1
% Z; A2 `+ }$ K& vLP.lr=0.1;; Y$ r( ~+ V3 G, f5 F3 E! b
%训练网络- {8 _ X: p5 s- f) a
net=train(net,P,T);$ m( X* P2 r% y8 l
%预测6月6的发电量数据, w! S3 N$ J! P
T1=sim(net,P);%预测值
b$ s$ e; D1 Y" M%PA.6月6日发电量真实值, W6 X; i/ S2 z/ @
T0=PA(28,:);, V8 s* S& q2 _. d6 N$ W- i$ `
%预测值与实际值的误差: U, U3 I2 E1 d6 y- ~
for i=1:N(1,2); F+ I* x$ y4 h4 C$ M
error(1,i)=T1(1,i)-T0(1,i);* L# h3 ]7 h$ T* w
end
. _8 m+ F( `# |% ^4 J7 t%绘制误差图
* l% f( `, F5 |figure(1)
$ R1 {+ ?/ T) p& X1 k7 @- G0 i% l( ~plot(1:N(1,2),error(1,1:N(1,2)),'-*')
% ?7 m+ n& ?2 i% u. Rgrid on
9 o. `% j( n$ jxlabel('时点x'),ylabel('发电功率误差y');- b( W$ a% A; T% r1 @
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
0 ?2 ~4 ~, t: b. d%绘制实时函数图
) \! s! ?# i9 W: s, Lfigure(2)' \4 P- v2 _) W! E
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')" ^2 P0 l: A9 N; E: r& O9 B
grid on+ E. D6 H2 q2 [% Q! r9 {, |% l+ W
legend('实际值','预测值',2)! |7 p8 o- q2 Z" n8 |
xlabel('时点x'),ylabel('发电功率y');
1 |6 R( M# J6 V/ N8 O3 Ititle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
: D7 C" R8 K& r web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
* y/ e( l+ H0 d" S& H9 a5 { i
7 U1 ?* T2 B) D3 U7 J0 b* z, e T$ q! U/ I' m
% ~9 U* q; V' J1 S( x" Q9 I/ o! ^
" ?. D, t3 T: q, }
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
. m$ D9 P7 T' L+ e; \# [: _. K7 P9 I8 V8 f0 d* v; K
|
zan
|