本文是论文《A Taxi Order Dispatch Model based On Combinatorial Optimization》的阅读笔记。

一、摘要

传统的订单分配系统都是最大化每个订单的司机接受率,通常会对于每个订单寻找一个最近的司机,这导致了较低的全局成功率,并且订单分配的时间较长。文章提出了一个目的地预测模型,可以在用户一打开APP的时候就对用户可能去的目的地进行预测,本文提出的模型不仅在全局成功率,而且在用户等待时间、接车距离等方面都获得了很大的提升。

在本文提出的模型中,会把一个订单分配给多个司机,当第一个接受订单的司机获得该订单,如果没有被接受,则进入下一轮直到订单被接受或被取消。

一个订单主要有三个重要的属性:出发时间、出发位置和目的地位置,文章提出的贝叶斯目的地预测模型会使用用户的历史出行目的地作为目的地预测的候选集合。贝叶斯目的地预测模型以出发时间、出发位置和目的地位置为输入,并将其看作一个三元的高斯分布,然后会生成每个目的地的概率,并按照概率大小给出一个预测目的地的列表。

二、订单分配系统

1. 记号

  • 分阶段优化方法强化学习 优化分配模型_订单分配:成功率
  • 分阶段优化方法强化学习 优化分配模型_预测模型_02:订单数
  • 分阶段优化方法强化学习 优化分配模型_强化学习_03:司机数

订单分配结果可以用一个矩阵来表示:
分阶段优化方法强化学习 优化分配模型_强化学习_04
一个司机只能同时接一个订单,而一个订单可以分配给多个司机,所以上式满足约束 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_05

订单分配的关键是估计每个司机接单的概率, 然后进一步就可以计算一个订单被司机接受的概率了,因此将订单分配模型划分为两部分:一个模型预测司机的行为,即预测每个司机接单的概率;另一个模型最大化目标函数 分阶段优化方法强化学习 优化分配模型_预测模型_06

2. 司机行为预测模型

司机的行为有两种——接受订单和拒绝订单,并用变量 分阶段优化方法强化学习 优化分配模型_强化学习_07 来表示司机行为的结果,分阶段优化方法强化学习 优化分配模型_强化学习_07

分阶段优化方法强化学习 优化分配模型_预测模型_09 表示订单 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_10 被司机 分阶段优化方法强化学习 优化分配模型_KDD_11 接受的概率,这个概率可能受到订单的价格、行驶距离和目的地方向等诸多因素的影响,这些因素可以编码为一个特征向量 分阶段优化方法强化学习 优化分配模型_强化学习_12。给定 分阶段优化方法强化学习 优化分配模型_强化学习_12,需要估计一个司机的接受概率,即:
分阶段优化方法强化学习 优化分配模型_预测模型_14
这样就把司机行为的预测问题转变成了一个经典的二分类问题。

分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_15

文章测试了 LR(logistic regression)和 GBDT(梯度提升决策树)在两个数据集上的 ACC(accuracy)和 AUC(曲线下面积),由上表可知,LR 模型的效果更好,所以最终选择 LR 模型最为司机行为预测模型,概率 分阶段优化方法强化学习 优化分配模型_预测模型_09 可以写为:
分阶段优化方法强化学习 优化分配模型_KDD_17
司机行为预测模型主要考虑以下因素:

  • 订单-司机相关特征:接车距离、订单目的地是否在司机的行驶方向的前方
  • 订单相关特征:出发地和目的地之间的距离、预计到达时间(ETA)、目的地的类别(机场、旅馆、学校、工作场所等)、交通状况、目的地的历史订单频率
  • 司机相关特征:司机的接单率、司机活动的范围、司机偏爱的订单距离
  • 其他特征:是否是工作日、一天中的时刻、订单附件的司机数

假设 分阶段优化方法强化学习 优化分配模型_强化学习_18 个订单被分配给 分阶段优化方法强化学习 优化分配模型_订单分配_19 个司机,则订单 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_10 被接受的概率为:
分阶段优化方法强化学习 优化分配模型_订单分配_21
所以,成功率 分阶段优化方法强化学习 优化分配模型_预测模型_06 为:
分阶段优化方法强化学习 优化分配模型_KDD_23
加上每个司机同时最多接受一个订单的约束条件,最终的订单分配问题可以表示为:
分阶段优化方法强化学习 优化分配模型_强化学习_24
很多组合优化问题都是 NP 难问题,通常没有通用的高效算法来解决,这里选用的是爬山法(hill-climbing method)来解决该问题,算法流程如下:

分阶段优化方法强化学习 优化分配模型_订单分配_25

三、目的地预测

分阶段优化方法强化学习 优化分配模型_KDD_26

同一个用户通常在相似的时间回去相同的目的地,同一个用户去的目的地集合基本是固定的,订单的位置对目的地预测很重要。

用贝叶斯公式来表达用户去目的地 分阶段优化方法强化学习 优化分配模型_强化学习_27 的条件概率:

分阶段优化方法强化学习 优化分配模型_强化学习_28

其中 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_29 表示出发时间、出发经度和出发维度。可以通过用户的历史出行记录来估计 分阶段优化方法强化学习 优化分配模型_预测模型_30

分阶段优化方法强化学习 优化分配模型_KDD_31

分阶段优化方法强化学习 优化分配模型_强化学习_32

通过上图可知,用户在不同时间出行的目的地近似服从高斯分布,所以用高斯分布来估计关于出发时间 分阶段优化方法强化学习 优化分配模型_订单分配_33 的条件概率:
分阶段优化方法强化学习 优化分配模型_订单分配_34
并且可以发现变量 分阶段优化方法强化学习 优化分配模型_订单分配_33 是循环性的,它的值从0到23,然后重复。因此高斯分布的均值 分阶段优化方法强化学习 优化分配模型_订单分配_36 和方差 分阶段优化方法强化学习 优化分配模型_订单分配_37 不能用传统的方法来估计,一个计算循环量均值的方法是先将所有的循环量转换为单位向量,然后计算向量的均值,并将结果转换为原始的循环表示。给定时间 分阶段优化方法强化学习 优化分配模型_订单分配_38,均值可以通过下式计算:
分阶段优化方法强化学习 优化分配模型_预测模型_39
但是通过该公式计算出的结果与真实结果会存在偏差,并且在某些特定情况(当sin和cos的求和项为0时)下,会无解。为了解决该问题,文章提出了一个计算出发时间均值和方差的方法。出发时间的均值可以通过求解以下二次优化问题来获得:
分阶段优化方法强化学习 优化分配模型_强化学习_40
其中 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_41 表示两个循环变量 分阶段优化方法强化学习 优化分配模型_KDD_42分阶段优化方法强化学习 优化分配模型_订单分配_43 之间的距离,定义如下:
分阶段优化方法强化学习 优化分配模型_强化学习_44
也可以简写为:
分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_45
将其带入公式(*) 中得:
分阶段优化方法强化学习 优化分配模型_强化学习_46
同理,可以通过类似的方法估计方差 分阶段优化方法强化学习 优化分配模型_订单分配_47
分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_48
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vrWpo1aZ-1589797814059)(https://s1.ax1x.com/2020/05/14/Ywv9xJ.jpg)]

分阶段优化方法强化学习 优化分配模型_预测模型_49

分阶段优化方法强化学习 优化分配模型_KDD_50

图二表示去中关村和知春路关于时间的分布,可以发现给定时间很容易区分目的地是哪;而图三表示去数字庄园和丽宝广场关于时间的分布,可以发现两者的重合比较严重,给定时间很难区分目的地是哪;图四表示去数字庄园和丽宝广场关于时间、经纬度的分布,在三维空间下给定时间、经纬度很容易区分目的地。通过以上三个图可以发现,三维分布能更容易的区分出两个不同的目的地。假设在给定目的地 分阶段优化方法强化学习 优化分配模型_预测模型_51 时,订单的经纬度和时间的条件概率满足三维高斯分布:
分阶段优化方法强化学习 优化分配模型_订单分配_52
以下是目的地预测的完整过程:

  • 估计每个用户目的地的均值 分阶段优化方法强化学习 优化分配模型_订单分配_53 和方差 分阶段优化方法强化学习 优化分配模型_强化学习_54
  • 计算 分阶段优化方法强化学习 优化分配模型_KDD_55
    分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_56
    并计算 分阶段优化方法强化学习 优化分配模型_分阶段优化方法强化学习_57
  • 利用贝叶斯公式计算 分阶段优化方法强化学习 优化分配模型_强化学习_58
    分阶段优化方法强化学习 优化分配模型_订单分配_59
  • 按照概率 分阶段优化方法强化学习 优化分配模型_强化学习_58