- 在线时间
- 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 I( V0 V3 j" o6 i% L' v
%6月6位于第28行
% M" p0 E. U$ T1 `clc,clear
- B& K8 J) U( @2 R9 }- u( Rload ('data.mat')%原始数据以列向量的方式存放在workplace文件中6 ~/ Z: A3 }* j, d
PA=PA(2:29,:);
5 a/ b! j9 W. ~4 z%数据的标准化; Q1 c! ?. T. i: q2 E
N=size(PA);( a2 K) z# Y3 z$ k9 E# Z; R8 I9 L
for j=1:N(1,2)! k7 W: [- X9 K0 U7 x* b2 \
PAHminmax=minmax(PA(:,j)');2 ?, {7 F$ ?. u2 Q R: n% X
for i=1:N(1,1)$ l/ Q8 X7 |; ?3 \! d, Y. R& Q. p# r7 H
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));* p# p+ `( l( x" m" q+ r
end
8 F" a5 _4 f* B. h2 Eend
6 t6 M1 E7 f- o+ E- w: v0 ?%以每天的从0时计数起,每隔十五分钟作为输入% e& C7 v8 j+ o& X0 \ Y
P=PA(7:27,:);
1 @, V: t( z2 |7 C2 ^; R%以6月6的间隔十五分钟的发电量作为目标向量$ b y& a* M3 `; ^
T=PA(28,:);
2 C! m$ t. C8 P4 v' [; O* S$ E%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
* S. c- V/ F* u. X+ X; C% ^%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
% ~/ B o( I2 g5 {3 U# d) v%训练函数为梯度下降函数,即标准学习算法
' ^' \& w9 q/ U9 U3 q0 ~4 zfor i=1:21& N& p- H* ^( c! I! T% F+ C
a(i,1)=0;2 c2 u1 K$ d/ q3 t! r6 C
a(i,2)=1;- p* c3 I6 Y. X0 x9 }) Y
end- h2 v- n/ }/ T
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
6 D0 r7 A7 A# F. J& s, Gnet.trainParam.epochs=30000;& \, u) ]% x5 G( y, z
net.trainParam.goal=0.01;
) n7 f7 }7 W; ^, v& p: K%设置学习速率为0.1
_+ X$ Y9 F: T" |; `LP.lr=0.1;3 [3 ]( a1 g$ g/ V- T
%训练网络5 i% n- C0 T2 Z6 ^% u
net=train(net,P,T);
R# |7 a. B2 M1 R# {%预测6月6的发电量数据( p8 C; p/ A, H, L5 j
T1=sim(net,P);%预测值
7 p7 p% y4 S9 e4 U2 r. v# ~. D%PA.6月6日发电量真实值
( f1 }6 j+ h. J! c1 ^T0=PA(28,:);& H. U" Q# R! _! b9 P6 m
%预测值与实际值的误差
2 Z% n) k. {( ^# i1 e5 P( ?; efor i=1:N(1,2)- w; _0 E* U: D% H6 |. r' J! V
error(1,i)=T1(1,i)-T0(1,i);
3 D4 G) O, f* m7 }end$ w h7 @/ {/ k, S4 M$ `/ o
%绘制误差图
6 |8 n8 a+ W+ B, N" i" S9 ^5 hfigure(1). l2 Y' g- v5 c; k* f! A5 ?
plot(1:N(1,2),error(1,1:N(1,2)),'-*'); h1 E) w& V3 P2 J9 R- F" K
grid on0 G' a" V0 W* U. A- G- S q
xlabel('时点x'),ylabel('发电功率误差y');* b- U( o5 J. Y. F' S* p: x1 |% W2 _! f
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
3 q Z( u( x: o4 l2 p4 w%绘制实时函数图: C0 s4 Z' k' l9 r2 q
figure(2)3 P h4 u$ h! e- u
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
# U1 R/ [. u* [3 i' B9 G( Q2 zgrid on# D% ]6 ?. A8 n) Y* s
legend('实际值','预测值',2)& b o: X* X6 Y( n& H6 z
xlabel('时点x'),ylabel('发电功率y');
3 z) N: B) b" N# D2 ? stitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')+ x1 c; p: y. N- i& l- q
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
6 V; Y, ~7 ~# t6 e1 s5 q4 O: G9 k! x6 K4 V$ u
) J9 c4 o8 h% q& d; `3 }. A1 q2 m& t( w! R$ ~. {# o; O2 g
/ d3 y/ a' z' n7 }7 @ d+ m" Q* x" M
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
% |+ u& j+ `. C' |$ K8 a% U) Y4 ?! I) G
|
zan
|