- 在线时间
- 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神经网络预测
7 X0 J; |% G( X t8 O) f%6月6位于第28行
6 L) U8 k- h. ]clc,clear. V2 ]5 [2 w* D* i
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中& C6 @9 @# n# w5 m0 E
PA=PA(2:29,:);
; A5 E) j0 c, l/ X! y; y& K( L%数据的标准化; o* f( n; |8 h" K- \
N=size(PA);: b4 Q1 k( M: {& @% U$ u# G
for j=1:N(1,2)
) H3 o9 Y, I1 D6 T PAHminmax=minmax(PA(:,j)');
; D" y0 j% u- O1 h* U9 | for i=1:N(1,1)8 S% o9 w, T1 r% \* G, t( Q
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
* j6 W% Z: P; G) W0 C5 m end2 l; v0 ?0 V2 k
end
& n2 z8 y6 q: J+ s1 l8 c9 O/ i%以每天的从0时计数起,每隔十五分钟作为输入8 C- X m# R1 y# y4 P7 i2 {
P=PA(7:27,:);
$ M7 Y* Q6 y9 c- ]( s%以6月6的间隔十五分钟的发电量作为目标向量
6 x2 j0 Q& j/ v5 @T=PA(28,:);( W* i2 }8 q6 I+ \& G: D' l0 P
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,+ o& Q3 [& ^; ?, t ^
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,; X5 g3 W/ j$ k) Y; c: U5 N ?
%训练函数为梯度下降函数,即标准学习算法
! q! Y1 C9 y7 yfor i=1:21* p+ Y& b+ ^2 t" G$ q! y
a(i,1)=0;
- `, C" P" |9 a$ _! s( @ a(i,2)=1;1 ?' T [+ _6 h7 C
end4 r! e8 |. Q: e! Y, K
net=newff(a,[21,1],{'tansig','logsig'},'traingd');! [7 B7 y' ]: c# G& @+ E
net.trainParam.epochs=30000;
* U4 V$ S U |2 m9 }3 p% {- M7 Knet.trainParam.goal=0.01;$ p, ?+ c3 q% J% J+ q8 Z9 U7 a; m
%设置学习速率为0.1
, r9 Y/ W( F0 `# ? ILP.lr=0.1;
& v7 ^2 D& t9 c) F# ^# X7 D%训练网络. j' x0 |3 C8 J
net=train(net,P,T);
( N4 d* e5 D2 U. p3 C%预测6月6的发电量数据
6 q( x' Z q* R* U1 n* O$ H6 Q4 T; NT1=sim(net,P);%预测值
; _0 x9 M, S1 P8 i' a: s6 D3 d, ~%PA.6月6日发电量真实值
: k# `3 p4 k! A1 I5 Q- ET0=PA(28,:);; }2 C; k: L) K4 @, ]
%预测值与实际值的误差
" y. g3 M6 A, \2 bfor i=1:N(1,2)) A( G1 Z2 g; e8 k# R+ F) ]% X3 g
error(1,i)=T1(1,i)-T0(1,i);
; j: f( G( [, F$ a. t( Dend
5 E. u( g$ Z( l%绘制误差图: R( ^$ [1 i) ^6 z8 G
figure(1)( q7 Z0 E0 ?! {& b
plot(1:N(1,2),error(1,1:N(1,2)),'-*'); G! d8 f* y6 k; j7 n
grid on
: ]* p. H# g# z/ mxlabel('时点x'),ylabel('发电功率误差y');( j$ \, t3 E2 d# }9 L1 \) t4 M/ P
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
. p# t# M. ]7 z H%绘制实时函数图( p r2 X) w# s" p+ i* L& C0 M. u; H
figure(2)# W, ~# ~' w/ Y9 G K2 ]. d
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')8 j3 J. t6 V8 ]8 B; N/ g: O
grid on( t8 N2 R; B2 v
legend('实际值','预测值',2)! E7 \1 K2 o% K3 I5 ]% k4 x+ u
xlabel('时点x'),ylabel('发电功率y');
( e* O. W: }9 A; U4 W( }title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
/ I& E* n: a l% D, I web('http://www.ilovematlab.cn/forum-238-1.html','-browser')2 K3 o- ~. h9 i! e9 Z. O1 c
& B( o2 N4 t7 A9 a! p9 U% T, t, V" z$ Z
3 X. E: k8 @, j/ ]1 d/ {5 r- E
- t, t5 U0 z8 ~' L5 \/ R5 p% |. \一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
; F+ X: J4 H, ]' o' }- l% n
: M; o) k' C7 i* V |
zan
|