标题: 数模小白关于BP的一些问题 [打印本页] 作者: ChildofAtlantis 时间: 2015-4-19 15:43 标题: 数模小白关于BP的一些问题 %PA 6月6:0:0 计算的MATLAB 程序如下:BP神经网络预测 7 Q" c+ L, e& F4 |& s%6月6位于第28行 3 k' }% }7 A. x! nclc,clear ; h. ~# [- G) K, r2 f6 f/ u4 mload ('data.mat')%原始数据以列向量的方式存放在workplace文件中 ( \, Q$ w: b8 zPA=PA(2:29,:); + d" }& \+ {) D0 B$ N%数据的标准化$ C( ^3 z+ Z2 p* P {1 L1 X
N=size(PA);. h9 O# K) D5 H! _
for j=1:N(1,2) - o6 L! F1 N9 r1 U. k( D PAHminmax=minmax(PA(:,j)');' v# r& D o S/ [2 B2 K
for i=1:N(1,1)" f- W7 l' x3 T) C
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));8 I$ `: C1 M- n
end : J: c+ D! G6 F- rend 4 J2 u" q J* d6 G ^0 e6 H%以每天的从0时计数起,每隔十五分钟作为输入- X( @ n. C7 k$ \. S
P=PA(7:27,:);$ [ M5 E1 V5 p: _9 d* F4 K) S
%以6月6的间隔十五分钟的发电量作为目标向量' C! X9 c4 E2 A# g" \, _4 `
T=PA(28,:);% M d! e. | k# R
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,) s- A9 j, ]/ Y' ]
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig, 1 V5 C6 ^" Z) [( i& ]4 _%训练函数为梯度下降函数,即标准学习算法' C- p: `+ r$ ^. I. J
for i=1:21 4 d& j" V, B9 s a(i,1)=0;2 C2 F- S) _* {# w! E3 o
a(i,2)=1; . g ^. W3 J. ^) \- Uend # e) @9 r$ i% i2 v( Y1 Snet=newff(a,[21,1],{'tansig','logsig'},'traingd'); , Q, a) S3 l1 Y$ V0 P. F% T( }! k2 M* p8 Nnet.trainParam.epochs=30000; * i8 m" A* t1 q$ r" e" R4 `% unet.trainParam.goal=0.01; E$ g. D! j. ~. W& `%设置学习速率为0.1 0 I& M: E+ }. l3 ]5 \/ QLP.lr=0.1;2 Z; P* h7 Q8 I7 U q
%训练网络 & i2 t8 Y" l0 ]- F0 f* A. ]net=train(net,P,T); # t5 M: i: J0 M% C% v3 p%预测6月6的发电量数据3 q) p T- u @2 r3 K! G4 f$ r
T1=sim(net,P);%预测值" W! V* N+ H" S& K- M( H
%PA.6月6日发电量真实值; n ]+ q# S, F: R/ b }6 A+ b
T0=PA(28,:); 0 Z: J# D- \) Y; |# E%预测值与实际值的误差, O4 x6 }& p& v' e8 d& m2 P: _
for i=1:N(1,2) 6 A1 `* u3 f$ R4 l( O% f& G: r error(1,i)=T1(1,i)-T0(1,i); " _+ G$ q Z$ D! ~( ~) v/ d' {end" D& |) x6 b. U9 [( g7 x" v+ {! h
%绘制误差图3 [8 ]$ }" s+ Y/ s
figure(1)0 g5 m$ T4 D5 p& Y0 T) b3 W6 P
plot(1:N(1,2),error(1,1:N(1,2)),'-*')4 F" Z6 X5 S, I. v/ H
grid on ; u. n" L6 @7 i- S$ s6 _xlabel('时点x'),ylabel('发电功率误差y'); ' T# ^/ S. v* E. ]( h# Wtitle('PA6.6.0.0-6.6.23.45发电功率误差图像'). ~: X- p! X0 W* k. p% ]- W5 v
%绘制实时函数图 * A' f9 _/ l. L: q7 a9 R. O0 efigure(2) ) K, Q" x0 G; a7 E' \9 j7 xplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r') ! w+ @+ }7 G( q# h) }& M& hgrid on) g7 i# d# B) C% I
legend('实际值','预测值',2)- K5 x" b+ k' R( r$ y
xlabel('时点x'),ylabel('发电功率y');8 s; C6 Q4 m r
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')* I7 M0 G/ q' i i( Q% S/ L
web('http://www.ilovematlab.cn/forum-238-1.html','-browser') 7 L$ n; W/ `- k% F1 L; D5 ^/ r* w9 ?) ]; L" ^
6 Q, w8 H/ d" O; d5 }+ c. o8 q- \' R" S; e. P% R6 m8 E* {' { E$ v
( `- ?: |% C) X
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?) u% O% c! z9 o- O, M