乘公交看奥运数学建模 - 图文(2)

2020-03-27 12:30

乘公交_看奥运

在北京举行奥运会期间,公众如何在众多的交通路线中选择最优乘车路线或转乘路线去看奥运,这是我们要解决的核心问题。针对此问题,我们考虑从公交线路的角度来寻求最优线路。首先找出过任意两站点(公众所在地与奥运场地)的所有路线,将其存储起来,形成数据文件。这些路线可能包含有直达公交线路,也有可能是两条公交线路通过交汇而形成的(此时需要转乘公交一次),甚至更多公交线路交汇而成。然后在这些可行路线中搜寻最优路线。

对于路线的评价,我们可以分别以总行程时间,总转乘次数,总费用为指标,也可以将三种指标标准化后赋以不同权值形成一个综合指标。而最优路线则应是总行程时间最短,总费用最少或总转乘次数最少,或者三者皆有之。之所以这样考虑目标,是因为对于不同年龄阶段的查询者,他们追求的目标会有所不同,比如青年人比较热衷于比赛,因而他们会选择最短时间内到达奥运赛场观看比赛。而中年人则可能较倾向于综合指标最小,即较快、较省,转乘次数又不多。老年人总愿意以最省的方式看到奥运比赛。而对于残疾人士则总转乘次数最少为好。 不同的路线查询需求用图4.1表示如下:

图4.1 公交线路查询目标图

经分析,本问题的解决归结为一个求最短路径的问题,但是传统的Dijkstra最短路径算法并不适用于本问题,因为Dijkstra算法采用的存储结构和计算方法难以应付公交线路网络拓扑的复杂性,而且由于执行效率的问题,其很难满足实时系统对时间的严格要求。

为此我们在实际求解的过程中,采用了效率高效得广度优先算法,其基本思路是每次搜索指定点,并将其所有未访问过的近邻点加入搜索队列,循环搜索过程直到队列为空。此方法在后文中有详细说明。

五 建模前的准备

为了后面建模与程序设计的方便,在建立此模型前,我们有必要做一些准备工作。

5.1数据的存储

由于所给的数据格式不是很规范,我们需要将其处理成我们需要的数据存储格式。从所给文件中读出线路上的站点信息,存入txt文档中,其存储格式为:两行数据,第一行表示上行线上的站点信息,第二行表示下行线的站点信息,其中下行路线标号需要在原标号的基础上加上520,用以区分上行线和下行线。

如果上行线与下行线的站点名不完全相同,那么存储的两行数据相应的不完全相同,以公交线L009为例:

L009:3739 0359 1477 2159 2377 2211 2482 2480 3439 1920 1921 0180 2020 3027 2981

L529:2981 3027 2020 0180 1921 1920 3439 3440 2482 2211 2377 2159 1478

6

乘公交_看奥运

0359 3739

L529为L009所对应的下行线路。 如果下行线是上行线原路返回,那么存储的两行数据中的站点信息刚好顺序颠倒,以公交线路L001为例:

L001:0619 1914 0388 0348 0392 0429 0436 3885 3612 0819 3524 0820 3914 0128 0710

L521:0710 0128 3914 0820 3524 0819 3612 3885 0436 0429 0392 0348 0388 1914 0619

如果是环线的情况(如图5.1所示),则可以等效为两条线路: 顺时针方向:S1→S2→S3→S4→S1→S2→S3→S4; 逆时针方向:S1→S4→S3→S2→S1→S4→S3→S2。

经过分析,此两条”单行路线”线路的作用等同于原环形路线

图5.1 环行线路示意图

以环形公交线L158为例,此环形路线存储数据如下:

L153: 534 649 2355 1212 812 171 170 811 2600 172 1585 814 264 3513 1215

1217 251 2604 2606 534 649 2355 1212 812 171 170 811 2600 172 1585 814 264 3513 1215 1217 251 2604 2606

L673: 534 2606 2604 251 1217 1215 3513 264 814 1585 172 2600 811 170

171 812 1212 2355 649 534 2606 2604 251 1217 1215 3513 264 814 1585 172 2600 811 170 171 812 1212 2355 649

在这里,L153被看作成上行路线,L673被当成下行路线。这样对于每条公交线路都可以得到两行线路存储信息。 5.2搜寻经过每个站点的公交路线

处理5.1所得信息,找出通过每个站点的所有公交路线,并将它们存入数据文件中。

例如,通过搜寻得出经过站点S0001的线路和经过站点S0002的线路如下: 经过S0001的线路有:L421

经过S0002的线路有:L027 L152 L365 L395 L485 5.3统计任意两条公交线路的相交(相近)站点

依次统计出任意两条公交线路之间相交(相近)的站点,将其存入1040×1040的矩阵A中,但是这个矩阵的元素是维数不确定的向量,具体实现的时候可以将用队列表示。

例如:公交线路L001与公交线路L025相交的站点为A[1][25]={S0619,S1914,S0388,S0348}。

7

乘公交_看奥运

六 模型的建立与求解

6.1模型一的建立

该模型针对问题一,仅考虑公汽线路,先找出经过任意两个公汽站点Si,g与

Soi,og最多转乘两次公汽的路线,然后再根据不同查询者的需求搜寻出最优路线。

6.1.1 公汽路线的数学表示

任意两个站点间的路线有多种情况,如果最多允许换乘两次,则换乘路线分别对应图6.1的四种情况。该图中的A、B为出发站和终点站,C、D、E、F为转乘站点。

图6.1 公汽路线图

对于任意两个公汽站点Si,g与Soi,og,经过Soii,g的公汽线路表示为Li,有

iSi,g?Li;经过Soi,og的公汽线路表示为L,有Soi,o?Lo; g1)直达的路线LS0(如图6.1(a)所示)表示为:

LS?L?L,S?Lo0i1Si,gi1o1 i,gi????2)转乘一次的路线LS1(如图6.1(b)所示)表示为:

LS?(L,L)S??L,SL;L,L?LS;SC?L且SC?L o1i1i2i,gi1i10i1i2oi2i2i,g?其中:SC为Li1,Li2的一个交点;

3)转乘两次的路线LS2(如图6.1(c)所示)表示为:

LS?(L,L,L)S?L,S?L;(L,L),(L,L)(??LS;L,L)LS2i1i2i3i,gi1i1i3i3i21i1i21i2i,g? 通过以上转乘路线的建模过程,可以看出不同转乘次数间可作成迭代关系,

进而对更多转乘次数的路线进行求寻。不过考虑到实际情况,转乘次数以不超过2次为佳,所以本文未对转乘三次及三次以上的情形做讨论。 6.1.2最优路线模型的建立

找出了任意两个公汽站点间的可行路线,就可以对这些路线按不同需求进行

8

乘公交_看奥运

选择,找出最优路线了:

1)以时间最短作为最优路线的模型:行程时间Tk等于乘车时间与转车时间之和。

MinT3??(MSk,?1)?5?N1k?mm?1N1?1k

(6.1式)

m1?,2,ggg,N11;k?1,2,ggg,°kk?k其中,第k路线是以上转乘路线中的一种或几种。

2)以转乘次数最少作为最优路线的模型:

MinN1k (6.2式) 此模型等效为以上转乘路线按直达、转乘一次、两次的优先次序来考虑。 3)以费用最少作为最优路线的模型:

M (6.3式) inkC??CkL, mm?1或W?2,0M?S?20?1Wk,mk,m k,m?2W?2,21M?S?40其中,C (6.4式) L?k,m k,mk,m??3W?,40M?Sk,m2 k,m?6.1.3模型的算法描述

针对该问题的优化模型,我们采用广度优先算法找出任意两个站点间的可行路线,然后搜索出最优路线。现将此算法运用到该问题中,结合图6.2叙述如下:(该图中的Si,g、Soi,og、S1,1、S2,1、S2,2表示公汽站点,L1、L2、L3、L4、

i,gL5、L6表示公汽线路。其中(a)、(b)、(c)图分别表示了从点S到点Si,g直

达、转乘一次、转乘两次的情况)

图6.2 公交直达、转乘图

(1)首先输入需要查询的两个站点S为终点站);

(2)搜索出经过Si,gi,g与Soi,og(假设Si,g为起始站,Soi,og的公汽线路Li(i=1,2,…,m)和经过Soi,og的公汽线路

oioLoi(oi=1,2, …,n),存入数据文件;判断是Li与L是否存在相同路线,若

9

乘公交_看奥运

有则站点Si,g与Soi,og之间有直达路线(如图6.2中的L1),则该路线是换乘次数

最少(换乘次数等于0)的路线,若有多条直达路线,则可以在此基础上找出时间最省的路线;这样可以找出所有直达路线,存入数据文件;

(3)找出经过Si,g的公汽线路Li(如图6.2中的L2)中的另一站点Si1,g1和经

oi过Soi,og的公汽线路oL中的另一站点S1,1oi1,og1。判断Si1,g1与Si,goi1,og1中是否存在相

同的点,若存在(如图6.2中的S)则站点S与Soi,og间有一次换乘的路线(如

图6.2中的L2与L3),该相同点即为换乘站点;这样又找出了一次换乘路线,存入数据文件;

(4)再搜索出经过Li(如图6.2中的L4)线路上除了站点Si,g的另一站点

Si2,g1(如图6.2中的S2,1)的公汽线路Li6(如图6.2中的L6),找出公汽线路Li6上

oi的其他站点Si2,g2;判断,如果Si2,g2与经过Soi,og的公汽线路oL中的其他站点

Soi2,og2存在相同的点(如图6.2中的S2,2),则Si,g与Soi,og间有二次换乘的路线

(如图6.2中的L4、L6、L5),该相同点和点Si2,g1是换乘站点;将此二次换乘的路线存入数据文件中;

(5)对上述存储的经过两个站点Si,g与Soi,og的不同路线,根据不同模型进

行最优路线进行搜索,得出查询者满意的最优路线。

6. 1. 4模型一的求解

根据以上算法和前面建立的模型一,用VC++进行编程(程序见附录)就可以得出不同目标下的最优路线。

1)以耗时最少为目标的最优路线

起始站S3359到终到站S1828耗时最少为64 min,耗时最少的最优路线(转乘次数较少,费用较省的路线)有28条(注:表6.1选择了其中的10条表示); 起始站S1557到终到站S0481耗时最少为106 min,耗时最少的最优路线有2条;起始站S0971到终到站S0485耗时最少为106 min,耗时最少的最优路线有2条;起始站S0008到终到站S0073耗时最少为67 min,耗时最少的最优路线有2条;起始站S0148到终到站S0485耗时最少为106 min,耗时最少的最优路线有3条;起始站S0087到终到站S3676耗时最少为46 min,耗时最少的最优路线有12条;其耗时最少的最优路线如表6.1所示。

表6.1 耗时最少的最优路线表 起始公汽线中转公汽线中转公汽线终到转乘所需站 路 站 路 站 路 站 次数 费用 S3359 L0535 S2903 L1005 S1784 L0687 S1828 2 3 S3359 L0535 S2903 L1005 S1784 L0737 S1828 2 3

10


乘公交看奥运数学建模 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年山西中考复习 - 专题复习(三) 综合与实践

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: