- 在线时间
- 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神经网络预测& y; c' S' c1 R d- F4 ^$ ?; S
%6月6位于第28行- Z b) N- q! G- Q2 F% r6 T% o
clc,clear6 m& D" f& L ^
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中$ T# b% Q1 m6 c5 `# K" P& d
PA=PA(2:29,:);
4 O! ]4 ]2 J4 b7 g) W# |8 w/ l%数据的标准化
2 o- M0 z* u6 fN=size(PA);
# y+ a1 P% \: E0 D( i- N' Vfor j=1:N(1,2)
% b) h) A- {' ~9 G8 g0 T PAHminmax=minmax(PA(:,j)');
1 t3 j2 V' r5 q for i=1:N(1,1)6 t* `' }. m! U$ Z
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));
8 C- G. E$ u" E2 B/ D' ^ end
- U/ m% Q8 p* z! O. e$ F+ S) Lend
4 Z% P/ i# @1 Y7 j+ S8 n%以每天的从0时计数起,每隔十五分钟作为输入- s0 e6 E+ [ q5 y0 E9 v. M- Q
P=PA(7:27,:);& b- k& L+ V) e% s$ s: {
%以6月6的间隔十五分钟的发电量作为目标向量6 K" N* i. |2 h7 ]" I o4 h
T=PA(28,:);; n5 ?2 M, @" ?7 ?7 c
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
" A$ F3 w/ p" i& ]; m6 N. B%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,/ [# `9 a! V7 H4 f
%训练函数为梯度下降函数,即标准学习算法3 U6 E, Y& n" F+ K5 r
for i=1:21* b% m0 m9 B* ?) S
a(i,1)=0;! H8 `/ Y1 o& b1 w& |- r1 T8 w- S
a(i,2)=1;
2 b6 t: R* C+ ^- p$ d- wend
( S3 P, b) p& R5 c' B9 Dnet=newff(a,[21,1],{'tansig','logsig'},'traingd');
* v/ W* V1 u" X# D' Enet.trainParam.epochs=30000;
- U5 ^! T. a' O* M! ~net.trainParam.goal=0.01;# K* R1 J9 d! L
%设置学习速率为0.1
) v! P0 O( k* w% FLP.lr=0.1;
* s# F6 k, z1 F& B6 ]%训练网络/ o5 k' H& }8 H+ n
net=train(net,P,T);
1 M, |5 |9 H! o%预测6月6的发电量数据
, u) N6 ^& M2 W# S% h2 LT1=sim(net,P);%预测值5 i0 E% u& i' O# u- v( {
%PA.6月6日发电量真实值
4 n+ C. N2 @% o4 V# P+ sT0=PA(28,:);1 j3 i0 g/ e* X
%预测值与实际值的误差* f: Z' o" Q2 ~) G% Q" q: ]
for i=1:N(1,2)
$ C4 S" e% {8 h+ j ~ error(1,i)=T1(1,i)-T0(1,i);
; a% l2 Q" V) }9 b. b- ]end& n- S% @) {8 a" f' I) f' }
%绘制误差图* r2 r: H ` m# ~5 A ?! a
figure(1)4 N) [& o" s2 i
plot(1:N(1,2),error(1,1:N(1,2)),'-*')
0 l' }" y$ b0 ] p' R" {" J" L" Hgrid on" d+ g. {2 j( m8 X$ o! j
xlabel('时点x'),ylabel('发电功率误差y');
2 w2 @( o% U9 Q' ^" Vtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
* y8 Q6 o4 J$ ~4 I! h$ Y) Y& g. U%绘制实时函数图4 [8 Y) |/ f. w. f1 |" [) J
figure(2)
- v% x0 j. Y, Nplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')" v" G5 ?" V/ b$ m
grid on
; g# q8 k" W/ e: b! zlegend('实际值','预测值',2)
7 x% e: A L0 U5 P0 J! ^xlabel('时点x'),ylabel('发电功率y');: T0 X3 \; ^, A( K% q% X4 J
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
' {0 G; w; q# g3 `( F web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
, v. S( s( o5 f8 _
6 \; V. I- J) f' t, y5 }3 b; f% @& c; Y5 a" h; _
3 T" [: C0 T8 ~/ p- M0 [( I. ^0 \* G2 m
5 h; M+ `0 G& {: W一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?' g% E" K, c N, @! l, ^
, c2 A8 p. g) ~ |
zan
|