%PA 6月6:0:0 计算的MATLAB 程序如下:BP神经网络预测4 L& ?- r& e# |# U9 S! X
%6月6位于第28行" k6 a0 s3 r# V) D+ |
clc,clear, ^; t, r: {1 T; r
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中 C/ @' t. h: z
PA=PA(2:29,:);: H4 Y# f! v$ b
%数据的标准化 ; \3 Y, y4 `; c# K( x% c# d ON=size(PA);; y I: f/ m- C7 j3 U
for j=1:N(1,2) 0 r7 e4 L) P" m0 b/ ?5 B PAHminmax=minmax(PA(:,j)'); + R0 I& G/ W. x4 E1 H for i=1:N(1,1)1 |4 a) H! L+ I
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));% P) t1 I0 r' c. s Z+ ]
end7 j1 B. {, f7 I: E+ A6 C
end Q/ L. V( C* H/ M' R4 V
%以每天的从0时计数起,每隔十五分钟作为输入5 y6 U0 d! T( d+ X' i2 J; g
P=PA(7:27,:); 6 i3 }- z3 i% Q7 l j%以6月6的间隔十五分钟的发电量作为目标向量 * Z5 ?) D$ q% G8 p; pT=PA(28,:);$ f4 h) a! C: Q- W
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,0 e$ S* B; b" _ u" q$ T ^
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig," ]2 f* y" Q. Q. _
%训练函数为梯度下降函数,即标准学习算法 6 r9 w8 S+ H7 ], |for i=1:21( }0 ~) {& V' A, ?8 J
a(i,1)=0; ( G* y- ^. d9 s# {- ?! |, i# n a(i,2)=1;* `8 u0 S! h2 C
end' x7 b O8 }1 W5 I9 d9 w! |) r3 n
net=newff(a,[21,1],{'tansig','logsig'},'traingd');: Q4 \- G" [. e% G& i8 X4 w$ E& a
net.trainParam.epochs=30000; + d9 R: |7 E4 R! D. Ynet.trainParam.goal=0.01;2 b; U+ M5 E& b' o4 ^
%设置学习速率为0.1 0 u0 }7 v6 \2 bLP.lr=0.1;9 m( H G$ |# C8 U* H+ o/ M1 A m
%训练网络 2 m/ x6 h h* h) lnet=train(net,P,T);1 a9 `/ B6 d* B2 P2 K b. a4 F
%预测6月6的发电量数据 ; `6 L( @; {( L8 i L; G; AT1=sim(net,P);%预测值 7 s! N6 d. P5 e4 I/ E; Y. c6 ~4 K%PA.6月6日发电量真实值 2 n( T! R, P" e- A- {& L6 z, Q4 AT0=PA(28,:);: V. M, q: ?/ e
%预测值与实际值的误差: G9 h7 O3 Y* U) |7 n% {
for i=1:N(1,2) + k% Y. ?. j* z3 n6 }0 k error(1,i)=T1(1,i)-T0(1,i); & z! h1 p, N/ W" H! G& v6 Qend 3 C6 Z: h! O' w) d! R4 `* N%绘制误差图 ; g8 t$ U9 D( o3 r% I# [2 c; F9 |figure(1) , |: y, z0 u) t$ H7 {" Jplot(1:N(1,2),error(1,1:N(1,2)),'-*') * G# M% x1 K9 B# L( @! D: G+ x! wgrid on / z* s2 y! X+ e! _) ~! exlabel('时点x'),ylabel('发电功率误差y'); ; u( i" u0 |% j+ qtitle('PA6.6.0.0-6.6.23.45发电功率误差图像') 3 s. M A' \. F, f8 G%绘制实时函数图; ?, a+ b7 d9 D2 c1 d" s/ p
figure(2) * c6 @9 G* M% ?# m0 Y Hplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')3 Q+ ^4 V# l% I3 T% k1 N# \! W
grid on 6 \ t8 o+ z8 z3 L5 T8 Dlegend('实际值','预测值',2)' L& Y6 P" f& S# [: h
xlabel('时点x'),ylabel('发电功率y'); * |( O2 w( C, Q0 N2 p5 `title('PA6.6.0.0-6.6.23.45发电功率实时函数图像'), F p- ~1 K: Z. @% P3 i
web('http://www.ilovematlab.cn/forum-238-1.html','-browser') 3 S4 Z! O, z4 J6 Q2 ]8 f6 A: q; t" T0 f- f
& _ r M% W0 N3 H6 w ! |! l, H4 m+ T- ], H $ b. X8 b2 u" Q$ T一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在? & T- \! c) p9 J! i& @# v @# q7 [4 X! S& O X8 h