- 在线时间
- 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神经网络预测 o" ]# f& [. v5 L4 x/ T9 y6 D( x
%6月6位于第28行* C: L1 u# [+ z' t! \% E" [
clc,clear
6 `2 i! w' t: X3 M ?' cload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
5 d- H1 R4 F8 W$ `9 P5 o# b6 @PA=PA(2:29,:);/ j. v; Z$ c& n# f+ E3 p
%数据的标准化
+ A; i9 Y, m$ |" _. b ?N=size(PA);
# F" l. @0 T$ [for j=1:N(1,2)
/ a6 P. C$ x$ O2 |; D PAHminmax=minmax(PA(:,j)');
6 v& f/ G& V9 m# j for i=1:N(1,1)
( t- G+ J; m3 A# r* } PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
) X' r& I4 t" o4 b/ I0 v end
, K/ i: s& ^# X7 Z' hend
. H3 J* S$ L% V%以每天的从0时计数起,每隔十五分钟作为输入5 ~& W- G8 m5 z; X; ^2 x" J
P=PA(7:27,:);; _! m* c' d B' `' a ^
%以6月6的间隔十五分钟的发电量作为目标向量# R* R: o# _+ @* ?. l* ]
T=PA(28,:);- d2 A7 E* i( s( r( Y; ^
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,) p& c) r/ B- z0 p- v, \+ v
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
8 k& u6 r- P( v6 |%训练函数为梯度下降函数,即标准学习算法
4 \; F4 C A) ?' rfor i=1:21) k, Z% \6 `0 S- M; b" M* k
a(i,1)=0;
- ^: ~* u7 k) x, k. P0 M a(i,2)=1;
3 G' ?$ h, ]0 m% jend! d$ O# u/ N) I! N) l
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
; g2 D ?$ K5 U4 M" Cnet.trainParam.epochs=30000;
9 f7 \6 ^2 A6 }# N3 Snet.trainParam.goal=0.01;
5 P4 D8 x7 n$ _: [* ~: M' f%设置学习速率为0.16 ]1 k* w* u/ f* Y1 @, E
LP.lr=0.1;* h% P W* @5 _' B( j( f
%训练网络
6 W$ L. H# X: S ?5 E) ~net=train(net,P,T);
8 N3 h. w& B; G' f1 V1 K9 t" F%预测6月6的发电量数据
h* n4 W, H I4 p+ aT1=sim(net,P);%预测值8 f f4 N$ Z: `" B, m
%PA.6月6日发电量真实值
k0 _5 r8 y" W; i0 ^+ f" a0 jT0=PA(28,:); v& X9 F2 L$ d# l% H4 o- C5 ]
%预测值与实际值的误差$ |/ ~' X1 v( g9 l
for i=1:N(1,2)
$ {1 V3 s+ D% ?/ S( [# {/ A1 y* h error(1,i)=T1(1,i)-T0(1,i);
- W5 v; s y5 x" V3 u6 Dend
( M) V, R, b. o$ q( E%绘制误差图+ e! J! x" E$ X1 M. ~& |: O; G
figure(1)/ u3 \2 r" h! `- W" ~
plot(1:N(1,2),error(1,1:N(1,2)),'-*')5 E( B: s {' B
grid on
# M! v) f/ V% b8 O- m0 Jxlabel('时点x'),ylabel('发电功率误差y');- a1 v" O8 U2 E. J7 n- n! x
title('PA6.6.0.0-6.6.23.45发电功率误差图像')7 c( s( P! v& u! O1 J+ g
%绘制实时函数图
$ m9 j$ u+ z- V- ?( Yfigure(2)
# }7 a, k/ f1 \3 K7 I3 Qplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')5 g% Y9 k5 O8 s. j9 l2 m+ R! k {" I
grid on
3 s3 M4 d" p$ I) [legend('实际值','预测值',2)' E' C" h' Z; X6 n5 X3 H9 v' Y
xlabel('时点x'),ylabel('发电功率y');4 h9 ^$ |! E9 \8 {: h4 ^" ]
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像'). D, j* M% v1 R
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')% H( b' @( P+ N3 Y2 I. \
( Z* R$ Y: e9 h! [4 M; ?/ T, D6 x$ r1 @' o8 @
. p' e( S$ Q) |4 E+ O6 E. y1 N& M* a. K; W0 i' l8 W5 \# {0 y: s/ [; c
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?; E0 x$ y& e5 Q% M! _- `' ^' O
8 C/ P0 [0 `( g9 l3 X: o |
zan
|