数学建模优秀论文
这是07年数模比赛获奖的:
乘公交 看奥运
二 符号说明
:第i条公汽线路标号,i=1,2 …10400,当 时, 表示上行公汽路线, 当 时, 表示与上行路线 相对应的下行公汽路线;
:经过第i条公汽路线的第g个公汽站点标号;
:第j条地铁路线标号, j=1,2;
:经过第j条地铁线路的第h个地铁站点标号;
:转乘n次的路线;
:选择第k种路线的总时间;
:选择第k种路线公汽换乘公汽的换乘次数;
:选择第k种路线地铁换乘地铁的换乘次数;
:选择第k种路线地铁换乘公汽的换乘次数;
:选择第k种路线公汽换乘地铁的换乘次数;
:第k种路线、乘坐第m辆公汽的计费方式,其中:
表示实行单一票价, 表示实行分段计价;
:第k种路线,乘坐第m辆公汽的费用;
:选择第k种路线的总费用;
:选择第k种路线,乘坐第m辆公汽需要经过的公汽站个点数;
:选择第k种路线,乘坐第n路地铁需要经过的地铁站个点数;
:表示对于第k种路线的第m路公汽的路线是否选择步行, 为0-1变量, 表示不选择步行, 表示选择步行;
:对于第k种路线的第n路地铁的路线是否选择步行, 为0-1变量, 表示不选择步行, 表示选择步行;
三 模型假设
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.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 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}。
六 模型的建立与求解
6.1模型一的建立
该模型针对问题一,仅考虑公汽线路,先找出经过任意两个公汽站点 与 最多转乘两次公汽的路线,然后再根据不同查询者的需求搜寻出最优路线。
6.1.1 公汽路线的数学表示
任意两个站点间的路线有多种情况,如果最多允许换乘两次,则换乘路线分别对应图6.1的四种情况。该图中的A、B为出发站和终点站,C、D、E、F为转乘站点。
图6.1 公汽路线图
对于任意两个公汽站点 与 ,经过 的公汽线路表示为 ,有 ;经过 的公汽线路表示为 ,有 ;
1)直达的路线 (如图6.1(a)所示)表示为:
2)转乘一次的路线 (如图6.1(b)所示)表示为:
其中:SC为 , 的一个交点;
3)转乘两次的路线 (如图6.1(c)所示)表示为:
通过以上转乘路线的建模过程,可以看出不同转乘次数间可作成迭代关系,进而对更多转乘次数的路线进行求寻。不过考虑到实际情况,转乘次数以不超过2次为佳,所以本文未对转乘三次及三次以上的情形做讨论。
6.1.2最优路线模型的建立
找出了任意两个公汽站点间的可行路线,就可以对这些路线按不同需求进行选择,找出最优路线了:
1)以时间最短作为最优路线的模型:行程时间 等于乘车时间与转车时间之和。
(6.1式)
其中,第k路线是以上转乘路线中的一种或几种。
2)以转乘次数最少作为最优路线的模型:
(6.2式)
此模型等效为以上转乘路线按直达、转乘一次、两次的优先次序来考虑。
3)以费用最少作为最优路线的模型:
(6.3式)
其中, (6.4式)
6.1.3模型的算法描述
针对该问题的优化模型,我们采用广度优先算法找出任意两个站点间的可行路线,然后搜索出最优路线。现将此算法运用到该问题中,结合图6.2叙述如下:(该图中的 、 、 、 、 表示公汽站点, 、 、 、 、 、 表示公汽线路。其中(a)、(b)、(c)图分别表示了从点 到点 直达、转乘一次、转乘两次的情况)
图6.2 公交直达、转乘图
(1)首先输入需要查询的两个站点 与 (假设 为起始站, 为终点站);
(2)搜索出经过 的公汽线路 (i=1,2,…,m)和经过 的公汽线路 ( =1,2, …,n),存入数据文件;判断是 与 是否存在相同路线,若有则站点 与 之间有直达路线(如图6.2中的 ),则该路线是换乘次数最少(换乘次数等于0)的路线,若有多条直达路线,则可以在此基础上找出时间最省的路线;这样可以找出所有直达路线,存入数据文件;
(3)找出经过 的公汽线路 (如图6.2中的 )中的另一站点 和经过 的公汽线路 中的另一站点 。判断 与 中是否存在相同的点,若存在(如图6.2中的 )则站点 与 间有一次换乘的路线(如图6.2中的 与 ),该相同点即为换乘站点;这样又找出了一次换乘路线,存入数据文件;
(4)再搜索出经过 (如图6.2中的 )线路上除了站点 的另一站点 (如图6.2中的 )的公汽线路 (如图6.2中的 ),找出公汽线路 上的其他站点 ;判断,如果 与经过 的公汽线路 中的其他站点 存在相同的点(如图6.2中的 ),则 与 间有二次换乘的路线(如图6.2中的 、 、 ),该相同点和点 是换乘站点;将此二次换乘的路线存入数据文件中;
(5)对上述存储的经过两个站点 与 的不同路线,根据不同模型进行最优路线进行搜索,得出查询者满意的最优路线。
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
S3359 L0123 S2903 L1005 S1784 L0687 S1828 2 3
S3359 L0123 S2903 L1005 S1784 L0737 S1828 2 3
S3359 L0652 S2903 L1005 S1784 L0687 S1828 2 3
S3359 L0652 S2903 L1005 S1784 L0737 S1828 2 3
S3359 L0844 S2027 L1005 S1784 L0687 S1828 2 3
S3359 L0844 S2027 L1005 S1784 L0737 S1828 2 3
S3359 L0844 S1746 L1005 S1784 L0687 S1828 2 3
S3359 L0844 S1746 L1005 S1784 L0737 S1828 2 3
S1557 L0604 S1919 L0709 S3186 L0980 S0481 2 3
S1557 L0883 S1919 L0709 S3186 L0980 S0481 2 3
S0971 L0533 S2517 L0810 S2480 L0937 S0485 2 3
S0971 L0533 S2517 L0296 S2480 L0937 S0485 2 3
S0008 L0198 S3766 L0296 S2184 L0345 S0073 2 3
S0008 L0198 S3766 L0296 S2184 L0345 S0073 2 3
S0148 L0308 S0036 L0156 S2210 L0937 S0485 2 3
S0148 L0308 S0036 L0156 S3332 L0937 S0485 2 3
S0148 L0308 S0036 L0156 S3351 L0937 S0485 2 3
S0087 L0541 S0088 L0231 S0427 L0097 S3676 2 3
S0087 L0541 S0088 L0231 S0427 L0982 S3676 2 3
S0087 L0541 S0088 L0901 S0427 L0097 S3676 2 3
S0087 L0541 S0088 L0901 S0427 L0982 S3676 2 3
S0087 L0206 S0088 L0231 S0427 L0097 S3676 2 3
S0087 L0206 S0088 L0231 S0427 L0982 S3676 2 3
S0087 L0206 S0088 L0901 S0427 L0097 S3676 2 3
S0087 L0206 S0088 L0901 S0427 L0982 S3676 2 3
S0087 L0974 S0088 L0231 S0427 L0097 S3676 2 3
S0087 L0974 S0088 L0231 S0427 L0982 S3676 2 3
S0087 L0974 S0088 L0901 S0427 L0097 S3676 2 3
S0087 L0974 S0088 L0901 S0427 L0982 S3676 2 3
2) 以转乘次数最少为目标的最优路线
起始站S3359到终到站S1828的最少转乘次数为1次,转乘次数最少的最优路线(所需时间较短,费用较省的路线)有2条;
起始站S1557到终到站S0481的最少转乘次数为2次,转乘次数最少的最优路线有2条与耗时最少的最优路线相同(表示在表6.1中,下同);
起始站S0971到终到站S0485的最少转乘次数为1次,转乘次数最少的最优路线有1条;
起始站S0008到终到站S0073的最少转乘次数为1次,转乘次数最少的最优路线有9条;
起始站S0148到终到站S0485的最少转乘次数为2次,转乘次数最少的最优路线有3条与耗时最少的最优路线相同;
起始站S0087到终到站S3676的最少转乘次数为2次,转乘次数最少的最优路线有6条与耗时最少的最优路线相同;
其余转乘次数最少的最优路线路线如表6.2所示。
表6.2 转乘次数最少的最优路线表
起始站 公汽线路 中转站 公汽线路 终到站 耗时 所需费用
S3359 L0956 S1784 L0687 S1828 101 3
S3359 L0956 S1784 L0737 S1828 101 3
S0971 L0533 S2184 L0937 S0485 128 3
S0008 L0679 S0291 L0578 S0073 83 2
S0008 L0679 S0491 L0578 S0073 83 2
S0008 L0679 S2559 L0578 S0073 83 2
S0008 L0679 S2683 L0578 S0073 83 2
S0008 L0679 S3614 L0578 S0073 83 2
S0008 L0875 S2263 L0345 S0073 83 2
S0008 L0875 S2303 L0345 S0073 83 2
S0008 L0875 S3917 L0345 S0073 83 2
S0008 L0983 S2083 L0057 S0073 83 2
3)以费用最少为目标的最优路线
起始站S3359到终到站S1828的最少费用为3元,最少费用的最优路线(所需时间较短,转乘次数较少的路线)有30条,其中28条路线所需时间为64 min,转乘次数为2次,另外两条路线所需时间为101 min,转乘次数为1次;
起始站S1557到终到站S0481的最少费用为3元,最少费用的最优路线有2条,所需时间为106 min,转乘次数为2次;
起始站S0971到终到站S0485的最少费用为3元,最少费用的最优路线有3条,其中两条所需时间为106 min,转乘次数为2次,另外一条所需时间为128 min,转乘次数为1次;
起始站S0008到终到站S0073的最少费用为2元,最少费用的最优路线有9条,所需时间为83 min,转乘次数为1次;
起始站S0148到终到站S0485的最少费用为3元,最少费用的最优路线有3条,所需时间为106min,转乘次数为2次;
起始站S0087到终到站S3676的最少费用为3元,最少费用的最优路线有12条,所需时间为46 min,转乘次数为2次;
最少费用的最优路线表示在表6.1和表6.2中。
6.2.1模型二的建立
该模型针对问题二,将公汽与地铁同时考虑,找出可行路线,然后寻找最优路线。对于地铁线路,也可以将其作为公交线路,本质上没有什么区别,只不过乘车费用、时间,换乘时间不一样罢了。因此地铁站可等效为公交站,地铁和公交的转乘站即可作为两者的交汇点。因此该模型的公交换乘路线模型与模型一中的基本相同。现建立模型二下的最优路线模型。
1)以时间最短的路线作为最优路线的模型:可行路线的总时间为乘公交(公汽和地铁)时间与公汽与地铁换乘、公汽间、地铁间换乘时间之和。
(6.5式)
其中,第k路线为同时考虑公汽与地铁的转乘路线中的一种或几种。
2)以转乘次数最少的路线作为最优路线的模型:
(6.6式)
此模型等效为以上转乘路线按直达、转乘一次、两次(包括公交与地铁间的转乘)的优先次序来考虑。
3)以费用最少的路线作为最优路线的模型:可行路线的费用为乘公交和地铁费用的总和。
(6.7式)
其中, 仍满足(6.4式)。
6.2.2模型二的求解
不难发现,问题一是问题二解的一部分。在问题二中,新产生的最优解主要源于在通过换乘地铁、换乘附近相近站点的路线上,如下图所示:
从点A到B,图(a)表示的是通过两公交线路上相邻公汽站S1,S2进行一次转乘;图(b)表示利用地铁站进行二次转乘;图(c)表示利用另一条公汽路线为中介进行二次转乘。
铁路线路引入给题目的求解增加了难度,为了形象了解为数不多的两条铁路间的交叉关系,我们通过matlab编程(程序见附录)作出了两条铁路的位置关系图,如图6.3所示。
图6.3 T1与T2铁路位置关系图
注:图四中的直线表示T1铁路线,圆表示T2铁路线,数值表示站点,例如1表示T1铁路线上的D1铁路站,26表示T2铁路线上的D26铁路站。此图与网上查询到的北京地铁示意图(如图6.4所示)相吻合。
图6.4 北京地铁示意图
同样将地铁线路等效为公交线路得出任意两个站点间的可行线路,再将目标函数分别用模型二建立的模型表达式表达,用VC++进行编程(程序见附录)求得出考虑地铁情况的最优路线。
1)以转乘次数最少为目标的最优路线
起始站S0008到终到站S0073的最少转乘次数为1次,转乘次数最少的最优路线有1条;
起始站S0087到终到站S3676的最少转乘次数为0次,即有直达路线,直达下的最优路线有1条;
起始站S0148到终到站S0485的最少转乘次数为2次,转乘次数最少的最优路线有10条;
起始站S0971到终到站S0485的最少转乘次数为2次,转乘次数最少的最优路线有20条(注表6.4中罗列其中10条);
起始站S1557到终到站S0481的最少转乘次数为2次,转乘次数最少的最优路线有17条(注表6.4中罗列其中10条);
起始站S3359到终到站S1828的最少转乘次数为2次,转乘次数最少的最优路线有2条。
2)以耗时最少为目标的最优路线
起始站S3359到终到站S1828耗时最少为64 min,耗时最少的最优路线(转乘次数较少,费用较省的路线)有28条(注:表6.1选择了其中的10条表示);
起始站S1557到终到站S0481耗时最少为109 min,耗时最少的最优路线有17条与转乘次数最少的最优路线相同;
起始站S0971到终到站S0485耗时最少为96 min,耗时最少的最优路线有20条与转乘次数最少的最优路线相同;
起始站S0008到终到站S0073耗时最少为55 min,耗时最少的最优路线有3条;
起始站S0148到终到站S0485耗时最少为87.5 min,耗时最少的最优路线有10条与转乘次数最少的最优路线相同;
起始站S0087到终到站S3676耗时最少为33 min,耗时最少的最优路线有1条与转乘次数最少的最优路线相同;
3) 最少费用的最优路线
起始站S3359到终到站S1828的最少费用为3元,最少费用的最优路线(所需时间较短,转乘次数较少的路线)有2条;
起始站S1557到终到站S0481的最少费用为3元,最少费用的最优路线有17条;
起始站S0971到终到站S0485的最少费用为5元,最少费用的最优路线有20条;
起始站S0008到终到站S0073的最少费用为2元,最少费用的最优路线有1条;
起始站S0148到终到站S0485的最少费用为5元,最少费用的最优路线有10条;
起始站S0087到终到站S3676的最少费用为2元,最少费用的最优路线有1条;
在此种情况下,我们就只考虑可以通过地铁站换乘的情况,不通过地铁站的情况即为模型1的求解结果。模型2的求解结果见附件1。
6.3.1模型三的建立
该模型针对问题三,将步行方式考虑在了出行方式当中,更符合实际。因为当出发点与换乘点、终点站或转乘站与转乘站之间只相隔几个站时,当然该段选择步行方式更优。
因此作出如下假设:
一、如果存在某段路线,其两端点站之间相隔站点数小等于2(即至多经过4个站点),则该段线路选择步行方式到达目的地。其他的情况用模型二来处理。其中路线的两端点站之间相隔站点数是根据公交直达换乘路线来确定的。
二、相邻公交站点(包括地铁站)间平均步行时间为5分钟。
三、如果在公汽线路上选择步行,则公汽间换乘次数减少1;如果在地铁线路上选择步行,则地铁间换乘次数减少1,直达线路除外。
直达和转乘一次、两次的路线需要步行的路段示意图如图6.5所示。图中(a)表示出发点A与终点站B间能直达,相隔的站点数等于2所以选择步行;图中(b)表示出发点A与终点站B间通过一次换乘能到达,其中路段AC的站点数等于2所以选择步行,同样如果CB路段的站点数小等于2,则也采取步行的方式;图中(c)选择步行方式的依据类似。
图6.5 步行示意图
是否选择步行方式的函数:
(6.8式)
其中 表示第m路公交路线是否步行, 表示第n路地铁线路是否步行;
对于直达路线,如果出发点与终点站之间相隔站点数小等于2则步行,否则乘车。对于需要转乘的路线的最优路线模型讨论如下:
1)以时间最短的路线作为最优路线的模型:路线总时间等于乘车时间加上步行时间,再加上转乘时间。
(6.9式)
其中,第k路线为同时考虑公汽与地铁的转乘路线中的一种或几种。
2)以转乘次数最少的路线作为最优路线的模型:每步行一次就少换乘一次车。
(6.20式)
此模型等效为以上转乘路线按直达、转乘一次、两次、三次(包括公交与地铁间的转乘)的优先次序来考虑。
3)以费用最少的路线作为最优路线的模型:
(6.21式)
其中, 仍满足(6.4式)。
七 模型的优缺点及改进
7.1模型的评价
7.1.1 模型优点
1、模型是由简单到复杂一步步建立的,使得更贴近实际。
2、本文的模型简单,其算法直观,容易编程实现。
3、本文模型比较注重数据的处理和存储方式,大大提高了查询效率。
4、本文模型注重效率的提高,通过大量的特征信息的提取,并结合有效的算法,使其完全可以满足实时系统的要求。
7.1.2 模型缺点
在建模与编程过程中,使用的数据只是现实数据的一种近似,因而得出的结果可能与现实情况有一定的差距。
7.2 模型的改进
以上模型主要是从公交线路出发,寻找公交线路的交叉站作为换乘站点,进而找出经过任意两个站点的可能乘车路线。我们也可以从公交站点的角度出发,用图论的方法建立有向赋权图(如图7.1所示),此向赋权图是针对问题三建立的图论模型,问题一、问题二只是此模型的简化。图7.1中 表示公汽线路标号,该线路是公汽线路 的上行线或下行线, 、 、 、 、 、 是公汽线路 上的站点标号; 表示地铁线路标号,该地铁线路是双向行驶的, 、 、 、 、 是地铁线路 上的站点标号;公汽 与地铁 可以在公汽站 和地铁站 间换乘。如果图7.1中的地铁线路替换成公汽线路,为了表示公汽间换乘所需的时间或者费用,应将同一个换乘站点用两个站点来表示。
图7.1 公交线路的有向赋权图
根据不同的目标,给不同的站点间的边赋上不同的权值。然后利用图论的相关算法,找出相应的最短路径。
1)当以时间最短为目标时,给每条边赋上时间的权值。给同一线路上任意两个站点间的边赋值时,其权值等于站点间的公交线路段数与平均时间的乘积。当某段线路的两段点间间隔站点数小等于3时,选择步行,该线路的权值等于步行时间。不同公汽和地铁间进行换乘时需要赋给不同的权值,以表示换乘时间。
例如(如图7.1):
当j>4时, 到 的边权值 ;,
从 到 不需要的转车,但根据假设应选择步行,其边权值 ;,
从 到 要么乘公交,然后转车,要么步行,根据步行的假设条件, 到 的站点间隔数小于2,因此选择步行,其边权值 ;,
当g>4时, 与 之间的边权值 ;,
到 的边权值 ;
到 的边权值 ;
当j>4、g>4时, 到 的路径长度为:
;
当 、g>4时,则从 到 选择步行,再乘地铁到 ,其路径长度为; ;
找出任意两点间可行路线的路径长度后,再搜索出其中的最短路径的的可行路线作为时间的最优路线。
2)当以费用最省为目标时,则给每条边赋上费用的权值。
公汽站点间的边权按(6.4式)赋值。
当公汽线路 按单一票价计费,对于 上任意两个公汽站点 和 间,
若 ,则选择步行 ;若 ,则 ;
当公汽线路 按分段计价,若 ,则 ;若 ,则 ;若 ,则 ;若 ,则 ;
地铁线路 上任意两个站点 和 间,若 ,则选择步行 ;若 ,则 ;换乘站点 与 间的边权值均为0,即 ;则从 通过站点 换乘 到 的一条可行路线的路径长度为:
若 , ,则从 到 选择步行, ;
若 , ,则 ;
同样可以找出任意两点间可行路线的路径长度,然后再搜索出最短路径作为费用的最优路线。