1. 利用MATLAB求解神经网络模型
MATLAB中BP神经网络的常用函数如表9.4.1所示。
表9.4.1 BP神经网络常用函数表
另外,在MATLAB中有神经网络工具箱,它几乎完整地概括了现有的神经网络的新成果。对各种网络模型,神经网络工具箱集成了许多学习算法,为用户提供了极大的便利。
2. 神经网络模型应用实例
例1公路运量主要包括公路的客运量和公路货运量两个方面。据研究,某地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,表9.4.2给出了该地区1990年至2009年20年间公路运量的相关数据。根据有关部门数据,该地区2010年和2011年的人数分别为73.39和75.55万人,机动车数量分别为3.963 5万辆、4.097 5万辆,公路面积将分别为0.988 0万平方米、1.026 8万平方米。请利用BP神经网络预测该地区2010年、2011年的公路客运量和公路货运量。
表9.4.2 某地区的公路运量的相关数据
续表
为了解利用BP网络求解问题的过程,可把问题分为以下步骤:① 原始数据的输入;② 数据归一化;③ 网络建立以及训练;④ 对原始数据进行仿真;⑤ 将原始数据仿真的结果与已知样本进行对比;⑥ 对新数据进行仿真。
MATLAB程序如下:
%第一步:原始数据的输入,具体程序:
sqrts=[20.55 22.44 25.37 27.13 29.45 30.10 30.96 34.06 36.42 38.09 39.13 39.99 41.93 44.59 47.30 52.89 55.73 56.76 59.17 60.63]; %人数(单位:万人)
sqjdcs=[0.6 0.75 0.85 0.91 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]; %机动车数(单位:万辆)
sqglmj=[0.09 0.11 0.11 0.14 0.20 0.23 0.23 0.32 0.32 0.34 0.36 0.36 0.38 0.49 0.56 0.59 0.59 0.67 0.69 0.79]; %公路面积
glkyl=[5126 6217 7730 9145 10460 11387 12353 15750 18304 19836 21024 19490 20433 22598 25107 33442 36836 40548 42927 43462]; %公路客运量
glhyl=[1237 1379 1385 1399 1663 1714 1834 4322 8132 8936 11099 11203 10524 11115 13320 16762 18673 20724 20803 21804]; %公路货运量
p=[sqrts; sqjdcs; sqglmj]; %输入数据矩阵
t=[glkyl; glhyl]; %目标数据矩阵
%第二步:对输入数据矩阵和目标矩阵的数据进行归一化处理,具体程序:
[pn, ps] =mapminmax(p); %利用函数mapminmax对数据进行归一化处理
[tn, ts] =mapminmax(t);
%第三步:利用处理好的数据对网络进行训练,具体程序:
net=newff(pn, tn, [3, 7], {'tansig', 'tansig', 'purelin'}, 'traingd'); %3是第1个隐含层神经元的个数,7是第二个隐含层的个数;{‘tansig’, ‘tansig’, ‘purelin’}中分别是两个隐含层和输出层的激活函数。
net.trainParam.lr=0.05; %设置学习速率为0.05
net.trainParam.goal=0.0001; %误差精度
net.trainParam.epochs=50000; %最大训练次数(www.xing528.com)
net=train(net, pn, tn);
%第四步:利用训练好的BP网络对原始数据进行仿真,具体程序:
an=sim(net, pn);
a=mapminmax('reverse', an, ts) %把仿真得到的数据还原为原始的数量级
%第五步:用原始数据仿真的结果与已知数据进行对比,具体程序:
x=1990: 2009;
newk=a(1, : ); newh=a(2, : );
figure(1);
plot(x, newk, 'r-o', x, glkyl, 'b--+');
legend('网络输出客运量', '实际客运量');
xlabel('年份'); ylabel('客运量/万人');
title('客运量对比图'); figure(2);
plot(x, newh, 'r-o', x, glhyl, 'b--+');
legend('网络输出货运量', '实际货运量');
xlabel('年份');
ylabel('货运量/万吨');
title('货运量对比图');
%第六步:利用训练好的BP网络对新数据进行仿真,具体程序如下:
pnew=[73.79 75.55; 3.9635 4.0975; 0.9880 1.0268];
pnewn=mapminmax('apply', pnew, ps);
anewn=sim(net, pnewn);
anew=mapminmax('reverse', anewn, ts);
运行结果如图9.4.7所示。
图9.4.7 客运量和货运量网络输出和实际输出对比图
从实际样本与网络输出值之间的训练和测试的对比可以看出,两者之间的误差很小,利用该网络进行预测
即2010年、2011年的公路客运量分别为47 161万人和47 215万人,货运量分别为22 347万吨和22 367万吨。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。