问题:BP神经网络预测2020年某地区客运量和货运量
公路运量主要包括公路客运量和公路货运量两方面。某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1999-2018)的公路运量相关数据如下:人数/万人:20.5539.130.62.150.090.36512621024123711099
22.4439.990.752.20.110.36621719490137911203
25.3741.930.852.250.110.38773020433138510524
27.1344.590.92.350.140.49914522598139911115
29.47.301.052.50.200.561046025107166313320
30.1052.1.352.60.230.591138733442171416762
30.9655.731.452.70.230.5912353368361834
432234.0656.761.62.850.320.67
36.4259.171.72.950.320.69
38.0960.631.853.10.340.79
机动车数量/万辆:
公路面积/单位:万平方公里:
公路客运量/万人:
15750183041983084292743462813220803
3621804
公路货运量/万吨:
1867320724
影响公路客运量和公路货运量主要的三个因素是:该地区的人数、机动车数量和公路面积。
Matlab代码实现
%人数(单位:万人)
numberOfPeople=[20.5522.4425.3727.1329.4530.1030.9634.0636.4238.0939.1339.9941.9344.5947.3052.55.7356.7659.1760.63];%机动车数(单位:万辆)
numberOfAutomobile=[0.60.750.850.91.051.351.451.61.71.852.152.22.252.352.52.62.72.852.953.1];%公路面积(单位:万平方公里)
roadArea=[0.090.110.110.140.200.230.230.320.320.340.360.360.38
0.490.560.590.590.670.690.79];%公路客运量(单位:万人)
passengerVolume=[51266217773091451046011387123531575018304198362102419490204332259825107334423683084292743462];%公路货运量(单位:万吨)
freightVolume=[1237137913851399166317141834432281323611099112031052411115133201676218673207242080321804];%输入数据矩阵
p=[numberOfPeople;numberOfAutomobile;roadArea];%目标(输出)数据矩阵
t=[passengerVolume;freightVolume];
%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理[pn,inputStr]=mapminmax(p);[tn,outputStr]=mapminmax(t);%建立BP神经网络
net=newff(pn,tn,[372],{'purelin','logsig','purelin'});%每10轮回显示一次结果net.trainParam.show=10;%最大训练次数
net.trainParam.epochs=5000;%网络的学习速率
net.trainParam.lr=0.05;%训练网络所要达到的目标误差
net.trainParam.goal=0.65*10^(-3);
%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置
net.divideFcn='';%开始训练网络
net=train(net,pn,tn);
%使用训练好的网络,基于训练集的数据对BP网络进行仿真得到网络输出结果%(因为输入样本(训练集)容量较少,否则一般必须用新鲜数据进行仿真测试)answer=sim(net,pn);%反归一化
answer1=mapminmax('reverse',answer,outputStr);%绘制测试样本神经网络输出和实际样本输出的对比图(figure(1))t=1999:2018;
%测试样本网络输出客运量a1=answer1(1,:);%测试样本网络输出货运量a2=answer1(2,:);figure(1);
subplot(2,1,1);plot(t,a1,'ro',t,passengerVolume,'b+');legend('网络输出客运量','实际客运量');xlabel('年份');ylabel('客运量/万人');title('神经网络客运量学习与测试对比图');gridon;
subplot(2,1,2);plot(t,a2,'ro',t,freightVolume,'b+');legend('网络输出货运量','实际货运量');xlabel('年份');ylabel('货运量/万吨');title('神经网络货运量学习与测试对比图');gridon;
%使用训练好的神经网络对新输入数据进行预测
%新输入数据(2019年和2020年的相关数据)
newInput=[73.3975.55;3.963.0975;0.98801.0268];
%利用原始输入数据(训练集的输入数据)的归一化参数对新输入数据进行归一化newInput=mapminmax('apply',newInput,inputStr);%进行仿真
newOutput=sim(net,newInput);%反归一化
newOutput=mapminmax('reverse',newOutput,outputStr);disp('预测2019和2020年的公路客运量分别为(单位:万人):');newOutput(1,:)
disp('预测2019和2020年的公路货运量分别为(单位:万吨):');newOutput(2,:)
%在figure(1)的基础上绘制2019和2020年的预测情况figure(2);t1=1999:2020;
subplot(2,1,1);plot(t1,[a1newOutput(1,:)],'ro',t,passengerVolume,'b+');
legend('网络输出客运量','实际客运量');xlabel('年份');ylabel('客运量/万人');
title('神经网络客运量学习与测试对比图(添加了预测数据)');gridon;
subplot(2,1,2);plot(t1,[a2newOutput(2,:)],'ro',t,freightVolume,'b+');
legend('网络输出货运量','实际货运量');xlabel('年份');ylabel('货运量/万吨');
title('神经网络货运量学习与测试对比图(添加了预测数据)');
gridon;
运行结果
Matlab绘制的图像
BP神经网络货运量学习与测试对比图
BP神经网络货运量学习与测试对比图(包含预测值)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务