桔妹导读:如何解决供需不平衡问题呢?一个自然的想法就是调度空闲的在线司机到需求较多的区域。滴滴网约车团队近期发表在万维网大会WWW 2020 Research Track的Oral长文《When Recommender Systems Meet Fleet Management: Practical Study in Online Driver Repositioning System》提出了在线司机调度系统的一种有效的解决方案。本文是对该论文的详细解读。

随着移动互联网的兴起,网约车逐渐成为了大众常用的一个出行选择。但在网约车平台上经常出现这种情况:有时候乘客抱怨打不到车,与此同时其他地方的司机却没有订单接,长时间空驶。这就是典型的供需不平衡问题,即乘客和司机的自然分布出现了错配。这一方面让很多乘客的出行需求得不到满足,另一方面也让很多司机空驶等待,运力资源没有充分利用。如何解决供需不平衡问题呢?一个自然的想法就是调度空闲的在线司机到需求较多的区域。以下与大家分享对于本篇论文的详细解读。

论文地址:

https://dl.acm.org/doi/abs/10.1145/3366423.3380287

1

背景

出租车为人们提供了方便灵活的出行服务,在公共交通中扮演了重要角色。出租车在道路上空载行驶寻找乘客的过程,称为空车巡游过程。这一过程可能会占到出租车司机工作时间的50%以上,降低了出租车的运营效率。

在网约车平台上,司机和乘客向平台上报他们的实时位置,平台通过集中决策机制来完成司机和乘客间的匹配。在这种情况下,司机可以在实际见到乘客前就接到该乘客的订单,因而空车巡游的目的不再是寻找乘客,而是寻找一个接到订单概率更高的地理区域或者路线。

本质上来说,空车巡游是由供给和需求间的不平衡导致的。例如图1中,在早高峰司机将一位乘客从家送到办公室后,由于此刻办公区域乘客需求很少,司机必须再次回到住宅区才能有比较大的机会接到下一单。

图1. 司机调度问题背景

在本文中,我们研究司机调度问题。所谓“司机调度”,是指平台会通过一定的交互过程打断司机自发的空车巡游过程,将他们引向一个更可能接到单的目的地。受益于供需两侧丰富的实时信息,平台可以通过调度改善司机个人的体验,同时提高平台整体的效率。

2

什么是“调度任务”

实际场景中,空闲司机往往依赖个人经验来决定空车巡游的目的地,主观性强。经验不准确时可能会前往接单概率较低的区域,既影响司机的个人收入和接单体验,也会影响乘客需求的满足率。因此,本文中我们利用司机和平台之间的实时信息通道来为司机发送即时的调度任务,帮助空闲司机找到最佳的空车巡游目的地。

在本文中,当司机停留在空闲状态时会触发调度任务,如图2所示。调度任务会以卡片消息的形式在司机的APP上弹出。如果司机点击导航按钮,会直接进入以调度终点为目的地的导航页面。为帮助司机尽快接到下一个订单,在司机前往调度终点的途中,始终可以被分配订单。

图2. 调度任务的产品交互形式

一次调度任务包括三个步骤:

(1)  告知司机一个明确的调度目的地。

(2)  在下发调度任务后追踪司机的行为,判定调度任务是否成功。

(3)  在调度任务失败时为司机提供补偿。

在这里,需要对调度任务的判定标准进行更具体的说明。一个调度任务有四种可能的结束状态,如图3所示。

图3. 调度任务的结束状态

  • 状态1:司机没有接受调度任务,并且向反方向行驶。

  • 状态2:司机接受调度任务并驶向调度终点,在途中被分配了一个订单。

  • 状态3:司机接受调度任务并到达调度终点,然后在一个固定的时间窗口内接到了订单。

  • 状态4:司机接受调度任务并到达调度终点,在终点停留一段时间,但在一个固定的时间窗口内一直都没有接到订单。

如果一次调度任务以状态2和状态3结束,那么被视作一次成功的调度;如果以状态4结束,则会被视作一次失败的调度。由于接受调度任务会给司机带来额外的空驶成本,因此,在调度任务失败的情况下,应当为司机提供一定的补偿。这是在司机和平台之间建立信任的关键措施。

3

方法

本文提出的解决框架分为三阶段,如图4所示。受到推荐系统的启发,前两个阶段的作用是产生候选调度任务集并为每一个候选调度任务打分;受到车队管理方法的启发,第三阶段应用规划算法来实现多司机间的协作,产生最终向司机下发的调度任务。

图4. 框架示意图

第一阶段:产生候选调度任务

一个调度任务包含四个元素:司机、调度终点、过期时间、补偿金额。

首先,筛选空闲时间超过一定阈值的司机作为候选司机。一般来说,空闲一段时间的司机更需要在听单方面的帮助,也会更愿意接受调度。

然后,为每个候选司机筛选合适的候选调度终点。候选调度终点的产生方式有三种:(1) 司机所在位置周边格子,这些格子距离司机较近,司机更有可能前往;(2)在历史行驶轨迹中连续出现的格子,用于找到一些离当前位置较远、但是由于路网关系可以很快到达的地点;(3)全城热点格子,用于找到一些需求密集的地点。对于每一个候选终点格子,我们会从格子内选择一个POI点作为调度的终点,然后根据司机当前位置到调度终点的预计到达时间(ETA)来设置调度任务的过期时间。

最后,为了保证良好的用户体验,我们引入了失败概率预测模型,只保留失败概率不大于一定阈值的候选调度任务,并在任务失败的情况下为司机提供一定的补偿。补偿金额与调度任务起终点间的距离有关。

第二阶段:任务评分

任务评分阶段度量了每一个候选调度任务可能为平衡供需分布、提高平台效率所带来的收益。

对于一个时空状态,用分段线性函数拟合应答率(被应答订单数与全部呼叫订单数之比)与供需比(空闲司机数与呼叫订单数之比)的函数关系:

依据这一函数,可以计算出向调度终点时空增加一个空闲司机可能会带来的边际增益,以此作为每一个候选调度任务的评分结果,即

依据拟合结果,我们可以推导出另外一个有应用价值的结果:每个时空状态的司机缺口数量。通过设定一个目标应答率,我们可以计算出达到这一目标所需增加的司机数量,也即运力缺口数:

第三阶段:规划

在第一阶段产生的候选调度任务集,并且在第二阶段得到每个候选调度任务的评分后,本文采用规划方法从候选集中挑选出最终下发的调度任务。在规划方法中,以保障司机体验作为约束,寻找使得平台全局收益最大化的一组最优调度任务,可以表示为:

其中,为指示变量,表示一个候选调度任务是否被保留在最终的调度任务集内。

对这一优化问题直接求解需要较长的计算时间,本文进一步将其转化为一个最小费用流问题,如图5所示。

图5. 最小费用流示意图

4

实验结果

因为在框架设计中考虑了司机接受调度的意愿等实际问题,所以本文直接在线上环境中评估框架的效果。我们进行了多轮AB实验,对框架的整体效果和各个阶段的关键设计分别进行了评估。实验结果显示,与司机自主巡游相比,应用本文提出的框架可以提高司机效率,改善司机体验,并且可以提高司机总收入。边际增益函数、最小费用流模块、任务失败补偿等关键设计也都取得了正向的收益。

在实验后,我们通过问卷调查收集了司机们的反馈意见。在填写问卷的司机中,有64.6%的司机表示在下次收到调度任务时他们会选择接受。依据问卷调查结果,调度任务的NPS为27.0%,这反映出司机对调度任务的整体评价是非常积极的。

5

结论和下一步计划

针对在网约车平台上如何为司机巡游提供有效帮助的问题,本文提出了一个符合业界应用要求的解决框架。该框架通过用户友好的交互设计和合理的司机间协作,实现了调节供需平衡、提高司机效率的目标。在线上的AB实验中,司机收入和体验相关指标上有明显改善。目前,这一框架已经被部署在了滴滴出行平台上,每天为数百万司机提供服务。

未来,这一框架的各个环节都会持续进行改进,也可以采用强化学习方法设计一个端到端的解决方案。另外,采用路网数据直接优化空车巡游行驶路线也可能是与为司机推荐巡游目的地完全不同的另一条研究路线。

本文作者
▬团队招聘▬
滴滴网约车技术部交易策略团队直面亿级用户,负责国内外网约车业务中的派单、运力调度、服务推荐、供需预测等核心算法落地。致力于以数据驱动的方式,应用机器学习、深度学习、强化学习、运筹学等技术,提升平台效率及用户体验,以技术助力业务增长与发展。团队长期招聘算法工程师岗位,欢迎投递简历至:diditech@didiglobal.com,邮件主题请命名为「姓名+应聘部门+应聘方向」,社招、校招、实习均可,期待一起让出行更美好。延伸阅读
▬本期编辑|Teeo
内容来源|滴滴科技合作

滴滴司机调度系统实践相关推荐

  1. 深度学习核心技术精讲100篇(三十八)-滴滴司机调度系统实践

    前言 随着移动互联网的兴起,网约车逐渐成为了大众常用的一个出行选择.但在网约车平台上经常出现这种情况:有时候乘客抱怨打不到车,与此同时其他地方的司机却没有订单接,长时间空驶.这就是典型的供需不平衡问题 ...

  2. 推荐系统在滴滴司机调度系统中的应用实践

    导读:随着移动互联网的兴起,网约车逐渐成为了大众常用的一个出行选择.但在网约车平台上经常出现这种情况:有时候乘客抱怨打不到车,与此同时其他地方的司机却没有订单接,长时间空驶.这就是典型的供需不平衡问题 ...

  3. 滴滴人工智能调度系统简单学习

    腾讯大数据峰会暨 KDD China 技术峰会中,滴滴研究院副院长.密歇根大学终身教授叶杰平博士现场演讲学习.详细见:http://weibo.com/ttarticle/p/show?id=2309 ...

  4. Golang在阿里巴巴调度系统Sigma中的实践

    作者简介 李 雨 前  花名叫鹰缘 系统软件事业部调度系统. 关键词 Golang 调度系统 Sigma,阿里巴巴自有的内容 实践交流 工程 1.取材 资源调度领域Sigma 主要思路是说资源调度领域 ...

  5. 滴滴如何调度_滴滴调度小助手和热力图是司机的陷阱还是馅饼?

    滴滴智能调度小助手上线的目的是激活闲置资源.中心调度.高效匹配交通出行的相关数据,然后做出最优的决策,从而提高出行效率. 与Uber强制派单模式不同的是滴滴采取的是抢单模式.Uber模式的优势是用户体 ...

  6. 指数级增长背后,滴滴出行业务系统的架构升级

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/52225634 本文内容转载于网络,见文末所标明出处. 成立四年,估值已超260亿美元 ...

  7. Apache Flink在滴滴的应用与实践

    导读:Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算.可部署在各种集群环境,对各种大小的数据规模进行快速计算. 滴滴基于 Apache Flink 做了 ...

  8. 关于滴滴智能调度的分析和思考

    来自:https://www.jianshu.com/p/fd80741bb6fd 写这篇分析的背景是,工作上正在经历一个智能调度平台的搭建和设计,希望通过对于滴滴调度系统进行调研,来得出一些可借鉴的 ...

  9. DataFun活动回顾 | 画像在外卖智能调度的实践-详细版

    本文根据百度外卖首席架构师梁福坤先生在DataFun大数据架构系列活动--大数据架构在O2O场景中的应用所作分享<画像在外卖智能调度的实践>编辑整理而来,在未改变原意的基础上略作删减.梁福 ...

最新文章

  1. colorAccent,colorPrimary,colorPrimaryDark 作用的地方
  2. Python全栈开发day2
  3. 2.使用windows下的client连接虚拟机上的oracle连不上的时候的解决方式
  4. SpringBoot基础入门
  5. WebLogic8.1 配置SSL/HTTPS单向认证
  6. html语言怎么那么难用,css语言难学吗?
  7. C++ STL的查找算法
  8. Android 开发笔记___drawable
  9. 容器编排技术 -- Kubernetes 调试 Service
  10. easyUI datagrid 重复发送URL请求
  11. (转)Servlet
  12. 春节怎么抢红包,python一招告诉你再也不会错过微信红包
  13. 概率图模型: Coursera课程资源分享和简介
  14. 2017-2018-1 《程序设计与数据结构》课程总结
  15. python数字金额转换为中文大写金额
  16. gateway配合nacos路由报错:Unable to find instance for XXX
  17. Python实现将一张图片切成9宫格
  18. centos7 修改时间、时区问题
  19. oracle em13c配置,EM13C添加agent记录两个报错
  20. java猜数字游戏课程设计报告_Java程序设计课程设计-猜数字游戏设计.doc

热门文章

  1. 机动目标运动分析——IMM篇
  2. Flutter实现网易音乐登录页的波纹效果
  3. 软件测试的就业前景到底怎么样?
  4. Swagger报错:missed comma between flow collection entries
  5. Java web(简单的servlet计算器)网页计算器
  6. Shell--点名器脚本,实现点名去重。
  7. 小程序生成图片保存到系统相册_iSee图片专家下载|iSee图片专家 3.930 官方版
  8. Canvas基础教程
  9. 4.OC仿写知乎客户端
  10. 关于“TCP segment of a reassembled PDU”