- 在线时间
- 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神经网络预测
5 E% ?6 r- n& z%6月6位于第28行
- Z8 ?1 r- B: U# @0 [clc,clear! a0 l _; h4 V4 e
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
6 C: I+ O2 c+ S: aPA=PA(2:29,:);
5 v1 a4 _3 X) l! `9 Z0 r%数据的标准化
" n0 N% f: ?/ j* B& {N=size(PA);0 p3 E) S) Q' U# n% X+ {/ F% x
for j=1:N(1,2)
: [- P7 ~& T l/ b! U% r' }& [0 n- V PAHminmax=minmax(PA(:,j)');
! U7 r! w @) c, o for i=1:N(1,1)
) l4 E! w& W6 [: N PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));! J2 `6 p" \! C% l' R
end( g5 B% e" k( R# H7 s
end* L2 F/ n0 c# A# Q0 m
%以每天的从0时计数起,每隔十五分钟作为输入3 v) E, c0 b w8 @! N
P=PA(7:27,:);* e3 _, z( B" \/ G5 y! _
%以6月6的间隔十五分钟的发电量作为目标向量2 j" ~4 ], n: c; d% p; j2 V' d
T=PA(28,:);
- u/ o: Q7 x2 H; K4 y%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
$ w% }7 P( O* F/ v8 c%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,) X9 z! c6 ?% P& ^( [' i" K
%训练函数为梯度下降函数,即标准学习算法
. n) N2 H* v: D- j t+ z; Nfor i=1:21
8 L4 q' D4 g. k0 G8 Y S6 o: E. T a(i,1)=0;
* ~5 q; s$ x; f# y1 F; Z( s, L a(i,2)=1;. p' u# `6 O8 i' A! ~2 @
end! g% G" I! }0 T( F" Y& ^
net=newff(a,[21,1],{'tansig','logsig'},'traingd');3 g& I- T7 q8 R% y. x. `: K; o# m
net.trainParam.epochs=30000;
) r7 E% c/ z# q8 U6 _' Knet.trainParam.goal=0.01;+ @" W2 i3 ?, W3 z: V( s2 f/ q) @
%设置学习速率为0.1
9 V5 e! u$ S1 s* z" Y; S) yLP.lr=0.1;
- r3 G; m1 }+ X" `+ P' w6 z$ n, a%训练网络
* N0 T, l% [6 z, xnet=train(net,P,T);" O+ `8 v& P1 a0 ~, q) z
%预测6月6的发电量数据
) E7 y3 g+ \. ^T1=sim(net,P);%预测值
R1 ]3 N0 x' P! L" p( E; ^) N, x%PA.6月6日发电量真实值
k- U0 h. _% o% d1 E+ nT0=PA(28,:);$ N. O6 u$ R1 M
%预测值与实际值的误差/ x1 M, Q( K6 i3 u
for i=1:N(1,2)( e, C5 P9 y/ L% w
error(1,i)=T1(1,i)-T0(1,i);
9 Y- E0 Z: \# X# H$ @. Send, O" L8 J- ]% V1 E
%绘制误差图! @9 E% w8 o# j% G1 e' @
figure(1)
' D$ B: }: M" Hplot(1:N(1,2),error(1,1:N(1,2)),'-*')) U' A! N! p; Y
grid on3 r8 d# F- c7 z! { N; ~, Q7 a
xlabel('时点x'),ylabel('发电功率误差y');' X) R+ A' f! q( N1 c, W" o, U
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
- W, b' k5 H# |# |: E%绘制实时函数图
+ ~+ y, x. B& h: i ~ `) bfigure(2)2 F7 x" u3 ^" P
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
5 H3 e# ]1 z- [grid on
! I4 W4 C0 ?! c o3 M: t6 A, H, mlegend('实际值','预测值',2)1 b* z- T1 A8 ]9 r; F
xlabel('时点x'),ylabel('发电功率y');
5 T" @. d5 z( \' ptitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
3 ?9 a* R. M! j+ V# R" s2 } web('http://www.ilovematlab.cn/forum-238-1.html','-browser')' S. `0 @3 _- {0 L. N) K* _: e
5 y/ c5 a) o8 _+ }; i Z: i4 m5 p4 a. l+ B' ~; Z/ c* H
; P# \( D9 P3 P
8 n8 m: ^# G* S& {+ k# O一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?$ [" f7 Q# Y7 M3 i2 ]6 j, z6 U+ N
- w, v9 V( b- F; a) w/ Q/ _ |
zan
|