您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于神经网络的Mackey-Glass时间序列预测
目录1引言..................................................................................................................12MG时间序列..................................................................................................12.1MG时间序列简介................................................................................12.2利用dde23函数求解MG时间序列...................................................13BP神经网络....................................................................................................33.1神经网络总体思路................................................................................33.2MATLAB中的newff函数..................................................................33.3BP神经网络的训练.............................................................................43.4构建输入输出矩阵................................................................................63.5对MG时间序列未来值预测...............................................................64参考文献......................................................................................................75附录..............................................................................................................811引言本文选用的神经网络的是BP神经网络,利用MATLAB编程实现。首先通过求解Mackey-Glass方程得到具有513个数据的Mackey-Glass时间序列,其中一半用于训练神经网络,一半用于检测预测值。BP神经网络输入层神经元个数为4,隐含层为8,输出层为1。利用BP神经网络工具箱构建神经网络并对其进行训练,然后利用训练好的神经网络对未来值进行预测,画出比较图。2MG时间序列2.1MG时间序列简介Mackey-Glass混沌系统一类非常典型的混沌系统,混沌系统模型由以下的时滞微分方程来描述:)()(1)()(txtxtxdttdx其中=0.2,=0.1,=10,是可调参数,x(t)是在t时刻的时间序列的值。MG方程表现出了某种周期性与混沌特性,在16.8时,表现出周期性,在16.8时,则表现出混沌特性。2.2利用dde23函数求解MG时间序列本课程设计中取=10,也就是说MG时间序列会表现为周期性。可以利用MATLAB求解MG方程,MG方程是一个时滞微分方程,其中一种求解方法是利用MATLAB的dde23函数。具体求解方法是:首先建立MG.m函数文件,代码如下functiony=MG(t,x,z)%UNTITLEDSummaryofthisfunctiongoeshere%Detailedexplanationgoeshere2xlag=z(1,:);y=ones(1,1);y(1)=(0.2*xlag(1))/(1+(xlag(1))^10)-0.1*x(1);end然后需要建立命令文件timeMG.m,代码如下clear,clc;tau=10;sol=dde23('MG',tau,0.92,[1,1000]);figure;plot(sol.x,sol.y,'r');xlabel('t','fontsize',20,'fontname','timesnewroman','FontAngle','italic');ylabel('x(t)','fontsize',20,'fontname','timesnewroman','FontAngle','italic');gridon;在执行完这个命令文件后会生成MG时间序列的图像,具有很明显的周期性3改变一下,在程序里使tau=30,可以得到另一种图像,即具有混沌特性,本文不预测这种。3BP神经网络3.1神经网络总体思路利用MATLAB里的BP神经网络工具箱建立一个两层BP神经网络(这里的两层分别指的是隐含层和输出层,而输入层通常不算作一层)。其中输入层神经元个数为4,隐含层神经元个数为8,输出层个数为1。利用训练好的神经网络对未来的值进行预测并与实际值比较。3.2MATLAB中的newff函数BP神经网络的MATLAB实现可以采用MATLAB里的工具箱,通过调用newff来构建BP神经网络。newff函数参数列表有很多的可选参数,这里使用newff函数的一种简单的4形式。语法:net=newff(A,B,{C},Train)参数:A:一个n×2的矩阵,第i行元素为输入信号xi的最小值和最大值;B:一个k维行向量,其元素为网络中各层节点数;C:一个k维字符串行向量,每一分量为对应层神经元的激活函数;Train:训练函数,是一个字符串根据参考文献[1],选取各个参数,至于各个参数的到底该怎么设计我并没有研究。关于参数A,使用maxmin函数得到输入矩阵没列的最大值和最小值。关于参数B,两层的BP神经网络,隐含层为神经元个数为8,输出层为1,说以B为[81],是一个2维向量。关于参数C,隐含层的激活函数采用S函数,输出层的激励函数选用线性函数,于是C为{'logsig''purelin'},是一个2维字符串向量。关于参数Train,选用梯度下降自适应学习率训练函数Train取’traingdx’。3.3BP神经网络的训练使用train函数对神经网络进行训练。trian函数使用代码train(net,inputs,targets);inputs是输入矩阵,targets是输出矩阵,将在下一节介绍。网络配置参数一些重要的网络配置参数如下:net.trainparam.goal:神经网络训练的目标误差net.trainparam.show:显示中间结果的周期net.trainparam.epochs:最大迭代次数net.trainParam.lr:学习率迭代次数的选择太小虽然训练耗时短,但容易导致预测失败。所以在此选择10000。本文中使用的代码如下5%设置训练参数net.trainParam.lr=0.01;net.trainParam.epochs=10000;net.trainParam.goal=1e-6;net=train(net,inputs,targets);y=sim(net,inputs);MATLAB对BP神经网络进行训练的MATLAB工具箱界面63.4构建输入输出矩阵输出层神经元个数为4,于是需要构建一个4行N列的输入矩阵。得到MG时间序列中有513个数据,准备使用其中一半训练神经网络,后一半用于检验预测结果。以每4个连续数据作为输入,紧跟着的下一数据作为输出,一共可以得到200多组样本进行训练。构建输入输出矩阵代码如下tau=10;sol=dde23('MG',tau,0.92,[1,1000]);lag=4;%输入层神经元个数iinput=sol.y';%sol.y为原始序列(行向量)n=length(iinput)/2;%数据用于神经网络的训练%准备输入和输出数据inputs=zeros(lag,n-lag);fori=1:n-laginputs(:,i)=iinput(i:i+lag-1)';endtargets=sol.y(lag+1:n);%输出矩阵3.5对MG时间序列未来值预测之前解出来的MG时间序列的一半用来训练BP神经网络,后一半用作为未来的实际值,与预测值进行比较。预测200个数据,利用循环将网络输出重新输入,具体代码如下%预测与检验forecastn=200;%预测步数forecast_in=iinput(n-lag+1:n);forecast_out=zeros(1,forecastn);%预测输出%多步预测时,用下面的循环将网络输出重新输入fori=1:forecastn7forecast_out(i)=sim(net,forecast_in);forecast_in=[forecast_in(2:end);forecast_out(i)];endyy=[y,forecast_out];plot(yy);最终生成比较图,其中红色曲线为实际值,蓝色曲线为预测值。从图中可以看到有一部分预测值比较精准,但有一部分并不是很理想。4参考文献[1]赵新.基于遗传神经网络的MG时间序列预测方法研究[D].武汉科技大学,2006.[2]陈阳,王涛.基于区间二型单点Mamdani模糊逻辑系统的Mackey-Glass时间序列预测[J].辽宁工业大学学报(自然科学版),2015,01:1-5.85附录完整代码:MG.m中的代码如下,其主要功能是为dde23函数提供求解MG方程需要的函数句柄。functiony=MG(t,x,z)%UNTITLEDSummaryofthisfunctiongoeshere%Detailedexplanationgoesherexlag=z(1,:);y=ones(1,1);y(1)=(0.2*xlag(1))/(1+(xlag(1))^10)-0.1*x(1);endBP.m中的代码如下,是一个命令文件,实现MG时间序列的生成,神经网络的构建和训练,以及预测MG时间序列未来值。clear,clc;tau=10;sol=dde23('MG',tau,0.92,[1,1000]);lag=4;%输入层神经元个数iinput=sol.y';%sol.y为原始序列(行向量)n=length(iinput)/2;%数据用于神经网络的训练%准备输入和输出数据inputs=zeros(lag,n-lag);fori=1:n-laginputs(:,i)=iinput(i:i+lag-1)';endtargets=sol.y(lag+1:n);%创建两层的BP神经网络;隐含层神经元个数为8,激活函数为Logarithmicsigmoidtransfer%function;输出层神经元个数为1,激活函数为Lineartransferfunction;9net=newff(minmax(inputs),[81],{'logsig''purelin'},'traingdx');%设置训练参数net.trainParam.lr=0.01;net.trainParam.epochs=10000;net.trainParam.goal=1e-6;net=train(net,inputs,targets);y=sim(net,inputs);%plot(y);%holdon;plot(sol.y(5:end),'r');holdon;%预测与检验forecastn=200;%预测步数forecast_in=iinput(n
本文标题:基于神经网络的Mackey-Glass时间序列预测
链接地址:https://www.777doc.com/doc-6399503 .html