- 在线时间
- 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神经网络预测! m! _* M0 a1 u% Z
%6月6位于第28行3 c! k) I1 `) x d
clc,clear1 H, v1 \8 v# v+ p% w
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中: V3 m& |- M+ O, e4 g; b
PA=PA(2:29,:);
& j1 G" |$ [0 ]# R6 \& q! R%数据的标准化* c% { \" [( q1 z5 V, @2 q; y6 h- u
N=size(PA);2 P) }2 {; S4 d5 Q% {% E( M* F8 ]( ?0 ?
for j=1:N(1,2)$ V, [$ m& Q0 |2 V% U
PAHminmax=minmax(PA(:,j)');
& W {3 t6 O0 _5 Z( Q- u3 v2 U for i=1:N(1,1)* S% e) ?* ^: x6 R
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
, D# X' j" B' V$ \ ? end2 E2 R& b G& v# P$ d1 b
end# ] v* N+ w* u( J' D) m
%以每天的从0时计数起,每隔十五分钟作为输入# D7 ]% L$ H* E. u4 h, T, c( Q
P=PA(7:27,:);
$ A- q2 R O# E%以6月6的间隔十五分钟的发电量作为目标向量* c6 D# `" } j; ~
T=PA(28,:);- W" p3 ]$ N, s3 B
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,; g7 @) z9 J9 V* u
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
6 M" g _* S, u! E1 W T2 O%训练函数为梯度下降函数,即标准学习算法
( r& T9 z/ h4 `; Qfor i=1:21
) X+ h0 t i2 l a(i,1)=0;
6 }; c n0 ?2 H a(i,2)=1;
) y! Q. g+ _0 B' yend% g0 B _: ~% \/ t" |" X& }
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
# Y: X$ F# K9 J: f! w1 J4 V5 knet.trainParam.epochs=30000;' L) n+ d$ O/ l( t, X- @4 _
net.trainParam.goal=0.01;
$ }1 [: s( E# W4 x! F%设置学习速率为0.1
- P* R! D; o9 u0 @LP.lr=0.1;# d1 H! j' A* X6 g
%训练网络
' ?1 n' m( j% jnet=train(net,P,T);3 W' [9 c: l, k; A1 j$ x2 @2 R: q
%预测6月6的发电量数据5 z( R- J& V3 l% U9 \) t
T1=sim(net,P);%预测值7 ?) {. J2 L# F! [% Q
%PA.6月6日发电量真实值
$ _6 }5 |1 V- i# S! t' }T0=PA(28,:);! E: z1 U# E' O8 b
%预测值与实际值的误差
* {( ~- u; b; W* E+ v% m1 z" \# Z$ z2 pfor i=1:N(1,2)
0 i9 `' P& Y* i/ Q1 p2 o error(1,i)=T1(1,i)-T0(1,i);
- Y7 B0 u& t# S" T7 V5 Q' Mend
2 U% Y9 ^9 D- U$ c6 \2 v) c) L/ }%绘制误差图8 H% Q, X+ w+ W* e8 v
figure(1)
( c) ]% }- K+ ^plot(1:N(1,2),error(1,1:N(1,2)),'-*')
( D$ i/ P) ]% }+ Egrid on, D, s0 C5 e, |, \( _; N6 L
xlabel('时点x'),ylabel('发电功率误差y');
, n4 d% |$ G) z1 ]title('PA6.6.0.0-6.6.23.45发电功率误差图像')
! q9 W, e6 o A+ p% c( f, C1 Q%绘制实时函数图
, T6 H6 h4 p) V Y1 W+ r5 _figure(2)
' H6 ]' g6 T, Jplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')1 o6 I- S' r0 b3 ^
grid on% Z$ Q* s4 @% ^& _! W& o/ Q6 n; e
legend('实际值','预测值',2)
" V- I. B! g m9 F7 f& m* cxlabel('时点x'),ylabel('发电功率y');8 p% `9 l/ [1 N% `2 ~1 o$ Q- d$ q5 n
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')2 L- I7 z3 j- Z
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
1 Z' S1 M; z, {, g8 z1 I, s) P& S( {" c/ g$ V! p- y6 z8 Q. \
4 G2 W( ~8 G0 ]; t+ _
% _9 @+ \: ?2 H! p$ L# ^+ q: X8 L; `& y$ N3 l" Y, N
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
5 m) J! |1 S' }4 m" J9 }# \: c# r* _$ h/ D6 ^4 r" E1 ~
|
zan
|