收藏 分销(赏)

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

上传人:精*** 文档编号:3104892 上传时间:2024-06-18 格式:DOC 页数:3 大小:20KB 下载积分:5 金币
下载 相关 举报
数学建模神经网络预测模型及程序.doc_第1页
第1页 / 共3页
数学建模神经网络预测模型及程序.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
年 份 (年) 1(1988) 2(1989) 3(1990) 4(1991) 5(1992) 6(1993) 7(1994) 8(1995) 实际值 (ERI) 0.1093 0.1110 0.1127 0.1141 0.1154 0.1164 0.1171 0.1175 年 份 (年) 9(1996) 10(1997) 11(1998) 12(1999) 13(2000) 14(2001) 15(2002) 16(2003) 实际值 (ERI) 0.1178 0.1179 0.1179 0.1179 0.1179 0.1180 0.1182 0.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.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 对应输出T 1988-2002--->2003 1989-2003--->2004 1990-2004--->2005 ………… 1994-2008--->2009 以上构成了1994-1988+1=7组输入输出对。 利用P/T进行训练,训练成功(一般还要设一个确认集进行泛化能力的检测,光是训练误差小是不行的)后。sim(net_1,x)这是对网络进行仿真。在这个仿真函数中,给一个输入,(类似训练时用的输入P,列数可以不同,但行数必须一样),网络就给出你想要的输出。 而这个x就是你最后要进行的预测的输入。由于你预测的是2010年的值,那么输入就是为1995-2009,这样“按道理”,网络就给出了2010年的值 明白没? P=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]; T=[0.1093 0.1110 0.1127 0.1141 0.1154 0.1164 0.1171 0.1175 0.1178 0.1179 0.1179 0.1179 0.1179 0.1180 0.1182 0.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.trainParam.epochs = 10000; net_1.trainParam.goal = 1e-3; [net_1,tr]=train(net_1,P,T); A = sim(net_1,P); E = T - A; MSE=mse(E) P1=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17]; T1= sim(net_1,P1); plot(P,T,'r*'); hold on; plot(P1,T1,'bo'); (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服