数学建模获奖作品.docx
《数学建模获奖作品.docx》由会员分享,可在线阅读,更多相关《数学建模获奖作品.docx(16页珍藏版)》请在冰豆网上搜索。
![数学建模获奖作品.docx](https://file1.bdocx.com/fileroot1/2022-11/29/2b9b4bc0-820a-4968-bb30-226f5ed02b56/2b9b4bc0-820a-4968-bb30-226f5ed02b561.gif)
数学建模获奖作品
走遍全中国——基于蚂蚁算法的解决方案
摘要:
本文是解决一个旅行商问题(TSP),这里我们基于蚂蚁算法,对“走遍全国”这一具体问题建立了相应的TSP数学模型,并且基于Matlab软件编写了相应的程序,从而找出“走遍全中国”中34个城市的最短路。
对于第一问:
由已知的地理位置(经纬度)设计并计算出了最短路旅行方案:
哈尔滨—长春—沈阳—上海—杭州—南京—合肥—武汉—长沙—南昌—福州—台北—香港—澳门—广州—海口—南宁—贵州—重庆—成都—昆明—拉萨—乌鲁木齐—西宁—兰州—银川—西安—郑州—济南—天津—北京—石家庄—太原—呼和浩特—哈尔滨。
对于第二、三问:
考虑到实际旅行线路的制约,本问基于上问设计的最短线路,对特定两城市之间加以分析,为此本文制定了相应的乘车规则,分别就省钱、省时、方便建立了数学模型。
第四问:
本文应用程序运行时间的增长率,来刻画该算法的时间复杂性,即
,从而通过对比说明了蚂蚁算法的可行性。
第五问:
蚂蚁算法当接近最优解时收敛速度快,而开始时收敛速度很慢。
所以想到使蚂蚁算法去和其他一些开始收敛速度快的算法(如粒子群算法)结合,这样使蚂蚁算法得到优化。
关键词:
蚂蚁算法旅行商问题
1问题分析:
由于人们在旅游方式、时间安排、经济状况等诸多因素的不同导致了,对于旅游线路的设计与选取变得更加迫切。
对于旅行社而言,不同的线路设计直接影响到旅行社的发展。
而对于旅行者而言,不同的路线使我们更能充分利用现有的经济、时间等来安排自己的旅行路线。
对于模型的建立本文将旅行者分为经济型、省时和方便三方面建立了模型。
在设计最短路问题当中,本文仅从我国省会的地理位置(经纬度)方面加以设计,即不考虑实际当中的铁路、航空里程。
假设旅行者周先生能通过互联网订到从A市到B市的火车票(飞机票),那么在对于解决第二问的关键就转变为对第一问结果在现实背景下的“修订”。
本文所采用的算法为ACO算法,其多样性和正反馈的特点不仅保证了系统的多样性,而且保证了优良性能得到强化,
2符号说明
城市规模,即城市的数目;
城市数目的增量;
某个时刻;
乘坐火车时间;
当城市数
增大时,运行时间的增长量;
算法执行的时间增长率;
某两城市间距离;
选取交通工具的距离参数。
3模型假设:
假设旅行者在旅游过程中未出现突发事件(例如身体状况、恶劣天气等)打断其旅游;
假设在旅行当中不存在飞机票与火车票的打折的情况;
假设任意两城市之间可以直接到达,即出发城市到目的城市之间存在铁路或航空线路;
假设忽略铁路或航空里程与实际里程的误差;
假设所乘列车或航班均准时到站,不存在晚点等因素;
假设在旅行当中都可购买到相应的火车票与机票;
4模型的建立及求解
第一问求解:
求解全国34个省市地区的最短路是一个旅行商问题,这里我们运用蚂蚁算法来求解。
在该问方案设计中本文忽略了出发城市与目的城市之间是否存在火车线路与飞机航线。
首先把经纬度坐标投影到了平面上的直角坐标(见附表)
运行程序,最终结果——最短路径如下所示:
>>ACO('liye003.tsp')
ASisreadinginputnodesfile...
34nodesinatt48hasbeenreadin
ASstartat04-May-201014:
32:
37
ShowingIterativeBestSolution:
ASstopat04-May-201014:
36:
59
Drawingtheiterativecourse'scurve
我们发现乌鲁木齐、拉萨的相对位置在球面和平面上有所不同。
最终得出了最短路旅行方案:
哈尔滨—长春—沈阳—上海—杭州—南京—合肥—武汉—长沙—南昌—福州—台北—香港—澳门—广州—海口—南宁—贵州—重庆—成都—昆明—拉萨—乌鲁木齐—西宁——兰州——银川—西安—郑州—济南—天津—北京—石家庄—太原—呼和浩特—哈尔滨。
第二、三问求解:
考虑到实际情况(火车线路、航空线路)的制约,本问基于第一问的设计基础上,对特定的两城市之间的乘车或乘飞机的选择方案上制定了相应的规则。
分析如下:
1.若在两地之间无快车或动车的情况下,选择乘坐飞机;
2.当两地间距离(特指铁路里程)大于某个设定的值,即在某段中如果我们选取乘坐火车,不仅解决不了时间上的浪费,而且甚至会提高费用时:
(1)
将乘坐飞机。
这里的本文规定
3.当乘车时间
,本文规定此情况乘坐飞机;与2.是“或”的关系;
4.本文规定
为一个临界点。
在白天的时规定乘坐动车;而当乘车时间
落在区间
时乘坐卧铺,这样不仅节省白天的旅行时间,而且不影响周先生的休息;
5.当乘火车时间
,本文规定乘坐动车。
6.在设置省时方案当中,将乘坐快车的情况尽可能的换为乘坐飞机,从而达到更加节省时间的目的;
7.设置省钱的方案中,尽可能的少乘坐飞机,多安排乘坐火车。
在旅游过程当中,我们建议周游先生:
从香港乘坐其他交通工具到澳门旅游,例如:
轮船。
而从澳门到达广州的这段旅行当中建议乘坐汽车。
由以上规则,我们给出,分别为省钱、省时和方便的三种方案,相应数据见附录,先给出路线如下表:
表1—省钱方案具体安排
时间
始发地
目的地
工具
出发
到达
耗时
金额
5.1
哈尔滨
长春
D28
9:
02
10:
48
1小时46分
77
5.3
长春
沈阳
D26
17:
26
19:
31
2小时5分
92
5.6
沈阳
上海
MU5610
17:
10
19:
20
2小时10分
1300
5.9
上海
杭州
D5681
19:
03
20:
21
1小时18分
54
5.12
杭州
南京
T34
14:
00
20:
28
6小时28分
137
5.15
南京
合肥
D3014
19:
15
20:
23
1小时8分
48
5.18
合肥
武汉
D3052
14:
40
16:
44
2小时4分
113
5.21
武汉
长沙
G1057
17:
10
18:
38
1小时28分
175
5.24
长沙
南昌
D207
11:
33
14:
46
3小时13分
130
5.27
南昌
福州
K8716
20:
36
6:
20
9小时44分
162
5.30
福州
台北
MF883
13:
40
15:
00
1小时20分
1000
6.2
台北
香港
CI917
15:
40
17:
25
1小时45分
2398
6.11
广州
海口
CZ6790
17:
35
18:
35
1小时
705
6.14
海口
南宁
HU7442
19:
30
20:
20
50分
610
6.17
南宁
贵阳
GS7519
14:
30
15:
25
55分
650
6.20
贵阳
重庆
K1036
20:
33
8:
13
11小时40分
83
6.23
重庆
成都
D5115
18:
48
20:
52
2小时4分
98
6.26
成都
昆明
8L9976
16:
20
17:
30
1小时10分
990
6.30
昆明
拉萨
MU5837
7:
00
10:
35
3小时35分
1960
7.5
乌鲁木齐
西宁
CZ6881
9:
15
11:
20
2小时5分
1100
7.8
西宁
兰州
T210
15:
08
17:
23
2小时15分
50
7.11
兰州
银川
K916
22:
40
7:
30
8小时50分
97
7.14
银川
西安
MU9606
19:
05
20:
15
1小时10分
600
7.17
西安
郑州
G2012
17:
50
20:
03
2小时13分
240
7.20
郑州
济南
K206
20:
33
5:
51
9小时18分
170
7.23
济南
天津
D162
15:
15
17:
57
2小时42分
112
7.26
天津
北京
C2074
18:
25
18:
55
30分
58
7.29
北京
石家庄
D4527
16:
31
18:
31
2小时
86
8.1
石家庄
太原
D2015
18:
24
19:
30
1小时6分
70
8.4
太原
呼和浩特
8L9945
18:
40
19:
35
55分
430
8.7
呼和浩特
哈尔滨
CA1112
13:
00
17:
55
4小时55分
1425
总计
93.7小时
15220
表2—省时方案具体安排
时间
始发地
目的地
工具
出发
到达
耗时
金额
5.1
哈尔滨
长春
D28
9:
20
10:
48
1小时46分
77
5.3
长春
沈阳
D26
17:
26
19:
31
2小时5分
92
5.6
沈阳
上海
MU5610
17:
10
19:
20
2小时10分
1300
5.9
上海
杭州
D5681
19:
03
20:
21
1小时18分
54
5.12
杭州
南京
D5590
11:
42
16:
10
4小时28分
155
5.15
南京
合肥
D3014
19:
15
20:
23
1小时8分
48
5.18
合肥
武汉
D3052
14:
40
16:
44
2小时4分
113
5.21
武汉
长沙
G1057
17:
10
18:
38
1小时28分
175
5.24
长沙
南昌
D207
11:
33
14:
46
3小时13分
130
5.27
南昌
福州
CZ8149
16:
30
17:
40
1小时10分
450
5.30
福州
台北
MF883
13:
40
15:
00
1小时20分
1000
6.2
台北
香港
CI917
15:
40
17:
25
1小时45分
2398
6.11
广州
海口
CZ6790
17:
35
18:
35
1小时
705
6.14
海口
南宁
HU7442
19:
30
20:
20
50分
610
6.17
南宁
贵阳
GS7519
14:
30
15:
25
55分
650
6.20
贵阳
重庆
CZ3476
12:
05
12:
55
50分
495
6.23
重庆
成都
D5115
18:
48
20:
52
2小时4分
98
6.26
成都
昆明
8L9976
16:
20
17:
30
1小时10分
990
6.30
昆明
拉萨
MU5837
7:
00
10:
35
3小时35分
1960
7.5
乌鲁木齐
西宁
CZ6881
9:
15
11:
20
2小时5分
1100
7.8
西宁
兰州
T210
15:
08
17:
23
2小时15分
50
7.11
兰州
银川
HU7825/ZH9987
8:
35
13:
10
4小时35分
1120
7.14
银川
西安
MU9606
19:
05
20:
15
1小时10分
600
7.17
西安
郑州
G2012
17:
50
20:
03
2小时13分
240
7.20
郑州
济南
CA4966
13:
45
14:
35
50分
530
7.23
济南
天津
D162
15:
15
17:
57
2小时42分
112
7.26
天津
北京
C2074
18:
25
18:
55
30分
58
7.29
北京
石家庄
D4527
16:
31
18:
31
2小时
86
8.1
石家庄
太原
D2015
18:
24
19:
30
1小时6分
70
8.4
太原
呼和浩特
8L9945
18:
40
19:
35
55分
430
8.7
呼和浩特
哈尔滨
CA1112
13:
00
17:
55
4小时55分
1425
总计
59.58小时
17321
表3—方便的方案
时间
始发地
目的地
工具
出发
到达
耗时
金额
5.1
哈尔滨
长春
D28
9:
02
10:
48
1小时46分
77
5.3
长春
沈阳
D26
17:
26
19:
31
2小时5分
92
5.6
沈阳
上海
MU5610
17:
10
19:
20
2小时10分
1300
5.9
上海
杭州
D5681
19:
03
20:
21
1小时18分
54
5.12
杭州
南京
T34
14:
00
20:
28
6小时28分
137
5.15
南京
合肥
D3014
19:
15
20:
23
1小时8分
48
5.18
合肥
武汉
D3052
14:
40
16:
44
2小时4分
113
5.21
武汉
长沙
G1057
17:
10
18:
38
1小时28分
175
5.24
长沙
南昌
D207
11:
33
14:
46
3小时13分
130
5.27
南昌
福州
K8716
20:
36
6:
20
9小时44分
162
5.30
福州
台北
MF883
13:
40
15:
00
1小时20分
1000
6.2
台北
香港
CI917
15:
40
17:
25
1小时45分
2398
6.11
广州
海口
CZ6790
17:
35
18:
35
1小时
705
6.14
海口
南宁
HU7442
19:
30
20:
20
50分
610
6.17
南宁
贵阳
GS7519
14:
30
15:
25
55分
650
6.20
贵阳
重庆
K1036
20:
33
8:
13
11小时40分
83
6.23
重庆
昆明
MU2985
17:
30
18:
40
1小时10分
710
6.27
昆明
拉萨
MU5837
7:
00
10:
35
3小时35分
1960
6.29
拉萨
成都
CA4111
16:
00
17:
50
1小时50分
1500
7.2
成都
乌鲁木齐
CZ6942
13:
40
17:
10
3小时30分
2050
7.6
乌鲁木齐
西宁
CZ6881
9:
15
11:
20
2小时5分
1100
7.9
西宁
兰州
T210
15:
08
17:
23
2小时15分
50
7.12
兰州
银川
K916
22:
40
7:
30
8小时50分
97
7.15
银川
西安
MU9606
19:
05
20:
15
1小时10分
600
7.18
西安
郑州
G2012
17:
50
20:
03
2小时13分
240
7.21
郑州
济南
K206
20:
33
5:
51
9小时18分
170
7.24
济南
天津
D162
15:
15
17:
57
2小时42分
112
7.27
天津
北京
C2074
18:
25
18:
55
30分
58
7.30
北京
石家庄
D4527
16:
31
18:
31
2小时
86
8.3
石家庄
太原
D2015
18:
24
19:
30
1小时6分
70
8.7
太原
呼和浩特
8L9945
18:
40
19:
35
55分
430
8.10
呼和浩特
哈尔滨
CA1112
13:
00
17:
55
4小时55分
1425
总计
96.97小时
18392
第四问求解:
本文运用的算法为蚂蚁算法。
其复杂性,我们是从两个方面来考虑:
时间复杂性和空间复杂性。
两者结合可以更有效的说明了算法的优劣性。
空间复杂性,我们使用的计算机型号等基本参数如下图:
时间复杂性,一般计算机算法是问题规模
的函数
,因此问题规模
越大,算法执行的时间越长率与
的增长率成正相关[1]。
所以这里我们应用算法执行的时间增长率来刻画此算法的时间复杂性,即
。
遗传算法程序经过在上述计算机中运行,有以下结果
,
运行时间
;
,运行时间
;
,运行时间
;
,运行时间
;
从而得到
;
从以上可以看出,此算法的运算量(运算次数)在不断增加的,而且增长的越来越快。
而普通的算法或是穷举,虽然能得到精确的解,但其执行时间增长率会有很明显的增长,其可能的路径数目与城市数目n是成指数增长的,所以一般很难求出其最优解,以下表格可以看出其缺陷之所在。
运行时间表[2]
城市数
24
25
26
27
28
29
30
计算时间
1s
24s
10min
4.3h
4.9day
136.5day
10.8year
由此表我们很容易可以看出随着城市数的增加,穷举法的计算时间也将大幅度增加。
在解决本题目时,蚂蚁算法求解大约在4分钟左右运行出来,所以是可行的。
误差分析:
蚂蚁算法求解出的解很可能不是精确解。
第五问求解:
蚂蚁算法的两个最主要的特点就是,多样性和正反馈。
多样性保证了系统的多样性,而正反馈保证了优良性能得到强化,两者要恰到好处的结合。
蚂蚁算法当接近最优解释收敛速度快,而开始时收敛速度很慢。
所以想到使蚂蚁算法去和其他一些开始收敛速度快的算法(如粒子群算法)结合,这样使蚂蚁算法得到优化。
总结:
我们认为我们的方案可以进行商业推广,并针对不同的客户群。
对于经济不是很宽裕的消费者,我们可以推广省钱方案,并将其中部分路线调整为坐火车;对于时间繁忙的消费者,可以推广省事的方案,并做适当的调整。
也可将我们的方案推广到其他一些旅行线路中。
总之,我们的方案从不同的角度很好的解决了中国旅行商问题。
参考文献:
[1]殷剑宏,吴开业.图论及其算法.合肥:
中国科学技术大学出版社,2003
[2]YuehuiChen,SchoolofInform.Sci.andEng.UniversityofJinan,2009
[3]王树禾.图论.北京:
科学出版社,2009
[4]李海明,刑桂华.用MATLAB实现中国旅行商问题的求解,微计算机应用,2004-03-15
[5]孙守宇,郑君里.Hopfield网络求解TSP的一种改进算法和理论证明.电子学报,1995;23
(1)
[6]黄岚,王康平,周春光,原媛,庞巍.基于蚂蚁算法的混合方法求解旅行商问题.吉林大学学报(理学版),2002