- 在线时间
- 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- Z, a# x0 `. s
%6月6位于第28行
. U6 t) k) `9 p7 z1 N, yclc,clear' m6 N6 @, O* i
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
9 X1 b0 |- a% a' d8 H4 nPA=PA(2:29,:);; b: J) }8 i% b( A
%数据的标准化) c- |, n, S- z7 v
N=size(PA);
' A6 f1 I8 F+ afor j=1:N(1,2)8 {. V Z8 o1 Z; X
PAHminmax=minmax(PA(:,j)');- y1 J' n/ j0 W# T2 c
for i=1:N(1,1)0 T$ W `% ?9 j6 Q# J: f
PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));3 O) ]3 x& L: ~, x
end
7 V/ V$ u9 D& U6 N1 W% M) @end
1 I9 ~2 H3 `0 }7 t5 u%以每天的从0时计数起,每隔十五分钟作为输入
$ h1 _4 K% {+ d$ T- gP=PA(7:27,:);
, b4 ^) S" N/ @/ T |%以6月6的间隔十五分钟的发电量作为目标向量! l' I& O# I- _; H
T=PA(28,:);2 h2 K* U: V: S7 ?! e
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
8 b w" p0 e; |" ~% W6 n1 I3 T%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,* i5 T, P# B: @) U9 }. d2 L
%训练函数为梯度下降函数,即标准学习算法, w! _. |6 b) z& S
for i=1:21, g/ y* `2 G( A. o! w
a(i,1)=0;$ }( d! @+ d. C8 {4 q
a(i,2)=1;
, o. @# n5 K; n' a) U4 v$ e$ Y7 Rend% l& Y3 P& U. d, r, {/ n
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
5 Z) L s% Z9 enet.trainParam.epochs=30000;
: }% t/ Z7 d% r" qnet.trainParam.goal=0.01;
7 s: G; T! c4 a9 |' I7 F! `%设置学习速率为0.1
* l6 ^2 A1 L& ~! T5 `LP.lr=0.1;
) P$ [5 I% i3 h4 v1 Q, Z3 ]%训练网络
$ d4 P: v+ }! z2 `& e$ Wnet=train(net,P,T);
8 z+ c) D! H' K1 c%预测6月6的发电量数据
+ _' d8 g1 N; {4 z+ r$ x, M. I0 ^T1=sim(net,P);%预测值' k( `2 n4 p1 n+ {; D; i
%PA.6月6日发电量真实值1 m# o/ o* y" {' g
T0=PA(28,:);, w0 }3 T/ r) z- a; z' J$ r" @% Z8 i" l Y! B
%预测值与实际值的误差
4 q" e+ l7 f) xfor i=1:N(1,2)2 \% a4 L! H; U7 L
error(1,i)=T1(1,i)-T0(1,i);
+ g0 ]& @8 k) ^' n, Y L3 Yend
$ I" Z6 C& Y- y1 p( N, H |%绘制误差图
' c" a3 ^ l, [2 ?- @8 {$ Ofigure(1)2 x4 b* r3 D |; y0 M
plot(1:N(1,2),error(1,1:N(1,2)),'-*')% b6 L' Z3 o$ X2 ?
grid on8 ]$ R! B* ^# R; t
xlabel('时点x'),ylabel('发电功率误差y');
/ o! _* m% i7 A# d1 Gtitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
2 Q+ A; O. N g9 |5 V- O%绘制实时函数图8 Y% F/ q2 k8 U ^. f$ {+ Z" b
figure(2)
8 u; r: H; d5 i- b* ?plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r'); p; b. f% }' E: }$ R' M' [
grid on# p7 a- _3 G! c) e, c
legend('实际值','预测值',2)0 j; Z: g' X" B0 N- c7 k
xlabel('时点x'),ylabel('发电功率y');
) [# s3 O4 ^2 p1 c/ X( g/ E/ ^title('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
N9 B; \' Q* ]/ v8 _2 O3 R8 n web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
8 @# y" n1 D' p* c0 f! H; v
4 v) U7 R- Z. |' P3 c4 @2 R% ]1 B& U8 A. ]) P
. g2 \, {8 ?' U9 r/ x! R# L. K' ?! k: ^& _) [
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
2 x8 n4 @- m4 k, [# z7 g. X& a4 B% I
|
zan
|