城际网约车订单分配问题及其求解算法
问题的定义
城际网约车订单分配问题是订单分配问题的一种,它主要是为了解决特定城市之间的个性化出行难题。在城际网约车服务中,订单分配问题是指在满足一定的约束条件和特定城市之间的客户出行需求的情况下,对从某个城市出发到达目标城市的一系列客户订单安排合理的接送路线,从而减少车辆的空载率,缩短客户的等待时间,减少司机的绕行距离等目标的优化问题。
城际网约车订单分配问题如下图所示:
在上图中,有12个乘客需要被服务,提出的算法在起点城市安排3辆车分别为这些乘客服务,并在终点城市根据每个乘客的下车点,依次安排乘客下车。
数学建模
本节根据问题的性质和实际场景下必须考虑的一些约束,给出了带两个目标的城际网约车订单分配问题的问题模型。
城际网约车订单分配问题的公式(1)是一个有两个目标的问题。第一个目标函数为公式(2),表示尽量减少司机接送客的总行驶距离。第二个目标函数为公式(3),表示最小化总等待时间。第一个约束条件为公式(4),确保每条路线的总需求不超过车辆的最大容量。第二个约束条件为公式(5),表示每条路径上任意两个订单的预约时间的间隔不能超过最大处理时间minTD分钟。
用于城际网约出行的智能订单分配算法
智能订单分配算法
为了解决城际网约车的订单分配问题,提出了一种高效的智能订单分配算法,它不仅能够有效地处理城际网约车的订单分配任务,而且可以利用多目标优化方法为城际网约车服务提供同时满足多个需求的高质量的分配方案集合。 智能订单分配算法的总体框架下图所示。
它解决了派单中的时序问题。在提出的算法中,包含五个主要组件,即:基于时间序列和距离信息的启发式方法、基于邻域的局部搜索、动态订单分配机制、自适应订单分配方案选择机制和存档更新策略。具体来说,在此算法中,首先,在订单库中使用基于时间序列和距离信息的启发式方法生成初始种群;然后,不断使用基于邻域操作的局部搜索,来进一步提升订单分配方案的质量;在这个过程中,用动态订单分配机制来处理即时订单,用存档更新策略更新外部存档;最后,使用自适应订单分配方案选择机制,根据不同的场景自适应地从多个分配方案中选择最佳的方案给司机。
基于时间序列和距离信息的启发式方法
基于邻域操作的局部搜索
在本算法中,采用基于邻域操作的局部搜索用于产生新的分配方案。局部搜索所涉及的邻域操作由两个基本的函数进行定义:选择路径和确定插入位置。前者定义了如何从分配方案中选择路径,如表1所示;而后者定义了在路径中插入客户点的最佳位置,如表2所示。
根据以上两个基本函数的定义,本算法所采用的基于邻域操作的局部搜索如下:
- 局部搜索1:从一个分配方案选择的两条路径中各随机删除一个订单(一对上下车客户点),然后将这两个订单重新插入到该分配方案的最佳位置。
- 局部搜索2:将一个分配方案选择的两条路径的所有订单全部删除,然后将它们重新插入到该分配方案的最佳位置。
- 局部搜索3:针对当前的分配方案,从外部存档中随机选择一个不同于自身的分配方案,从这两个方案中各选择一条路径进行交换,然后将当前方案中重复出现在未交换路径上的订单删除,并将未出现在该方案中的订单重新插入到最佳的位置。
由于基于时间序列和距离信息的启发式构造过程优先保证了车辆的上座率,所以,以上的局部搜索不会改变原有分配方案的路径数量。局部搜索1和局部搜索2主要通过对原有分配方案进行变异操作来产生新的分配方案,而局部搜索3则是通过不同方案之间的交叉操作来产生新的分配方案。通过以上的定义,本算法的基于邻域操作的局部搜索的具体步骤如下: - 步骤一 外部存档Archive中随机选择一个未进行过局部搜索的分配方案,并标记为“已搜索”;
- 步骤二 从局部搜索1,2,3中随机选择一个搜索操作;
- 步骤三 根据相应的定义,分别针对目标1和2产生两个新的分配方案;
- 步骤四 若外部分存档中还存在未进行过局部搜索的分配方案,则返回步骤一;否则,结束局部搜索过程。
动态订单分配机制
由于城际网约车是一个动态预约服务,本算法所解决的订单分配问题可以看作是一个动态的多目标问题。通过基于时间序列和距离信息的构造方法对已有订单进行分配的基础上,本算法采用了动态订单分配机制来处理新出现的订单,具体过程如下:
自适应订单分配方案选择机制
由于将城际网约车订单分配问题定义为一个多目标优化问题,最终会得到多个非占优的分配方案。为了能够更好地根据当前场景进行订单分配,本算法采用自适应订单分配方案选择机制,从Archive集合的多个分配方案中选择一个作为最终的方案。根据不同的场景,制定的选择机制如表3:
在表3中,如果是正常的出行时间段(除了上下班高峰以及节假日时间),采用随机选择和总行驶距离优先的机制,即:从Archive中随机选择一个分配方案和选择总行驶距离值( )最小的分配方案,有相同的选择概率。如果是上下班高峰时间段以及节假日时间段,则采用总等待时间优先的机制来减少堵车带来的影响,即:从Archive中选择总等待时间值( )最小的分配方案。