- 在线时间
- 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神经网络预测
- W6 U w+ Z% d' x2 i) W4 R) d%6月6位于第28行
) s# S4 z' P) R0 v6 |clc,clear7 P, I2 `! b% i( u+ r! I- x$ V
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
$ g' N) w) E# I4 }: rPA=PA(2:29,:);: R; o! {" b& L/ D5 d. l5 }% C5 @
%数据的标准化
% S. s' i* ?$ [2 U) WN=size(PA);' S: \9 ^' u, P, X, z' |
for j=1:N(1,2)8 r& Y9 @4 ^: F. r" ^ s
PAHminmax=minmax(PA(:,j)');9 k8 Y1 I4 l+ z7 u T* N3 P6 y }
for i=1:N(1,1)
& J' D0 ^' V; Z( G# Y! `( X( ? PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
" d! A+ G4 V% [8 x' o: p end; A7 P! M7 Z! q j* s% S5 N
end$ M+ \& G; b! H- p9 h, t
%以每天的从0时计数起,每隔十五分钟作为输入2 k0 I5 o! `4 G; O3 N" _
P=PA(7:27,:);* o6 ]3 d5 L7 s6 o' k
%以6月6的间隔十五分钟的发电量作为目标向量
: i( x) `, j6 B5 }T=PA(28,:);' @; Y( R, k; g2 n3 m: y
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,4 P0 o6 {; r; x* O) b5 x, H }
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,! D" `" K" f( f- N9 Z* e/ I
%训练函数为梯度下降函数,即标准学习算法
8 S# r) |6 o4 r0 p9 Z6 g, ifor i=1:21
: t5 o1 ]4 L& w5 T8 j3 s {$ d6 K a(i,1)=0;4 b% b1 b2 y" n( o4 s
a(i,2)=1;! f- Y5 {7 L/ J4 Y4 y7 Y
end
, I% V4 d0 T8 x6 Vnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
& E0 a _2 a8 @net.trainParam.epochs=30000;' M% a( p. v+ U5 O: F
net.trainParam.goal=0.01;
; {# h& u% `3 p8 e3 @! Q/ S%设置学习速率为0.10 O! N# u8 q3 r* O+ v
LP.lr=0.1;
% `4 ~; n/ `" l2 q& Q. k5 o%训练网络% z* l' M+ q' c6 O1 t$ B
net=train(net,P,T);+ J$ e$ \3 A% e' _$ i6 P8 g
%预测6月6的发电量数据: R" i/ o; p" \9 Z( G' ?3 Y p! M1 o
T1=sim(net,P);%预测值2 T8 Y2 l5 Q5 r6 `8 F
%PA.6月6日发电量真实值) v3 J: g3 r" _6 e" x, F4 u, D$ E& v
T0=PA(28,:);
% [* {# ]* h' {6 g%预测值与实际值的误差7 J& b: R x% g! l- H/ p* Q
for i=1:N(1,2); e6 r' T9 h p
error(1,i)=T1(1,i)-T0(1,i);6 l7 ^! H8 {9 i
end
; Z0 F! f4 P$ l3 h3 C6 T+ n) y% R%绘制误差图
! @% ?9 N0 u0 D8 D) k3 o8 K: {+ c ffigure(1)
* S6 Q* k* o+ X* k% zplot(1:N(1,2),error(1,1:N(1,2)),'-*')) S& Y! R- X8 p5 u& X0 L
grid on
3 m+ C' c. o" ~+ y! z' c$ Mxlabel('时点x'),ylabel('发电功率误差y');
; e: O2 O9 I1 q H ytitle('PA6.6.0.0-6.6.23.45发电功率误差图像')" y) D; k. b6 |: E; {3 L
%绘制实时函数图# K/ B5 H! T* U1 V. {; b4 _
figure(2)3 C; N( I3 v7 w) U" F" f/ v+ R; b: B; D
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
* K3 H2 F& h6 u: s! g/ H' _3 W2 U* Hgrid on. J2 d4 ~2 s5 w5 s) f$ g
legend('实际值','预测值',2): H2 D; X. Q3 x k
xlabel('时点x'),ylabel('发电功率y');* {$ L r( V7 Z# B" j" ~& a
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')5 \. j0 l) h3 t) d" [5 Q
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
8 k" v! e0 J$ P( {: Q
$ q; I" Q, O7 K
% B( i9 |+ @0 J
1 }6 @6 D. C* B+ w) k) N( l6 l( L H$ G( q8 E" O2 Z3 l' j
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?! S! u3 w+ @) [1 S' `- m) s b
9 a, r, z& \" A( j( N8 t. h
|
zan
|