%PA 6月6:0:0 计算的MATLAB 程序如下:BP神经网络预测4 V5 I* q3 B& T- w- _6 m( ~. P
%6月6位于第28行 ! f3 w* d4 }9 Y2 E6 }' kclc,clear : u& c* y7 x6 w; [3 gload ('data.mat')%原始数据以列向量的方式存放在workplace文件中 $ h0 c- _" D6 J; |PA=PA(2:29,:); 9 W4 v5 P6 s; s! \9 h8 z/ ^%数据的标准化 8 w, h# i# `' q. @N=size(PA); 6 h/ q: A4 G$ R; a2 Qfor j=1:N(1,2) % [6 Z. O) n& p$ H5 |9 Y, j I PAHminmax=minmax(PA(:,j)'); 7 V- p3 h- [% a6 D. I& k for i=1:N(1,1) ) S6 ?% [) [( i1 J% r PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));) D, I! h4 [8 O+ H+ E$ e' H8 I( J
end # p6 X: [8 z P: v# a$ ]: Cend : T ^! e' F% Y( g% h. z& f%以每天的从0时计数起,每隔十五分钟作为输入 & F4 Q- ~: j) W% dP=PA(7:27,:); , W! x) D G: P y% o; E%以6月6的间隔十五分钟的发电量作为目标向量 , y1 z% Z/ A/ r! k& B1 iT=PA(28,:);, M* Y5 I- x( t" U/ v" T1 C* n8 n
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,! O: B/ e8 n8 |. V- G
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig, Q6 p; t6 h. r. [, M k
%训练函数为梯度下降函数,即标准学习算法 0 i: i/ @, V+ X/ q" D" m$ W9 Dfor i=1:21 5 n+ P( J+ ^/ F w a(i,1)=0; ; `' a$ S0 ]" i; R" k n2 e a(i,2)=1;5 O# m/ o/ }2 S
end* m8 c, B- t E* U5 R
net=newff(a,[21,1],{'tansig','logsig'},'traingd'); 7 S( \/ B7 z4 s8 u5 z2 onet.trainParam.epochs=30000; M' W+ J9 |5 R0 Cnet.trainParam.goal=0.01; : ]* c; w `0 T6 s/ d. F%设置学习速率为0.12 d# N+ Y4 s/ k0 V- L- n) o
LP.lr=0.1; - d. y3 B$ ]* d% |; q- I3 @%训练网络) ~4 m$ j; V. z! q# A
net=train(net,P,T);+ m' W4 Z, k! I+ l; {
%预测6月6的发电量数据 5 ?" p5 [, b" ]! bT1=sim(net,P);%预测值0 c% ~# D8 e! x# S( S5 y; M
%PA.6月6日发电量真实值6 M" W) Q6 A0 i" Y- Y' b
T0=PA(28,:); 2 {+ C: m/ v/ `( U1 A%预测值与实际值的误差 " s0 T" j7 j& v4 q i, c; K' H9 L. X7 ~for i=1:N(1,2) , a* i5 O6 \0 V error(1,i)=T1(1,i)-T0(1,i); 9 V- t" m# V0 O4 T* R9 P# Rend : W7 A8 R! s% j8 `9 |%绘制误差图, w' B0 \$ b0 n/ \( |
figure(1) 0 b) `1 y8 L) c1 u8 r7 m* Uplot(1:N(1,2),error(1,1:N(1,2)),'-*'); u T+ m6 \( G% v* ^
grid on - T7 k1 [7 s6 }, kxlabel('时点x'),ylabel('发电功率误差y'); , Y9 R* g9 M% qtitle('PA6.6.0.0-6.6.23.45发电功率误差图像') 4 b. w) c3 x# w& k0 v%绘制实时函数图5 ?. O# K: |& F+ e: L
figure(2), f1 p* V' q' x) `' T5 f0 d: l4 P
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')8 a5 [5 d% M4 a$ I7 |
grid on( E7 |& z5 F( q7 R0 O( E5 j4 h
legend('实际值','预测值',2)) p5 o7 e4 f2 ~ |; t
xlabel('时点x'),ylabel('发电功率y');* h* N% ?! `4 F1 M0 w8 k& W. W
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像') 5 ~7 p" Q y: b" }/ n( {1 E: ~+ h0 x2 ~ web('http://www.ilovematlab.cn/forum-238-1.html','-browser') ) c8 q5 j7 @( W _' {5 H" i" E5 t$ G) ~
; A9 l0 `0 q( Z1 O: L* n" g w6 \
2 ?8 }9 _+ ]3 e% B7 k' p % f B) t& J. I# n' s) P一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?- I$ \" q' K1 q" P) j: G/ c
7 z/ l# g, f1 T