本发明涉及需求响应式共享/公共交通领域,尤其是涉及一种需求响应型公交调度方法。
背景技术:
需求响应型公交是一种兼具较高的灵活性和成本效益的新型公共交通系统,它将常规公交和需求响应式服务的特征有机结合在一起,为各类公共交通出行需求提供了良好的解决方案。需求响应型公交没有固定的线路或时刻表,根据乘客需求实时调整运能,为乘客提供需求响应式服务。需求响应型定制公交目前在我国已经得到了较为广泛的应用,调查显示,截止到2016年底,全国已有超过30个城市开通了定制公交线路。随着社会经济的发展,人们的出行需求也越来越个性化、多样化,而通信技术、gps定位技术以及互联网云计算等先进技术的发展也为需求响应型公交系统的规划和实施提供了条件,需求响应型公交具有广阔的发展前景。
然而,需求响应型公交系统的系统规划设计较为复杂,目前尚未形成统一的方法体系,是制约其发展的重要原因。如何响应不断变化的动态需求进行实时车辆调度,是需求响应型公交系统设计的关键问题。目前已有的技术方案中,对需求响应型公交进行实时动态调度的方法主要思路是建立线性或非线性规划模型,并通过启发式算法进行近似求解。这种求解思路很难权衡模型的真实性和算法的计算复杂度,往往会忽视一些现实条件,如车辆的载客量约束、车辆的总量限制等等,致使模型与真实情况之间存在一定的偏差。且在线调度系统中,启发式算法往往需要针对每个产生的需求进行一次优化,计算成本较高。
技术实现要素:
本发明的目的就是为了克服上述现有技术存在的建模和求解过程复杂、模型不易迁移和泛化的缺陷而提供一种需求响应型公交调度方法。
本发明的目的可以通过以下技术方案来实现:
一种需求响应型公交调度方法,该方法包括以下步骤:
步骤s1:明确需求响应型公交的运营模式;
步骤s2:基于运营模式,建立需求响应型公交深度强化学习模型;
步骤s3:获得训练数据,并利用训练数据训练需求响应型公交深度强化学习模型,得到需求响应型公交深度强化学习优化模型;
步骤s4:基于需求响应型公交深度强化学习优化模型,进行需求响应型公交的调度。
所述的运营模式为需求响应型公交按照固定路线行驶,并在需求响应式的站点根据分配到的乘客需求进行停站服务,乘客按照分配结果乘车,乘客乘坐最先到达的车辆或后续到达的车辆。
所述的需求响应型公交深度强化学习模型的成本函数为:
c(t)=η×[wt(t)+et(t)+3×dt(t)]+oc(t)+ψreject1(t)
其中,η为平均工资率,wt(t)为总候车时间,et(t)为总行程时间,dt(t)为当前时刻t的服务可靠性,oc(t)为当前时刻t的运营成本,ψreject1(t)为当前时刻t的拒载惩罚因子。
所述的wt(t)和et(t)分别表示为:
其中,p(t)为当前时刻全部乘客的集合,p表示每一个乘客,
所述的服务可靠性用当前时刻t全部乘客的实际到站时间与期望到站时间的延迟时间的和dt(t)来反映:
其中,
所述的运营成本oc(t)为:
其中,ocτ为τ车型车辆每次行程的运营成本,tripnumτ(t)为当前时刻t乘客分配到的τ车型车辆的数量。
所述的拒载惩罚因子ψreject1为:
其中,
所述的训练数据包括车辆分布、需求分布和当前时间,所述的需求分布包括乘客的需求产生时刻、起讫站点、期望到达时刻和乘客人数,所述的车辆分布包括车辆的车型信息、位置信息、行驶方向和车内载客信息。
与现有技术相比,本发明具有以下优点:
(1)结合了常规公交和多人合乘共享交通的特征,在兼具了二者的经济性与快捷性的同时,简化了可变线路式需求响应公交系统复杂的线路规划与调度流程。
(2)为需求响应型公交深度强化学习模型搭建了仿真学习环境,并通过tkinter将仿真环境可视化,以便直观地监测算法调度及系统运行情况。
(3)将人工智能领域中的深度强化学习算法应用到需求响应型公交的调度,为需求响应型公交的实时在线调度提供了一个具有广泛适应性的方法和思路,学习型算法的引入避免了每个请求使用插入启发式算法进行求解,降低了运算复杂度,缩短了调度系统的响应时间。
附图说明
图1为本发明的流程图;
图2为本发明的训练需求响应型公交深度强化学习模型流程图;
图3为本发明的线路和站点及站点区间的示意图;
图4为本发明需求响应型公交深度强化学习模型的训练框架;
图5为本发明训练需求响应型公交深度强化学习模型的uml类结构图;
图6为本发明实施例的tkinter界面显示的内容;
图7为本发明实施例的需求响应型公交调度方法与随机分配方法的结果对比图;
图8(a)为本发明实施例的需求响应型公交调度方法与固定间隔单车型发车模式的结果对比图;
图8(b)为本发明实施例的需求响应型公交调度方法与可变间隔多车型发车模式的结果对比图;
图9为本发明的需求响应型公交调度系统的结构图;
图10为本发明的需求响应型公交调度系统的模块示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例
本实施例提供一种需求响应型公交调度方法,如图1所示,包括以下步骤:
一、步骤1:明确需求响应型公交的运营模式,包括线路、站点、车辆(需求响应型公交)等的组织形式。
需求响应型公交(demandresponsivepublictransit,drpt)的运营模式为“固定线路+需求响应站点”运营模式,区别于固定时刻表、固定站点的常规公交系统,需求响应型公交的运营根据乘客的需求实时进行运能调整,需求响应型公交行驶固定路线,并根据乘客的需求在需求响应型站点进行停站服务,也即沿线的各个站点并非必须停靠的站点,仅当有乘客上下车需求时车辆才会停站,乘客按照分配的结果乘车,而不一定乘坐最先到达的车辆。。
二、步骤2:使用深度强化学习算法deepq-network(dqn)作为主要调度算法,即构建需求响应型公交深度强化学习模型,明确状态集、动作集和奖励函数,并基于tensorflow构建出评价网络和目标网络。
强化学习(reinforcementlearning,rl),又称再励学习、评价学习,是一种重要的机器学习方法,主要应用于众多带有交互性和决策性的问题,如博弈、游戏、机器人、人机对话等,以试错(trial-and-error)的方式进行学习,通过与环境(environment)进行交互获得的奖赏(reward)指导行为(action),并产生新的状态(state)。经过数次迭代学习之后,最终得到相应任务的最优策略。
(1)状态集s
定义s={st}为状态集,即需求响应型公交深度强化学习模型的输入,状态包括车辆分布、需求分布以及当前时间:
a.车辆分布
车辆分布包括了每辆车的车型、当前行驶方向、当前位置、空余载客量。其中车辆的位置为连续变量,其余变量为离散变量。由于站间行驶时间不会过长,而大多时候车辆在线路上的分布比较离散,同一个站间区间同时出现两辆及以上车辆的情况较少,而离散状态空间和连续状态空间的计算量和学习的复杂度相差非常大,因此对车辆的位置变量进行了离散化处理,用车辆刚刚经过的上一站点来对车辆当前位置进行表征,也即利用车辆目前所处的站间区间来表示车辆位置,以此缩小状态空间,加快学习效率,线路和站点及站点区间的示意图如图3所示。
b.需求分布
需求分布可分为两部分:第一部分是已经分配到各个车辆的需求,称为车载需求,其中每个站点的期望到达时刻记载了每一个下车乘客的期望到达时刻,数据格式为大小不定的列表,无法直接作为输入状态向量,因此取每个站点的期望到达时刻列表的最小值作为输入向量的一个特征要素;另一部分是系统接收的最新请求,由出发站点po、目的站点pd、乘车人数pnum及新乘客的期望到达时刻构成。
(2)动作集a
动作集即需求响应型公交深度强化学习模型的输出,定义a={at}为离散动作集。
结合需求响应型公交的实际运用场景,每次决策时首先考虑车辆的载客量约束和车辆的位置约束,排除满载车辆以及距离乘客请求较远的车辆,可以缩小动作空间,提高学习效率和决策效果:
a.超载约束
在现实场景中,车辆的载客量有限,尤其是对于一客一座的车辆来说,必须保证车辆在任意时刻均满足载客量约束。因此每当有新的需求产生时,校核每辆车的车载需求表,检查每两个站点之间的载客量,以确定车辆能否有余位来承载新需求。
b.位置约束
考虑到乘客的候车时间不能过长,给调度方案增加了一个约束条件,乘客只能被分配到最先到达其候车站点的三辆车中。值得说明的是,由于是一个实时过程,在乘客候车过程中可能会有新的需求产生,车辆的到站时间和到站顺序可能还会发生变化。因此位置约束并不能完全保证乘客被分配的车辆是最先到达的三辆车,只能在一定程度上的使得乘客尽快得到服务。
c.最小发车间隔
若不对最小发车间隔进行限制,会很难平衡发车成本和乘客的候车成本。对最小发车间隔进行约束,车辆的需求可以被分配到始发站中即将发出的下一班次上,而这一班次并不会立即发出,而是等到与上一班次之间有了足够的间隔时间才出发。特别地,当车辆已经没有能力接受新的需求时,也即某两站之间的载客量达到了车辆的最大承载力时,车辆可以不顾及最小发车间隔直接发车。
调度算法做出的调度决策是选择是否接受用户的请求,并将请求分配到特定的车辆上,车辆被分配到请求后会立即出发对需求进行处理。动作集a={a0,a1,…,am,areject}包括了拒绝请求areject,或将需求分配给满足超载约束、位置约束的可用车辆m。
(3)成本函数
成本函数c(t)(或奖励函数)直接关系到需求响应型公交深度强化学习模型的优化方向。综合考虑服务效率、服务可靠性、运营成本等多方面因素,将每次进行决策时新增乘客和已有乘客的全部等待和行程时间、乘客按时送达情况、完成全部乘客的运输所需要的总成本等作为系统的成本函数,并引入了拒载惩罚因子。
a.服务效率
服务效率用当前时刻t全部乘客的总候车时间wt(t)和总行程时间et(t)来衡量:
其中,p(t)为当前时刻全部乘客的集合,p表示每一个乘客,
值得注意的是,这里存在两种发车机制,或者是到达最小发车间隔,或者是始发站车辆已经满载,也就是说某辆车的确切发车时刻无法完全确定。因此在向乘客反馈发车时间时,只能采取保守估计的方法,以车辆立即发车为准进行到站时间的计算,这也导致候车时间偏大,当被分配到的车辆按照最小发车间隔发车时,乘客可能需要在站台处等待较长时间。
b.服务可靠性
服务可靠性用当前时刻t全部乘客的实际到站时间与期望到站时间的延迟时间的和dt(t)来反映:
其中,
c.运营成本
在运营成本的各个构成要素中,燃油消耗所占比重较大,约占整个运营成本的20%~30%,且油耗和车型之间的关系最为直接。车辆的百公里油耗是指车辆行驶百公里平均实际的燃油消耗量。因此选择燃油消耗对车型τ的车辆每次行程的运营成本ocτ进行估算:
其中,stoplocationm为终点站m的位置,也即终点站m与起点站之间的距离。
运营成本oc(t)可定义为将当前时刻系统中全部乘客运送完毕需要的总成本:
其中,tripnumτ(t)为当前时刻t乘客分配到的τ车型车辆的数量。
d.拒载惩罚因子
每当有新的乘客增加时,调度算法需要的时间势必会增加,若没有任何约束,则调度算法会直接选择拒载新乘客,以使得总成本最小。为了避免这一情况的出现,在成本函数中增加拒载惩罚因子ψreject1为:
其中,
上述各个因子中,总候车时间wt(t)和总行程时间et(t)、延迟时间dt(t)的单位为时间(s),而运营成本oc(t)的单位为(元),二者之间可以根据平均工资率η来进行转换,通过调整平均工资率可以增大延迟时间在成本中所占的比例。取ψreject=100,综上,成本函数可定义为:
c(t)=η×[wt(t)+et(t)+3×dt(t)]+oc(t)+ψreject1(t)
三、步骤3:建立合适的仿真环境,模拟车辆的运行及载客量的实时变化过程,为后续利用训练数据训练需求响应型公交深度强化学习模型做准备,收集历史的训练数据,包括乘客的起讫站点、上车时间、乘客人数等等作为需求响应型公交深度强化学习模型的训练集,通过对模型的训练实现系统运营过程中的累积回报最大化,最终通过训练好的需求响应型公交深度强化学习优化模型得到实时在线调度方案,训练需求响应型公交深度强化学习模型流程图如图2,需求响应型公交深度强化学习模型的训练框架如图4。
a、使用python语言搭建可视化的仿真环境,其实现的主要功能有:①根据调度中心的调度方案更新每辆车承载的需求;②根据时间的迭代模拟系统的运行过程,如更新车辆的方向和位置、实现车辆的停站和行驶等;③输出系统的状态集和成本函数。除此之外还包括了系统的参数设置及初始化、可视化图形窗口的初始化及更新等基本功能。
仿真环境必不可少的两部分是物理引擎和图像引擎,其中物理引擎模拟环境中物体的运动规律,图像引擎用来显示环境中物体的图像。tkinter模块(tk接口)是python的标准tkgui工具包的接口,本实施例基于tkinter模块来实现仿真环境的可视化。
仿真环境的搭建方法为:
仿真环境函数和方法如表1所示。
表1仿真环境函数和方法
表1中的_visualize和refresh主要扮演了图像引擎的角色,两个方法的主要功能分别是创建tk窗口上的各个对象,以及不断地刷新窗口界面,以显示时间和窗口内各个对象的变化。tk界面主要显示的内容包括当前时间、运行状态、用户最新请求、每个动作的行为值函数、调度决策、车辆的具体状态,如图6所示。其中运行状态子窗口实时显示运营中的车辆的停站、行驶过程,站点对应的数字为每个站点的实时候车人数。三种不同的车型以不同图形来进行表示,每个图形上的数字为车辆编号。左下方的三个表格分别对应了用户需求、行为值函数、调度决策,以便对决策过程进行实时观测。右下方的表格为车辆分布表,每一行不同的形状对应系统运行状态窗口中的三种车型,可以对每辆车是否正在运行、行驶方向、具体位置、载客情况进行实时监测。
物理引擎控制仿真环境中车辆的行驶、停站、上下客等,主要方法为execute和time_evolution。execute方法主要是根据action更新车辆的车载需求分布表格。time_evolution方法主要实现的功能是运行状态的仿真模拟,具体操作包括更新站间行驶车辆的位置、在车辆到达站点时判断是否需要停站并计算停站时间、更新出站车辆的需求表、控制车辆的发车和转向等等。
仿真环境通过execute方法从调度算法中接收了决策动作action和最新请求ndemd,在仿真环境内部执行动作后,通过get_state方法输出状态,并利用reward函数计算成本函数c(t)。
get_state方法的主要功能是获取车辆分布状态以及车载需求分布,包括车辆方向、位置、空余载客量等信息。并对某些特征如时间戳、车辆位置等数量级较大的特征进行最大-最小归一化处理:
其中x为原始值,x'为经过归一化处理之后的特征值,minx是特征x的最小值,maxx是特征x的最大值。上式将原始值x映射到区间[0,1],以加快神经网络的收敛速度,并统一特征向量的数量级。
b、需求响应型公交深度强化学习模型的训练需要大量的需求数据,根据功能设计,每个乘客请求需要包括需求产生的时间、上车站点、下车站点、乘客人数、期望到达时刻。而常规公交客流数据通常仅有上车站点而无下车站点,因此需要通过一定的手段来模拟出行需求分布。
tensorflow(以下简称tf)是一个强大的面向数据流的机器学习库,由google的brainteam创建,被广泛应用于各类机器学习算法的编程实现。tf是基于数据流图来实现和执行机器学习算法的框架。tf支持多种客户端语言下的安装和运行,如c语言和python,本实施例使用tf来创建和训练评价神经网络及目标神经网络。采用全连接神经网络创建和训练评价神经网络及目标神经网,选用leakyrelu作为网络的激活函数,并使用自适应学习率优化算法adam对网络进行训练。
模型训练过程为:
本实施例中不同车型的参数设置如表2所示,训练需求响应型公交深度强化学习模型的uml类结构图如图5所示,三种车型均为一客一座式的车辆,乘客的平均上车时间较常规公交更慢,因此设定的进出站时间及乘客平均上下车时间如表3所示。由于还存在另外一种发车机制,始发站的车辆满载后即可立即出发,这一机制保障了在高峰时段系统可以不受最小发车间隔的约束,因此最小发车间隔更多的是在平峰时段对发车进行约束,因此其参考值的设定可以适当偏大,本实施例设定最小发车间隔为15min。
表2仿真环境车型参数设置
表3运营参数设定
本实施例使用的仿真环境由12辆车、12个站点(两个首末站,10个需求响应站点)构成,站间距设置服从参数为500的泊松分布。初始状态时,每种车型的车辆平均分布于两个首末站,如表4所示。
表4环境配置参数
调度算法的超参数如表5所示。
使用30天的车辆流量数据对调度算法进行训练后,q值的误差在不断波动中逐渐趋于收敛,但仍未到达稳定状态,需求响应型公交深度强化学习模型仍有学习提升的空间。使用训练数据之外某天的数据作为测试集,对算法效果进行测试。首先,将算法的调度效果与随机分配相比,检验需求响应型公交深度强化学习模型的学习效果。从图7显示的结果中来看,经过一段时间的学习,需求响应型公交深度强化学习模型确实得到了一定的训练,相较于随机分配而言,各项指标均有所下降。
为了进一步对需求响应型公交运营效益进行分析,本实施例将常规公交与需求响应型公交的运营指标进行对比分析,以评估需求响应型公交的运营效率和服务水平。其中常规公交采用固定间隔单车型发车、可变间隔多车型发车两种模式,结果如图8所示,从中可以发现,需求响应型公交可以大幅降低乘客的候车时间,人均行程时间也有所下降,即使人均运营成本较启发式算法有所增加,但考虑时间成本后的加权总成本下降,说明需求响应型公交系统可以取得较好的运营效果。
表5超参数设置
本实施例还提供一种需求响应型公交调度系统,调度系统的核心算法即需求响应型公交深度强化学习优化模型,能够对用户需求进行实时高效处理。同时需要gps定位系统和通信系统以帮助调度系统获取车辆状态和用户需求信息,并将调度方案反馈给车辆和乘客。系统构成如图9所示,调度系统的主要任务是与车辆和乘客通信,确定实时调度方案,并将调度方案反馈到车辆和乘客。为了实现这一目标,本发明将调度系统划分为四个功能模块,如图10所示:
(1)感知模块。通过通信系统,获取每辆车的当前位置、行驶方向、空余载客量状态信息。同时还应获得当前状态下,每辆车车载需求的分布情况,也即每辆车在各个站点的上下车人数。
(2)存储模块。调度系统在进行决策时需要对每种方案下系统可能获得的总收益进行估计。因此需要根据历史运行数据对当前时段的站间行驶时间、进出站时刻、旅客乘降时间等参数进行估计。而根据历史需求数据则可以反映出需求的时变特征,为智能体的车型选择提供一定的参考和依据。
(3)决策模块。决策模块是调度系统最为核心的模块,决策模块基于需求响应型公交深度强化学习优化模型,感知模块获得系统的车辆分布和需求分布作为决策模块的状态输入,存储模块为其提供相关运营参数,最终决策模块将决策输入到处理模块,以推动决策方案的执行。
(4)处理模块。将调度系统的决策方案反馈给用户。若用户请求被系统接收,则应告知乘客其被分配到的具体车辆编号,预计上车时间等等,反之,若请求未被系统接收,则同样将拒绝请求的通知反馈给用户。
该系统的工作过程为:
(1)用户出行需求的获取。系统响应乘客的出行需求,主要获取乘客的起讫站点、乘客人数、期望到达时刻等信息,作为调度系统模块的输入。
(2)车辆状态信息的获取。通过gps车载定位对系统中的车辆进行准确定位,以获得车辆的实时位置信息。将车辆的位置信息、行驶方向、车内载客信息等数据传回调度系统。
(3)车辆调度方案的生成。调度系统利用需求响应型公交深度强化学习优化模型基于当前的用户需求和车辆状态确定是否接受该用户请求,并对需求进行实时分配;
(4)车辆调度方案的实施及用户需求的反馈。调度系统在生成了调度方案后,将调度结果反馈给车辆和用户。对于车辆来说,反馈乘客的起讫站点以及乘客数量、期望到达时刻;对于用户来说,反馈请求处理结果,也即请求是否被系统接收、分配到的具体车辆、预计上车时间等。
本实施例将强化学习方法应用到需求响应型公交的调度中,来代替传统的混合整数规划模型及启发式算法求解思路,避开复杂的建模和求解过程,并充分发挥学习型算法的优势,建立更易迁移和泛化的调度方法,以提高需求响应型公交调度方案的计算效率和运行效果。