公交网络模型.docx
《公交网络模型.docx》由会员分享,可在线阅读,更多相关《公交网络模型.docx(32页珍藏版)》请在冰豆网上搜索。
![公交网络模型.docx](https://file1.bdocx.com/fileroot1/2023-2/3/5d7f8a34-c944-4894-a037-4955bce40a5d/5d7f8a34-c944-4894-a037-4955bce40a5d1.gif)
公交网络模型
公共交通网络模型
第一组:
刘毅张学令郑榕娇
公共交通网络模型
第一组:
刘毅张学令郑榕娇
摘要
北京申奥的成功,给北京的交通带来了巨大的影响。
本文就公交线路的选择问题,采用广度优先搜索的理论与方法建立了公共交通网络模型,并提出了满足公交乘客各种不同需求的快速算法,针对实际问题给出了最优路径。
对于问题
(1),首先根据公共交通网络的特点,把公交网络模型映射为一个无向图来表示公交线路及站点分布情况。
结合图论中的广度优先搜索方法并对其进行改进,即从起点和终点同时搜索,找出起点与终点的所有可行路径(包括直达、一次换乘、两次换乘的情况),再分别求出每条路径的耗时、花费及换乘次数进行比较,选出最优路径。
对于问题
(2),同时考虑公汽与地铁线路时,可以将可换乘的地铁站和公汽站视为对等的,这样就与第一问相同了,可利用相同的方法来解决。
对于问题(3),考虑步行,通过对时间加一个阈值(乘客可以容忍的步行时间),通过Floyd算法求出任意两站点间的最短步行时间,并与阈值进行比较,建议乘客是否应该步行。
该模型的创新点在于克服了广度优先搜索盲目搜索的缺点,采取从起点和终点同时搜索的方法,大大提高了搜索效率;同时为了更全面的考虑问题,我们分别以行程耗时、花费与换乘次数为优先考虑,找出了最优路径,以满足公交乘客的各种不同需求;最后结合乘客都会尽量选择有座位的公交的实际情况对模型进行了改进。
关键词:
公交网络,广度最优搜索,最优路径,Floyd算法,MATLAB
1.问题的重述
北京申奥的成功,对北京市的交通系统提出了更高的要求。
奥运期间交通状况是否良好,交通管理是否高效,是关系奥运盛会能否圆满成功举办的重要条件之一。
届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出行。
这些年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。
针对市场需求,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。
为了设计这样一个系统,其核心是线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。
解决如下问题:
1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
并根据相关数据,利用模型与算法,求出以下6对起始站→终到站之间的最佳路线(要有清晰的评价说明)。
(1)、S3359→S1828
(2)、S1557→S0481(3)、S0971→S0485
(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S3676
2、同时考虑公汽与地铁线路,解决以上问题。
3、假设又知道所有站点之间的步行时间,给出任意两站点之间线路选择问题的数学模型。
2.模型的假设与符号说明
2.1模型的假设
(1)乘客到达站点时可以直接选择公汽或地铁班次上车,即不考虑乘客在站点的等待时间。
(2)在实际过程中,对于公交(包括公汽与地铁)可能要换车2次以上,用户已无法容忍,视为无法到达。
(因为如果他们之间换乘就使得费用增大了很多,这是人们不愿意看到的,且一般只坐地铁是无法到达终点站的,所以还要再换乘其他的工具,换乘次数太大我们也不再将其纳入考虑的范围)。
(3)相邻地铁站平均行驶时间(包括停站时间):
2.5分钟。
(4)相邻公汽站平均行驶时间(包括停站时间):
3分钟。
(5)公汽换乘公汽平均耗时:
5分钟(其中步行时间2分钟)。
(6)地铁换乘地铁平均耗时:
4分钟(其中步行时间2分钟)。
(7)地铁换乘公汽平均耗时:
7分钟(其中步行时间4分钟)。
(8)公汽换乘地铁平均耗时:
6分钟(其中步行时间4分钟)。
(9)公汽票价:
分为单一票价与分段计价两种,标记于线路后;其中分段计价票价为:
0~20站:
1元;21~40站:
2元;40站以上:
3元。
(10)地铁票价:
3元(无论地铁线路间是否换乘)。
(11)已知所有站点之间的步行时间。
(12)同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘(无需支付地铁费)。
(13)郊区和繁华地区公交车站的间隔大概一致。
2.2符号说明
表示公交网络无向图;
表示所有节点即公交站点的集合,
为节点数;
表示路段集合,即线路上任意两站点间的一段,
是路段数;
表示指定两站点间运行线路的集合;
表示公汽从一指定站点到另一指定站点所经过的站点数;
表示第
条路段的行程耗时;
表示从起点到终点的总的行程耗时;
表示第
条路段的行程费用;
表示从起点到终点的总的行程费用;
表示换乘次数;
表示邻接矩阵;
表示起点(Origin)的邻接站点的集合;
表示终点(Dstination)的邻接站点的集合。
3.问题的分析
根据杨新苗等[1]对公交乘客的出行心理的研究表明,对于公交(包括公汽与地铁)可能要换车2次以上,用户已无法容忍,所以我们仅考虑换乘次数在2次以内的情况。
分别以行程耗时、花费与换乘次数为优先考虑,找出了最优路径,以满足公交乘客的各种不同需求。
对于无特殊要求的乘客,把三个因素视为同等重要,取平均,得出最优路径。
针对第一问,我们根据公共交通网络的特点,把公交网络模型映射为一个无向图
来表示公交线路及站点分布情况,其中
表示公交站点的集合,
是边的集合,即能通车的路段。
结合图论中的广度优先搜索(BFS)方法[2]并对其进行改进,从起点(Origin)和终点(Dstination)同时搜索其邻接站点,分别构成集合
,通过判断两集合中是否存在交集或任意两点
间是否有边相连来找出起点与终点的所有可行路径(包括直达、一次换乘、两次换乘的情况),再分别求出该路径的耗时及花费,进行比较,选出最优路径。
针对第二问,因为公汽与地铁之间可以换乘,所以当同时考虑公汽与地铁线路时,可以将可换乘的地铁站和公汽站视为对等的,这样就与第一问相同了,可利用相同的方法来解决。
最后,考虑步行,通过调查对时间加一个阈值T(乘客可以容忍的步行时间)。
在第二问算法基础上求出任意两站点间的最优路径,通过Floyd算法求出路径上每个路段及从起点到终点的最短步行时间,分别为ti和t,若求出两点间的最短步行时间tT时,为了满足乘客想转乘次数少的心理,做进一步判断,若ti4.模型的建立与求解
根据杨新苗等[1]对公交乘客的出行心理的研究表明,对于公交(包括公汽与地铁)可能要换车2次以上,用户已无法容忍,所以我们仅考虑换乘次数在2次以内的情况。
分别以行程耗时、花费与换乘次数为优先考虑,找出了最优路径,以满足公交乘客的各种不同需求。
对于无特殊要求的乘客,把三个因素视为同等重要,加和取平均,得出最优路径。
4.1问题
(1)模型的建立与求解
4.1.1模型的建立
首先,只考虑公汽的情况时,我们将公汽的上、下行看作不同的线路。
对于有
个站点的公交网络,根据公共交通网络的特点,把公交网络模型映射为一个无向图
来表示公交线路及站点分布情况,并得出相应的
阶邻接矩阵
=
,其中:
然后,利用图论中的广度优先搜索算法(Breadth-First-Search),又译作宽度优先搜索,简称BFS,是一种图形搜索算法。
简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点,如果发现目标,则算法终止。
如图1:
图1广度优先搜索
但由于BFS是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以寻找结果。
换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。
搜索效率较低。
为了提高搜索效率,我们对广度优先搜索算法进行改进,采取从起点(Origin)和终点(Dstination)同时搜索,并结合集合的思想,采用两个集合之间逐渐逼近的搜索方法,在一个庞大的无向交通网络中,寻找可行路径。
如图2:
图2改进后的广度优先搜索
考虑对于任意起点和终点,可能存在以下四种情况:
(1)起点和终点在同一线路上,不需要换车(即存在直达路线);
(2)起点和终点不在同一线路上,需要换车1次;
(3)起点和终点不在同一线路上,需要换车2次;
(4)起点和终点不在同一线路上,需要换车大于2次,视为通过换车无法达到(见模型假设2)。
分别对前三种情况进行搜索。
情况1:
直接搜索起点和终点有无一条边直接连接,若有,则说明两站点间可直达;否则,无法直达。
情况2:
从起点(Origin)和终点(Dstination)同时搜索其邻接站点,分别构成集合
,判断两集合中是否存在交集,若有交集,则两站点间可通过一次换乘到达,且交点为一次换乘的中转站点;否则两站点无法通过一次换乘到达。
如图2中,
,
,
,则表明起点与终点可通过一次换乘到达,且
为该一次换乘的中转站点。
情况3:
从起点和终点同时搜索其邻接站点,分别构成集合
,判断两集合中任意两站点
是否有一条边相连,若有,则说明起点与终点间可通过两次换乘到达,且
为两次换乘的先后中转站点;否则,两站点无法通过两次换乘到达。
如图3:
图3两次换乘搜索
从图3中可看出,
,说明起点与终点不仅可通过一次换乘到达,也可通过两次换乘到达,中转站先后分别为
或
。
考虑到信息的存贮,我们对每一条连接两站点的边建立一个链表,用于存贮两邻接站点间的所有通行线路
及线路对应的路段所经过站点数
。
并由题知,相邻公汽站平均行驶时间(包括停站时间)为3分钟,由此,可计算出该路段的行程耗时
,公式如下:
(1)
计算费用
时,流程图如下:
图4路段费用计算流程图
若从起点到终点,需经过换乘N(N<3)次,则可计算出所有可行路径的总耗时
与总花费
公式如下:
(2)
(3)
再分别从行程耗时(分)、花费(元)与换乘次数三方面对可行路径进行比较,针对公交乘客的各种不同需求提供合适路线。
最后,对三个因素进行综合考虑,取平均,给出最优路径。
先对行程耗时S、花费M与换乘次数N消除量纲,令:
(4)
若乘客无特殊要求,把三个因素视为同等重要,则加和取平均,给出最优路径。
(5)
值越小,路线最好。
4.1.2模型的求解
运用上述算法,我们从搜索出的6对起始站→终到站之间的所有可行路径中分别以行程耗时、花费与换乘次数为优先考虑,找出了最优路径,并从最优路径中随机选出了两条线路(若最优路径多于两条以上),满足乘客的不同需求。
最后综合考虑,对三者进行加权,得出最优路径,乘车公交路线如下:
表1S3359→S1828的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S3359
-L474
S2093
L201
S1783
L041
S1828
73
3
2
S3359
-L469
S2027
L201
S1783
L041
S1828
73
3
2
花费最少
S3359
-L436
S1784
-L167
S1828
101
3
1
S3359
-L436
S1784
-L217
S1828
101
3
1
转乘最少
S3359
-L436
S1784
-L167
S1828
101
3
1
S3359
-L436
S1784
-L217
S1828
101
3
1
综合考虑
S3359
-L436
S1784
-L167
S1828
101
3
1
S3359
-L436
S1784
-L217
S1828
101
3
1
表2S1557→S0481的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S1557
-L084
S1919
-L189
S3186
-L460
S0481
106
3
2
S1557
-L363
S1919
-L189
S3186
-L460
S0481
106
3
2
花费最少
S1557
-L084
S1919
-L189
S3186
-L460
S0481
106
3
2
S1557
-L363
S1919
-L189
S3186
-L460
S0481
106
3
2
转乘最少
S1557
-L084
S1919
-L189
S3186
-L460
S0481
106
3
2
S1557
-L363
S1919
-L189
S3186
-L460
S0481
106
3
2
综合考虑
S1557
-L084
S1919
-L189
S3186
-L460
S0481
106
3
2
S1557
-L363
S1919
-L189
S3186
-L460
S0481
106
3
2
表3S0971→S0485的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0971
-L013
S2517
L296
S2480
-L417
S0485
106
3
2
S0971
L094
S1609
-L140
S2654
L469
S0485
106
3
2
花费最少
S0971
-L013
S2184
-L417
S0485
128
3
1
转乘最少
S0971
-L013
S2184
-L417
S0485
128
3
1
综合考虑
S0971
-L013
S2184
-L417
S0485
128
3
1
表4S0008→S0073的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0008
L198
S3766
L296
S2184
L345
S0073
67
3
2
花费最少
S0008
-L159
S0291
-L058
S0073
83
2
1
S0008
-L355
S2263
L345
S0073
83
2
1
转乘最少
S0008
-L463
S2083
L057
S0073
83
2
1
S0008
-L159
S0491
-L058
S0073
83
2
1
综合考虑
S0008
-L355
S2263
L345
S0073
83
2
1
S0008
-L463
S2083
L057
S0073
83
2
1
表5S0148→S0485的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0148
L308
S0036
L156
S2210
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S3332
-L417
S0485
106
3
2
花费最少
S0148
L308
S0036
L156
S3351
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S3332
-L417
S0485
106
3
2
转乘最少
S0148
L308
S0036
L156
S3332
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S2210
-L417
S0485
106
3
2
综合考虑
S0148
L308
S0036
L156
S3351
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S2210
-L417
S0485
106
3
2
表6S0087→S3676的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0087
-L021
S0088
L231
S0427
L097
S3676
46
3
2
S0087
-L454
S0088
L231
S0427
-L462
S3676
46
3
2
花费最少
S0087
L454
S3496
-L209
S3676
65
2
1
转乘最少
S0087
L454
S3496
-L209
S3676
65
2
1
综合考虑
S0087
L454
S3496
-L209
S3676
65
2
1
(班次前的负号表示该线路为下行线)
系统可根据公交乘客对换乘次数、行程耗时与费用的不同要求,并进行综合考虑,提供合适的路径。
该算法的时间复杂度与邻接矩阵的稀疏程度有关,在一般情况下,其时间复杂度为
。
4.2问题
(2)模型的建立与求解
4.2.1模型的建立
因为公汽与地铁之间可以换乘,所以当同时考虑公汽与地铁线路时,可以将可换乘的地铁站和公汽站视为对等的,这样就与第一问相同了,可利用相同的方法来解决。
地铁站对应的公汽站与同一地铁线路上其他地铁站对应的公汽站彼此间是可以直达的。
如:
地铁T1线上的地铁站D01对应公汽站S0567,S0042,S0025,地铁站D02对应公汽站S1487,则我们认为S1487与S0567,S0042,S0025分别都是可以直达的,那么
相应的
阶邻接矩阵
=
也发生改变,再利用问题
(1)的算法进行搜索,找出起点与终点的所有可行路径。
此外,此时站点数分别与费用和行程耗时的关系发生了变化,需利用新的算法求解再比较得到最优路线,不同的是换乘情况变得更为复杂。
换乘所需时间的算法流程图如下:
4.2.2模型的求解
对于前2对指定的起始站→终到站,加入地铁后的所有线路,由于需要换乘的次数较多,行程耗时较长,超过了人们可以承受的限度,且如果采纳这样的路线行驶,会使金钱上的花费巨大,所以不采用这类方案,而直接采用一种交通工具即公汽。
那么在这种情况下,它们的最优路线并没有改变,即上面表格统计结果。
针对问题
(2),与问题
(1)相比,其中第3、4、5、6对起始站→终到站的乘车线路有些变化:
表7S0971→S0485的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0971
L094
S0567
T1
S0464
L104
S0485
96
5
2
S0971
-L119
S0567
T1
S0466
L051
S0485
96
5
2
花费最少
S0971
-L013
S2184
-L417
S0485
128
3
1
转乘最少
S0971
-L013
S2184
-L417
S0485
128
3
1
综合考虑
S0971
-L013
S2184
-L417
S0485
128
3
1
表8S0008→S0073的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0008
-L150
S3874
T2
S0525
L103
S0073
55
5
2
S0008
-L159
S3874
T2
S0525
L103
S0073
55
5
2
花费最少
S0008
-L159
S0291
-L058
S0073
83
2
1
S0008
-L355
S2263
L345
S0073
83
2
1
转乘最少
S0008
-L463
S2083
L057
S0073
83
2
1
S0008
-L159
S0491
-L058
S0073
83
2
1
综合考虑
S0008
-L355
S2263
L345
S0073
83
2
1
S0008
-L463
S2083
L057
S0073
83
2
1
表9S0148→S0485的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0148
-L024
S1487
T1
S0464
-L469
S0485
87.5
5
2
S0148
-L024
S1487
T1
S0466
-L450
S0485
87.5
5
2
花费最少
S0148
L308
S0036
L156
S3351
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S3332
-L417
S0485
106
3
2
转乘最少
S0148
-L024
S1487
T1
S0464
L104
S0485
87.5
5
2
S0148
-L024
S1487
T1
S0466
L051
S0485
87.5
5
2
综合考虑
S0148
L308
S0036
L156
S3351
-L417
S0485
106
3
2
S0148
L308
S0036
L156
S2210
-L417
S0485
106
3
2
表10S0087→S3676的可行路线
起点站
班次
中转站
班次
中转站
班次
终点站
时间
总费用
转乘
时间最短
S0087
T2
S3676
25
3
0
花费最少
S0087
L454
S3496
-L209
S3676
65
2
1