- 在线时间
- 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神经网络预测# C0 @: s Y! d! g* w0 V6 m+ \
%6月6位于第28行5 W# X& a5 Q6 m7 m; G9 b3 ~$ i
clc,clear
, p/ F. l8 `, k* [- jload ('data.mat')%原始数据以列向量的方式存放在workplace文件中9 t" _$ s( }( w% s( q, S
PA=PA(2:29,:);
. d7 L$ x3 L5 {%数据的标准化) \) U! g6 c) A8 D
N=size(PA);3 l9 F8 l' |4 J, x I
for j=1:N(1,2)/ X0 q* ~1 ]) F6 g
PAHminmax=minmax(PA(:,j)');% S6 q1 u' n6 Y9 _' F# D
for i=1:N(1,1)$ ?# r7 b% i6 z/ O
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
/ m& H) o( ]5 U% ] N end
0 s5 a9 D- w: _4 d6 y# cend2 R/ j. W I y7 U
%以每天的从0时计数起,每隔十五分钟作为输入! @# n9 i6 Y2 e: P T8 I3 i
P=PA(7:27,:);
; F2 E" h7 Q( Z/ ]+ x%以6月6的间隔十五分钟的发电量作为目标向量
( H9 @0 ^. f1 z) X7 g' Y! z8 VT=PA(28,:);
) R2 P7 o, }% B+ @/ J6 w%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,7 J3 R: _5 B s2 A% ^5 n. g
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
- P8 \1 f* I6 a& D3 ?# y%训练函数为梯度下降函数,即标准学习算法# E) i: T/ l/ {- m
for i=1:21+ ]# R$ S- W8 m* ~- K, f
a(i,1)=0;
2 e2 z- E& z* b: _ a(i,2)=1;" Q0 _: c3 |# L8 M
end4 F3 G3 X# T% Y+ Z5 V0 P; Y
net=newff(a,[21,1],{'tansig','logsig'},'traingd');. I# h+ L" e, d( o# r" C! w, X
net.trainParam.epochs=30000;; g6 J& A+ U) ~# \, p# ^1 K) X
net.trainParam.goal=0.01;% W1 ^5 B8 A9 k; D7 {3 u j9 G
%设置学习速率为0.1
: Q1 S- y9 {4 {8 p. |9 HLP.lr=0.1;/ y% _7 o3 @# b5 P* H: J' {1 B
%训练网络5 x- G5 {; x5 w. Y, \; u' ^* u8 F
net=train(net,P,T);6 \0 | I6 g' d9 k
%预测6月6的发电量数据
& ^. K# w0 A1 Z6 |6 CT1=sim(net,P);%预测值
, S8 E. [2 Q, ~# \* V8 e%PA.6月6日发电量真实值* W/ s) S& _; e+ g6 a, q4 B
T0=PA(28,:);$ P6 j7 l1 C0 M; T; K& o
%预测值与实际值的误差4 A/ V D7 Y! z! }0 j
for i=1:N(1,2)
- @/ X% r% V+ ~, _ error(1,i)=T1(1,i)-T0(1,i);
$ |) q+ t& `% L7 j: f2 I% Uend
- w4 ?( P1 \+ S: o%绘制误差图
6 ^: ]3 q; L8 d/ efigure(1)" j% z, A8 W' X
plot(1:N(1,2),error(1,1:N(1,2)),'-*')! Y' q4 G; c1 U% \2 \3 X! u
grid on J& T/ ^' X6 Q& N `9 M5 G
xlabel('时点x'),ylabel('发电功率误差y');
" R+ @1 m- X/ vtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
* y9 y& R3 F* Z9 T! g7 R9 \0 G+ ?%绘制实时函数图8 f, ]3 R7 I% p; x/ n
figure(2)
; a, Z* N* F4 L2 m% Vplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
0 j; Z( \# d' B. mgrid on
0 N5 X! W% w0 I. Y/ L( Qlegend('实际值','预测值',2)
+ v' {6 \( I: q$ h mxlabel('时点x'),ylabel('发电功率y');, u$ P3 }- T+ P+ U' \% S4 J9 M
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')5 R4 o2 ]( N0 |; t; B
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
* \$ l+ O& R0 L9 d% a$ r& u- u' a+ r2 e
; a: C. Z- K6 l @
$ N" U4 r: X; J) \1 i
. a, A% J4 r s7 R! t; ]3 W: h2 u一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
7 A0 B. { q6 N' C6 q2 P$ b/ i: n
1 H8 U: h$ x$ D) e0 l, ]; W |
zan
|