- 在线时间
- 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神经网络预测
8 o6 P% \' [. E4 d3 y9 w( f1 r2 b/ [%6月6位于第28行
' Q* J. I" ~: } ]clc,clear- q6 F! `/ |8 R% Z1 k
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
" `6 O( A( J( ]% X0 \. @PA=PA(2:29,:);4 k ]8 Z4 i7 v+ H" J3 B7 t
%数据的标准化
`: F) w3 q# _ CN=size(PA);
" a$ u) _0 x _; I0 b0 x1 g0 Wfor j=1:N(1,2)) [$ ~' f, D0 \0 Y X: q& @) N
PAHminmax=minmax(PA(:,j)');
( G0 E. u8 L2 g% ~! n for i=1:N(1,1)
4 l+ O) y' c8 F2 d PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));: K; `8 N% B* ^8 W8 M
end
+ K( s& ^0 Y9 [end$ m7 W* C- d( T6 _ ^
%以每天的从0时计数起,每隔十五分钟作为输入
6 v) J! P% {- g5 p8 \; K$ KP=PA(7:27,:);7 o# I, S1 R2 _) C, r
%以6月6的间隔十五分钟的发电量作为目标向量; p" f$ ~0 M1 ^0 r' d
T=PA(28,:);: \$ m; e, m* m
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,& [+ C5 ], n: @9 {% D2 ~7 p/ e+ \( S) z
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
) Y3 S3 z& v, R%训练函数为梯度下降函数,即标准学习算法
' d. s$ A/ O9 ^# l7 q5 Ofor i=1:21# W* S7 c2 J. M* c, z
a(i,1)=0;# R) i6 |- X$ r5 w6 w Y R
a(i,2)=1;
* c% [9 S/ g6 C8 F L: [; Y6 nend
' Y/ N5 e T5 M1 `net=newff(a,[21,1],{'tansig','logsig'},'traingd');. W( |5 z8 V- T
net.trainParam.epochs=30000;, L7 V( C+ C2 F3 P
net.trainParam.goal=0.01;# h, V0 e- x# @0 H' F% S# k2 B
%设置学习速率为0.1
7 E0 P6 [6 G1 VLP.lr=0.1;
* }5 d1 ?: }+ z: ]( d& x4 z%训练网络6 C; G5 c3 Q) ~" V4 N1 [6 |
net=train(net,P,T);4 V M7 F; I) `2 B& H
%预测6月6的发电量数据% R8 W2 N) |# ]
T1=sim(net,P);%预测值8 g2 d% z. N3 w8 M2 p% x$ ]" [+ s
%PA.6月6日发电量真实值5 E8 L& t! n) e7 \! A
T0=PA(28,:);5 f W* l; x! b% }' X- U- [
%预测值与实际值的误差
6 Y0 ~( S6 g( t' R/ [: @5 tfor i=1:N(1,2)
: L/ _# Q- u* Q. h0 ^ error(1,i)=T1(1,i)-T0(1,i);2 U9 s6 w# G9 |9 t, ~( C+ c
end
* k P$ E" J& i* z$ I( [3 L, H" I( c$ H%绘制误差图# V/ s" I3 e' o3 F# q9 a
figure(1)! l; d- [7 Z8 O- F7 ]: n
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
; u1 \! Y' W4 c) t3 T( |! lgrid on, C, a9 ]$ d& B6 _
xlabel('时点x'),ylabel('发电功率误差y');
5 M7 b2 O: e Y* ctitle('PA6.6.0.0-6.6.23.45发电功率误差图像'). b0 Y& i f$ t, T. x* i7 d
%绘制实时函数图) \+ T& b3 j5 `
figure(2)* d5 t+ N0 i& H& h6 u. M
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
$ s( }, M+ ^" B- `8 ]grid on
0 I9 _# v/ d R, {/ qlegend('实际值','预测值',2)
: G% C* m! N& ~; m/ d2 gxlabel('时点x'),ylabel('发电功率y');; a& s4 g! U) a9 H- n
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像') [; e8 J: `2 V) g$ h! M. C; E9 d6 Y
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
. P" w, Z! \0 ~5 i* E
" D4 Q0 n. ]/ a& R+ {! d+ l9 ]6 @: ?( D- K6 ^6 t; `; D+ h5 F
$ D9 h& r+ B6 U* N+ w+ E0 n
( E% @+ H M- q( P1 Z
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?; z6 Y3 V) A/ E. v) N/ E
" u/ ~6 h7 U7 N" P, R0 R( F |
zan
|