BP神经网络matlab实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BP神经网络及其MATLAB实例

问题:BP神经网络预测2020年某地区客运量和货运量

公路运量主要包括公路客运量和公路货运量两方面。某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1999-2018)的公路运量相关数据如下:

人数/万人:

20.5522.4425.3727.1329.4530.1030.9634.0636.4238.09 39.1339.9941.9344.5947.3052.8955.7356.7659.1760.63机动车数量/万辆:

0.60.750.850.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1

公路面积/单位:万平方公里:

0.090.110.110.140.200.230.230.320.320.34 0.360.360.380.490.560.590.590.670.690.79

公路客运量/万人:5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462公路货运量/万吨:

1237137913851399166317141834432281328936 11099112031052411115133201676218673207242080321804影响公路客运量和公路货运量主要的三个因素是:该地区的人数、机动车数量和公路面积。

Matlab代码实现

%人数(单位:万人)

numberOfPeople=[20.5522.4425.3727.1329.4530.1030.9634.0636.42 38.0939.1339.9941.9344.5947.3052.8955.7356.7659.1760.63];

%机动车数(单位:万辆)

numberOfAutomobile=[0.60.750.850.91.051.351.451.61.71.852.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.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=[5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462];

%公路货运量(单位:万吨)

freightVolume=[123713791385139916631714183443228132893611099 112031052411115133201676218673207242080321804];

%输入数据矩阵

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('神经网络客运量学习与测试对比图');

grid on;

subplot(2,1,2);plot(t,a2,'ro',t,freightVolume,'b+');

legend('网络输出货运量','实际货运量');

xlabel('年份');ylabel('货运量/万吨');

title('神经网络货运量学习与测试对比图');

grid on;

%使用训练好的神经网络对新输入数据进行预测

相关文档
最新文档