- 在线时间
- 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神经网络预测& N5 j+ ]. a" J/ Z/ n
%6月6位于第28行& ~$ C! Q0 m( p, m
clc,clear
" g1 c- ?8 f5 V& `* t. \) M0 T7 p4 vload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
. P1 S8 g+ r1 h9 sPA=PA(2:29,:);( ^4 H* m' L' W9 T" c0 m
%数据的标准化
9 g) t! k$ H$ d, g& \' v% z3 I. y1 TN=size(PA);
! R, ?1 p! [: R, }- K$ d6 hfor j=1:N(1,2)
4 x' I: ^& e4 I PAHminmax=minmax(PA(:,j)');" T" v- X2 F; J: O$ I" j
for i=1:N(1,1): F+ @0 P8 \% t$ E7 B+ s+ q* X
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));4 `% C" b( w+ l
end
# S& f7 ?: I8 L9 k1 Kend
1 j/ @1 \# L5 v4 s& K; @4 n%以每天的从0时计数起,每隔十五分钟作为输入3 a! \: \- c! a: H# V# m
P=PA(7:27,:);
: z9 E( d; k; Y' n4 K3 L0 w%以6月6的间隔十五分钟的发电量作为目标向量
6 y! u) u: y) C D/ o/ z0 BT=PA(28,:);1 e1 I" Q# w! j
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
' F) n( u5 }* j: j%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,3 d5 o) E1 l4 ^7 m: l/ A1 d
%训练函数为梯度下降函数,即标准学习算法
( z8 S; b& z& h3 S1 c* cfor i=1:21
. Q0 s5 ^+ g+ g/ P a(i,1)=0;
! k6 C# E" R9 T+ w" @9 A a(i,2)=1;
0 y* y' z. V& L2 }% p4 G1 uend. _9 P; ^1 s# T8 u
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
- A) V+ S% u6 l% z2 ~net.trainParam.epochs=30000;
8 J! h1 ~2 }- N/ c$ gnet.trainParam.goal=0.01;
# \, L$ E }5 a" M%设置学习速率为0.1) m& K+ f1 u; p3 o
LP.lr=0.1;( O& b1 B: V. M, R4 Y
%训练网络
/ x+ M- d, ?- s: w5 Q# ]net=train(net,P,T);
* A1 p) v7 W3 n2 n X; C' ]3 D%预测6月6的发电量数据
% _ e, x- ~# p+ K8 x$ @: r1 B, U* rT1=sim(net,P);%预测值( c1 i: m% L/ z7 `% M
%PA.6月6日发电量真实值
+ q0 h/ X( P6 B% pT0=PA(28,:);
- E$ t: L, L- {& Q( i4 p%预测值与实际值的误差3 a/ c. w) H7 L5 s( M g# U
for i=1:N(1,2)% t0 G5 X9 [( N
error(1,i)=T1(1,i)-T0(1,i);5 v& ~" i/ ]- Z% T+ |$ ?1 d
end
4 J) ?% n: ?2 Y+ Y/ Q' H2 c%绘制误差图
* ]2 x6 \3 X! L+ v4 W$ b% rfigure(1)
/ u( n8 k2 b9 F8 u( }: S. {$ h8 rplot(1:N(1,2),error(1,1:N(1,2)),'-*')
+ U9 L- K) U5 P- n& u7 h4 ogrid on5 {7 q( @2 `) c6 C7 V
xlabel('时点x'),ylabel('发电功率误差y');2 ?9 a, ?3 a) ^7 s' W
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
( ~. E- ~! V+ n4 N%绘制实时函数图& E, @) | p. V! H! \- T3 ^
figure(2); F$ b& I- E; V, F% k4 Q9 W+ _
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
8 e5 V) A8 B* agrid on1 @! @( T& j& ]- R) ?- S( B# c2 c
legend('实际值','预测值',2)
% _% A/ D0 U% I. s, ~' J0 uxlabel('时点x'),ylabel('发电功率y');
. q0 L- P, p6 K. v: a0 {, Ktitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')- A5 F, c0 @# C* |! Z+ Q
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')8 J6 _" v& {+ C* M7 P
+ g5 c* x+ \$ [; ^1 K/ K- B' i+ B& j# R9 r
8 b* m0 D2 y* T3 l% r: N' |' U5 M: D5 e# [" Y; j3 G. G3 H
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?/ ?0 @% l' g7 L% E" R2 E
% K# I3 l7 P7 `$ B% M( z+ A
|
zan
|