公交换乘方案的研究与设计doc.docx
《公交换乘方案的研究与设计doc.docx》由会员分享,可在线阅读,更多相关《公交换乘方案的研究与设计doc.docx(41页珍藏版)》请在冰豆网上搜索。
公交换乘方案的研究与设计doc
第一章绪论
1.1前言
这些年来,城市的公交系统有了很大发展,北京市的公交线路已达800条以上,使得公众的出行更加通畅、便利,但同时也面临多条线路的选择问题。
针对市场需求需要研制开发一个解决公交线路选择问题的自主查询计算机系统。
为了设计这样一个系统,其核心是线路选择的模型与算法,应该从实际情况出发考虑,满足查询者的各种不同需求。
其中需要解决如下问题。
1)、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
求出以下6对起始站→终到站之间的最佳路线。
(1)、S3359→S1828
(2)、S1557→S0481(3)、S0971→S0485
(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S3676
2)、同时考虑公汽与地铁线路的算法。
3)、当所有站点之间的步行时间已知时,建立任意两站点之间线路选择问题的数学模型。
该设计主要研究三种不同情况下,任意两站点之间的线路选择问题。
联系实际,公众乘坐公交车主要考虑的因素包括转乘次数、行程时间、车站始发情况、车站的车次负载量及乘车费用等因素。
为满足一般公众的乘车需求,主要按照公众对不同乘车信息的重视程度,确定出最佳的乘车路线。
仅考虑公汽线路的情况下,首先,需要根据给出的公交线路信息数据,对每条线路进行抽象处理,将分上下行的线路、双向行驶的线路和环行线路抽象为两条。
然后,主要考虑公众最关心的乘车因素,即转乘次数。
在最少转乘次数的基础上考虑共众对其他因素的需求,按照先后顺序考虑行程时间、车站始发情况、车站的车次负载量及乘车费用,给出供公众选用的多种参考方案。
并考虑以时间为主要目标的情况下,建立最优化模型确定任意两站点行程时间最短的方案。
在同时考虑公汽与地铁算法的情况下,根据地铁与邻近站点可换乘的信息,可将每个地铁站点及其对应的所有公交站点抽象成一个点处理。
对于两条地铁线路可按照与仅考虑公汽情况下相同的抽象方法处理。
在此基础上按照相同的思路确定任意两站点间的最佳方案。
考虑公交及地铁站点的实际分布情况,有时会出现步行小段距离再转车的情况更能节省时间或转车次数。
因此,研究此种情况下的出行方案对节省出行时间具有重要的实际意义。
1.2模型假设
[1]假设车站不重名;
[2]假设各路经上公交车发车频度相同;
[3]假设相邻站点间平均行驶时间一定;
[4]假设不出现交通阻塞,公交运行顺畅;
[5]假设不出现车辆故障及道路交通事故;
[6]假设始发终点出入地铁需要步行4分钟;
[7]假设公交准点到达,不考虑红绿灯等待时间。
1.3基本参数设定
相邻公汽站平均行驶时间(包括停站时间):
3分钟
相邻地铁站平均行驶时间(包括停站时间):
2.5分钟
公汽换乘公汽平均耗时:
5分钟(其中步行时间2分钟)
地铁换乘地铁平均耗时:
4分钟(其中步行时间2分钟)
地铁换乘公汽平均耗时:
7分钟(其中步行时间4分钟)
公汽换乘地铁平均耗时:
6分钟(其中步行时间4分钟)
公汽票价v:
分为单一票价与分段计价两种,标记于线路后;其中分段计价的票价为:
0~20站:
1元;21~40站:
2元;40站以上:
3元
地铁票价w:
3元(无论地铁线路间是否换乘)
注:
以上参数均为简化问题而作的假设,未必与实际数据完全吻合
1.4符号系统
xij——弧(i,j)是否在该有向赋权图上;tij——站点i→j的总乘车时间;
fij——第i个站点是否为i→j的始发站;Pij——站点i→j的乘车费用。
第二章公汽站点之间线路选择模型
本章主要研究任意两公汽站点间线路选择的数学模型与算法。
在不同需求下找出最佳路线,并给出更为人性化的站点及转乘点是否为始发站的提示。
2.1数据库建立
2.1.1数据处理——三种公汽线路抽象处理
目前城市公汽线路主要分三种:
上下行线重合、环形线路和下行线与上行线经过站点不同。
下面将这三种线路进行数据处理:
(1)上下行线重合
这种线路有两个端点站,在两个端点之间双向行车,而且两个方向上的行车路线相同,经过同样的站点序列。
由于线路的方向不同,因此,下行线和上行线可以抽象成两条线路处理。
(2)环形线路
实际中环形路线一般是双环,但在对这两条线路进行抽象时,为保证任意两站点距离最近,把每条线路再抽象成2条(如图所示):
(3)下行线与上行线经过站点不同
由于下行线与上行线经过站点不同,显然,该种线路需要抽象成两条线路处理。
2.1.2“公汽直达数据库”的建立
根据公众出行心理,公汽线路选择应优先考虑两站点之间是否有直达车,那么在查询系统内部应设有任两站点的直达线路表,以方便查询时优先快速查询是否有直达车,若有,则直接输出所有直达车辆;若无,再搜索换乘路线。
在建立直达数据库的时候,数据结构的选择非常重要,本题共有3957个站点,若直达数据库内每个队列的每个数据都使用双精度实型储存,实际在MATLAB等软件内内存占用大约为2GB,这显然超越现阶段个人电脑极限,所以根据实际情况可以采用不同数据结构,本章采用MATLAB内建元胞结构,当元胞内队列不存在时不占用空间,具体元胞结构设计如下:
Cell{1,1}
Cell{1,2}
车号
费用
耗时
L001
2
27
L076
3
18
Cell{1,3}
Cell{2,1}
Cell{2,2}
Cell{2,3}
图1.1元胞结构示意图
上图中Cell{1,2}代表Q中第1行第2个元胞(即从站点S0001到站点S0002的直达公交线路信息),元胞中队列的每一行代表一辆直达车信息。
2.2模型设计
从查询系统设计角度考虑,当输入起讫点后,系统内部通过Q查询无结果时,系统内部应自动搜寻换乘次数最少的路线,若换乘次数相同时有多种转乘方案,则系统应显示所有转乘路线方案(包括转乘次数、行程总时间、途径总站点数、转乘站点及路线、是否始发、行程总费用、转承站点负载压力)以供查询者自主选择。
同时,系统应向查询者推荐“时间最短”,“费用最省”,“转乘站始发站最多”,“负载压力最小”的不同目标下的最佳路线。
2.2.1基于不同目标的有向赋权图定义
引用图论相关知识,将所提供的公汽网络抽象成一个有向赋权图G=(V,E,W),G中的每个顶点为每个不同的站点,如果从G中的顶点Vi到Vj有直达路线,那么这两点之间就用有向边相连,记做(i,j)∈E,方向i为从j指向,表示可从i直达j,相应的有一个数w(vi,vj)称为该有向边的权,这样公汽网络就抽象为一个有向赋权图。
赋权图中的权可根据不同的目标进行定义,本模型在确定不同目标时,将其分别定义为:
2.2.2目标分析
目前用户公汽换乘主要考虑如下几个需求因素:
目标一:
换乘次数最少;
目标二:
行程时间最短;
目标三:
行程费用最少;
目标四:
转乘车辆始发最多;
目标五:
站点负载压力最小。
2.2.2.1目标一:
换乘次数最少
基于2.1.4建立的有向赋权图,引入0-1决策变量xij表示弧(i,j)是否在起点与终点的路上,则:
若vi与vj之间无直接相连的弧,但可通过中间节点转跳,表明由站点i到j之间不可直达,但可通过转乘到达,则由vi到vj之间换乘次数为经过的总弧数减1,即换乘次数最小可表示为:
2.2.2.2目标二:
行程总时间最短
时间权值Wt=(tu)nxn,,则乘车总时间为:
公汽换公汽时间固定是5分钟,则换乘时间为:
行程总时间包括起始站点等待的3分钟,行程总时间最短表示为:
2.2.2.3目标三:
行程总费用最少
设qu表示i→j车辆属性
设su表i→j所过站数,那么i→j直达费用权Wp=(pu)nxn表示为:
行程总费用最少可表示为:
2.2.2.4目标四:
转乘车辆始发最多
为考虑所选路线中转乘站点是否为所需转乘车始发站,我们引入0-1变量fu表示第i个站点是否为i→j发权Wf=(fij)nxn:
从i→j个站点的路线中转乘点为所转乘车的始发点最多的路线可表示为:
2.2.2.5目标五:
站点负载压力最小
首先假设终点站是奥运场馆,乘坐公车的人大多数都到达终点站,因此转车站点离始发站的站点数越少越好(人少):
负载压力=转乘站点离始发站的站点数-转乘站点离终点站的站点数
注:
若终点站不是奥运场馆则可以通过对负载取绝对值表示离始发或终点越近转车越方便。
如图所示,站点i的负载压力=2-3=-1,显然负载越小越好。
根据式1.1,aij表示进入第i个站点的径数,au表示从第i个站点出站的径数矩阵,以ri表示第i个站点的负载压力权Wr=(ri)nxl:
线路负载压力最小可表示为:
2.2.3约束分析
2.2.3.1换乘次数约束
基于对目标一的分析,可得在有向赋权图中换乘次数表达式,以c表示所能接受的最大换乘次数,则换乘次数约束可表示为:
其中,参数c为人为设定值,分以下三种情况:
[1]当设定c=0时,为严格约束不能换乘;
[2]当设定c=∞时,为无乘车次数约束,即可无限次换乘;
[3]当设定c为不为0的常数C时,为约束换乘次数在C次以内的情况;
《注》:
参数c可根据不同的计算需求进行自由选取。
仅从数学模型角度考虑,为使模型更具通用性,c的选取可到∞。
从实际角度出发,查询系统中的c值可由查询用户自己设定,当最小换乘次数小于bu时,输出无解。
2.2.3.2最短路起讫点约束
由于G为有向图,则其中顶点分为“起点”、“中间点”、“讫点”三类,对于起点只有出的边而无入的边,对于中间点既有入的也有出的边,对于讫点只有入的无出的边。
对有向图而言,若求顶点s→e的最短路径,以xu表示进入第j个顶点的边,以xji表示出第j个顶点的边,则s→e中的三类点约束可表示为:
2.2.4最少换乘次数的确定
在用户输入起点与终点后,系统需要立即给出至少要转乘几次才能够到达目的地,这样就需要建立以下矩阵。
统计Q中各元素长度,可得任意两站点的直达线路数。
由此可构造表示两两站点间直达路线数目的直达线路数矩阵A=(aij)nxn,通过矩阵运算可得到任两站点间换乘线路数矩阵,进而得到任两站点间的最少换乘次数矩阵C=(cu)nxn,从而可得任两站间所需的最少换乘次数。
1)直达线路数矩阵的建立
引入直达线路数矩阵A=(aij),其矩阵元素aij表示第i个站点到第j个站点直达线路数n,其中,当i=j时为无效路径,设定值为0,即:
以N表示所有公汽所经过的的站点总数,则直达线路数矩阵可表示为:
2)换乘线路数矩阵的建立
直达矩阵A为N×N阶方阵,矩阵A的2次幂中元素表示任两站点间通过1次转乘的路线数,即:
其中,Aij2表示第i个站点到第j个站点通过1次转乘的路线数,下面以A2第1行第2个元素a122为例对A2中元素意义进行举例说明:
《例》:
假设上式中等号右边仅a13=1、a32=1,其余为0,说明仅第1个站点可直达到第3个站点,第3个站点可直达到第2个站点,那么a122=1,即第1站点可通过一次换乘到达2站点,换乘点为站点3。
以An表示方阵A的n次幂,Alg为站点k→j的直达路线数,则:
其中,元素Aijn为通过(n−1)次换乘从站点i→j的线路数。
如A433=1表示从站点4到站点3有1条两次换乘路线,其换乘站点可通过运算参数记录得到。
3)最少换乘次数矩阵的建立
引入矩阵B=(bu),其矩阵元素bu为使得Aijn≠0的n的最小值,n∈[1,∞),即:
则bu-1表示从站点i→j必要的最少换乘次数,以矩阵C=(cu)表示最少换乘次数矩阵,则:
其中,元素Cij表示从站点i→j必要的最少换乘次数。
基于最少换乘次数矩阵C,每对起始站→终到站的最少换乘次数如下:
2.3模型建立
基于分析,建立多目标最短路模型0-1规划表达式如下(s为起点,e为终点):
模型说明:
(1.10)换乘次数约束,表示转乘次数应在乘客所能接受的最多转乘次数。
(1.11)最短路规划中的起讫点约束,其中s为起点,e为终点。
xij——弧(i,j)是否在该路径上;
tij——站点i→j的总乘车时间;fij——第i个站点是否为i→j的始发站;
ri——站点i的负载压力;pij——站点i→j的乘车总费用;
c——人为设定参数,表示乘客可接受的最多换乘次数,详见约束分析。
2.4模型求解
该模型有2种方法,基于数据库Q与Dijkstra算法的“邻接算法”求解和使用Lingo软件求解无转乘次数限制的方案(针对不同目标分别求解)。
2.4.1基于数据库Q与Dijkstra算法的“邻接算法”求解
其求解步骤如下:
在邻接算法内不考虑转乘2次以上主要原因是我们实际上并不是简单计算最短路径,而是把较优方案都记录在U1、U2中,这对用户多需求是吻合的,但这样对复杂度为O(n2)的算法来说还是不可行的,但我们权衡了二者的重要性决定用方案的丰富性取代计算的准确性,而且从实际出发用户也不一定非常关心转乘次数大于2次的方案。
虽然在本算法内我们不考虑转乘次数大于2次的方案,但最后我们从规划角度使用lingo软件求解了全局最优值,等同于弥补了邻接算法的缺陷。
在计算机空间使用方面,我们通过对一些整形数组使用16位无符号整形,定义稀疏元胞数组缩小空间占用,最终求解成功。
2.4.2使用Lingo软件求解无转乘次数限制的方案
邻接算法可以求出多种方案,但对于转乘次数大于2的情况无法在有限时间内求解。
作为一个全面的查询系统必须非常全面,我们认为还是有一些用户会转乘多次且需要时间最短是他们的最重要目的(前提是在代价低于使用专车费用),而且从理论角度考虑仍需要找到求解转乘次时的可行方法。
在求解上述规划模型时,通过基表建立的数量非常庞大,采用传统求解方法时不可行,但其中有大量0元素可以在Lingo软件内通过稀疏矩阵实现,但求解时间仍然需要20分钟左右,主要为数据导入时间(19.9分钟),只要开始迭代计算后由于目标与约束线性,Lingo只需要6秒左右即可求解出全局最优解(具体程序见附录1.6)。
2.4.3用户终端报表呈现系统:
多目标分层序列排序
由于可行方案集U1、U2中的数据出现顺序不一定是用户所期望的,所以有必要根据不同的用户需求对其排序,本文采用多目标分层序列法对方案集排序,实质上就是按关键字顺序依次排序,即对于一个M个字段的表按照给定的N个字段排序(在数据库软件里可以通过标准SQL语句直接操作),下面给出算法的文字描述:
1)按第一关键字(即一层目标)对列表排序;
2)按第二关键字对列表每个第一关键字相同的组进行排序;
3)按第三关键字对列表每个第二关键字相同的组进行排序;
4)按第N关键字对列表每个第N-1关键字相同的组进行排序。
采用多目标分层序列法排序,输出按照用户需求的报表样式,具体方案见下面表格。
(默认排序顺序是转乘次数、总时间、总费用、始发站点数、负载,可以根据不同用户需求而改变)
方案报表说明:
每行代表一种方案,表中加黑字格表示该方案该项指标全局最优;
表中总时间已包括起始点等车3分钟。
上面表中已按多目标分层序列法的默认目标排序(分别是表中转乘次数、总时间、转车站点是否始发、转车站点总负载量、总费用五个字段),一般用户只需要从上到下选取即可,但如果用户希望在转站时乘坐始发车(有座位)那么可以挑选始发字段为1、2的方案,若希望转站时人较少的地方则可以考虑选则站点负载较小的方案。
本模型求解的方案集使用于所有用户,具有很强的实用价值。
2.5模型的评价
2.5.1邻接算法评价
1)建立在图论基础下能够求解出转乘次数不超过两次时的所有可行方案,并可根据公众的不同需求,给出最佳需要方案,从此角度考虑,模型实用性较强;
2)模型求解基于直达队列Q,采用空间换取时间思想,适合查询系统设计标准能够较强的适应工程应用;
3)在转乘次数超过两次的情况下,运用本模型求解计算过程复杂,计算量过大;故本模型存在一定的局限性。
2.5.20-1规划Lingo求解方案评价
1)在不限制最小转乘数时可以求得全局最优解,这是其他所有算法无法达到的,例如在第2、4、5条线路上其转车次数为3、4、3,但是耗时相对转2次的要节省许多;
2)在限制最小转乘数时可以求得与邻接算法同样的方案,表明模型的通用性较强,但无法像邻接算法一样求解多种方案是用户所不能接受的;
3)从理论角度分析,最优化模型规划角度可解具有很强的实际意义,例如从全国范围考虑求解,那么转车3~4次也是可以接受的,只要耗时足够短;
4)从计算时间来分析,尽管需要20分钟,但大部分时间为数据导入,只有1%的时间是真正计算耗时,如果将所需数据存放入内存不变,其求解速度将超越邻接算法;
5)但Lingo不能求解出多种方案,实用性不如邻接算法。
第三章同时考虑公汽与地铁最佳线路选择模型
本章为综合考虑公汽与地铁线路的情况,解决查询系统中混合最佳路径选择问题的模型与算法。
3.1数据库建立
3.1.1数据处理——公交网简化模型
1)将可互换站点抽象处理为一个站点
题中给出了地铁换乘公汽的数据文件,由地铁与公汽互换的时间来看,可互换的两站间地理位置应非常接近且容易换乘,定义这些站点为紧邻站点,可将这些可互换的紧邻站点抽象为一个站点,使问题得到简化。
<例>:
信息数据第一行为“D01:
S0567,S0042,S0025”,则可认为这四个站点实际距离非常近,为紧邻站点,所以可看做一个点处理,示意图如下:
基于这种思想,根据题目中给出关于地铁换乘公交的信息数据,可以将各地铁站点及其紧邻站点在整个交通网络中抽象为一个点处理。
2)两种地铁线路抽象处理
基于对三种公汽线路的抽象方法,以相同的方法对两地铁线路T1、T2进行抽象处理如下:
T1:
为双向线路,故可以根据不同的方向将其抽象为两条单向行驶线路。
T2:
为环行线路,实际中环形路线一般是对开,故该种线路可以抽象成两条线路处理。
3.1.2“公汽、地铁直达数据库QD”的建立
将紧邻站点处理为一个新站点,则当综合考虑公汽与地铁时,建立的实质上是新站点与新站点间的直达路线集。
认为在新站点所代表的站点集中的任意站点可通过步行到达,且时间忽略。
则当用户输入起、讫点后,系统内部首先自动查找这两点所属的新站点,再查找新站点间可直达的线路,并给出起点及其附近站点可直达讫点及其附近站点的路线。
采用与2.1.2相同的思路及方法,把已知公汽线路到达都映射到,计算新直达数据库,再结合地铁的费用与地汽换乘等待时间就可以把地铁线与公汽线结合。
具体元胞结构设计图如下:
上图中Cell{1,2}代表直达队列表中第1行第2个元胞(即从站点S0001到站点S0002的直达混合线路信息),元胞中队列的每一行代表一辆直达车信息。
3.2模型的设计
经过数据处理后,紧邻站点被处理为一个新站点,该站点可等同看作问题一中的公汽站点,当用户输入起、讫点后,系统内部通过直达线路队列表查询无结果时,则搜寻转乘路线方案。
同时,系统向查询者推荐不同目标下的最佳路线及转乘方案。
采用与相同的建模思路及方法,这里在考虑地铁后仍按目标的重要程度将“换乘次数最少”、“行程时间最短”、“行程费用最少”、“转乘车辆始发最多”、“站点负载压力最小”分设为第一到五层目标,基于对各目标的分析与建立,这里不再复述分析,仅在模型建立时给出具体表达式,这里由于对站点的定义与第二章不同,所以对时间及费用的计算与第二章有所不同。
3.2.1公汽地铁混合网络图的赋权
通过简化,结合图论相关知识,将第二问公汽、地铁混合网络抽象成一个有向赋权图G=(V,E,W),G中的每个顶点为每个不同的站点,如果从G中的顶点V到Vi有直达路线,那么这两点之间就用有向边相连,记做(i,j)∈E',赋权图中的权可根据不同的目标进行定义
3.2.2目标分析
3.2.2.1目标一:
换乘次数最少
基于对混合网络的抽象,引入0-1决策变量yij表示弧(i,j)是否在该路径上:
若vi与vi之间无直接相连的弧,但可通过中间节点转跳,表明由站点i到j之间不可直达,但可通过转乘到达,则由vi到vi之间换乘次数为经过的总弧数减1,即换乘次数最小可表示为:
3.2.2.2目标二:
行程总时间最短
1)乘车时间(t’u为各站点最快直达时间,基于QD,包括地铁在内):
2)总等待时间:
设Zij=3表示i→j最短直达为公汽(也表示乘始发坐公汽等待3分钟),等于2为地铁(也表示始发乘坐地铁等待2分钟),总等待时间表示为:
3)总步行时间:
将相同车型换乘、不同车型换乘的步行时间,一同视为2分钟
不同车型换乘多步行的4分钟(虚线表示地铁,空心圆表示地铁站)
表示为:
地铁转地铁是不同车型换乘的特例,且只可能在D12与D18转乘,出现这种情况在基础上减少步行时间4分钟(虚线表示地铁,空心圆表示地铁站)表示为:
在地铁直达时,需要另外加上4分钟出站步行时间:
若始发乘坐地铁转公交到达终点,需要增加步行时间2分钟:
若始发乘坐公交转地铁到达终点,也需要增加步行时间2分钟:
总步行时间表示为:
行程总时间最短表示为(总等待时间+总步行时间+乘车时间):
3.2.2.3目标三:
行程总费用最少
设q’ij表示i→j的车辆属性
设S’ij表示i→j所过站数,那么i→j直达费用权Wp=(pu)nxn表示为:
行程总费用最少可表示为(正常票价-地铁换乘免费):
3.2.2.4目标四:
转乘车辆始发最多
为考虑所选路线中转乘站点是否为所需转乘车始发站,我们引入0-1变量f’ij表示第i个站点是否为i→j的始发站,即始发权W=(f’ij))nxn:
从第i个站点到第j个站点的路线中转乘点为所转乘车的始发点最多的路线可表示为:
3.2.2.5目标五:
站点负载压力最小
首先假设终点站是奥运场馆,乘坐公车的人大多数都到达终点站,因此转车站点离始发站的站点数越少越好(人少):
负载压力=转乘站点离始发站的站点数-转乘站点离终点站的站点数注:
若终点站不是奥运场馆则可以通过对负载取绝对值表示离始发或终点越近转车越方便。
如图所示,站点i的负载压力=2-3=-1,显然负载越小越好。
3.2.3约束分析
3.2.3.1换乘次数约束
基于对目标一的分析,可得在有向赋权图中换乘次数表达式,以c表示乘客所能接受的最大换乘次数,则换乘次数约束可表示为:
其中,参数c为人为设定值,分以下三种情况:
[1]当设定c=0时,为严格约束不能换乘;
[2]当设定c=∞时,为无乘车次数约束,即可无限次换乘;
[3]当设定c为不为0的常数C时,为约束换乘次数在C次以内的情况;
《注》:
参数c可根据不同的计算需求进行自由选取。
仅从数学模型角度考