神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)

目录

神经网络模型简述

实例:交通运输能力预测设计

MATLAB程序及仿真结果


    由于货物运输、地方经济及企业发展的紧密联系,因此作为反映货物运输需求的一项重要指标, 货运量预测研究和分析具有较强的实际意义。

    常用的货运量预测方法包括时间序列方法、移动平滑法、指数平滑和随机时间序列方法、相关(回归)分析法、灰色预测方法和作为多种方法综合的组合预测方法等.这些方法大都集中在对其因果关系回归模型和时间序列模型的分析上, 所建立的模型不能全面和本质地反映所预测动态数据的内在结构和复杂特性, 从而丢失了信息量.人工神经网络作为一种并行的计算模型, 具有传统建模方法所不具备的很多优点, 有很好的非线性映射能力, 对被建模对象的经验知识要求不多, 一般不必事先知道有关被建模对象的结参数和动作特性等方面的知识, 只需给出对象的输入和输出数据, 通过网络本身的学习功能就可以达到输入与输出的映射关系.货运量预测可以利用BP 网络模型和径向基网络模型来实现。

 

神经网络模型简述

BP神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,其激励函数是一般是S函数(即sigmoid函数)。从结构上讲,BP网络具有输入层、隐藏层和输出层;从本质上讲,BP算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。

径向基神经网络(RBF神经网络)是一种性能良好的前向网络,其激励函数是一般是高斯函数。具有最佳逼近、训练简洁、学习收敛速度快以及克服局部最小值问题的性能,目前已经证明RBF网络能够以任意精度逼近任意连续的函数,且具有全局逼近能力,从根本上解决了BP网络的局部最优问题,而且拓扑结构紧凑,结构参数可实现分离学习,收敛速度快。因此它已经被广泛应用于模式识别、非线性控制和图像处理等领域。

神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)_第1张图片

 

实例:交通运输能力预测设计

    输入的神经元可以根据需要求解的问题和数据表示方式确定。根据对关于货运量影响因素的分析,这里分别取国内生产总值GDP 、工业总产值、铁路运输路线长度、复线里程比重、公路运输线路长度、等级公路比重、铁路货车数量和民用载货车辆数量等8 项指标作为货运量的影响因子, 将它们作为网络的输入.以货运总量、铁轮货运量和公路货运量作为网络输出.由此来构建BP 网络和RBF网络。利用某7 年的历史统计数据作为网络的训练样本, 以后续2 年的历史统计数据作为网络的外推测试样本.输入样本如表1 所示, 目标样本如表2 所示.

 

表 1  输入的样本数据

GDP

工业

总产

铁路

运输

长度

复线

比重

公路

运输

长度

等级

公路

比重

铁路

货运

数量

民用

载货

车辆

58478

135185

5.30

0.23

16.2

0.21

1015.3

586.4

67884

152369

5.30

0.27

18.5

0.26

1107.6

577

74462

182563

6.21

0.25

21.4

0.28

1214.6

601.2

78345

201587

6.32

0.26

25.7

0.29

1336.5

626.8

82067

225689

6.32

0.26

30.2

0.31

1443.5

675.96

89403

240568

6.47

0.28

34.6

0.33

1516.2

726.31

95933

263856

6.48

0.28

39.5

0.36

1642.6

764.25

104790

285697

6.70

0.30

42.0

0.39

1763.1

852.21

116694

308765

6.70

0.30

46.3

0.41

1867.1

878.23

 

表 2  目标样本

 

货运量

铁路货运量

公路货运量

102467

52266

46153

124486

60728

56246

148691

69355

67346

162663

79757

78267

186695

91757

95647

205764

99736

98756

226697

109965

102765

245716

120537

111258

263683

130465

120412

    由于输入的每组样本数据包含8 项, 所以神经网络的输入层设置8个神经元。每组输入样本对应的目标样本包含3 项,所以输出层设置3 个神经元。

    

关于隐含层的设计:

    一般来讲, 一个三层的神经网络可以完成任意n 维输入到m 维输出的映射.但实际上, 隐层的层数和单元数的选择尚无理论上的指导, 一般是根据经验或者反复实验确定.因此, 网络往往存在很大的冗余性, 一定程度上增加了网络学习的负担.隐单元数目太多会导致学习时间过长、误差不一定最佳, 也会导致容错性差、不能识别以前没有看到的样本, 因此一定存在一个最佳的隐单元数.文中建立的BP神经网络模型中, 隐层神经元个数介于5-17.通过训练结果中误差的大小最终确定隐层中神经元的个数为14 .而RBF神经网络采用正规化网络模型,隐单元的个数与训练样本的个数相同,即7个.

 

MATLAB程序及仿真结果

 

 

BP网络程序:

p=[58478 135185 5.30 0.23 16.2 0.21 1015.3 586.4;
67884 152369 5.30 0.27 18.5 0.26 1107.6 577;
74462 182563 6.21 0.25 21.4 0.28 1214.6 601.2;
78345 201587 6.32 0.26 25.7 0.29 1336.5 626.8;
82067 225689 6.32 0.26 30.2 0.31 1443.5 675.96;
89403 240568 6.47 0.28 34.6 0.33 1516.2 726.31;
95933 263856 6.48 0.28 39.5 0.36 1642.6 764.25]';
t=[102467 52266 46153;124486 60728 56246;
148691 69355 67346;162663 79757 78267;
186695 91757 95647;205764 99736 98756;
226697 109965 102765]';
t1=clock;#对应于测试样本的目标输出
TF1 = 'tansig';TF2 = 'logsig'; 
net=newff(p,t,[14,3],{TF1 TF2 },'trainlm');
Net.trainParam.show=500;
net.trainParam.epochs=1000;
net.trainParam.goal=0.0001;
net=train(net,p,t);
date=etime(clock,t1)
y=sim(net,p);
p1=[104790 285697 6.70 0.30 42.0 0.39 1763.1 852.21;116694 308765 6.70 0.30 46.3 0.41 1867.1 878.23]';#测试样本
y1=sim(net,p1)#测试样本p1对应的BP网络实际输出

BP网络程序运行结果:

神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)_第2张图片神经网络 - BP神经网络与RBF神经网络模型解决实际问题 - (Matlab建模)_第3张图片

可以看出, 网络在训练18次(Epoch)后就收敛于目标函数.当带入2 组测试样本P1后, 网络的实际输出为:

y1 =1.0e+05 *
    2.2598    2.2802
    1.1027    1.1147
    1.0390    1.0464
耗时:date =0.6080


RBF网络程序:

 

p=[58478 135185 5.30 0.23 16.2 0.21 1015.3 586.4;
67884 152369 5.30 0.27 18.5 0.26 1107.6 577;
74462 182563 6.21 0.25 21.4 0.28 1214.6 601.2;
78345 201587 6.32 0.26 25.7 0.29 1336.5 626.8;
82067 225689 6.32 0.26 30.2 0.31 1443.5 675.96;
89403 240568 6.47 0.28 34.6 0.33 1516.2 726.31;
95933 263856 6.48 0.28 39.5 0.36 1642.6 764.25]';
t=[102467 52266 46153;
124486 60728 56246;
148691 69355 67346;
162663 79757 78267;
186695 91757 95647;
205764 99736 98756;
226697 109965 102765]';
t2=clock;
net=newrb(p,t);
datet=etime(clock,t2)
p1=[104790 285697 6.70 0.30 42.0 0.39 1763.1 852.21;
116694 308765 6.70 0.30 46.3 0.41 1867.1 878.23]';
y1=sim(net,p1)

RBF网络程序执行结果:

 

y1 =1.0e+05 *
    2.2670    2.2670
    1.0996    1.0996
    1.0277    1.0277
耗时:date = 0.0780

由于训练样本容量比较小,只有7 组数据, 所以预测精度不是很高.考虑到这些因素, 这里得到的预测结果还是可以接受的。

但从耗时来看,RBF网络的耗时远远小于BP网络,随着样本数据量加大,两者在耗时上的差距会越来越明显。

 

RBF网络的优点:
①  它具有唯一最佳逼近的特性,且无局部极小问题存在。
②  RBF神经网络具有较强的输入和输出映射功能,并且理论证明在前向网络中RBF网络是完成映射功能的最优网络。
③  网络连接权值与输出呈线性关系。
④  分类能力好。
⑤  学习过程收敛速度快。

 

 

 

你可能感兴趣的:(R/,Matlab/,Lingo/,Lindo,-,建模)