- 在线时间
- 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神经网络预测
8 y( j3 F: k$ ^1 I6 k%6月6位于第28行
6 {/ q; M& ^4 o9 T2 @clc,clear
( O) E0 ^% @% y9 w; [* z Bload ('data.mat')%原始数据以列向量的方式存放在workplace文件中; a9 F. U1 c7 H
PA=PA(2:29,:);
2 t2 z, t. G& i7 \%数据的标准化4 ^2 {$ Q" n _- W. p- |9 |8 ^
N=size(PA);
" c! {5 T( e; W. r- ^for j=1:N(1,2)- Q7 `4 @) c, } F0 j
PAHminmax=minmax(PA(:,j)');+ q# }5 d4 g. R; [4 l9 ]
for i=1:N(1,1)
R9 b. B5 _7 U PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));+ O% g) e/ ?+ N* n }5 |
end
- U' `! v- @" bend
; p# w0 K5 R* ~/ Q- B' Z4 E%以每天的从0时计数起,每隔十五分钟作为输入
) t* C3 t' ]9 L8 [$ p& P9 Z# mP=PA(7:27,:);& c: M/ f6 N' t' L' G
%以6月6的间隔十五分钟的发电量作为目标向量
' h" L% F+ W5 s& q' r- eT=PA(28,:);
3 D2 F. T! X0 b6 C- G) Z- L2 }%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,) ~; P0 z5 d' r* }4 a
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
0 F. p6 S4 y: }+ l6 R u% c: T%训练函数为梯度下降函数,即标准学习算法* `. A4 g2 g5 m2 E O0 Z* q8 v
for i=1:21% W. L: h* G) h( g/ E1 M5 j
a(i,1)=0;; E# A [" |; ?9 [
a(i,2)=1;7 X- V e! U. a$ S% r
end, x5 t! ~* ?. ]4 J8 y' G
net=newff(a,[21,1],{'tansig','logsig'},'traingd');1 ^. O6 Q- `' M9 E2 u1 c
net.trainParam.epochs=30000;+ I* F( N1 Q) W
net.trainParam.goal=0.01;
( D3 n! {& N2 {%设置学习速率为0.1) }3 Y( ?& ~# U" P! {* E6 m1 b
LP.lr=0.1;
/ n" M y: L s& c. h%训练网络; }& t5 F/ A6 I6 F7 i `
net=train(net,P,T);' P- l0 c* m* }$ M( r4 l
%预测6月6的发电量数据
) f" M4 L2 N" y' ~T1=sim(net,P);%预测值
7 c% B0 h3 V6 i%PA.6月6日发电量真实值
0 c7 W: C6 f5 m9 P& S( TT0=PA(28,:);7 |9 r7 \6 A8 s3 B
%预测值与实际值的误差4 V6 y/ [6 ?" c: Q
for i=1:N(1,2)( q; @9 j. z% {( ?: ] c, L- [1 e! q8 Q
error(1,i)=T1(1,i)-T0(1,i);
7 g4 `' l. j# U/ F9 z _. t* Jend
8 a# z B m1 T, ?& m%绘制误差图
' j* ?/ W" a, V$ I0 pfigure(1)4 ~; R7 z. { p2 X7 `9 h( d
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
% \# A7 m9 u2 B5 L- Q& Z, I" z rgrid on
. U2 ~1 J4 X' y# h5 c) \! wxlabel('时点x'),ylabel('发电功率误差y');- M& |1 ^4 q% g$ ^ m% c0 c3 D
title('PA6.6.0.0-6.6.23.45发电功率误差图像')% T0 Q+ M( F4 y" l7 A: n
%绘制实时函数图6 e# Z# j6 u8 k% }( f5 _
figure(2)+ {- C2 t' P+ y
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
, ]: |" ~: ^4 tgrid on) I" a. E, u. a. e% E
legend('实际值','预测值',2)
8 _! y9 [0 E- J+ I6 z& W7 U( J! x) rxlabel('时点x'),ylabel('发电功率y');
: |2 Q! E9 f$ q* n' ?* qtitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
7 ~+ W# c2 H. {4 {1 c \' x* f web('http://www.ilovematlab.cn/forum-238-1.html','-browser')2 R9 V& r8 s; b3 @/ k, S+ y
6 }! @" m. k& E6 x9 o8 B0 |" \+ W" j
8 c$ D- |6 G3 s. ^
1 {" g9 d" z2 r5 T. t$ w3 M% F+ ^3 r7 I7 J0 {$ w
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
( l/ Y( ]3 K; V8 [! d) {; x# M
! _6 R, a% G; h( {! [ |
zan
|