数学建模神经网络预测模型及程序

发布时间:2023-03-22 06:54:00

.
(1(19882(19893(19904(19915(19926(19937(19948(1995实际值
(ERI0.10930.11100.11270.11410.11540.11640.11710.1175
(9(199610(199711(199812(199913(200014(200115(200216(2003实际值
(ERI0.11780.11790.11790.11790.11790.11800.11820.1185

BP神经网络的训练过程为:先用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.00021P=[。。。];输入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+17组输入输出对。
利用P/T进行训练,训练成功(一般还要设一个确认集进行泛化能力的检测,光是训练误差小是不行的)后。sim(net_1,x这是对网络进行仿真。在这个仿真函数中,给一个输入,(类似训练时用的输入P,列数可以不同,但行数必须一样),网络就给出你想要的输出。而这个x就是你最后要进行的预测的输入。由于你预测的是2010年的值,那么输入就是为1995-2009,这样“按道理”,网络就给出了2010年的值
明白没?

精品

数学建模神经网络预测模型及程序

相关推荐