公交线路选择优化问题摘要本文针对公交线路选择问题进行了讨论。
最佳路线的选择受时间和票价两个因素的影响,将题目已知的公交线路信息转化成线路矩阵处理。
首先,从时间角度分析,所要寻找的路线经过的站点数和转车次数应该尽可能的少,考虑到所选择线路到达终点站所用的时间包括公交经过线路上各站点的时间、转车时间和步行时间,建立以所需时间最少为目标函数的线性优化模型一,从实际出发限制转车次数最多为2次,根据搜索算法利用MATLAB编程,求得问题一中S3359→S1828(其余见正文)之间的最佳路线为:L436下行-S1784-L167下行和L436下行-S1784-L217下行,所用时间为101分钟,总车费为3元;问题二中S3359→S1828之间的最佳路线为:L015 上行-S3068-D08-T1上行-D18-T2-D38-S3262-L041上行,所用时间为73分钟,总车费为5元。
其次,从票价角度分析,寻找的路线应尽可能是单一票价车路线或经过站点数尽可能少的分段计价车路线,考虑到所选择线路需要的总车费包括公汽费用和地铁费用,建立以所需车费最少为目标函数的线性优化模型二,根据搜索算法利用MATLAB编程,求得问题一中S3359→S1828之间存在L436下行-S1784-L167下行等10条最佳路线(其余见正文),所用时间为101分钟,总车费为3元;问题二中S3359→S1828之间的最佳路线为:L015上行-S3068-D08-T1上行-D18-T2-D38-S3262-L041上行,所用时间为73分钟,总车费为5元。
再次,根据乘客的不同需求可以赋予时间和票价两个因素不同的权值,建立以所需时间与所用票价在各自权值下的和最小为目标函数的线性优化模型三,当取权值皆为0.5时得问题一中S3359→S1828之间的最佳路线为:L436下行-S1784-L167下行和L436下行-S1784-L217下行,所用时间为101分钟,总车费为3元;问题二中S3359→S1828之间的最佳路线为:L015上行-S3068-D08-T1上行-D18-T2-D38-S3262-L041上行,所用时间为73分钟,总车费为5元。
最后,对模型进行了评价,并将该模型推广到路径选择问题中。
关键词公交线路选择;线性优化模型;搜索算法一、问题重述第29届奥运会将于明年8月在北京举行,届时有大量观众到现场观看,大部分人都会乘公共交通工具,北京市的交通逐步发达,开通的线路也逐渐增多,某公司针对市场需求准备开发一个解决公交线路选择问题的系统,需解决如下问题:1、仅考虑公汽线路,针对任意两公汽站点之间的线路建立一般数学模型,利用建立的模型求出以下6对起始站→终到站之间的最佳路线。
(1)、S3359→S1828 (2)、S1557→S0481 (3)、S0971→S0485(4)、S0008→S0073 (5)、S0148→S0485 (6)、S0087→S36762、同时考虑公汽与地铁线路,解决以上问题。
3、假设又知道所有站点之间的步行时间,给出任意两站点之间线路选择问题的数学模型。
二、问题分析随着交通事业的发展,公交公司所开通的线路也逐渐增多,针对市场需求需要建立一个合适的模型,解决上述公交线路选择问题。
对于最佳路线可以从时间和票价两个角度分析,走完选定路线所用的时间包含经过所有站点的时间和转车所用的时间,全程所需的总车费包括单程票价车和分段计价车两部分,二者的权重可由乘客任意确定,对于乘客的不同要求给出不同的选择路线。
针对问题一,将已知的公汽线路信息转化为相应的线路矩阵处理,在矩阵中搜索出所有从所需起始站到达终点站的可行路线,算出各条路线所需的时间和费用,再根据乘客的不同要求寻找出一条最优路径。
针对问题二,在问题一的基础上加入地铁考虑路线选择问题,同一地铁站对应的任意两个公汽站之间可以通过地铁站换乘无需支付地铁费,在问题一处理的线路矩阵中将对应地铁站的公汽站改为地铁站进行处理,利用问题一的算法寻找出最优路径,并和问题一的结果进行比较。
针对问题三,加入步行的考虑,可理解为增设了一种新的交通工具,步行的自由选择限制程度低,可根据乘客意愿选择不同线路或不同换乘站点。
从票价角度考虑,如果某条线路涉及到的分段计价车所经过的站点数略大于20或40,从实际利益出发,可以考虑步行若干站来很好的节约车费。
三、模型假设1.交通保持顺畅;2.任意两站点之间的距离相等;3.在可行路线中,如果转车和不转车行完全程所用时间相等,尽可能选择转车次数少的路线;4.从人的一般习惯考虑,所选路线最多转车两次;5.从实际情况出发考虑,公汽转乘地铁至多一次,地铁转乘公汽也是至多一次;6.人可以在任意两公交站点之间行走;7.步行经过相邻两站所用的时间相等;8.步行转到公汽不考虑等车时间;9.步行走过的公汽站点数至多为3;10.如果乘坐单一票价的车可以满足需求,则不考虑步行。
四、符号约定a 起始站;b 终点站;m 所有和a 相隔1站的公汽站点数; n 所有和b 相隔1站的公汽站点数;i a 所有和a 相隔1站的公汽站点,1,2,,i m = ; j b 所有和b 相隔1站的公汽站点,1,2,,j n = ;1n 公汽线路数目;2n 每一条线路上的公汽站点数; 3n 地铁线路数目;4n 每一条线路上的地铁站点数;i k 公汽在第i 条公汽线路上的行驶次数; i l 地铁在第i 条地铁线路上的行驶次数;i N 公汽在第i 条公汽线路上经过的站数; r 步行的次数;s 步行走过的公汽站点数; t 经过相邻两站步行所用时间; q 在第i 条公汽线路上的转车站点; α 只考虑公汽时赋予时间的权值;'α 考虑公汽和地铁时赋予时间的权值; β 只考虑公汽时赋予票价的权值;'β 考虑公汽和地铁时赋予票价的权值; (,)i j t a b 公汽从i a 到j b 花费的时间;(,)i j C a b 从i a 到j b 花费的票价;10ij x ⎧=⎨⎩,公汽在第i条公汽线路上经过第j站;,公汽在第i条公汽线路上不经过第j站;10i x ⎧=⎨⎩,公汽在第i条公汽线路上行驶;,公汽不在第i条公汽线路上行驶;10ij y ⎧=⎨⎩,地铁在第i条地铁线路上经过第j站;,地铁在第i条地铁线路上不经过第j站;10i y ⎧=⎨⎩,地铁在第i条地铁线路上行驶;,地铁不在第i条地铁线路上行驶;10i p ⎧=⎨⎩,第i条公汽线路是单一票价;,第i条公汽线路是分段票价;10u ⎧=⎨⎩,地铁换乘公汽;,地铁不换乘公汽;10w ⎧=⎨⎩,公汽换乘地铁;,公汽不换乘地铁;1m 相邻公汽站平均行驶时间(包括停站时间),且13m =(单位:分钟); 2m 公汽换乘公汽平均耗时(其中步行时间2分钟),且25m =(单位:分钟); 3m 相邻地铁站平均行驶时间(包括停站时间),且3 2.5m =(单位:分钟); 4m 地铁换乘地铁平均耗时(其中步行时间2分钟),且44m =(单位:分钟); 5m 地铁换乘公汽平均耗时(其中步行时间4分钟),且57m =(单位:分钟); 6m 公汽换乘地铁平均耗时(其中步行时间4分钟),且66m =(单位:分钟)。
五、模型的建立与求解在实际生活中,乘客一般选择转车次数尽可能少的路线,为了符合实际满足乘客需要,本文将筛选出最多只转两次车的路线,当乘客在系统中输入所需要的起始站和终点站时,系统调出可行的全部路线,且限于至多转两次车。
在所调出的全部路线中从所用时间和所需票价两个角度根据乘客需要选择最佳路线,对二者分别赋予不同的权重,将问题转化为最优路径问题。
5.1问题一的求解仅考虑公汽线路,从时间和票价两个方面进行分析,建立任意两公汽站点之间线路选择问题的数学模型与算法。
5.1.1模型一的建立(仅考虑公汽线路中以所用时间最少为目标函数) 从时间角度分析,走完选定路线所用的时间包括公汽经过所有站点的时间和转车所用的时间,则所要寻找的最优路线经过的站点数和转车次数应该尽可能的少。
建立模型如下:1211111111111211;1;;2;.1,2,,;..n n n i j i n i n i b bj a j qi ij i i i ia ib ij ij i i Z i n Min Z m x x k m k x x x s t x x k k =======⎛⎫⎛⎫=-+- ⎪ ⎪⎝⎭⎝⎭⎧=⎪⎪⎪=⎪⎪⎪⎨⎪⎪≤⎪⎪∈⎪⎪=⎩∑∑∑∑∑∑∑ >目标函数为经过所有公汽站点所用时间与转车所用时间之和。
约束条件一和二限制了所选路线只经过起始站和终点站各一次,约束条件三限制了站点不能重复经过,约束条件四限制最多转车两次。
5.1.2模型二的建立(仅考虑公汽线路中以所需车费最少为目标函数)从票价角度分析,走完选定路线所用车费包括乘坐单一票价和分段计价的车费,则所要寻找的最优路线尽可能的选择单一票价车路线且选择的分段计价车路线经过的站点数最少。
建立模型如下:1121111:21:31,020;(),2140;(),41;;1,2,,...n n i i i i i i i i i i i i i iM M or M or M p p N p N p N N Z i n Min Z k x k x s t ===-=-=-=+≤≤⎧⎪≤≤⎪⎪≥⎨⎪∈⎪⎪=⎩∑∑目标函数为所选路线中所需单一票价的车费与分段计价所需车费之和。
约束条件一、二和三分别表示分段计价车费与经过站点数的关系。
5.1.3模型三的建立在模型一和模型二的基础上,根据乘客的不同需求,分别赋予时间权值α和票价权值β不同的值,其大小可由乘客自己选择,且1αβ+=。
建立模型如下:11121111:21:31101;1;,1,2,,;,020;(),2140;(),41;2,...n i n i b bj a j qi i i ii i i ia ib ij ij i iM or M or M Min Z Z Z i n p N p N p N N Z x x s t x x k k αβαβαβ=====-=-=-=++=⎧⎪≥⎪⎪=⎪⎪⎪=⎪⎪⎪⎨=⎪⎪≤≤⎪⎪≤≤⎪≥⎪⎪≤⎪⎪∈⎩∑∑∑∑ ;,;>当1α=,0β=时,即为模型一;0α=,1β=时,即为模型二。
5.1.4模型的算法要从所有的路线中搜索出所有从所需起始站到达终点站的可行路线,然后寻找出一条花费时间和费用最低的路线,将其转化为矩阵中求最小路径问题,从而得到以下搜索算法:1Step 根据已知的公汽线路信息,将其转化为线路矩阵()ij A a =,ij a 表示第i 条公汽线路的第j 站;2Step 将a 和b 进行初始化;3Step 搜索出矩阵A 中出现a 和b 的所有点,分别记在矩阵E 和F 中,并记E 的行数为ii ;4Step 搜索出矩阵E 和F 中第1列相同的所有元素,即找出a 和b 同时出现的所有路线,并取01g =;5Step 对A 中出现的a 的第0g 行,在A 中除过该行的所有元素,搜索出与该行中a 后的各个元素相同的所有元素的位置;6Step 取001g g =+;7Step 重复5Step 和6Step ,直至0g =ii ,再取11g =;8Step 从A 中出现a 的第1g 行中的站点a 开始在A 的所有行中搜索通向b 的所有线路,其中当第1g 行中的a 后的元素与A 中其它行中的元素相同时,则通过该元素换到其所对应的行中;9Step 取111g g =+;10Step 重复8Step 和9Step ,直至1g =ii ,从而得到A 中从a 通向b 的所有线路; 11Step 分别计算出由10Step 得到的a 至b 的所有线路所用的时间和所需的车票费用;12Step 分别比较各个线路的所用时间和所需车票费用,分别得到花费时间最短和车票费用最少的线路;13Step 在以上基础上,分别给时间和车票费用赋予一定的权重,根据需要可得不同的最优线路。