- 在线时间
- 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神经网络预测3 ?7 e2 u" i) H/ r
%6月6位于第28行
$ [1 U& t4 E& D0 Nclc,clear4 @. a$ n0 }# _/ w
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中0 p. c# M, m3 {( I. w
PA=PA(2:29,:);4 V' s* d% s, l+ G3 {- S
%数据的标准化) A9 q4 u8 C8 Y1 Z$ j4 y% C
N=size(PA);
3 E! s) T& q; M# b- D) i* \for j=1:N(1,2)0 {) m& n, o1 L2 K( Y; O
PAHminmax=minmax(PA(:,j)');. U8 \# O, g3 a3 W7 M) Q
for i=1:N(1,1)
' i" ]8 b3 s. {, B PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
; D% Q; U7 A- _" B# g, P end
' ?. O* E, c3 B- ^3 V# {end
' `+ v) V6 y& [+ q) s9 C7 R! T%以每天的从0时计数起,每隔十五分钟作为输入1 D! p( j3 R+ D7 G- l. V! P
P=PA(7:27,:);
9 I# _; u0 |- z%以6月6的间隔十五分钟的发电量作为目标向量
0 `8 l3 e" G% q! [# l' d/ _) v( WT=PA(28,:); Y4 N: `; c7 v6 r& ~$ H- K. }& P
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
; M4 O' G) p2 O) D' \7 |# l%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,( j9 l( ]& m% C6 E( Z
%训练函数为梯度下降函数,即标准学习算法" l3 r2 c' V. a+ r! }
for i=1:21
; [. r- U% ~; }+ O6 H3 j1 Q a(i,1)=0;
, a# W7 P0 y; u+ O a(i,2)=1;
3 ~: R' S& U/ L1 r( m. `end- n4 R! O% E/ ?2 l5 n
net=newff(a,[21,1],{'tansig','logsig'},'traingd'); G0 l- Z/ |! \8 Q+ N1 d4 l
net.trainParam.epochs=30000;
& g7 s0 [0 Y, Jnet.trainParam.goal=0.01;
6 N+ V5 d3 s$ F1 ^%设置学习速率为0.10 R+ e6 D; G8 u- N+ P2 d+ E( c5 A
LP.lr=0.1;3 n* q4 B; L- R( U2 G: {
%训练网络
5 U- n% G5 y# x Gnet=train(net,P,T);$ z3 k/ W" J2 q. C
%预测6月6的发电量数据
/ l# k. H' c+ eT1=sim(net,P);%预测值+ P% ?! A3 V; o* W
%PA.6月6日发电量真实值' X$ F3 V k! \5 S
T0=PA(28,:);
6 x {+ ^7 }' E$ `; N- {%预测值与实际值的误差( s: M s9 k) l
for i=1:N(1,2)
9 J& j: S, X6 H% l: e9 X% `: s/ P error(1,i)=T1(1,i)-T0(1,i);: j5 P# ]/ }& z5 v; A6 P7 z7 U( @3 V
end8 j- P# q9 ^& ?; y
%绘制误差图
0 [) \' x+ S, a5 V; C {0 rfigure(1)+ o, `- q, k% M) |" G3 o
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
0 n2 O4 B+ q( Rgrid on7 t3 X6 `5 H8 k0 q) `2 z
xlabel('时点x'),ylabel('发电功率误差y');; v4 r" H' ~( u: h+ i; b
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
2 }+ }/ B4 F! o+ M%绘制实时函数图# L" ]( D+ }' @4 H p
figure(2)6 A" m3 [* n! }! i- }- `( \
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
8 g" ^7 V# a9 z: K% ?- P- r) ggrid on# U! ~& A7 k$ s# d6 l4 Z( {2 R
legend('实际值','预测值',2)
$ ^6 n6 P9 q* V# Oxlabel('时点x'),ylabel('发电功率y');0 Z, O5 n. j% q. D7 o
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')- y9 I$ E7 N0 n+ e. ]: w
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')% B) _( U+ q9 _( T0 ]
( b5 K( {! F Q" e9 z
0 X' m4 Q, i& O9 B
8 A) r8 P8 g7 y, r4 W- B) u) f7 t6 H+ X! p0 E
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?+ b: ^$ p1 B$ l; c; f
$ B5 N2 ~2 [, E* E* n# w$ j5 K; h
|
zan
|