- 在线时间
- 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神经网络预测
! B% H) `: H% w2 Z%6月6位于第28行6 ]0 R9 T5 y% U: Y# B5 S
clc,clear; T- [1 R& D3 Y1 p( z* v" k; r
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中4 E7 w* v2 r* n9 U: A; l( k
PA=PA(2:29,:);
& H( `2 B" X0 Y' K! N' G: C5 z%数据的标准化, T' o) t/ V$ H1 K
N=size(PA);
( U" V8 ?0 R* S0 M8 S( Kfor j=1:N(1,2)4 T5 _9 U1 y ]2 L: L$ Z
PAHminmax=minmax(PA(:,j)');
4 ?5 m# X0 e" E8 O$ l for i=1:N(1,1)
: s# `9 f8 f. h: K( f, O3 S PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));0 g6 H. T. r0 J& c" o9 I/ N
end
9 w9 s. v5 D# P" U, K, Q* ?end
, @# M- L) a: l%以每天的从0时计数起,每隔十五分钟作为输入
4 s0 l& e9 J) ?# K0 [! p" N6 jP=PA(7:27,:); ]) p% d4 I- e0 \! [
%以6月6的间隔十五分钟的发电量作为目标向量( m* q5 I+ h1 z0 i* O
T=PA(28,:);4 \/ B9 P7 q' z: b( q: v: `
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,9 ]3 }) N; U6 v+ K6 R. v
%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,
' u2 \; W& H7 {# B, r$ K# r%训练函数为梯度下降函数,即标准学习算法
- F* s9 B( j1 f8 `) X/ {( sfor i=1:21
. h4 [( O" w" J1 m$ v# O; R a(i,1)=0;
" e$ m* J) G1 Y( D0 A& d% j a(i,2)=1;
- s) O; ]( R3 c* ?9 E# c; Kend
; `8 o6 X6 I& [4 O1 k2 Anet=newff(a,[21,1],{'tansig','logsig'},'traingd');5 f: Y/ z9 Y, C7 H
net.trainParam.epochs=30000;
' x# c; x, c, J4 } o! f0 J! nnet.trainParam.goal=0.01;
# z W5 w9 ~+ [4 r6 ~%设置学习速率为0.1; G' V$ K0 S. n- x+ x4 ~
LP.lr=0.1;7 y' F7 v- `4 e/ p
%训练网络
! ~7 `9 e, Z: s' J9 P7 I* V( }net=train(net,P,T);
2 k+ M& f" J0 W7 y& U%预测6月6的发电量数据
4 F2 c; F+ _( P0 ~T1=sim(net,P);%预测值
0 W$ f% m4 q3 K4 n: _+ w' `1 d%PA.6月6日发电量真实值% x- v- {/ x! Y$ j0 p
T0=PA(28,:);
, `1 m; ]$ M0 ^" g& p5 ]%预测值与实际值的误差
. u$ u/ J/ _' Q {( Tfor i=1:N(1,2)
& ]3 Q h3 G1 F1 q; u' O3 o8 j error(1,i)=T1(1,i)-T0(1,i);8 H9 k% f+ c/ `
end3 [8 V' I6 Q2 j
%绘制误差图
( X$ d' \4 E- b$ B# }figure(1)
7 P g; ]# E9 O7 Jplot(1:N(1,2),error(1,1:N(1,2)),'-*')1 [6 g* a& e/ w
grid on
: N8 Z# q9 q+ l# U1 Nxlabel('时点x'),ylabel('发电功率误差y');
; X' k8 O1 m9 T) m: ztitle('PA6.6.0.0-6.6.23.45发电功率误差图像')
0 @: d0 |6 P8 M6 `%绘制实时函数图3 R, n& {/ _, g" \3 P
figure(2)/ r% I" j/ d9 Z- t" | D
plot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')
- n: l$ E$ l# I' I$ O) ggrid on+ \' T" X' R, D2 x
legend('实际值','预测值',2)
- }% _! [' V! |' z( D7 Q$ D# Dxlabel('时点x'),ylabel('发电功率y');
" Y( ~) }- |: z4 t4 j) ttitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')
( h8 ]/ V8 d) b' A& A web('http://www.ilovematlab.cn/forum-238-1.html','-browser')7 e1 g$ U7 ?" D/ ?: O8 e
2 h! O! y0 O9 w- A0 C" V( b8 K) @7 i6 j9 v8 _1 z
" B0 u4 ~- v) N9 j, i/ M( F
) z2 u7 P4 {# @
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?
& j/ d: h6 x9 n; |8 ~$ A
, w* v& S+ {* t! e3 } |
zan
|