司马婷 乘车看奥运.docx
《司马婷 乘车看奥运.docx》由会员分享,可在线阅读,更多相关《司马婷 乘车看奥运.docx(35页珍藏版)》请在冰豆网上搜索。
司马婷乘车看奥运
2007高教社杯全国大学生数学建模竞赛
承诺书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
B
我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):
河南师范大学
参赛队员(打印并签名):
1.司马婷
2.薄维
3.窦雅杰
指导教师或指导教师组负责人(打印并签名):
指导教师组
日期:
2007年9月24日
赛区评阅编号(由赛区组委会评阅前进行编号):
2007高教社杯全国大学生数学建模竞赛
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
城市公共交通路线的选择
摘要:
本论文讨论的是公交线路的选择问题。
选择的要求是找出从一个站点到另一个站点的最短路径,本问题的难点在于要同时考虑到公众在公交线路选择时希望得到一个最优路径,最优实际是综合考虑乘车所花费的时间较少、费用较低、乘车较方便等因素。
本文从只考虑单一因素路程最短开始,逐步增加影响因素、设置权值进行全面考虑,通过模型逐步深入,得到最终最为合理的路径选择方法。
模型Ⅰ:
针对问题Ⅰ,在以转车次数最少为首要目标的前提下,设定转车上限,采用广度优先遍历的搜索方法,通过简单编程,依次找出所有经过起点站、终点站的公汽路线的交点即中转站。
记录从起点站到中转站的公汽线路、从中转站到终点站的公汽线路,即可得到相应的路线。
如:
S3359(L436下行)→S1784(L167下行)→S1828。
模型Ⅱ:
针对问题1,在模型Ⅰ的基础上,综合考虑时间和花费对线路选择的影响,引入倾向因子H。
对模型Ⅰ所得的每条线路求H值并按大小排序,H值最小的线路为最佳推荐的线路。
模型Ⅲ:
针对问题2,模型Ⅲ是在考虑地铁线路的基础上建立的。
假设在相同两站间乘地铁比乘公汽省时。
因此,单考虑必须乘地铁时应使乘客尽早上而尽量晚下地铁,节省时间。
模型Ⅳ:
本模型单独考虑了两公汽站点经过地铁站转乘的情况。
由于同一地铁对应的任意两个公汽站之间可以通过地铁站转车,而并不转乘地铁,即不把地铁作为转车对象,而把它作为中转站,由此建立此模型。
通过此模型得到的结果只有A4(起点)和B4(终点)、A6和B6之间能通过此方式转乘,可找出相应路线。
模型Ⅴ:
在求得模型Ⅱ、Ⅲ、Ⅳ的结果后,引入排斥度M表示人们对不同路线的排斥程度,从而确定最优路线。
在排斥度M的计算过程中,首先运用均值化变换法则对数据进行标准化处理;通过市民的生活状况及对乘车等各方面的需求,给时间、花费和转车次数赋不同的权值(0.5,0.2,0.3)。
比较排斥度大小决定最优路线。
模型Ⅵ、Ⅶ:
针对问题3,除了问题1和2中考虑过的因素外,又同时考虑到乘车过程中可选择步行的情况,提出更为合理的确定排斥度的方法来修正模型Ⅴ。
提出最为合理的新模型:
在前五个模型的基础上,通过在有可能选择步行时,是否选择步行可得出两条不同的路线以及各自的排斥度,对两排斥度进行比较,数值小的即为最合理的路线。
关键词:
转车次数广度优先遍历倾向因子排斥度地铁中转站
1、问题的提出
我国人民翘首企盼的第29届奥运会明年8月将在北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出行。
近年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。
针对市场需求,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。
设计这样一个系统,其核心是线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。
需要解决如下问题:
(1)仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
并根据附录数据,利用模型与算法,求出以下6对起始站→终到站之间的最佳路线(要有清晰的评价说明)。
1、S3359→S18282、S1557→S04813、S0971→S0485
4、S0008→S00735、S0148→S04856、S0087→S3676
(2)同时考虑公汽与地铁线路,解决以上问题。
(3)假设知道所有站点之间的步行时间,请给出任意两站点之间线路选择问题的数学模型。
2、参数的设定
(1)相邻公汽站平均行驶时间(包括停站时间):
3分钟;
(2)相邻地铁站平均行驶时间(包括停站时间):
2.5分钟;
(3)公汽换乘公汽平均耗时:
5分钟(其中步行时间2分钟);
(4)地铁换乘地铁平均耗时:
4分钟(其中步行时间2分钟);
(5)地铁换乘公汽平均耗时:
7分钟(其中步行时间4分钟);
(6)公汽换乘地铁平均耗时:
6分钟(其中步行时间4分钟);
(7)公汽票价:
分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:
0~20站:
1元;21~40站:
2元;40站以上:
3元;
(8)地铁票价:
3元(无论地铁线路间是否换乘)。
3、模型的假设
(1)交通情况、路面状况良好,无交通堵塞和车辆损坏等意外情况;
(2)假设参数设定中的参数值能够满足求解问题所要求的条件;
(3)转车次数以最少为标准,在能够直达的情况下,不考虑转车,且转车次数不超过两次;
(4)假设同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘(无需支付地铁费);
(5)假设在同一站点既有公汽路线经过,又有地铁路线经过,则把地铁路线作为第一选择路线;
(6)假设相邻两公汽站间有地铁可乘时,地铁的用时最少。
4、符号约定
Ai:
第i条路线的起始站;
Bi:
第i条路线的终点站;
H:
倾向因子;
h1:
公交出行时间;
h2:
公交票价的时间价值;
P:
公汽路线;
Q:
地铁路线;
M:
排斥度;
T:
时间指数集合;
R:
花费指数集合;
C:
转车次数集合;
5、问题的分析与背景知识
5.1问题分析:
公交线路选择的要求是找出从一个站点到另一个站点的最短路径。
本问题的难点在于要同时考虑到公众在公交线路选择是希望得到一个最优路径,最优实际是综合考虑乘车所花费的时间较少、费用较低、乘车较方便等。
为了避免求解路线中转车次数为几次甚至十几次情况的出现,为转车次数设定一个上限,假定为不超过两次,因此结果中只能出现直达、一次转车、两次转车三种情况。
前两个问题中,第一个问题只考虑公汽之间的转车,第二个问题是同时考虑了公汽和地铁,包括公汽之间的转车,地铁之间的转车和公汽与地铁间的转车等。
问题中又给出了公汽和地铁在相邻站点间的平均行驶时间,公汽换乘公汽、地铁换乘地铁及公汽与地铁间换乘的平均耗时,公汽的两种票价和地铁的票价,且在地铁的换乘、地铁与相应的公汽之间的换乘中,出现了无需付费的情况,所以应在综合考虑各种条件下,得到求解结果。
在路径最短的情况下,通过具体的算法及其改进,为公众在任意两站点间的公交路线选择作出最佳推荐。
5.2背景知识:
从欧洲乃至亚洲发达国家或地区的交通状况来看,一个城市承担公众出行的主要是公共交通。
作为2008年奥运会的举办城市——北京,也一直都面临着交通过度拥挤这个巨大的问题。
国际奥委会主席罗格曾表示:
“交通问题是每一届奥运会都会遇到的难题,而不是悉尼、雅典或北京所独有的。
”为了改善北京的交通状况,从而保证在08年北京奥运会期间游客和市民的顺利出行,从2001年7月13日北京申奥成功开始,北京市就投入了大量的财力、物力和人力来改善公共交通拥挤现况。
采取的措施主要包括:
拓宽马路,更多地增设公交线路和公交专用道路,尤其是同时新建数条地铁等。
与此同时,交管部门在管理措施上也进行了大量改革,推出种种管理办法。
在最近进行的奥运测试赛期间,尽管新建地铁线路中的大部分还没有交付使用,但交管部门采取的各种做法还是让人依稀能看到明年北京奥运会时的交通管理的明朗情况。
6、模型的建立和求解
从所要解决的问题和所作的假设出发,我们建立了七个模型,其中:
对于问题一模型Ⅰ是在不考虑时间和费用的情况下建立的,模型Ⅱ中增加了倾向因子,为模型Ⅰ的改进模型;对于问题二模型Ⅲ可找出不同起始点乘坐地铁的最优路线,模型Ⅳ考虑公汽通过地铁站进行换乘的路线,模型Ⅴ对前面四模型的结果综合考虑时间、花费、转车次数等因素,确定排斥度和选择路线;问题三中提出模型Ⅵ来科学的确定时间、花费、转车次数的权重,模型Ⅶ将步行、模型Ⅴ、模型Ⅵ综合考虑提出最为合理的模型。
6.1 问题
(1)的分析与求解
1.选择以转车次数最少为首要目标:
在乘客出行选择公交路线时,其首先考虑的是转车次数,其次才是路径的长度等。
因为乘客的目的是在最短的时间内以最小的代价到达目的地,如果专车次数增加则由此引起不可预知的因素也会大大增加,如下趟车到来的时间、路况以及转车时需要步行的距离等,从而引起途中时间的延长。
如果首先考虑路径的长度,则计算结果需要的专车次数可能为几次甚至十几次,不适合乘公交车出行。
因此,基于公交路线的出行路径选择的首要目标是专车次数最少,再转车次数相同的情况下,在选择长度最短的路径。
2.所需算法概要:
(1)Dijkstra算法
Dijkstra算法是求解最短路的典型算法,用于计算一个节点到其他所有节点的最短路径。
主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。
(2)广度优先遍历
广度优先遍历是树的按层次遍历的推广,它的基本思想是:
首先访问初始点vi,并将其标记为已访问过,接着访问vi的所有未被访问过的邻接点vi1,vi2,…,vit,并均标记已访问过,然后再按照vi1,vi2,…,vit的次序,访问每一个顶点的所有未被访问过的邻接点,并均标记为已访问过,依次类推,直到图中所有和初始点vi有路径相通的顶点都被访问过为止。
此时从vi开始的搜索过程结束。
若图为连通图,则遍历完毕;否则,在图中另选一个尚未访问的点作为初始点继续上述搜索过程,直到图中的所有点均已被访问为止。
广度优先遍历采用的搜索方法的特点是尽可能先对横向进行搜索,故成其为广度优先搜索。
相应的遍历也就自然地称为广度优先遍历。
3.算法的分析:
求解最短路径问题常用的算法是Dijkstra算法,但在公交路线选择中,Dijkstra算法并不适合。
首先:
Dijkstra算法求出的是从某一站点到其余各个站点的最短路径,对于问题中的城市北京而言,站点数目超过三千,公交路线数目超过五百,使用Dijkstra算法无疑会增加运算时间,也增加了程序的复杂性,使公众无法在较短时间内完成查询。
其次:
乘客出行要以最短时间到达目的地,首先考虑的是乘车次数的多少,其次考虑的才是路径的长度。
而Dijkstra算法求出的结果可能是需要转几次甚至十几次车才能到达目的地,这样的结果是没有意义的。
所以在模型中采用广度优先遍历算法,以期得到转车次数最少的线路结果。
6.1.1 模型Ⅰ(公汽模型)
要查找从始发站Ai到目的站点Bi的最短路径,可以从Ai点出发,以公汽路线为基础进行广度优先搜索,到Bi站点即告终止。
找到Bi站点时,一定是转车次数最少的。
依照假设从Ai站点到Bi站点的转车次数上限为2次,查找从Ai站到Bi站的最短路径的具体步骤如下:
a.找出经过站点Ai的所有车的集合P(Ai),经过站点Bi的所有车的集合P(Bi),如果P(Ai)∩P(Bi)≠Ψ
,则找出此交集,即知乘一次车即可到达,如图
(1)所示。
算法结束。
否则转b;
b.找出P(Ai)中车的所有能转乘车次的集合P(Ai)1,如果P(Ai)1∩P(Bi)≠Ψ
,则找出此交集,并按顺序找出这个交集中的车由哪些车转来。
即知经一次转车即可到达目的站点,如图
(2)所示,C,D,E均为换乘车站,算法结束。
否则转c;
c.找出P(Ai)1中车的所有能转乘车次的集合P(Ai)2,如果P(Ai)2∩P(Bi)≠Ψ
,则找出此交集,并按顺序找出这个交集中的车是有哪些车转来的。
即知经两次转车即可到达目的站点,如图所示(3),C,E为第一次换乘车站,D,F为第二次换乘车站,算法结束。
否则无符合条件的方案。
图
(1)图
(2)
图(3)
Ⅰ.对于第一对起始站→终点站:
S3359→S1828
根据模型Ⅰ的算法求解到,两站点之间没有直达车,只能通过一次转车到达。
转车站点有:
S1784、S1241、S3695、S2606、S2364、S0727、S0304、S3192。
表
(1)所示为所有转车路线,包括公交路线、经过站点数、中转站。
图(4)为八条路线的简单连线图。
起点
转车
终点
3359
公交路线
经过站点数
中转站
公交路线
经过站点数
S1828
L436下行
31
S1784
L167下行
1
32
S1241
2
33
S3695
L217下行
3
34
S2606
6
L469上行
27
S2364
17
28
S0727
16
29
S0304
15
30
S3192
14
表
(1)
S1784
S1241
S3695
S2606
S3359S1828
S2364
S0727
S0304
S3192
图(4)八条线路的简单连线图
注:
:
L436号;——:
L496号;:
L167号;:
L127号。
Ⅱ.对于第二对起始站→终点站:
S1557→S0481
根据模型Ⅰ的算法求解到,这两个站点之间既没有直达路线,也没有一次转车路线,只能通过两次转车到达。
其中,第一次转车的中转站有:
S1919和S3389;第二次转车的中转站有:
S2424、S1174、S0902、S3919、S3667、S0871、S1427、S0630。
表
(2)所示为所有转车路线,包括公交路线、经过站点数、第一中转站和第二中转站。
起点
第一次转车
第二次转车
终点
S1557
公交路线
经过站点数
中转站
公交路线
经过站点数
中转站
公交路线
经过站点数
S0481
L457下行
12
S1919
L417上行
17
S2424
L254上行L312下行L447上行L516上行
5
19
S1174
4
20
S0902
3
25
S3919
L447下行
1
L072上行L166下行L239环行L254下行L312上行L435下行L460往返L516下行
2
26
S3667
L447下行
2
L072上行L254下行L312上行L460往返L516下行
3
27
S0871
L447下行
3
L460往返L516下行
4
L084
下行
14
S3389
L20上行L45下行
6
S1427
22
8
S0630
21
表
(2)
Ⅲ.对于第三、四、六对起始站→终点站,根据模型Ⅰ的算法求解到,它们和第一对起始站→终点站一样,都没有直达路线,但有一次转车路线,即从起始点出发,可以通过一次转车到达。
对于第五对起始站→终点站,根据模型Ⅰ的算法求解到,它和第二对起始站→终点站一样,既没有直达路线,也没有一次转车路线,只能通过两次转车到达。
它们的转车路线,包括公交路线、经过站点数和中转站都用表格形式表示,具体表格见附录一。
6.1.2模型Ⅱ(优化公汽模型)
模型Ⅰ对问题的求解得到的是最少换乘次数的线路,没有考虑出行时间、费用和方便性等综合因素。
模型Ⅱ为模型Ⅰ的改进,增加倾向因子H来综合考虑公交车的行驶时间和票价对线路选择的影响程度。
可以用倾向因子H来衡量所选线路是否为较优.H用如下函数式计算:
式中,H为线路交通阻抗值;h1为公交出行时间;h2为公交票价的时间价值;h2可用如下函数式计算:
式中,n为一次出行中称作单一票价线路的次数;y为乘坐分段计价线路的费用;i、j分别为称作单一票价线路和分段计价线路所经过的站点数。
其中单一票价线路的票价为一元,分段计价线路的票价y可用如下分段函数表示:
在实际生活中,一般直达和一次换乘是容易接受的。
所以线路选择时换乘次数的影响还是很大的,一般不轻易选择两次换乘,除非只能两次换乘。
改进后的算法步骤为:
a.找出经过站点Ai的所有车的集合P(Ai),经过站点Bi的所有车的集合P(Bi),如果P(Ai)∩P(Bi)≠Ψ
,则找出此交集。
计算每条直达线路的h2。
否则转b;
b.找出P(Ai)中车的所有能转乘车次的集合P(Ai)1,如果P(Ai)1∩P(Bi)≠Ψ
,则找出此交集,并按顺序找出这个交集中的车由哪些车转来。
计算每中转成路线的h2,跳到步骤d。
否则转c;
c.找出P(Ai)1中车的所有能乘车次的集合P(Ai)2,如果P(Ai)2∩P(Bi)≠Ψ。
,则找出此交集,并按顺序找出这个交集中的车是有哪些车转来的。
计算每条转乘路线的h2,跳到步骤d,算法结束。
否则无符合条件的方案;
d.按h2的大小排序,给出换乘的推荐路线,算法结束。
运行结果与分析:
例如:
对于第一对起点站→终点站,求到的值H分别为:
H1=3.25H2=2.97H3=2.83H4=2.91H5=H6=H7=H8=3.18 可见,第三条线路的H值最小,公众会倾向于第三条公汽路线。
同理,可得到所有线路的最终路线为:
S1784
A1到B1最佳线路为:
S1828
注:
线路1用时为t1=101分钟,车费3元;
公车组1为:
L167、L217。
S2424
S1919
A2到B2最佳线路为:
S0481
注:
线路2用时为t2=112分钟,车费3元;
公车组2为:
L254上、L312下、L447上、L516上。
A3到B3最佳线路为:
S0485
S2184
注:
线路3用时为t3=128分钟,车费3元。
A4到B4最佳线路为:
S0073
S0073
S0073
注:
以上线路4用时都为t4=83分钟,车费均为2元;
站组1为:
S400、S2633、S3053。
S2480
S0036
A5到B5最佳线路为:
S0485
注:
线路5用时为t5=109分钟,车费为3元。
S3496
A6到B6最佳线路为:
S3676
注:
线路6用时为t6=71分钟,车费为2元。
6.2问题
(2)的分析与求解
1.地铁的有关介绍:
地铁是地下铁道的简称。
它是一种独立的有轨交通系统,不受地面道路情况的影响,能够按照设计的能力正常运行,从而快速、安全、舒适地运送乘客。
地铁效率高,无污染,能够实现大运量的要求,具有良好的社会效益。
2.与问题一的不同点:
同时考虑公汽和地铁路线,出行中需要转车时,转车路线的选择将会增加,在考虑转车上限时,除了问题一种求解到的路线种类——公汽路线(直达或转车),新增加的路线种类为:
地铁路线(直达或转车)、公汽→地铁、公汽→地铁→公汽、地铁→公汽、地铁→公汽→公汽。
6.2.1模型Ⅲ(地铁优先模型)
模型Ⅰ和Ⅱ是都没有考虑地铁路线下建立的。
如果要考虑地铁路线,只需在模型Ⅱ的基础上作出修改。
模型Ⅲ是在考虑地铁路线的情况下,联系到地铁快速、安全、舒适等优点,假设:
如果一个站点有地铁路线经过,则首选地铁路线;如果没有,再考虑公汽路线。
即在出行时把地铁路线作为首选。
1)在假设条件下修改后的算法步骤为:
a.找出经过站点Ai的所有公汽路线的集合P(Ai),经过站点Ai的所有地铁路线的集合Q(Ai);经过站点Bi的所有公汽路线的集合P(Bi),经过站点Bi的所有地铁路线的集合Q(Bi)。
如果Q(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,如果P(Ai)∩P(Bi)≠Ψ
,则找出此交集。
计算每条直达线路的h2。
跳到步骤d,否则转b;
b.找出Q(Ai)中地铁的所有能转乘地铁的集合QQ(Ai),如果QQ(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出Q(Ai)中地铁的所有能转乘公汽的集合QP(Ai),如果QP(Ai)∩P(Bi)≠Ψ,则找出此交集,计算每条路线的h2。
否则,找出P(Ai)中公汽的所有能转乘地铁的集合PQ(Ai),如果PQ(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出P(Ai)中公汽的所有能转乘公汽的集合PP(Ai),如果PP(Ai)∩P(Bi)≠Ψ,则找出此交集,计算每条路线的h2。
跳到步骤d,否则转c;
c.找出QQ(Ai)中地铁的所有能转乘地铁的集合QQQ(Ai),如果QQQ(Ai)∩Q(Bi)≠Ψ,则找出此交集,计算每条路线的h2。
否则,找出QQ(Ai)中地铁的所有能转乘公汽的集合QQP(Ai),如果QQP(Ai)∩P(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出QP(Ai)中地铁的所有能转乘地铁的集合QPQ(Ai),如果QPQ(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出QP(Ai)中地铁的所有能转乘公汽的集合QPP(Ai),如果QPP(Ai)∩P(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出PQ(Ai)中地铁的所有能转乘地铁的集合PQQ(Ai),如果PQQ(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出PQ(Ai)中地铁的所有能转乘公汽的集合PQP(Ai),如果PQP(Ai)∩P(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出PP(Ai)中公汽的所有能转乘地铁的集合PPQ(Ai),如果PPQ(Ai)∩Q(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
否则,找出PP(Ai)中公汽的所有能转乘公汽的集合PPQ(Ai)2,如果PPQ(Ai)∩P(Bi)≠Ψ
,则找出此交集,计算每条路线的h2。
跳到步骤d,算法结束。
否则无符合条件的方案。
(程序见附录三)
d.按h2的大小排序,给出换乘的推荐路线,算法结束。
2)运行结果及分析
由模型Ⅲ的算法求解到了这六对起始站→终点站之间的出行路线,依次为:
1.A1到B1线路如下:
10站
L041
图(5)
注:
线路1用时t1=102分钟;
S3068为T1线路上D08站处的汽车站。
2.A2到B2线路如下: