一种弹性的公车调度方法和系统与流程

文档序号:15835125发布日期:2018-11-07 07:46阅读:382来源:国知局
一种弹性的公车调度方法和系统与流程

本发明涉及公共交通领域,特别是一种弹性公车的调度算法和系统。

背景技术

公交车,或更广义上称为公车(publicvehicle),其路线规划和调度策略是城市交通运输系统设计和操作的关键部分(见m.zhu,x.-y.liu,f.tang,m.qiu,r.shen,w.shu,andm.-y.wu,“publicvehiclesforfutureurbantransportation,”ieeetransactionsonintelligenttransportationsystems,vol.17,no.12,pp.3344–3353,2016.)。在传统的固定路线的交通运输系统中,车辆的行驶路线都被提前计划好,在指定站进行停靠载客,很容易进行时间和路线规划。与之对应的,是完全按需响应的交通运输系统(demandresponsivetransit),drt比传统固定路线的交通系统更加复杂(见iqbalr,yukimatsuk,ichikawat.theflexiblebussystemsusingzigbeeasacommunicationmedium,newtechnologies,mobilityandsecurity(ntms),20114thifipinternationalconferenceon.ieee,2011:1-5.)。如果规划不当,很容易出现问题,比如产生高额的调度花销或无法满足乘客所期望的服务质量。而灵活路线的交通运输系统是由上述两种系统组合而成,既有较为固定的行驶路线,又可以对部分乘客的需求进行响应。



技术实现要素:

本发明的主要目的在于克服现有技术中的上述缺陷,结合历史轨迹数据挖掘出乘客出行规律,并在其基础上提供了一种基于灵活路线的弹性公车系统调度方法和系统。

本发明采用如下技术方案:

一种弹性公车系统的调度方法,其特征在于,包括如下步骤

1)初始化路网数据,通过聚类生成车站和停靠点;

2)根据车站的分布构建交通流量网,计算车站和车站间的交通流量,若大于设定的交通流量阈值,则在该两车站间开通一趟公车,否则,公车原地等候;

3)当公车开通后,结合历史轨迹数据计算该两车站间的主干停靠点,连接该两车站及主干停靠点形成初始行驶路线,公车将初始行驶路线作为当前行驶路线并从起点发车;

4)公车沿着当前行驶路线行驶,当在行驶过程中收到来自乘客的乘车请求时,基于主干停靠点起终点插入算法判断该乘车请求是否满足插入约束条件,若是,则接受该乘车请求,将新行驶路线设为当前行驶路线;反之,则拒绝该乘车请求;

5)当公车行驶到当前行驶路线的终点,回到步骤2)。

在步骤2)中,采用时空分割策略来计算车站间的交通流量,具体如下:

首先,根据经纬度将城市分割成多个面积相同的网格,根据历史轨迹数据构建一个交通流量表τ(z),表中的元组的类型为<t,go,gd,num>,其中z为一个网格,t为一个时间点,go和gd为乘车请求的起始网格和终止网格,num为相应的交通流量;

然后,将获取潜在路线r=(u,v,t),通过路网计算潜在路线r的最短路径,并把路线的服务区域分割成k个子区域,并计算每个子区域在时刻t的交通流量,u、v为起点车站和终点车站;

最后,根据子区域的交通流量计算边e(u,v)t的权重w(u,v)t,权重w(u,v)t即为从t时刻开始从起点车站u开往终点车站v的交通流量。

在步骤3)中,所述潜在路线的服务区域包含k个子区域,对潜在路线r(u,v,t)每一个子区域ai,都设有一个主干停靠点bsi:

n0(s)=num+(s)+num-(s)

n1(s)=gw(grid(s),t)

其中β∈[0,1]为平衡因素,si是子区域ai内的停靠点集合;n0(s)是在停靠点s的当前接收的乘车请求数量,每个乘车请求的起点和终点都会被定位到最近的停靠点上,num+(s)为乘车请求的起点被划分到停靠点s处的乘车请求数量,num-(s)则为乘车请求的终点被划分到停靠点s的乘车请求数量;grid(s)是指停靠点s所属的子区域,n1(s)是grid(s)的历史交通流量,用gw(grid(s),t)来表示;bs={bs0,bs1,bs2,…bsk,bsk+1},bs为主干停靠点、起点车站和终点车站集合,主干停靠点为子区域ai中历史交通流量和实时交通流量汇总后最大的停靠点,其中bs0=u,bsk+1=v,bs中的主干停靠点、起点车站和终点车站采用有向图中的拓扑顺序来排列。

在步骤4)中,给定一个乘车请求req(t,o,d,w),t代表乘车请求的提交时间,o代表乘车请求中的上车地点,d代表乘车请求中的下车地点,w代表乘车请求中的持续时长;设o′和d′是离o和d最近的停靠点或车站,且在拓扑顺序上d′在o′后面,所述基于主干停靠点起终点插入算法判断该乘车请求是否满足插入约束条件,具体如下:

cost(lc,o′,r*)≤req.w

tc-ts+cost(lc,v,r*)≤rt(t)

tc-req′.t+cost(lc,req′.o′,r*)≤req′.w,forreq′∈r

nc-cald(rc,r*,o′)+calo(r,r*,o′)-cald(r,r*,o′)<cc

其中lc为公车的当前位置,r*为插入o′和d′后形成的新行驶路线,cost(lc,o′,r*)为公车沿着路线r*从lc行驶到o′的时间花销,req.w为乘车请求持续时间;

tc为当前时间,ts为当前行驶路线的起始时间,cost(lc,v,r*)为公车沿着路线r*从lc行驶到v的时间花销,rt(r)为预定行驶时间;

r为所有其它已经接收但还没有上车的请求的集合,req′为r中的任意乘车请求,req′.t是该乘车请求的提交时间,req′.o′为距离乘车请求req′中起始点最近的停靠点或车站,cost(lc,req′.o′,r*)为公车沿着路线r*从lc行驶到req′.o′的时间花销,req′.w为乘车请求持续时间;

nc为公车上的当前乘客数量,rc为所有当前在公车上的乘车请求的集合,calo(rc,r*,o′)统计集合rc中满足在新行驶路线r*中上车点位于o′前面且包括o′的请求的数量,cald(r,r*,o′)和cald(rc,r*,o′)分别为统计集合r和rc中满足在新行驶路线r*中下车点位于o′前面且包括o′的请求的数量,cc为公车的容量。

一种弹性公车系统的调度系统,其特征在于:包括

移动终端:发起预约的乘车请求至交通流量计算服务器,或发送实时的乘车请求至路线规划服务器;

路网数据库:初始化路网数据,并提供路段信息;

历史轨迹数据库:存储历史交通流量数据;

交通流量计算服务器:根据预约的乘车请求和历史轨迹数据库中的历史交通流量计算两车站之间的交通流量;

路线规划服务器:根据实时的乘车请求和公车的当前行驶路线,结合路网数据库中的路段信息,根据基于主干停靠点的起终点插入算法来判断乘车请求是否满足插入约束条件,若是,则将插入乘车请求起终点后的新行驶路线返回给公车,并通知移动终端乘车请求已接受;反之,则返回当前行驶路线,并通知移动终端乘车请求未接受。

由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:

本发明方法明确,效果显著,在固定起终点车站的初始路线的基础上,可以根据实时乘车请求对行驶路线进行灵活的调整,在保证服务质量的基础上最小化调度成本,提高城市交通的效率。

附图说明

图1为本发明方法的流程图。

图2为本发明方法的参考的架构图。

图3为路网结构的示意图。

图4为公车行驶路线与其服务区域的示意图。

图5展示了一个基于网格的交通流量计算的示意图。

图6展示了实验的区域、站点和路线的示意图。

图7展示了在乘客运输率、绕行率、共享率、等待时长的对比图。

具体实施方式

以下通过具体实施方式对本发明作进一步的描述。

本发明的方法和系统,首先查询历史轨迹数据来获取发车时刻与发车地点,然后根据路网获取公车的初始行驶路线。在公车行驶的过程中,乘客可以通过终端(如手机app)向系统发起乘车请求,系统会根据路网数据和当前车辆状态,判断乘车请求是否满足时间条件与插入条件。如果满足,则接受乘车请求,返回给乘客相应的上下车信息,并更新行驶路线;如果不满足,则拒绝乘车请求,维持原行驶路线,并将拒绝信息返回给乘客。

本发明的一种弹性公车系统的调度方法,具体流程参见图1,

1)初始化路网数据,通过聚类生成车站和停靠点;

2)根据车站的分布构建交通流量网,计算车站和车站间的交通流量,若大于设定的交通流量阈值,则在该两车站间开通一趟公车,否则,公车原地等候;

3)当公车开通后,结合历史轨迹数据计算该两车站间的主干停靠点,连接该两车站及主干停靠点形成初始行驶路线,公车将初始行驶路线作为当前行驶路线并从起点发车;

4)公车沿着当前行驶路线行驶,当在行驶过程中收到来自乘客的乘车请求时,基于主干停靠点起终点插入算法判断该乘车请求是否满足插入约束条件,若是,则接受该乘车请求,将新行驶路线设为当前行驶路线;反之,则拒绝该乘车请求;

5)当公车行驶到当前行驶路线的终点,回到步骤2)。

本发明还提出一种弹性公车系统的调度系统,包括

移动终端:发起预约的乘车请求至交通流量计算服务器,或发送实时的乘车请求至路线规划服务器;

路网数据库:初始化路网数据,并提供路段信息;

历史轨迹数据库:存储历史交通流量数据;

交通流量计算服务器:根据预约的乘车请求和历史轨迹数据库中的历史交通流量计算两车站之间的交通流量;

路线规划服务器:根据实时的乘车请求和公车的当前行驶路线,结合路网数据库中的路段信息,根据基于主干停靠点的起终点插入算法来判断乘车请求是否满足插入约束条件,若是,则将插入乘车请求起终点后的新行驶路线返回给公车,并通知移动终端乘车请求已接受;反之,则返回当前行驶路线,并通知移动终端乘车请求未接受

本发明实施的关键有5点:数据格式与初始化城市路网、聚类形成车站和停靠点、根据车站构建交通流量网、初始化公车行驶路线、行驶路线上的乘车请求插入算法。下面介绍主要的实现细节:

1、数据格式与初始化城市路网

所需要轨迹数据为运营数据,主要反映的是乘客的起迄点出行规律,基本格式为:

o(gpsontime,slongitude,slatitude,gpsouttime,elongitude,elatitude,revenue)

其中gpsontime是乘客上车时的时间戳,slongitude是乘客上车时的经度,slatitude是乘客上车时的纬度,gpsouttime是乘客下车时的时间戳,elongitude是乘客下车时的经度,elatitude是乘客下车时的纬度。

城市的路网由一系列路段s={s1,s2,…,sm}和一系列路口i={i1,i2,…,in}组成,其中路段s的基本格式如下:

s(id,dir,speed,length,si,ei)

其中id是路段的编号,dir是路段的方向,speed是限制速度,length是路段的长度,si是路段的起始路口,ei是路段的结束路口。路口i的基本格式如下:

i(id,lon,lat)

其中id是路口的编号,lon是路口的经度,lat是路口的纬度。

图3给出了一个含5个路口和8个路段的路网的示意图。路网可以通过openstreetmap来构建,存储在“路网数据库”中,比如neo4j图形数据库等。

2、聚类形成车站和停靠点

公车会在车站等待发车,并在车站之间往返来提供交通运输服务;乘客可以在车站和行车路线上的停靠点上下车,其中停靠点是车站之间的临时站点。车站和停靠点都是可以被预先定义的,或从历史轨迹中抽取出来。从轨迹数据中可以获取到历史乘车请求的发生时刻与起终点,对这些数据进行聚类,可以得到一系列聚类地点,这些聚类地点就是潜在的车站和停靠点。根据聚类点中乘车请求数的多少,把这些聚类点分为车站和停靠点,其中乘车请求数多的聚类点被设置为车站,少的聚类点被设置为停靠点。其中s表示车站的集合,用e代表停靠点的集合。

r(u,v,t)代表一条在t时刻从车站u行驶到车站v的路线,u→v来代表从u到v的最短路径,tt(r)来代表最短路径的行驶时间。车辆在行驶过程中会响应乘客的乘车请求,改变行驶路线,用u~v代表实际的行驶路线,实际行驶的时间用at(r)来表示。同时,车辆还需要有一个预定行驶时间rt(r),也就是说车辆需要在rt(r)时间内行驶到v。这里假设这些时间都是以预先定义的时间段为最小单位。时间段由u表示,一般是5或10分钟。其中,tt(r)、at(r)和rt(r)有以下关系:

tt(r)≤at(r)≤rt(r)公式(1)

由于at(r)会随着新乘车请求的插入而增加,因此当一个乘车请求使得at(r)超过rt(r)时,这个乘车请求就会被拒绝。

为了保持前后的一致性,用r′(u,u,t)来表示一条在t时刻从u行驶到u的等待路线,即在u等待,其中等待路线的实际行驶时间为1个时间间隔u,即:

tt(r′)=at(r′)=rt(r′)=u公式(2)

松弛时间由st(r)表示,代表着用来服务路线上实时乘车请求的剩余时间:

st(r)=rt(r)-tt(r)公式(3)

松弛率用α表示:

在本方法中,α是预先设置的一个大于0并应用在所有路线上的值,这样就可以通过下述的公式来计算预定行驶时间:

其中代表用时间段为单位的x的上界值。

在公车行驶过程中,会收集行驶路线上的乘车请求,其中乘车请求数据的格式为:

req(t,o,d,w)

其中t代表乘车请求的提交时间,o代表乘车请求中的上车地点,d代表乘车请求中的下车地点,w代表乘车请求中的持续时长。

服务区域是指由从u到v的最短路径u→v的一个扩展的矩形区域,服务区域的宽度反映了相对于行驶路线的偏离程度,宽度越大,偏离程度越大,接收到的乘客乘车请求越多。图4展示了从车站u到车站v的弹性行驶路线与其服务区域的示意图。车辆在行驶过程中接收乘车请求,使得乘客可以在离上车点最近的车站或停靠点上车,在离目的地最近的车站或停靠点下车。

3、根据车站构建交通流量网

在车站的基础上,交通流量网可以被构建出来。这里用gt(v,e)来表示,其中v对应的是车站的集合s,e对应的是连接某两个车站的路线的集合,t代表的是一个时间点。边e(u,v)t的权重w(u,v)t是指从t时刻开始从车站u开往车站v的交通流量,和交通流量一样,交通流量网也会随着时间t而变化。根据时间间隔u,时间会被分割等长的一组时间段{t1,t2,…,tk}。比如当u=10分钟时,时间将被分成144份。当某时刻从u到v的交通流量很大时,理应在u和v之间开通一条路线,这样可以一次运输较多的乘车流量,从而提高交通运输效率。

其中一个关键点在于对两个车站间交通流量的计算,这里采用一个时空分割策略来处理随时间变化的交通流量。首先把城市根据经纬度分割成多个面积相同的网格,然后根据历史轨迹数据构建一个交通流量表τ(z),表中元组的类型为<t,go,gd,num>,其中z代表一个网格,t代表一个时间点,go和gd代表乘车请求的起始网格和终止网格,num代表相应的交通流量。对于一个网格z的表,其中所有元组的go都等于网格z。图5展示了一个基于网格的交通流量计算的示意图。具体的,本方法的计算步骤如下:

(1)获取潜在路线r=(u,v,t),通过路网计算起始路线r的最短路径,获取路径上的所有路段,为每一个路段增加一个路段区域,把所有的路段区域组合在一起,形成路线r的服务区域,并把服务区域分割成k个子区域:

其中tt(r)是路线r最短路径的行驶时间,α是预定义的松弛率,u是时间间隔的长度。这样服务区域被分割成k个近乎等长的子区域{a1,a2,…,ak}。

(2)对每个子区域ai,获取它包含的所有网格,根据交通流量表τ(z)计算这些网格在时刻t开始的交通流量。网格z在时刻t的交通流量gw(z,t)计算如下:

gw(z,t)=∑x∈τ(z)x.num,x.t∈slot(t,i),x.gd∈g公式(7)

slot(t,i)=[t+(i-1)×u,t+i×u),i=1,2,..,k公式(8)

gi=ai∪ai+1…∪ak,i=1,2,..,k公式(9)

其中,x是流量表τ(z)的元组,slot(t,i)是指从t时刻开始的第i个时间段,每个时间段的长度都是u,gi是指网格z所属子区域及其后续所有子区域内网格的集合。这样,子区域ai在t时刻开始的流量权重被定义成fw(ai,t):

(3)边e(u,v)t权重的计算如下:

其中,l(u,u)是u到v的最短路径的距离,α是行驶路线的松弛率,r*代表落在边e(u,v)t服务区域内的所有预约乘车请求的数量,wr是一个权重系数,用来调节历史交通流量和预约乘车请求之间的比例。

至此,t时刻的路线可以通过求解带全有向图gt中边权重最大的边来获得。如果边e(u,v)t的权重w(u,v)t比预定的交通流量阈值γ小,即:

那么车辆c会在车站u停留一段时间,也就是c会被指定路线r(u,u,t)。这里δm是一条路线生成所需要的最少流量,一般与车辆容量和路线的操作损耗有关。当w(u,v)t≥γ时,车站v就被选做下一个车站,也就是c会被指定路线r(u,v,t)。当r(u,v,t)被指定后,边e(u,v)t的权重也会被随之更新:

这里δc是c能够预期服务的乘车请求数量,它与c的容量有关。

4、初始化公车行驶路线

路线的服务区域包含k个子区域,对路线r(u,v,t)每一个子区域ai,都存在一个主干停靠点bsi:

bsi=argmaxs{β×n0(s)+(1-β)×n1(s):s∈si}公式(14)

n0(s)=num+(s)+num-(s)公式(15)

n1(s)=gw(grid(s),t)公式(16)

其中β∈[0,1]是一个平衡因素,si是子区域ai内的停靠点集合。n0(s)是在停靠点s处的当前接收的乘车请求数量,每个预约乘车请求的起终点都会被定位到离它们最近的停靠点上,num+(s)代表乘车请求起点被划分到停靠点s处的预约乘车请求数量,相对应的,num-(s)则代表乘车请求终点被划分到停靠点s处的预约乘车请求数量。n1(s)是grid(s)的历史交通流量,其中用gw(grid(s),t)来表示,grid(s)是指s所属的小方格。

主干停靠点的集合以及车站u和v被表示为bs={bs0,bs1,bs2,…bsk,bsk+1},其中bs0=u,bsk+1=v。bs中的停靠点用有向图中的拓扑顺序来安排,这样bsi和bsi+1之间的最短路径{bsi→bsi+1}就可以被计算,i=0,…,k。主干停靠点是指在子区域中历史交通流量和实时流量汇总后最大的停靠点。主干停靠点是行驶路线必然会经过的停靠点。通过查询路网,按顺序依次连接起始车站、各个主干停靠点、终止车站两两之间的最短路径,便得到了初始行驶路线。初始行驶路线除了连接了起终点车站和各个主干停靠点之外,与此同时还有可能经过其他的非主干停靠点。由于初始路线要求每个子区域只有一个主干停靠点,因此这里假设初始行驶路线总是会满足运行时间限制的。

5、行驶路线上的乘车请求插入算法

车辆不会被强制要求一个固定的行驶路线,唯一的限制条件是要求车辆从起始站点出发,并在预定行驶时间内抵达终止站点。乘客可以在起始站点上车,然后在终止站点下车,也可以发出乘车请求,在一些停靠点上下车。随着新的上下车站点的加入,最初的路线就会被扩展,从而车辆也会因此而改变最初的行驶路线。

乘车请求是否被公车接受,需要判断该乘车请求是否违背约束条件。一个乘车请求req(t,o,d,w)可以转换成req(t,o′,d′,w),其中o′、d'分别代表离o、d最近的停靠点。弹性公车系统会通过计算来判断乘车请求是否和当前路线匹配:

cost(lc,o′,r*)≤req.w公式(17)

tc-ts+cost(lc,v,r*)≤rt(t)公式(18)

tc-req′.t+cost(lp,req'.o',r*)≤req′.w,forreq′∈r公式(19)

nc-cald(rc,r*,o')+calo(r,r*,o′)-cald(r,r*,o′)<cp公式(20)

其中lc代表车辆的当前位置,r*代表插入o′和d′后形成的新的行驶路线,cost(s1,s2,r)代表车辆沿着路线r从s1行驶到s2的时间花销,cost(lc,o′,r*)为公车沿着路线r*从lc行驶到o'的时间花销,req.w为乘车请求持续时间。其中公式(17)表示车辆应该在乘车请求持续时间内沿着新的行驶路线从lc抵达o′。

tc代表当前时间,ts代表路线起始时间,cost(lc,v,r*)为公车沿着路线r*从lc行驶到v的时间花销,rt(r)为预定行驶时间,req′.o′代表距离乘车请求中起始点最近的停靠点或车站,公式(18)表示新的行驶路线的运行时间要小于预定行驶时间rt(r)。

r代表所有其它已经接收但还没有上车的乘车请求的集合,req′代表r中的任意乘车请求,req′.t是该乘车请求的提交时间,req′.o′代表距离乘车请求中起始点最近的停靠点或车站,公式(19)表示车辆应该在乘车请求持续时间内沿着新的行驶路线从lc抵达req′.o′,即保障其它已经接收但还没有上车的乘车请求的服务质量。

nc代表当前车辆上的乘客数量,rc代表所有当前在车上的乘车请求的集合,cc代表车辆的容量。calo(rc,r*,o′),统计集合rc中满足在新行驶路线r*中上车地点位于o′前面且包括o′的请求的数量,cald(r,r*,o′)和cald(rc,r*,o′)分别为统计集合r和rc中满足在新行驶路线r*中下车地点位于o′前面且包括o′的请求的数量;公式(20)表示公车在接收新乘车请求时需要满足容量限制,不仅仅是车上已有的乘客数量,还要考虑到已经被预定的位置数量。

如果乘车请求满足了上述条件,则认为该乘车请求与行驶路线r匹配。当乘车请求和当前路线匹配时,系统会接收该乘车请求,然后发一个接收信息给乘车者,并指引乘车者从起始点即乘车请求中的上车点o走到o′等候上车;当公车到了d′时,会告知乘客下车,并指引乘客从d′走到目的地d即乘车请求中下车点。如果乘车请求和当前路线不匹配时,系统会立即发一个拒绝信息给乘车者。

具体的,本方法采用一个启发式的算法来解决在行驶路线中插入乘车请求的问题:给定一个乘车请求req(t,o,d,w),设o′和d′是离o和d最近的停靠点,而且从拓扑顺序上看,d′在o′后面,这样就存在三种情况:

(1)如果o′和d′都在当前行驶路线上,则判断是否满足公式(20)的约束。如果满足,则乘车请求会被立即接收,且当o′或d′不在主干停靠点(bs)中时,会把它们加入到bs中;反之,拒绝该乘车请求。

(2)如果o′和d′只有一个在当前行驶路线上,系统则会检查插入该乘车请求是否可行。假设d′(对o′也是通用的)已经在路径中了,这样就要对o′进行检查。假设包含o′的子区域是ai,并且在ai中的主干停靠点为bs(ai)={bsj+1,bsj+2,…,bsj+m},这样就有了m+1种插入选择:i0,i1,…,im,其中ik=(bsj+k,bsj+k+1),k=0,1,…,m,bsj是ai-1区域的最后一个主干停靠点。对于每种插入可能,都会产生一条新的包含o′的路线。我们把所有可能的新路线按照行驶总时长递增的顺序排序,然后依次判断是否满足公式(17)、(18)、(19)和(20)。经过计算,如果存在一个可行的插入选择乘车请求就会被接收;反之,乘车请求就会被拒绝。当o′被插入o′会被加入到bs中,路线也会进行相关的更新操作:

其中{a→b}是从a到b的最短路径。

(3)当o′和d′都不在当前行驶路线上时,系统会去检查把这两个停靠点都插入形成一条新路线的可能性,插入的过程和情况(2)类似。假设包含o′的子区域是ai,并且在ai中的主干停靠点为bs(ai)={bsj+1,bsj+2,…,bsj+m},这样就有了m+1种插入选择:i0,i1,…,im,其中ik=(bsj+k,bsj+k+1),k=0,1,…,m,bsj是ai-1区域的最后一个主干停靠点。类似的,设包含d′的子区域是ai′,这样就有了n+1种插入选择:i′1,i′2,…,i'n,其中i'k=(bsj′+k,bsj′+k+1),k=0,1,…,n,bsj′是ai′-1区域的最后一个主干停靠点。对于o′和d′根据插入位置的不同,组合而产生的新路线,我们同样将这些新路线按照行驶总时长递增的顺序排序,然后依次判断是否满足公式(17)、(18)、(19)和(20)。经过计算,如果存在一个可行的插入选择组合,乘车请求就会被接收;反之,乘车请求就会被拒绝。如果接受的话,这些停靠点会被加入到bs中,路线也会进行相关的更新操作。

6、实验验证

基于厦门市4539辆出租车2014年7月份的轨迹数据集,包含约835万条营运记录。通过计算机模拟的方式对本方法进行了实验验证。每辆车平均2分钟发布一个gps定位点。其中,7月1号到21号作为训练数据集来抽取乘客行程的起终点,22号到31号的数据作为测试数据集。实验选取的区域为[118.090e,118.180e]×[24.470n,24.520n],具体见图6,其中红点代表着区域内的4个站点。实验利用训练集抽取出来的起终点数据计算该区域内的站点与停靠点,同时从测试数据集中抽取出来自该区域的真实乘客出行乘车请求作为实验中乘车请求的模拟。

具体的实验过程如下:首先根据训练集中的不同时段的交通流量来判断公车何时开通以及路线的起终站点;对于确定开通的路线,根据路线的服务区域大小来确定停靠点与主干停靠点,从而进一步确定初始行驶路线;接下来,依次模拟测试集中的真实乘车请求,并根据基于主干停靠点的乘车请求起终点插入算法来判断每个乘车请求是否可以被插入到当前路线;如果乘车请求被接受,则主干停靠点和行驶路线会被更新;反之,如果乘车请求被拒绝,则公车会继续沿着当前路线行驶;当公车抵达终止站点时,模拟结束。实验记录在测试集中不同日期的模拟过程中公车接收和拒绝的乘车请求数以及乘客真实上车的时间和地点等数据,取其平均值作为后续实验评估指标的分析。其中主要变量的值设置如下:公车容量为10,绕行率的阈值设置为2,服务区域的大小设置为1公里,乘车请求的时间窗口设置为10分钟。

模拟实验设置了两个对比算法。一个是传统意义上的公交车,有着固定的行驶路线和发车时间,容量设置为30;另一个是出租车(叫车),随机分布在区域内,具有完全灵活的行驶路线,容量设置为1。实验通过五种评价指标来比较这三种交通方式,其中公车设置为3辆(与灵活型公交的绕路率阈值相对应),一辆公车到达终点后下一辆公车开始发车,行驶路线与灵活型公交的初始路线一致;出租车设置为10辆(与灵活型公交的容量相对应),初始位置设置为起始站点。从图7中可以看到,出租车由于其完全按需响应的特点,在乘客运输率、平均绕行率和乘客平均步行距离上都有明显的优势,但在共享率上缺陷太大;传统型公交系统由于其固定路线、容量大的特点,具有较高的共享率和较低的平均绕行率,但乘客平均步行距离较长;灵活型公交系统不仅拥有较高的乘客运输率,而且在共享率和乘客平均步行距离两个指标上都要优于传统的公交系统,且可以通过提高停靠点的数量来进一步减少乘客平均步行距离。此外,实验所对比的是1辆10座的灵活型公车、3辆30座的传统型公车和10辆1座的出租车,从社会资源占用的角度来看,灵活型公交系统有着明显的优势,具有一定的现实意义。

上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1