您好,欢迎来到东饰资讯网。
搜索
您的当前位置:首页BP神经网络matlab实例

BP神经网络matlab实例

来源:东饰资讯网
BP神经网络及其MATLAB实例

问题: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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务