- 在线时间
- 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神经网络预测
! B% v9 k* `' ?* R5 {0 S- x3 V%6月6位于第28行9 K6 d$ {* a) N3 v5 r3 o
clc,clear# g+ V: I$ H/ l5 c. b% A; L# C
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
9 K0 a! |, x& i( VPA=PA(2:29,:);3 m. Q2 T7 T* @- L
%数据的标准化2 ^% S* B. Y" [8 R
N=size(PA);
; a$ A% x5 U5 ~2 n Z6 n" {for j=1:N(1,2)/ s8 Y" y4 G2 q2 E+ H _
PAHminmax=minmax(PA(:,j)');
) w7 M8 G& p3 [3 {& k) }( Z. ` S" p for i=1:N(1,1)
" @4 ]: `& t, n$ G. h PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));6 g# L/ `! p0 i3 n# R
end
( e* Q% Z. Z5 y( Kend+ W0 u m; @& y1 `; c
%以每天的从0时计数起,每隔十五分钟作为输入: d9 }2 L# u4 d/ ^3 l/ P
P=PA(7:27,:);
+ P7 L } B3 R7 Z4 Z" }%以6月6的间隔十五分钟的发电量作为目标向量
. B5 i0 A+ A0 c2 {% m) L2 gT=PA(28,:);, A) c9 B% X! }9 H) W6 A' S( Q
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
6 G4 C2 o. t5 r5 T; m9 a5 A) }- G' H2 J%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,. H5 ]$ B2 j: i+ Q
%训练函数为梯度下降函数,即标准学习算法! j F1 y$ v0 _2 O% j- l
for i=1:21
7 i7 s) H! i( q: r$ G( K a(i,1)=0; d, {. S% _3 E8 ^9 i7 y. X
a(i,2)=1;3 q% e: ~1 T0 e& J, |
end
: Y2 \/ N! Q, A8 I! u; Pnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
9 d6 I4 i, M) i( N3 b7 F3 Tnet.trainParam.epochs=30000;
& e% v# y, g4 l! Y5 }( Enet.trainParam.goal=0.01;% w8 h I+ t4 k) G) z! P
%设置学习速率为0.1
) o: D0 t7 r5 N3 ~# ULP.lr=0.1;
3 U/ i. I9 r, \3 e- u8 [( z9 f%训练网络. }' i2 w$ F+ K9 m& v8 p- C+ f4 d
net=train(net,P,T);
' Q7 o# H0 `9 K%预测6月6的发电量数据
5 \5 _, V1 K7 O' F1 lT1=sim(net,P);%预测值
" c: J6 F: [, S9 B8 U- F( q- M1 o%PA.6月6日发电量真实值
/ J1 x# L3 k8 f" R% _* uT0=PA(28,:);
" I q& ^9 R* @ O' b%预测值与实际值的误差& I6 i% I0 p% s# @+ \
for i=1:N(1,2)9 H# x& ]$ D, u E8 w& N2 y
error(1,i)=T1(1,i)-T0(1,i);
% j0 G$ i7 m; [: o3 Wend
* U9 G. I% x& _5 S, _' @8 j6 d1 a$ s. C%绘制误差图
' C( M; @, m+ V* }3 jfigure(1)0 g2 e: z8 H' }
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
1 l- t$ q T r @2 V* ^9 m; ?grid on. I6 S* |/ O+ p4 I8 n
xlabel('时点x'),ylabel('发电功率误差y');
) _. a5 f( _$ z5 o$ m& _0 d( k3 Vtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
. b$ d0 M0 T. ^1 ]2 W+ Z%绘制实时函数图
! y7 ~: h) e4 N; I- {. C% i- k; {figure(2)2 @. ~% V8 j# B5 y# K! I% t- n
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')" ^# {# t: V2 G' x z
grid on9 _0 E; l7 x& x& R% y# P2 f
legend('实际值','预测值',2)" G4 b8 ~/ } C: n
xlabel('时点x'),ylabel('发电功率y');8 y4 {' k& Z8 B# x
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')3 F% M' ], W; B
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')2 p0 k* E9 a; J" w' ~4 G
! F( O, K$ k2 K
. } d, r3 F! a9 D3 Q; I1 B) t) M) P. N: _5 @$ |" k0 K0 ]! H/ H
A$ \. p; s" v6 I5 W2 @' k
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
1 {! E2 X- ^5 g: q: w6 u9 Q/ _1 ~
3 S; i) t; U. t. B0 v |
zan
|