2007年数学建模B题_乘公交_看奥运【一等奖】

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1乘公交,看奥运【摘要】本文要解决的问题是以即将举行的08年北京奥运会为背景而提出的。人们为了能现场观看奥运会,必然会面对出行方式与路线选择的问题。因此如何快速、高效地从众多可行路线中选出最优路线成为了解决此问题的关键。鉴于公交系统网络的复杂性,我们没有采用常规的Dijkstra算法,而采用了高效的广度优先算法。其基本思想是从经过起(始)点的路线出发,搜寻出转乘次数不超过两次的可行路线,然后对可行解进行进一步处理。为满足不同查询者要求,我们对三个问题都分别建立了以时间、转乘次数、费用最小为目标的优化模型。针对问题一(只考虑公汽系统),我们建立了模型一并通过VC++编程得到了任意两个站点间的多种最优路线,并得出所求站点间最优路线的最优值,如下表所示:出发站终点站S3359S1828S1557S0481S0971S0485S0008S0073S0148S0485S0087S3676最短耗时(min)641061066710646最少转乘次数(次)121122最少费用(元)333233模型二是根据问题二(同时考虑公汽和地铁系统)建立的,同样用VC++编程得到所求站点间的最优路线,如下表所示:出发站终点站S3359S1828S1557S0481S0971S0485S0008S0073S0148S0485S0087S3676最短耗时(min)64106965587.533最少转乘次数(次)121120最少费用(元)333233对问题三(将步行考虑在内)我们建立了模型三的优化模型,然后在模型改进里又建立了图论模型。本文的主要特点在于,所用算法的效率十分显著。在对原始数据仅做简单预处理的条件下,搜索任意站点间的最优路线所需的平均时间不超过0.5秒。另外,本文所建立的模型简单、所用算法比较清晰,易于程序实现,对公交线路自主查询计算机系统的实现具有现实指导作用。关键字:转乘次数广度优先算法查询效率实时系统2一问题的重述传承华夏五千年的文明,梦圆十三亿华夏儿女的畅想,2008年8月8日这个不平凡的日子终于离我们越来越近了!在观看奥运的众多方式之中,现场观看无疑是最激动人心的。为了迎接2008年奥运会,北京公交做了充分的准备,首都的公交车大都焕然一新,增强了交通的安全性和舒适性,公交线路已达800条以上,使得公众的出行更加通畅、便利。但同时也面临多条线路的选择问题。为满足公众查询公交线路的选择问题,某公司准备研制开发一个解决公交线路选择问题的自主查询计算机系统。这个系统的核心是线路选择的模型与算法,另外还应该从实际情况出发考虑,满足查询者的各种不同需求。需要解决的问题有:1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。并根据附录数据,利用模型算法,求出以下6对起始站到终到站最佳路线。(1)、S3359→S1828(2)、S1557→S0481(3)、S0971→S0485(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S36762、同时考虑公汽与地铁线路,解决以上问题。3、假设又知道所有站点之间的步行时间,请你给出任意两站点之间线路选择问题的数学模型。二符号说明iL:第i条公汽线路标号,i=1,2…10400,当i520时,iL表示上行公汽路线,当i520时,iL表示与上行路线i520L相对应的下行公汽路线;i,gS:经过第i条公汽路线的第g个公汽站点标号;jT:第j条地铁路线标号,j=1,2;j,hD:经过第j条地铁线路的第h个地铁站点标号;nLS:转乘n次的路线;kT:选择第k种路线的总时间;kN1:选择第k种路线公汽换乘公汽的换乘次数;kN2:选择第k种路线地铁换乘地铁的换乘次数;kN3:选择第k种路线地铁换乘公汽的换乘次数;kN4:选择第k种路线公汽换乘地铁的换乘次数;3k,mW:第k种路线、乘坐第m辆公汽的计费方式,其中:k,mW1表示实行单一票价,k,mW2表示实行分段计价;k,mCL:第k种路线,乘坐第m辆公汽的费用;kC:选择第k种路线的总费用;kmMS,:选择第k种路线,乘坐第m辆公汽需要经过的公汽站个点数;k,nMD:选择第k种路线,乘坐第n路地铁需要经过的地铁站个点数;k,mFS:表示对于第k种路线的第m路公汽的路线是否选择步行,k,mFS为0-1变量,k,mFS0表示不选择步行,k,mFS1表示选择步行;k,nFD:对于第k种路线的第n路地铁的路线是否选择步行,k,nFD为0-1变量,k,nFD0表示不选择步行,k,nFD1表示选择步行;三模型假设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其它假设10、查询者转乘公交的次数不超过两次;11、所有环行公交线路都是双向的;12、地铁线T2也是双向环行的;13、各公交车都运行正常,不会发生堵车现象;14、公交、列车均到站停车4四问题的分析在北京举行奥运会期间,公众如何在众多的交通路线中选择最优乘车路线或转乘路线去看奥运,这是我们要解决的核心问题。针对此问题,我们考虑从公交线路的角度来寻求最优线路。首先找出过任意两站点(公众所在地与奥运场地)的所有路线,将其存储起来,形成数据文件。这些路线可能包含有直达公交线路,也有可能是两条公交线路通过交汇而形成的(此时需要转乘公交一次),甚至更多公交线路交汇而成。然后在这些可行路线中搜寻最优路线。对于路线的评价,我们可以分别以总行程时间,总转乘次数,总费用为指标,也可以将三种指标标准化后赋以不同权值形成一个综合指标。而最优路线则应是总行程时间最短,总费用最少或总转乘次数最少,或者三者皆有之。之所以这样考虑目标,是因为对于不同年龄阶段的查询者,他们追求的目标会有所不同,比如青年人比较热衷于比赛,因而他们会选择最短时间内到达奥运赛场观看比赛。而中年人则可能较倾向于综合指标最小,即较快、较省,转乘次数又不多。老年人总愿意以最省的方式看到奥运比赛。而对于残疾人士则总转乘次数最少为好。不同的路线查询需求用图4.1表示如下:图4.1公交线路查询目标图经分析,本问题的解决归结为一个求最短路径的问题,但是传统的Dijkstra最短路径算法并不适用于本问题,因为Dijkstra算法采用的存储结构和计算方法难以应付公交线路网络拓扑的复杂性,而且由于执行效率的问题,其很难满足实时系统对时间的严格要求。为此我们在实际求解的过程中,采用了效率高效得广度优先算法,其基本思路是每次搜索指定点,并将其所有未访问过的近邻点加入搜索队列,循环搜索过程直到队列为空。此方法在后文中有详细说明。五建模前的准备为了后面建模与程序设计的方便,在建立此模型前,我们有必要做一些准备工作。5.1数据的存储由于所给的数据格式不是很规范,我们需要将其处理成我们需要的数据存储格式。从所给文件中读出线路上的站点信息,存入txt文档中,其存储格式为:两行数据,第一行表示上行线上的站点信息,第二行表示下行线的站点信息,其中下行路线标号需要在原标号的基础上加上520,用以区分上行线和下行线。如果上行线与下行线的站点名不完全相同,那么存储的两行数据相应的不完全相同,以公交线L009为例:L009:3739035914772159237722112482248034391920192101802020530272981L529:298130272020018019211920343934402482221123772159147803593739L529为L009所对应的下行线路。如果下行线是上行线原路返回,那么存储的两行数据中的站点信息刚好顺序颠倒,以公交线路L001为例:L001:061919140388034803920429043638853612081935240820391401280710L521:071001283914082035240819361238850436042903920348038819140619如果是环线的情况(如图5.1所示),则可以等效为两条线路:顺时针方向:S1→S2→S3→S4→S1→S2→S3→S4;逆时针方向:S1→S4→S3→S2→S1→S4→S3→S2。经过分析,此两条”单行路线”线路的作用等同于原环形路线图5.1环行线路示意图以环形公交线L158为例,此环形路线存储数据如下:L153:534649235512128121711708112600172158581426435131215121725126042606534649235512128121711708112600172158581426435131215121725126042606L673:534260626042511217121535132648141585172260081117017181212122355649534260626042511217121535132648141585172260081117017181212122355649在这里,L153被看作成上行路线,L673被当成下行路线。这样对于每条公交线路都可以得到两行线路存储信息。5.2搜寻经过每个站点的公交路线处理5.1所得信息,找出通过每个站点的所有公交路线,并将它们存入数据文件中。例如,通过搜寻得出经过站点S0001的线路和经过站点S0002的线路如下:经过S0001的线路有:L421经过S0002的线路有:L027L152L365L395L4855.3统计任意两条公交线路的相交(相近)站点依次统计出任意两条公交线路之间相交(相近)的站点,将其存入1040×1040的矩阵A中,但是这个矩阵的元素是维数不确定的向量,具体实现的时候可以将用队列表示。6例如:公交线路L001与公交线路L025相交的站点为A[1][25]={S0619,S1914,S0388,S0348}。六模型的建立与求解6.1模型一的建立该模型针对问题一,仅考虑公汽线路,先找出经过任意两个公汽站点i,gS与ººig,S最多转乘两次公汽的路线,然后再根据不同查询者的需求搜寻出最优路线。6.1.1公汽路线的数学表示任意两个站点间的路线有多种情况,如果最多允许换乘两次,则换乘路线分别对应图6.1的四种情况。该图中的A、B为出发站和终点站,C、D、E、F为转乘站点。图6.1公汽路线图对于任意两个公汽站点i,gS与ººig,S,经过i,gS的公汽线路表示为iL,有i,giSL;经过ººig,S的公汽线路表示为ºiL,有ºººigi,SL;1)直达的路线0LS(如图6.1(a)所示)表示为:ºº0i1i,gi1i1ig,LSLSL,SL2)转乘一次的路线1LS(如图6.1(b)所示)表示为:ºº1i1i2i,gi1i10i1i2i2i2ig,LS(L,L)SLSLL,LLS;SCLSCL,;且其中:SC为i1L,i2L的一个交点;3)转乘两次的路线2LS(如图6.1(c)所示)表示为:2i1i2i3i,gi1i1i3i3i2i1i2i2ig,LS(L,LL)SLSLL,L),(L,L)(L,L)L11,,;(LS;S通过以上转乘路线的建模过程,可以看出不同转乘次数间可作成迭代关系,进而对更多转乘次数的路线进行求寻。不过考虑到实际情况,转乘次数以不超过2次为佳,所以本文未对转乘三次及三次以上的情形做讨论。76.1.2最优路线模型的建立找出了任意两个公汽站点间的可行路线

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功