预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

年份(年)1(1988)2(1989)3(1990)4(1991)5(1992)6(1993)7(1994)8(1995)实际值(ERI)0.10930.11100.11270.11410.11540.11640.11710.1175年份(年)9(1996)10(1997)11(1998)12(1999)13(2000)14(2001)15(2002)16(2003)实际值(ERI)0.11780.11790.11790.11790.11790.11800.11820.1185BP神经网络的训练过程为:先用1988年到2002年的指标历史数据作为网络的输入,用1989年到2003年的指标历史数据作为网络的输出,组成训练集对网络进行训练,使之误差达到满意的程度,用这样训练好的网络进行预测.采用滚动预测方法进行预测:滚动预测方法是通过一组历史数据预测未来某一时刻的值,然后把这一预测数据再视为历史数据继续预测下去,依次循环进行,逐步预测未来一段时期的值.用1989年到2003年数据作为网络的输入,2004年的预测值作为网络的输出.接着用1990年到2004年的数据作为网络的输入,2005年的预测值作为网络的输出.依次类推,这样就得到2010年的预测值。目前在BP网络的应用中,多采用三层结构.根据人工神经网络定理可知,只要用三层的BP网络就可实现任意函数的逼近.所以训练结果采用三层BP模型进行模拟预测.模型训练误差为0.00001,隐层单元数选取8个,学习速率为0.05,动态参数0.6,Sigmoid参数0.9,最大迭代次数3000.运行3000次后,样本拟合误差等于0.00021。P=[。。。];输入T=[。。。];输出%创建一个新的前向神经网络net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')%当前输入层权值和阈值inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}%当前网络层权值和阈值layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}%设置训练参数net_1.trainParam.show=50;net_1.trainParam.lr=0.05;net_1.trainParam.mc=0.9;net_1.trainParam.epochs=10000;net_1.trainParam.goal=1e-3;%调用TRAINGDM算法训练BP网络[net_1,tr]=train(net_1,P,T);%对BP网络进行仿真A=sim(net_1,P);%计算仿真误差E=T-A;MSE=mse(E)x=[。。。]';%测试sim(net_1,x)既然题目说的是预测,那么倒数第二行的代码x=[。。。]';%测试,x的值怎么确定呢,是不是题目从所给的数据中随便选一组作为测试啊?顺便问一下,为什么要有这个x呢?对未来的预测和这个x有什么关系啊sim(net_1,x)net_1是已经训练好的网络(用的是1988-2003的数据)从题目知道网络的输入-输出数据是这样产生的输入P对应输出T1988-2002--->20031989-2003--->20041990-2004--->2005…………1994-2008--->2009以上构成了1994-1988+1=7组输入输出对。利用P/T进行训练,训练成功(一般还要设一个确认集进行泛化能力的检测,光是训练误差小是不行的)后。sim(net_1,x)这是对网络进行仿真。在这个仿真函数中,给一个输入,(类似训练时用的输入P,列数可以不同,但行数必须一样),网络就给出你想要的输出。而这个x就是你最后要进行的预测的输入。由于你预测的是2010年的值,那么输入就是为1995-2009,这样“按道理”,网络就给出了2010年的值明白没?P=[12345678910111213141516];T=[0.10930.11100.11270.11410.11540.11640.11710.11750.11780.11790.11790.11790.11790.11800.11820.1185];net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm')inputWeights=net_1.IW{1,1}inputbias=net_1.b{1}layerWeights=net_1.LW{2,1}layerbias=net_1.b{2}net_1.trainParam.show=50;net_1.trainParam.lr=0.05;net_1.trainParam.mc=0.9;net_1.trainP