- 在线时间
- 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神经网络预测
$ W; [: ^+ h6 `, c/ r, u%6月6位于第28行, F% ~. `$ o& ]
clc,clear
! d1 P$ t8 j. b) l! ?1 k2 Oload ('data.mat')%原始数据以列向量的方式存放在workplace文件中
% T+ O& p) M; {. \' ZPA=PA(2:29,:);
; V! s" x! R/ L) G x%数据的标准化$ E3 W5 @) k, g" {. Q
N=size(PA);
A5 w- D8 S5 V& M: ?3 D3 x0 ifor j=1:N(1,2)
8 W4 {0 a5 Y3 a9 h: ?1 ? PAHminmax=minmax(PA(:,j)');* z h1 G0 b7 T, \" v
for i=1:N(1,1)1 }) _1 l0 { a# ]: [) d& T
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
! J5 V# I+ R* c6 d5 ]/ }6 P* _ end
& \) H: q H4 m$ Vend. J6 g! c0 w& ^2 n' B
%以每天的从0时计数起,每隔十五分钟作为输入$ Q! y' }! I& l
P=PA(7:27,:);/ z# F* H: t. _3 Z" U7 [; f2 m1 |& Q
%以6月6的间隔十五分钟的发电量作为目标向量+ V! r r! C: e( ~ _
T=PA(28,:);
- [" g, w: ~) Y- c%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,, C& I, {5 |5 V/ j1 g
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
0 d- L8 T/ I# a5 b% F%训练函数为梯度下降函数,即标准学习算法1 Y' d) o, n c, s3 t" j: M
for i=1:21
4 l+ K3 ^& B# ]! | a(i,1)=0;2 @6 J- m/ y" ]5 ?
a(i,2)=1;7 s& H( X' `* W! _! V+ a
end
9 q/ y1 c0 S0 ^0 q2 m) p Onet=newff(a,[21,1],{'tansig','logsig'},'traingd');
/ |/ O# b6 V& I9 v& r9 t/ c! y# znet.trainParam.epochs=30000;
" C& `4 Q J# _! m6 vnet.trainParam.goal=0.01;
3 `( k4 v) W- ?%设置学习速率为0.1
- _& }9 k1 Q" ^LP.lr=0.1;
: g* Q9 Y3 W, D%训练网络/ r* e. C+ d) G6 I# v, B: z
net=train(net,P,T);9 i" i& {, C: L2 y
%预测6月6的发电量数据, |+ O8 c! Z, C1 V, ?. a& c
T1=sim(net,P);%预测值
. n* R3 G5 _# f7 a%PA.6月6日发电量真实值
/ p1 o* C, {1 ^* I; l1 w7 r3 gT0=PA(28,:);" t4 I+ b3 p5 y, ^ ]
%预测值与实际值的误差
: O! h) f. y6 m: {/ @for i=1:N(1,2)
0 u$ C( N1 a5 \) C% F. r/ p6 B$ ^ error(1,i)=T1(1,i)-T0(1,i);+ E, N# D6 C& t- m
end' R4 V$ u2 C, G% T! y% n
%绘制误差图: |$ ]2 c/ Z8 h7 E% U
figure(1)4 V8 _' y. F/ Q% C
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
8 S/ M2 q: e9 L" N& ugrid on7 f4 i1 A/ y6 r) e+ d% `9 X6 T
xlabel('时点x'),ylabel('发电功率误差y');: D2 ~4 D- |/ i( O+ u& r& l
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
4 [- v3 P( D1 ]: x9 Z& ^2 x%绘制实时函数图2 g' O3 b' Q8 B4 e( Y
figure(2)1 d/ E" r; Y" z+ W: ~- e' j
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
& ?6 W. Y, Q! O/ i0 w0 i) T$ m# Bgrid on
* ]8 t6 m& B# f4 u9 a4 J0 _legend('实际值','预测值',2)" u0 \5 H! w" S2 m5 Q$ @% c
xlabel('时点x'),ylabel('发电功率y');, H' ^- e$ G& U8 p2 y, D0 S
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
$ v& x- `& h' m3 R web('http://www.ilovematlab.cn/forum-238-1.html','-browser'), w3 V1 H. I6 z8 [
5 { Y7 q* [" d( H' A) F% O: c& L+ ^1 Y1 K2 h4 _* Z
, u% Z/ @: e/ |% r3 B
: T5 R! g) y0 b6 J: t
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
& T; b4 B7 e6 |0 \
8 p9 |" k& Y- d1 C& h' r" Y2 D$ | |
zan
|