- 在线时间
- 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神经网络预测
4 u% B& D3 s5 b2 b- u' @5 g%6月6位于第28行
1 w( x& }( t6 @! s Xclc,clear) ` t1 ^+ z- y# ^1 \( {- g
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中, a+ ~0 |3 `* t5 x" ?5 D# k1 A
PA=PA(2:29,:);' v$ [& O* K% ^: n
%数据的标准化
" }' X- x$ A1 L0 q$ r+ GN=size(PA);
; H- Z9 f7 R& L5 C8 @) g' jfor j=1:N(1,2)
$ D: q: Y: k7 N! z/ A PAHminmax=minmax(PA(:,j)');
) Z- R$ k" y0 j' I# `; T% W for i=1:N(1,1)
4 V V, k# n+ D* F PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
$ j' o# _2 R: b9 ?$ s end0 z1 {4 D9 W$ y% H5 k' z ]
end
6 K4 @. B0 {) F8 Z. v6 q%以每天的从0时计数起,每隔十五分钟作为输入
* ]# P6 Z! u: m4 Z' i u" vP=PA(7:27,:);2 h1 R# ^( g! C( D& q
%以6月6的间隔十五分钟的发电量作为目标向量" m9 J( O' @$ P( ?( d* J
T=PA(28,:);
8 a7 _! O# B% V9 e* \2 h$ B%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
5 P4 v# A; E# P5 L' S! D%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
: ]/ h9 D' n5 |1 s+ k6 R%训练函数为梯度下降函数,即标准学习算法
6 b' q$ ?0 T4 d9 S$ x/ wfor i=1:211 R2 V; h: P0 I7 N5 G
a(i,1)=0;- D: Q; q$ Y& Q3 V1 a
a(i,2)=1;
: }5 R! B; _5 }+ B. yend! N1 l4 e, Z8 S
net=newff(a,[21,1],{'tansig','logsig'},'traingd');$ u F8 Y" M! f' i E: B
net.trainParam.epochs=30000;
4 _, ?# X& U' ?* |1 H4 knet.trainParam.goal=0.01;
5 S% W$ Q8 [& t/ ?& b% T%设置学习速率为0.1; _/ N( q @2 }1 r- f- U8 f
LP.lr=0.1;
+ y( ]* z# A2 M( i2 o%训练网络, h% b+ y1 \1 t# c( i
net=train(net,P,T);
, @" r, `0 O7 e9 I9 D7 j* V%预测6月6的发电量数据
6 V. {" S+ m8 v- MT1=sim(net,P);%预测值$ g( Y9 }$ d. Z
%PA.6月6日发电量真实值9 o0 J; I" N! B: G* d! K
T0=PA(28,:);" O- P& E* k4 X( K, G
%预测值与实际值的误差" c# y) X( A0 z4 Y
for i=1:N(1,2)3 o( H. Q3 O% y: J7 j$ b/ K
error(1,i)=T1(1,i)-T0(1,i);* H4 m* t7 ~; k) q' C
end9 `3 p! ~- u' ? Y6 K% O) G
%绘制误差图' s; \) e' ]/ t
figure(1)5 a% i6 t' ]8 X
plot(1:N(1,2),error(1,1:N(1,2)),'-*')1 s8 m$ D' e/ U- z5 c" m5 S
grid on
% a; n# a* u2 xxlabel('时点x'),ylabel('发电功率误差y');
! N6 e8 \# g4 l3 S0 n: T+ F+ mtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
- L8 c, m/ `2 ?5 y: C%绘制实时函数图: ^; \+ N& x- D' f
figure(2)
* S3 J% E7 y( {0 J$ fplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')6 b+ A& _* m. o1 f
grid on& `. R7 L/ i* D4 T+ F0 @1 a
legend('实际值','预测值',2): u- y/ q; ~/ H+ ] q" z
xlabel('时点x'),ylabel('发电功率y');; E0 \; E& S0 n" C2 T8 z
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')* U' J f( d3 R" ^5 A6 h- B) S
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')# M6 `" v+ U4 d- |* a1 u" S
* @8 p$ v* l- D) ?+ Y* M
! \ ^ i/ E9 P) X- \
3 X. L7 C2 B7 c5 v6 A$ ^3 E- m/ Q7 t7 C
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?+ F1 J! M C3 V6 \' V/ X0 c
# ]% ?4 r- S2 M7 f; j2 K- n7 I& h
|
zan
|