最后,为了保证良好的用户体验,我们引入了失败概率预测模型,只保留失败概率不大于一定阈值的候选调度任务,并在任务失败的情况下为司机提供一定的补偿 。补偿金额与调度任务起终点间的距离有关 。
▍第二阶段:任务评分
任务评分阶段度量了每一个候选调度任务可能为平衡供需分布、提高平台效率所带来的收益 。
对于一个时空状态,用分段线性函数拟合应答率(被应答订单数与全部呼叫订单数之比)与供需比(空闲司机数与呼叫订单数之比)的函数关系:
文章插图
依据这一函数,可以计算出向调度终点时空增加一个空闲司机可能会带来的边际增益,以此作为每一个候选调度任务的评分结果,即
文章插图
依据拟合结果,我们可以推导出另外一个有应用价值的结果:每个时空状态的司机缺口数量 。通过设定一个目标应答率,我们可以计算出达到这一目标所需增加的司机数量,也即运力缺口数:
文章插图
▍第三阶段:规划
在第一阶段产生的候选调度任务集,并且在第二阶段得到每个候选调度任务的评分后,本文采用规划方法从候选集中挑选出最终下发的调度任务 。在规划方法中,以保障司机体验作为约束,寻找使得平台全局收益最大化的一组最优调度任务,可以表示为:
文章插图
其中,
文章插图
为指示变量,表示一个候选调度任务是否被保留在最终的调度任务集内 。
对这一优化问题直接求解需要较长的计算时间,本文进一步将其转化为一个最小费用流问题,如图5所示 。
文章插图
图5. 最小费用流示意图
4.
实验结果
因为在框架设计中考虑了司机接受调度的意愿等实际问题,所以本文直接在线上环境中评估框架的效果 。我们进行了多轮AB实验,对框架的整体效果和各个阶段的关键设计分别进行了评估 。实验结果显示,与司机自主巡游相比,应用本文提出的框架可以提高司机效率,改善司机体验,并且可以提高司机总收入 。边际增益函数、最小费用流模块、任务失败补偿等关键设计也都取得了正向的收益 。
在实验后,我们通过问卷调查收集了司机们的反馈意见 。在填写问卷的司机中,有64.6%的司机表示在下次收到调度任务时他们会选择接受 。依据问卷调查结果,调度任务的NPS为27.0%,这反映出司机对调度任务的整体评价是非常积极的 。
5.
结论和下一步计划
针对在网约车平台上如何为司机巡游提供有效帮助的问题,本文提出了一个符合业界应用要求的解决框架 。该框架通过用户友好的交互设计和合理的司机间协作,实现了调节供需平衡、提高司机效率的目标 。在线上的AB实验中,司机收入和体验相关指标上有明显改善 。目前,这一框架已经被部署在了滴滴出行平台上,每天为数百万司机提供服务 。
未来,这一框架的各个环节都会持续进行改进,也可以采用强化学习方法设计一个端到端的解决方案 。另外,采用路网数据直接优化空车巡游行驶路线也可能是与为司机推荐巡游目的地完全不同的另一条研究路线 。
作者:门畅 高级算法工程师,徐哲 高级专家算法工程师,刘春阳 高级专家算法工程师
推荐阅读
- 分布式系统架构之构建你的任务调度中心
- Java 分布式任务调度平台:PowerJob 快速开始+配置详解
- 穿衣搭配|职场“老司机”是如何看人的?
- 压缩包的密码藏在哪?老司机教你揪出RAR密码
- 如何启用Windows 10 Version 2004中的硬件加速GPU调度?
- 并发问题的解决思路以及Go语言调度器工作原理
- 前端老司机都在用的Chrome开发者工具15 个小技巧,你用过几个?
- 大众的9个车标,老司机只知道6个,你能认出几个呢?
- 司机高速上睡了半小时,车内“无人驾驶”48公里,让人无法相信
- 为什么端口明明开着,nmap却扫描不出来,看老司机怎么指点迷津