数学建模测验.docx
- 文档编号:23482994
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:55
- 大小:187.44KB
数学建模测验.docx
《数学建模测验.docx》由会员分享,可在线阅读,更多相关《数学建模测验.docx(55页珍藏版)》请在冰豆网上搜索。
数学建模测验
2012全国大学生数学建模竞赛模拟测验
承诺书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):
参赛队员(打印并签名):
1.
2.
3.
指导教师或指导教师组负责人(打印并签名):
日期:
2012年月日
赛区评阅编号(由赛区组委会评阅前进行编号):
2012高教社杯全国大学生数学建模竞赛模拟测验
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
题目乘公交看奥运
——公共交通网络换乘问题
摘要
本文以08年北京奥运会为基础,解决了人们为了能在现场观看奥运会所产生的路线选择问题。
因此如何有效地处理大量公交线路数据,以及如何快速、高效地从众多可行路线中选出最优路线成为了我们主要完成的任务。
问题一中我们首先利用Matlab编写数据处理的相关程序,完成对文本文档中公交线路的处理工作。
之后我们运用图论中广度优先搜索的方法,建立相关数学模型,并结合Matlab编程得到结论。
在编程过程中我们主要是通过找出任意两站点之间所有可行的路线,将其存储在线路矩阵中,形成相应的数据文件,再基于换乘次数编写相应程序。
通过运行程序得到起始站和终点站两点间存在的所有公交换乘方式,再将所得换乘方式导入Excel中进行换乘次数、乘车时长以及乘车费用的相关分析,分别得到以少换乘和乘车时间短为目的的换乘结果。
结果如下:
在问题二中,我们分析得到其实质是在公汽线路的基础上加入地铁的线路,通过地铁站将一些站点连接,相当于原本没有交点的公交线路可能在地铁站相交,公交网络进一步扩大。
在问题一的基础上,我们将地铁线路近似的看作公交线路,只是路段的权值不同,即每段平均行驶时间和费用的差别。
通过分析地铁线路换公交的信息,可以将与地铁相连的公汽站点和地铁站点等效为一个站点,作为一个地铁站点来处理,在空间上把一些公汽站点的距离拉近,以简化问题一中的算法。
求解时仍用广度优先算法来求解最小换乘路线,将新增的地铁站点及相关的边加入网络中后即可求解出新的公交网络的最小换乘路线。
在问题三中,我们根据对问题一和问题二的对比分析,考虑到乘客在一定情况下可以选择步行一站到下一个换乘点这一因素,通过编写相应Matlab程序,重新得到新的换乘方法。
首先我们利用最广度算法,找出基础最佳路线中所有只坐一站的换乘,将其改为乘客步行,可以得到减小换乘次数后的优化结果。
其次我们将乘客步行路径看成联结公交站点的边,再次用模型一及模型二中的算法对最佳换乘方式进行求解。
关键字:
图论广度优先算法线路矩阵最少换乘次数最优路径
一、问题重述
奥运会是世界上举行的一项重大的赛事活动,第29届奥运会明年8月将在我国北京举行,届时有大量观众到现场观看奥运比赛,其中大部分人将会乘坐公共交通工具(简称公交,包括公汽、地铁等)出行。
近年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。
针对市场需求,我们准备研制开发一个解决公交线路选择问题的自主查询计算机系统,关键在于线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。
具体问题如下:
1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
并根据附录数据,利用你们的模型与算法,求出以下6对起始站→终到站之间的最佳路线(要有清晰的评价说明)。
(1)、S3359→S1828
(2)、S1557→S0481(3)、S0971→S0485
(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S3676
2、同时考虑公汽与地铁线路,解决以上问题。
3、假设又知道所有站点之间的步行时间,请你给出任意两站点之间线路选择问题的数学模型。
二、问题分析
2.1问题一的分析
本题中我们首先要解决的是数据的处理问题,题设中给出的数据为文本文档,不能直接用于Matlab的运行,因此我们首先编写数据处理的相关程序完成对文本文档中公交线路的处理工作。
接下来我们运用图论中广度优先搜索的方法并结合Matlab编程找出任意两站点之间可行的路线,并将其存储在线路矩阵中,形成数据文件。
通过运行程序得到起始站和终点站两点间存在的所有公交换乘方式,之后可以利用Excel对数据进行处理,分别得到以换乘少和乘车时间短为目的的换乘结果。
2.2问题二的分析
问题二在公汽线路的基础上加入地铁的线路,通过地铁站将一些站点连接,相当于原本没有交点的公交线路可能在地铁站相交,公交网络进一步扩大。
在问题二中我们可以将地铁线路近似的看作公交线路,只是每段平均行驶时间和费用的差别。
分析地铁线路换公交的信息,我们可以将与地铁相连的公汽站点和地铁站点等效为一个站点,作为一个地铁站点来处理。
在空间上把一些公汽站点的距离拉近。
其中一些关于运用问题一中的广度优先算法来求解最小换乘路线,将新增的地铁站点及相关的边加入网络中后即可求解出新的公交网络的最小换乘路线。
2.3问题三的分析
问题三中将乘客步行作为另一因素考虑进来,即在只乘坐某路公交车一站的情况下可视为乘客步行一站到达下一站,通过对Matlab程序进行修改,同样使用最广度算法,找出基础最佳路线中所有只坐一站的换乘,并改为乘客步行,减小换乘次数优化结果。
然后将乘客步行路径看成联结公交站点的边,再次用模型一及模型二的算法求解。
三、相关假设说明
3.1基本假设
1、相邻公汽站平均行驶时间(包括停站时间):
3分钟
2、相邻地铁站平均行驶时间(包括停站时间):
2.5分钟
3、公汽换乘公汽平均耗时:
5分钟(其中步行时间2分钟)
4、地铁换乘地铁平均耗时:
4分钟(其中步行时间2分钟)
5、地铁换乘公汽平均耗时:
7分钟(其中步行时间4分钟)
6、公汽换乘地铁平均耗时:
6分钟(其中步行时间4分钟)
7、公汽票价:
分为单一票价与分段计价两种;
单一票价:
1元
其中分段计价的票价为:
0~20站:
1元
21~40站:
2元
40站以上:
3元
8、地铁票价:
3元(无论地铁线路间是否换乘)
9、假设同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘,且无需支付地铁费
3.2补充假设
1.题目中所给定有关行驶时间与换乘时间的数据与现实相吻合,不考虑由于车辆拥堵程度等原因造成的时间误差
2.所有车辆在起点处的发车间隔均为换乘车时的等待时间
3.北京市交通网络设计合理,各个站点附近交通网络密度基本均匀
4.乘车时间均不包含第一次候车时间
5.查询者转乘公交的次数不超过两次
6.所有环行公交线路都是双向的
7.地铁线T2也是双向环行的
8.在地铁站之间不出现步行的情况,单一票价制度的公汽不考虑步行的情况
四、问题解答及模型的建立
4.1问题1
4.1.1问题1的分析:
问题一中,题目要我们针对北京奥运会期间,公众如何在众多的交通线路中选择最优乘车路线或转乘路线去看奥运这一问题,从公交线路的角度来寻求最优线路,并给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
解决道路选择问题的常规思路是建立“站点到站点”的赋权有向图模型,通过Dijkstra算法求解。
在公交查询中要求的是从某点到另一点的最短路径,而Dijkstra算法求出的是从某点到其余各点的最短路径,而题中所给的站点多至几千,这无疑会降低了求解效率.用Dijkstra算法计算公交路线最短路径,在大数据量的情况下,计算速度会慢得让人难以忍受,而查询系统需要在短时间内给出最佳乘车路线,这一点用Dijkstra算法难以实现。
据统计乘客出行要以最短的时间到达目的地,首先考虑的是转车次数的多少,其次考虑的才是路径的长度。
而用Dijkstra算法算出来的结果可能是:
从A站到B站需要转几次甚至十几次车才能到达,这样的计算结果是没有意义的。
因此我们认为Dijkstra算法不适合复杂交通网络的最短路径查询,需要寻找一种改进的路径搜索算法。
考虑到题中站点间距离的邻接矩阵为一个大规模的稀疏矩阵,我们将整个公交网络抽象为“结点―弧段―有向线”的网络模型,再通过广度优先算法求解出不同换乘次数的最佳线路设计方案,可大幅度的提高程序运行效率。
首先我们通过对文本文件的处理,将文本文件导入到Matlab程序中,通过编程,找到了任意两点间的所有公交线路,并将其存储在线路矩阵中,形成数据文件。
之后我们对这些线路进行了分析,我们发现这些线路按换成次数分类,可分成直达、换成一次、换成两次等,按收费方式可分为1、2、3元,以及按线路行驶的时间,即这条线路经过了多少的车站来分,又可有许多种情况。
同时我们考虑到不同的人群对公交的需求不一样,例如对于上班族或是早上要上课的学生而言,可能时间因素是他们最看重的,因此他们希望所乘线路越短越好;对于外出休闲游玩的人来说,可能他们并不在乎一两分钟的时间,或是多花几元钱,而是能否便捷,即线路是否能够简单明了省事,因此换乘次数是他们选择公交线路优先考虑;而对于老年人来说,出于节省的原因,他们在选择路线的问题上费用可能是影响最大的因素。
综上所述,不同的人群需求不同,在选择公交路线上所考虑的因素也不同,如下图
(1)所示。
对此,我们应分开考虑,制定不同的权重,分别找到每种线路的最优解,最好能找到几种线路的共同最优线路。
图
(1)影响公交线路选择的因素及目标人群
4.1.2文本的数据处理
题目中给我们的均为文本文件,首先我们要做的是将文本文件中的数据导入到Matlab程序中,然后再在Matlab中进行数据的处理与运算。
首先我们对文本文件中的字母
,价格文字信息及连接站点之间的符号
进行了修改于替换,目的是使文本信息能在Matlab程序中正常运行计算。
具体的修改情况见下表
(1)
表
(1)文本中部分信息的修改
修改前
字母‘L、S’
接站点之间的符号‘-’
单一票制1元
修改后
空格
空格
1
修改前
分段计价(0~20站)
分段计价(21~40站)
分段计价(40站以上)
修改后
1
2
3
其次是对线路方式的修改。
由于公交线路有上行、下行、环形之分,同一辆公交车其上行线路与下行线路不一定完全相同,于是我们把每条公交线路都拆成两个线路:
上行一条,下行一条,而对于环形线路的话,我们将其分为顺时针与逆时针两条线路,这样我们将原来的520条线路拆分成了1040条线路,其中上行线路还是使用原标号,而下行线路为原线路标号加上520,环行线则是与原方向相反的加上520,于是每一条线路都有1-1040中的一个标号与之对应,下面以公交线
为例来说明上下行线的修改后的标号:
L060:
43181017742877103037551521152236743538S196635311553114425570428
L580:
42825571144155335311966353836741522152038212173S0949103028771774180943
其中,L580就是L060所对应的下行线路。
下面以环形线路为例,来说明环形线路的数据存储:
L153:
534649235512128121711708112600172158581426435131215121725126042606534649235512128121711708112600172158581426435131215121725126042606
L673:
534260626042511217121535132648141585172260081117017181212122355649534260626042511217121535132648141585172260081117017181212122355649
在这里,L153被看作成上行路线,L673被当成下行路线。
这样对于每条公交线路都可以得到两行线路存储信息。
下图为问题一的解题思想及方法:
4.1.3模型的建立
由于公交查询系统应该满足用户的各种不同需求,因此可根据出行者的不同类型分别建立以换乘次数,总时间,乘车费用作为第一目标的多层次规划下的路线选择模型。
针对模型一,仅考虑公汽的换乘。
我们将优先考虑换乘车次数尽量少,然后再考虑花费时间相对短、花费金钱相对少,对得出的所有结果中进行筛选。
换乘次数的思路及步骤如下:
任意两个站点之间的线路存在多种情况,但是考虑到实际情况,乘客换乘次数较多可能会带来时间和金钱的损失,同时对心理也会产生负面影响,人们通常更倾向于较低的换乘次数。
一般我们认为换乘次数不超过2次,即直达线路,换乘一次线路,换乘两次线路这三种情况。
A,B分别为起始站点和终点站点,C,D,E,F分别为中间换乘站点。
公汽线路图如下图
(1)所示:
图
(1)公汽线路换乘图
1.直达的线路的寻找
在直达矩阵内找到起始点
和终点站
对应的元素,如果
,则表示
、
两点可以直达,调用直达线路矩阵,记录下起始点
和终点站
的之间的线路资料。
2.换乘一次的线路的寻找
在直达矩阵中找到转乘点
,如果存在
且
,则表示
、
两点可以通过
转乘,调用直达线路矩阵,分别记录下起始点
和转乘站
以及转乘站
和终点站
的之间的线路资料。
3.换乘两次的线路的寻找
在直达矩阵中找到转乘站
和转乘站
,如果存在
、
且
,则表示
、
两点可以通过
、
转乘,调用直达线路数据库,分别记录下起始站
和转乘站
、转乘站
和转乘站
、转乘站
和终点站
的之间的线路资料。
我们根据图论中广度优先搜索的方法并结合Matlab编程找出任意两站点之间可行的路线,然后搜索出分别以换乘次数最少和乘车时间最短为目标的最优解。
我们设计如下算法:
Step1:
输入起始站Start和终点站Over
Step2:
数据预处理,处理公共汽车信息,将其中每条路线抽象成两条线路,Line的每一行代表每条线路的一次行进,Line2的每一行代表处理后线路上站的数字
Step3:
构建直达矩阵,我们可以构造直达线路列表Direct_matrix,利用循环语句,得到所有直达线路的间隔站数。
同时,我们将费用、路线录入程序中
Step4:
计算任意两站点之间的直达线路数目,录入能直达的公汽线路数到Total_direct_lines和能直达的公汽中最少站数到Min_stations
Step5:
计算是否存在直达车辆
Step6:
计算是否存在换乘一次的方案
Step7:
计算是否存在换成两次的方案
我们利用Excel将得到的直达线路的方案,换乘一次的方案,换乘两次的方案中的数据导入到Matlab中,以换乘次数最少为原则,并考虑到花费时间相对短、花费金钱相对少的想法,进行排序和筛选,从而得到仅考虑公汽线路情况下的最优方案。
4.1.4模型的解答
我们可以利用Matlab编程方便的求出在仅考虑公汽线路的情况下,任意两公汽站点之间线路选择问题。
问题一中要求我们求出以下6对起始站→终到站之间的最佳路线
(1)、S3359→S1828
(2)、S1557→S0481(3)、S0971→S0485
(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S3676
我们通过运行Matlab程序中autorun_1,根据提示分别输入起始站和终点站,将程序运行后的数据经过Excel的简单处理就可以得到我们所需的最佳线路。
4.1.5结论
基于问题一的分析我们已知,不同乘客出于个人目的对公交线路有不同的需求,我们将其主要归纳为三个方面,即换乘次数,乘车时长和乘车费用。
同时由于公交网络的复杂性,使得最短路判断出现差异,而个人选择行为带有一定的随机性,所以在结论中我们给出多个换乘方式。
在我们通过Matlab运行得到的数据中,我们可以求得换乘次数小于等于2次的所有乘坐方式,由于数据量较大,我们以换乘次数少、乘车时长较短同时乘车费用较低分别作为主要考虑因素。
在处理数据的过程中,我们首先考虑换乘次数,即在存在不换乘或只换乘一次的情况下不考虑换乘两次的情况,因为虽然换乘两次可能导致乘车时长更短,但相比于换乘一次,换乘两次更加麻烦,同时换乘过程中由于公交网络存在不确定性,可能会给乘客带来更多不便。
在换乘次数相同的情况下,我们再考虑乘车时长因素,最后为乘车费用。
之后我们优先考虑乘车时长,因为根据我们的计算结果,存在换乘两次的乘车时长小于换乘一次的情况,因此我们将给出符合这些条件的结果。
虽然我们将乘车费用放在最后考虑,但是根据我们得到的结论乘车费用基本均控制在2-4元,在正常乘车费用范围内,同时根据实际情况,当费用为2-4元时,乘客往往将关注点转变为换乘次数和乘车时长。
为此我们将不给出考虑费用最省的情况。
综合以上分析我们得到如下结论。
(1)以换乘次数最少为第一目标的乘车计划
①S3359→S1828
表
(2)S3359→S1828换乘方式1
换乘数
起始站
线路1
转站点
线路2
终点站
总时间
总费用
1
3359
436
1784
167
1828
104
3
1
3359
436
1784
217
1828
104
3
②S1557→S0481
表(3)S1557→S0481换乘方式1
换乘数
初始站
线路1
转站点1
线路2
转站点2
线路3
终点站
总时间
总费用
2
1157
84
1919
189
3186
460
0481
109
3
2
1157
363
1919
189
3186
460
0481
109
3
③S0971→S0485
表(4)S0971→S0485换乘方式1
换乘数
起始站
线路1
转站点
线路2
终点站
总时间
总费用
1
971
13
2184
417
485
128
3
1
971
13
992
417
485
131
3
④S0008→S0073
表(5)S0008→S0073换乘方式1
换乘数
起始站
线路1
转站点
线路2
终点站
总时间
总费用
1
8
159
291
58
73
86
2
1
8
159
400
474
73
86
2
1
8
159
491
58
73
86
2
1
8
463
2083
57
73
86
2
1
8
355
2263
345
73
86
2
1
8
355
2303
345
73
86
2
1
8
159
2633
474
73
86
2
1
8
159
2683
58
73
86
2
1
8
159
3053
474
73
86
2
1
8
159
3614
58
73
86
2
1
8
355
3917
345
73
86
2
⑤S0148→S0485
表(6)S0148→S0485换乘方式1
换乘数
起始站
线路1
转站点1
线路2
转站点2
线路3
终点站
总时间
总费用
2
148
308
36
156
2210
417
485
109
3
2
148
308
36
156
3332
417
485
109
3
2
148
308
36
156
3351
417
485
109
3
⑥S0087→S3676
表(7)S0087→S3676换乘方式1
换乘数
起始站
线路1
转站点
线路2
终点站
总时间
总费用
1
87
454
3496
209
3676
65
2
1
87
454
1893
209
3676
71
2
(2)以乘车时间最少为第一目标的乘车计划
①S3359→S1828
表(8)S3359→S1828换乘方式2
换乘数
起始站
线路1
转站点
线路2
转站点
线路3
终点站
总时间
总费用
2
3359
484
4
456
135
182
1828
67
4
2
3359
484
4
456
218
182
1828
67
4
2
3359
484
4
456
218
238
1828
67
4
注:
由于在总时间相同情况下,同时满足换乘数和费用同时最小的结果数量过多,因此只选择部分结果列表。
②S1557→S0481
由于从站点1557到0481不存在不换乘或换乘一次的情况,得到结果均为换乘两次的乘车方案,因此答案与以换乘次数为优先考虑的答案相同。
③S0971→S0485
表(9)S0971→S0485换乘方式2
换乘数
起始站
线路1
转站点
线路2
转站点
线路3
终点站
总时间
总费用
2
971
13
2517
290
2159
469
485
106
3
2
971
13
2517
290
2159
469
485
106
3
④S0008→S0073
表(10)S0008→S0073换乘方式2
换乘数
起始站
线路1
转站点
线路2
转站点
线路3
终点站
总时间
总费用
2
8
43
1383
290
2184
345
73
70
3
2
8
43
1383
290
2184
345
73
70
3
2
8
43
1383
296
2184
345
73
70
3
⑤S0148→S0485
由于从站点0148到0485不存在不换乘或换乘一次的情况,得到结果均为换乘两次的乘车方案,因此答案与以换乘次数为优先考虑的答
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 测验