- 在线时间
- 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神经网络预测
% _" V# ~6 |) {$ U, C' r%6月6位于第28行( h4 p! l' L7 x7 B I! U0 V+ s
clc,clear
5 P& F A6 |' Z @ [; Oload ('data.mat')%原始数据以列向量的方式存放在workplace文件中4 a2 V1 A7 d' a+ j$ ]* [
PA=PA(2:29,:);; P7 w2 \* w0 x$ o/ { j! u
%数据的标准化) c J* f2 D7 Q/ U3 }
N=size(PA);
5 _8 e3 U4 g7 R& U+ T; n$ N8 I! r Qfor j=1:N(1,2)
/ S! Y; R# Q' a2 k& R8 I4 l PAHminmax=minmax(PA(:,j)');
) a- N( P A3 z8 u" j! _3 d" z for i=1:N(1,1)( o( z$ ~) j0 ^ o% u" M
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));7 X5 G, `$ F! V9 @( n
end V- n+ m9 c& n
end
* w4 {1 A; i5 Y7 X$ \%以每天的从0时计数起,每隔十五分钟作为输入9 k* S3 M0 N' E3 v: z: v
P=PA(7:27,:);7 _5 q! p* k) A* G4 p
%以6月6的间隔十五分钟的发电量作为目标向量
! Z9 ]1 D8 L: ET=PA(28,:);0 _. V- q) j2 ?# N) h; C5 N
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
% T- Q' Q' n3 k$ E' h$ h6 T D%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
3 ?4 t v% }% k* d& ?5 B: f%训练函数为梯度下降函数,即标准学习算法. }7 q# K4 \; f1 J. S) l3 I$ m8 @
for i=1:21
0 G8 }' X E# {# ? a(i,1)=0;
/ B- N4 l4 W9 Q+ j$ [* Z" X- I+ I a(i,2)=1;- a4 u. E) V1 G/ g9 r6 x: X
end
9 y1 x) t' f) ^* {$ D9 {7 |3 Unet=newff(a,[21,1],{'tansig','logsig'},'traingd');
. u% w& C- N0 ]4 E$ Z) J8 Mnet.trainParam.epochs=30000;
8 ^' C* B1 J" ~" Pnet.trainParam.goal=0.01;) ]1 I( ?: M5 C7 y4 z2 Z
%设置学习速率为0.1
0 E. i3 R3 q7 e# T. `+ J. ELP.lr=0.1;+ P* S# |$ u' |9 T- ?
%训练网络
' j' J p" ~# B0 V2 B9 M7 ]net=train(net,P,T);1 [, l- \- _4 j9 { P5 W& y
%预测6月6的发电量数据$ U* @: Z4 X6 _
T1=sim(net,P);%预测值' d& |5 i7 c3 w: Z
%PA.6月6日发电量真实值
0 k* Q% q. T' i* CT0=PA(28,:);
5 G0 A1 M& \' |$ S8 l c+ E%预测值与实际值的误差' T& P& R0 {& Z, v/ M
for i=1:N(1,2)7 k' t" e# t9 W3 q1 _2 x
error(1,i)=T1(1,i)-T0(1,i);
4 Q9 B" J: R- x9 y dend8 j4 y- ~0 r3 K4 r7 R" c6 D
%绘制误差图9 J$ c! {% W' W
figure(1)" f7 }1 L3 ]/ X% p' o
plot(1:N(1,2),error(1,1:N(1,2)),'-*')7 `; Y- T; E$ m, i& e* I
grid on
5 G3 v$ i; Q. k! ^; ?( Uxlabel('时点x'),ylabel('发电功率误差y');
$ {- J% U" b' Gtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
' S! t' ^' F- B5 f/ F%绘制实时函数图8 j! w- \: `$ Z. V
figure(2)
0 w6 m, P) _3 G9 a- xplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')- F+ f7 ?( S- @/ e. Q
grid on
3 n, y' t9 R! a: z5 tlegend('实际值','预测值',2)
) k' e. E3 W# v. ~xlabel('时点x'),ylabel('发电功率y');
( H7 u1 E5 u& P" Otitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
' ~' @1 H0 _1 U& p0 |) A/ v web('http://www.ilovematlab.cn/forum-238-1.html','-browser')! l7 L+ W4 ^8 H+ J& {8 h( N5 J% f+ W/ ^
: d2 Z: J/ G3 g1 v
: p. ]9 d0 Y$ G: E5 k6 `5 q0 d& e. [$ ]+ Z* s/ T6 M5 Z( h
! N2 B5 A* t( R: u
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
5 P+ Y& P+ V0 d# e% r+ h$ E6 I' S0 I1 r; j/ u: q) X5 @1 m+ F
|
zan
|