- 在线时间
- 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神经网络预测. m5 }( A0 x8 `5 p, i
%6月6位于第28行% a( ~8 r) j7 I3 t {
clc,clear
3 [0 a0 k2 T3 W1 E1 _5 n6 @load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
( i; n( `( b& Q+ {8 `PA=PA(2:29,:);0 E1 I2 w C# O, Y$ t
%数据的标准化4 l6 q j4 q- c. `+ z! p
N=size(PA);3 }7 { r2 u5 H S Y+ ?% Y
for j=1:N(1,2)0 i4 b |% @3 K& q; T
PAHminmax=minmax(PA(:,j)');
0 ^) z3 ?+ g0 P! ]0 n! _$ n" O for i=1:N(1,1)
& X V, a2 R1 E PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
3 j" m8 e ~4 A, }' ~( f3 ? end
- j' V$ A9 b1 S- J' Zend
/ E, L" X: P# @ A$ p%以每天的从0时计数起,每隔十五分钟作为输入$ R% O- p" _& E
P=PA(7:27,:);2 Q5 [- A; l/ a, Y5 ~$ t
%以6月6的间隔十五分钟的发电量作为目标向量
0 [* H$ i- N. o# a% y7 e* pT=PA(28,:);1 {. p# [1 X6 E! ~. Y
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,. I. Z" m) D( z6 q3 e" I: x# B
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,+ N) l/ ^: V4 E3 l3 b: |" ?
%训练函数为梯度下降函数,即标准学习算法* c7 |0 B; x. i
for i=1:21
3 U! }4 ^6 {1 @0 j a(i,1)=0;
W9 A7 v' z0 p a(i,2)=1;
5 z( b3 V; s2 ]; i- e# Jend
6 H' J' p/ s! |1 B' a7 N- Gnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
a' ~- E! |: B) l" W0 C% wnet.trainParam.epochs=30000;( [, D" q- W# ?. r6 z5 _- e
net.trainParam.goal=0.01;( c: b' E- V: h1 K
%设置学习速率为0.1) t. }. ~% c* V. u3 y
LP.lr=0.1;
) F4 T6 }" r4 r& `7 A" k& o' j& _%训练网络
) l- Y" l; H& Inet=train(net,P,T);
) J! F: B% G4 x9 M" v%预测6月6的发电量数据
8 R! D4 ~" z- [3 _& ?8 Q; F. BT1=sim(net,P);%预测值
8 H' p' P7 ^$ z! b5 b%PA.6月6日发电量真实值- m& g: [& W7 X: o
T0=PA(28,:);' f) R) J. h) [0 S2 }5 r6 L
%预测值与实际值的误差
, `3 I0 P1 D* I! d2 K# Zfor i=1:N(1,2)! ]# T/ z* O- s1 D" w# E
error(1,i)=T1(1,i)-T0(1,i);5 L. y/ u9 D( z- y, Y9 s8 `
end; `; Z: O! ^6 X! u) P* Y
%绘制误差图
9 j' |4 _9 x ~- M5 J( r1 [; {figure(1), R& l4 ~$ G' y% r( k
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
3 R/ H0 W; Z, Wgrid on* ~% l4 }1 P( |. k; {6 m: O
xlabel('时点x'),ylabel('发电功率误差y');2 ]6 q% j4 Y/ B4 ?) _% s( x9 H1 k
title('PA6.6.0.0-6.6.23.45发电功率误差图像')* s% P2 c6 K3 X6 i; G
%绘制实时函数图- |- [( h/ K. |/ Y- t6 H) e/ X
figure(2)
9 X( ~" m& E( pplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')* |. \; a* O/ l ^
grid on
- m2 h: w. O" y, Ulegend('实际值','预测值',2)+ C, l; O( a( k/ ?" a. v; i
xlabel('时点x'),ylabel('发电功率y');; P# r' r4 M3 T8 u) s9 @3 U q( L- J
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')6 i- X0 z9 E7 p. M! }
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
( ]# p2 R" Q( G" F7 K6 r" ^4 J" T! w8 v/ n. f
8 y) K* j6 q' n* K6 [
7 G& H7 s# z5 C) ^( d& @. [9 |$ A4 Z, }; C5 L# k& Z$ q
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?$ Q) ~* F2 P# v, q
: ]0 ~& A5 Z+ V* H- y( D
|
zan
|