技术资讯

解密美团外卖派单核心算法

TIME:2019-11-20

美团技术团队还是很Open的,竟然公布了产品、技术后台对派单逻辑的思考,我去繁就简、摘要如下:

基本架构:

机器学习模块负责从数据中寻求规律和知识,例如对商家的出餐时间、到用户所在楼宇上下楼的时间、未来的订单、骑行速度、红绿灯耗时、骑行导航路径等因素进行准确预估,为调度决策提供准确的基础信息;

运筹优化模块则在即时配送大数据平台以及机器学习的预测数据基础上,采用最优化理论、强化学习等优化策略进行计算,做出全局最优的分配决策,并和骑手高效互动,处理执行过程中的问题,实现动态最优化。

问题分析和建模:

准确建模是实际决策优化项目的第一步,也是最关键的一步。

准确建模,包括两个方面的问题:

我们正确理解了实际业务场景的优化问题,并且通过某种形式化语言进行了准确描述;

我们建立的模型中,涉及的各类参数和数据,能够准确得获取。

在上述两个前提下,采用相应的高效优化算法求解模型所得到的最优解,就是符合实际场景需求的最优决策方案。第一个问题,一般是通过业务调研、分析并结合建模工具来得到;而解决第二个问题,则更多地需要依赖数据分析、机器学习、数据挖掘技术结合领域知识,对模型进行精确的量化表达。

一个决策优化问题的数学模型,一般包括三个要素:

决策变量

优化目标

约束条件

其中,

决策变量说明了希望算法来帮助我们做哪些决策;

优化目标则是指通过调整决策变量,使得哪些指标得到优化;

而约束条件则是在优化决策的过程中所考虑的各类限制性因素。

为了说明即时配送场景下的订单分配问题,我们先引入若干符号定义:

在即时配送调度场景下,决策变量包括各个订单需要分配的骑手,以及骑手的建议行驶路线:

即时配送订单分配问题的优化目标一般包括希望用户的单均配送时长尽量短、骑手付出的劳动尽量少、超时率尽量低,等等。一般可表达为:

针对实际场景下的配送订单分配问题,设置哪些指标作为目标函数是一个较为复杂的问题。

原因在于两个方面:

1)该优化问题是多目标的,且各个目标在不同时段、不同环境下会有差别。

举个例子,经验丰富的调度员希望在负载较低的空闲时段,将订单派给那些不熟悉区域地形的骑手,以锻炼骑手能力;在天气恶劣的情况下,希望能够容忍一定的超时率更多地派顺路单,以提高订单消化速度等。这些考量有其合理性,需要在优化目标中予以体现。

2)缺乏有助于量化优化目标的数据。如果带标签数据足够多,同时假设调度员的能力足够好,那么可以通过数据挖掘的手段获取优化目标的量化表达。不幸的是,这两个前提都不成立。美团针对该难题,首先通过深入调研明确业务痛点和目标,在此基础上,采用机理和数据相结合的办法,由人工设定目标函数的结构,通过仿真系统和实际数据去设定目标函数的参数,来确定最终采用的目标函数形态。

即时配送调度问题的约束条件至少涵盖如下几种类型:

除了以上约束外,有时还需要考虑部分订单只能由具备某些特点的骑手来配送(例如火锅订单只能交给携带专门装备的骑手等)、载具的容量限制等。

以上只是针对给定的一批订单进行匹配决策的优化问题在建模时所需考虑的部分因素。事实上,在外卖配送场景中,我们希望的不是单次决策的最优,而是策略在一段时间应用后的累积收益最大。

换句话说,不追求某一个订单的指派是最优的,而是希望一天下来,所有的订单指派结果整体上是全局最优的。这进一步加大了问题建模的难度,原因在于算法在做订单指派决策的时候,未来的订单信息是不确定的,如下图所示,在t时刻进行决策的时候,既需要考虑已确定的订单,还需要考虑未来的尚未确定的订单。运筹优化领域中的马尔可夫决策过程描述的就是这样的一类在不确定、信息不完备环境下的序贯决策优化问题。

  • 发表于: 2017-12-13
  • 原文链接:http://kuaibao.qq.com/s/20171213A0JR5900?refer=cp_1026

上一篇

java实现动态切换上网IP (ADSL拨号上网)

下一篇

大牛手把手教你区块链项目开发