- 在线时间
- 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神经网络预测. o1 J( N# r, b7 x) I4 `
%6月6位于第28行
4 x' p' P- x: f) }clc,clear
) p: d. J' M5 v- U7 |load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
1 ~3 X: s7 W8 x+ e+ B# B @PA=PA(2:29,:);
9 u8 i* z- e5 g/ U7 E%数据的标准化; @, l: c) K, S& n- U
N=size(PA);
, Q0 c6 D- K# G# P7 Y0 yfor j=1:N(1,2)
* _4 \! t7 y, f/ n! z: u* E PAHminmax=minmax(PA(:,j)');- @8 [8 r6 e8 z+ j# L
for i=1:N(1,1): U, W Y, M/ s
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));4 ^( c! `( E$ u9 [, X
end
9 j" i/ n+ S0 i# Dend
( c& Q+ Q0 g$ w: U; \%以每天的从0时计数起,每隔十五分钟作为输入
( ]+ _2 J _8 w. Y( QP=PA(7:27,:);6 n5 R+ Q# G: \ v0 j' ^
%以6月6的间隔十五分钟的发电量作为目标向量1 k% S0 e2 W0 ?# M. B8 X- T; M6 ]
T=PA(28,:);8 {+ z/ w3 B2 o. \* A; m
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
3 e& b5 V6 X1 |' p%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,) W& d* g) w+ v+ Y( t
%训练函数为梯度下降函数,即标准学习算法; l6 I! I. e+ r
for i=1:21" e5 O# j2 `9 G9 ?
a(i,1)=0;
$ M/ c% g7 u2 y6 V2 j0 T a(i,2)=1;. i6 ]. J& Q7 V" v
end. o. e& |- I3 m( u; J
net=newff(a,[21,1],{'tansig','logsig'},'traingd');# C( U" p+ p. Q: H/ u
net.trainParam.epochs=30000;
$ `$ K0 p1 j2 Z. h- [1 Rnet.trainParam.goal=0.01;) h4 r7 C u! ]3 z8 Y2 g) b. P
%设置学习速率为0.1. E' i* z0 W) s
LP.lr=0.1;' m- }- e- y# z5 D O
%训练网络" M* ^) l. b' d" b1 y k |
net=train(net,P,T);
0 F* o, a. o) Y0 j" d4 I%预测6月6的发电量数据! X& k2 R5 q$ g0 e5 d
T1=sim(net,P);%预测值
0 S/ `" k$ Q3 v3 I* C- f%PA.6月6日发电量真实值
( G; ]" S: @, s$ t- \* oT0=PA(28,:);
7 f& @: A! X$ s# u& x, A: t& t7 o%预测值与实际值的误差
7 q: f: N) q( g7 Nfor i=1:N(1,2)) z n# a& D/ A; Q F7 ~8 T
error(1,i)=T1(1,i)-T0(1,i);' D7 t9 q& d% o9 A7 b3 d
end
5 l* T# J* k9 h5 Q. E%绘制误差图
" Z9 _2 ~6 Q) Nfigure(1)1 ^. R. @6 f+ K" D( Q" a+ x
plot(1:N(1,2),error(1,1:N(1,2)),'-*')3 S: v' y6 v7 p( I
grid on5 X0 _( g7 ~, V5 g$ ^- i6 `
xlabel('时点x'),ylabel('发电功率误差y');2 n% q. {4 n' X, V7 ^/ q
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
6 l& d# y" ~# L4 J! F( V! ]* N%绘制实时函数图
2 b) j1 g6 d- y5 j, z+ tfigure(2)
e' \5 r0 R7 b2 n1 V/ L! mplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
1 {1 e8 L, x: M6 w/ Ngrid on0 Q1 ?! z; S! \2 o7 O
legend('实际值','预测值',2)6 o C! l# I8 @. D# r. M
xlabel('时点x'),ylabel('发电功率y');- L2 F$ u, V1 a, S# v" f! p
title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')3 w& p8 A" S5 C& B& N# r+ @% F
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')& z* q3 o. i" q( y0 C9 }7 Q
! v# i. w4 h3 Y/ }) Z9 `. B# C5 i. _8 W! w: l
& K" P% Z# M' ^0 ]) v' k |/ l) o. \9 V
4 o& N! U- ? P" ^& P
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?. ?! s x) ]* S$ _4 F
7 A! X0 n4 Q! s |
zan
|