- 在线时间
- 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神经网络预测
* m4 T; B8 ]4 w* }- E& |+ ?6 v%6月6位于第28行! h' ?7 q) R& u
clc,clear) H/ a" `4 v1 p: ?9 r
load ('data.mat')%原始数据以列向量的方式存放在workplace文件中
9 A; M* A: W9 I% {: Q$ t7 w8 v* }PA=PA(2:29,:);
6 V( t* @5 x' l%数据的标准化
1 v& A2 v; C+ ~8 M) a& ?3 bN=size(PA); X8 w) |* c# A/ D: ~1 B6 i5 n
for j=1:N(1,2)
, T& F& {' w& {/ a. ^ PAHminmax=minmax(PA(:,j)');. O- e5 q7 u+ O
for i=1:N(1,1)
3 Z% p# C! k3 ? PA(i,j)=(PA(i,j)-PAHminmax(1,1))/(PAHminmax(1,2)-PAHminmax(1,1));9 W( k, E5 b# F m
end
; p6 a7 q" u+ N" Z7 ^end3 e" ~1 L6 o) e& S
%以每天的从0时计数起,每隔十五分钟作为输入 s8 {% o( p5 T' w- Y
P=PA(7:27,:);
' Q Z% S' f, U$ v%以6月6的间隔十五分钟的发电量作为目标向量8 g9 L9 P2 `9 _( M
T=PA(28,:);+ L8 _4 f. B) v0 S' V$ I
%创建一个BP神经网络,每一个输入向量的取值范围为[0 ,1],隐含层有22个神经元,
5 S# N3 N, z7 C+ a. t2 k7 _3 w: O& i%输出层有一个神经元,隐含层的激活函数为tansig,输出层的激活函数为%logsig,7 j+ N/ O# ~: g7 K* R5 ~5 a
%训练函数为梯度下降函数,即标准学习算法
( A8 }; i o% i- ofor i=1:21
/ c8 N' O: `; \ a(i,1)=0;& K3 @* L; B+ T7 x- f* U* ]' ?3 B/ H
a(i,2)=1;: a8 R3 X/ t, s; n4 I
end' T/ ?8 h! I9 x3 _5 [& `3 a
net=newff(a,[21,1],{'tansig','logsig'},'traingd');
: h* D+ o/ H+ d9 j y7 }6 O7 z/ e, znet.trainParam.epochs=30000;
% R( n4 N! u1 m/ ~net.trainParam.goal=0.01;
9 I0 d! @/ N" s/ Q; m" F%设置学习速率为0.13 w+ w, T) E$ C; P* {8 s
LP.lr=0.1;
$ |$ T) q6 r7 _1 v2 h# L%训练网络 W0 f6 P# i6 y
net=train(net,P,T);
' {2 ]5 w; ?; i' B- f%预测6月6的发电量数据
5 z6 c3 G3 s' S1 L& g- fT1=sim(net,P);%预测值
i' e6 D& y l' G) p%PA.6月6日发电量真实值
# t1 p4 ]/ V5 U, x0 _0 \T0=PA(28,:);
: e6 E l6 n( K8 ]* u0 u%预测值与实际值的误差& e6 \) {& ~5 e6 ^( i
for i=1:N(1,2)2 Y/ }; a% v3 u. N8 ^7 L
error(1,i)=T1(1,i)-T0(1,i);
% J! Q2 N* d3 a bend
9 w9 [' ~% p' \$ ] g6 I4 [%绘制误差图
( E& E% a+ E3 T& R% \# u* I" ^figure(1)
R2 X" [% {; T }4 s8 j9 t9 {' wplot(1:N(1,2),error(1,1:N(1,2)),'-*'), ]0 n' |7 J$ a1 {0 O# R. Y. Q
grid on
( V/ C, w" H/ i# R9 Jxlabel('时点x'),ylabel('发电功率误差y');2 z- C5 k" y" s ?
title('PA6.6.0.0-6.6.23.45发电功率误差图像')
$ e! |* _8 l- B6 q) E%绘制实时函数图
; y9 L/ X8 J2 }* \$ ^0 t! E) o3 Ifigure(2)
1 x: a0 v9 }( p7 u0 Zplot(1:N(1,2),T0(1,:),1:N(1,2),T1(1,:),'r')( ^' H, W8 k! U0 q6 b5 r, D
grid on, M, E; N+ q, v+ T
legend('实际值','预测值',2)7 C+ q' P9 J7 o2 l
xlabel('时点x'),ylabel('发电功率y');
- M& O4 T2 }9 ptitle('PA6.6.0.0-6.6.23.45发电功率实时函数图像')8 i+ T+ t& B. A
web('http://www.ilovematlab.cn/forum-238-1.html','-browser')
. {4 Z9 c- y7 N' K/ A- T! s5 K- }) W
. Y: R# P! f% s: y! j H) `) m
8 ?! m1 ]- L* J' ]/ x. Y
8 |2 P+ Q1 b/ Q. q
一本书关于预测发电量的BP的程序。我稍微有点纳闷,既然你已经知道了6月6日的实际值,并且都拿相应的数据来作目标向量了,还利用神经网络来预测6月6日的发电量,意义何在?8 U/ N- r, O+ F" h" | B
+ v. k# s3 y B* a! q
|
zan
|