对于一个时间序列怎么编写bp神经网络matlab程序实现预测

对于一个时间序列怎么编写bp神经网络matlab程序实现预测,第1张

BP网络训练图:

P = [1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009];%输入向量

T = [1154 2121 2597 2518 352 4634 509 558 614 700 696 712];%期望输出

Z=[2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020]

%创建两层的BP网络:

net = newff([1998 2009],[100 1],{'tansig' 'purelin'});

nettrainparamshow=50;

%每次循环50次

nettrainParamepochs = 500;

%最大循环500次

net = train(net,P,T);

%对网络进行反复训练

只给出了一部分程序,其余的QQ传给你,留你的QQ。

结果:

Y =

Columns 1 through 7

1154067 2120911 2597029 2517979 3520027 4634023 5089910

Columns 8 through 12

5580155 6139892 6999980 6960063 7119970

预测值a =

Columns 1 through 7

7119970 7117126 7494216 7492672 7467096 7467096 7510786

Columns 8 through 11

7602729 7573316 6965151 6965151

分别是2010-2020年的预测数据。

%由于数据比较大,我又懒得用归一化,所以直接把数据降了3个数量级,

%不过我觉得应该没问题,但用归一化结果应该更准确些。。

%由于初始权值和阀值均是随机给的,所以每次仿真都有点点不同,这是正常的。

p=[1183 1303 1278;1303 1278 1284;1278 1284 1187 ;

1284 1187 1154;1187 1154 1267;1154 1267 1241;

1267 1241 1302;1241 1302 1195;1302 1195 1256]'0001;

t=[ 1284 1187 1154 1267 1241 1302 1195 1256 1348]0001;

net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingda');

nettrainParamgoal=0001;

nettrainParamshow=20;

nettrainParamepochs=1000;

nettrainParammin_grad=1e-10;

nettrainParammc=095;

[net,tr]=train(net,p,t);

t1=sim(net,[1302 1195 1256]'0001);

t2013=t11000%2013 的 预测 数据

运行结果:

t2013 =

13019

这是我曾经写过的一个灰色预测的程序:第一个文件为函数,需要在调用时输入原始数据x0和预测周期T, 第二个文件用于计算灰色关联度,使用时直接修改相关参数和原始数据。

--------------------------------------------------------------------------

第一个文件(用于灰色建模):grymdlm

--------------------------------------------------------------------------

function GM=grymdl(x0,T)

% 输入原始数据x0

% T为从最后一个历史数据算起的第T时点

x1=zeros(1,length(x0));B=zeros(length(x0)-1,2);

yn=zeros(length(x0)-1,1);Hatx0=zeros(1,length(x0)+T);

Hatx00=zeros(1,length(x0));Hatx1=zeros(1,length(x0)+T);

epsilon=zeros(length(x0),1);omega=zeros(length(x0),1);

for i=1:length(x0)

    for j=1:i

        x1(i)=x1(i)+x0(j);

    end

end

for i=1:length(x0)-1

    B(i,1)=(-1/2)(x1(i)+x1(i+1));

    B(i,2)=1;

    yn(i)=x0(i+1);

end

HatA=(inv(B'B))B'yn; %GM(1,1)模型参数估计

for k=1:length(x0)+T

    Hatx1(k)=(x0(1)-HatA(2)/HatA(1))exp(-HatA(1)(k-1))+HatA(2)/HatA(1);

end

Hatx0(1)=Hatx1(1);

for k=2:length(x0)+T

    Hatx0(k)=Hatx1(k)-Hatx1(k-1);%累计还原得到历史数据的模拟值

end

for i=1:length(x0) %开始模型检验

    epsilon(i)=x0(i)-Hatx0(i);

    omega(i)=(epsilon(i)/x0(i))100;

end

x0;

HatA;

Hatx0;

epsilon;

omega;

c=std(epsilon)/std(x0);

p=0;

for i=1:length(x0)

    if abs(epsilon(i)-mean(epsilon))<06745std(x0)

        p=p+1;

    end

end

p=p/length(x0);

if p>=095

    M1=1;

elseif p>=08

    M1=2;

elseif p>=07

    M1=3;

else

    M1=4;

end

if c<=035

    M2=1;

elseif c<=05

    M2=2;

elseif c<=065

    M2=3;

else

    M2=4;

end

M=max(M1,M2);

if M==1

    disp('The model is good,and the forecast is:'),

    disp(Hatx0(length(x0)+T))

elseif M==2

    disp('The model is eligibility,and the forecast is:'),

    disp(Hatx0(length(x0)+T))

elseif M==3

    disp('The model is not good,and the forecast is:'),

    disp(Hatx0(length(x0)+T))

else

    disp('The model is bad and try again')

    disp(Hatx0(length(x0)+T))

end

for i=1:length(x0)

    Hatx00(i)=Hatx0(i);

end

z=1:length(x0);

plot(z,x0,'-',z,Hatx00,':') %将原始数据和模拟值画在一个图上帮助观察

text(2,x0(2),'History data: real line')

text(length(x0)/2,Hatx00(length(x0))/2,'Simulation data:broken line')

GM=Hatx0(length(x0)+T);

--------------------------------------------------------------------------------

第二个文件(用于计算灰色关联度):grydgrm

--------------------------------------------------------------------------------

x=[264,4083,5,185,27,49;

    3256,5036,65,238,349,597;

    4116,6366,79,306,45,683;

    5182,8015,96,3943,6076,821;

    7058,10916,113,521,818,978;

    11147,13612,15,7392,11812,123;

    12716,1667,18,11817,18451,1675;

    16599,19691,2066,15665,24083,2149;

    24676,25756,2415,2183,3334,271]; %原始数据

delta=zeros(size(x,1),size(x,2)-1); %初始化绝对差

yita=zeros(size(delta,1),size(delta,2)); %初始化关联系数

for i=1:size(x,2)

    x(:,i)=x(:,i)/x(1,i);  %无量纲化处理

end

for i=1:(size(x,2)-1)

    delta(:,i)=abs(x(:,1)-x(:,i+1));  %求解delta

end

delta_min=min(min(delta,[],1)); %求解最小二级差

delta_max=max(max(delta,[],1)); %求解最大二级差

rou=05; %设定分辨系数为05

for i=1:size(delta,1)

    for j=1:size(delta,2)

        yita(i,j)=(delta_min+roudelta_max)/(delta(i,j)+roudelta_max); %计算关联系数

    end

end

r=sum(yita)/size(yita,1); %计算灰色关联

以上就是关于对于一个时间序列怎么编写bp神经网络matlab程序实现预测全部的内容,包括:对于一个时间序列怎么编写bp神经网络matlab程序实现预测、求MATLAB的BP神经网络预测程序、灰色预测matlab代码怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9283214.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存