简介: 送餐路上外卖骑手们所处的位置不仅牵动着大家的心,在本地生活的场景下,也是订单配送和调度系统的重要一环。其中骑手是否已到店取餐看似简单却难以准确观测。针对这一问题,阿里本地生活科技中心建立了基于移动感知的aBeacon系统来准确地观测骑手到店和离店行为。这一工作成果也发表在了网络系统领域的顶级会议NSDI’21上。本文将从实现原理为大家做一个简单介绍。
一 背景
作为本地生活的一个重要组成部分,外卖已经进入千千万万的家庭。相信很多小伙伴已经注意到,饿了么的每一个订单,我们都会及时向用户通知这一单现在所处的状态,比如“商户接单”,“骑手到店”,“骑手送达”等。这个实时状态的更新,不仅能让用户及时了解自己外卖到了哪里,对于整个平台的骑手调度和时间预估都有着重要意义。
而在所有的节点中,骑手到店前后的两个节点“骑手到店”和“骑手取餐”对于整个平台的价值就更为重要,主要体现在以下三个方面:
时间预估
骑手到店的时间是骑手从接单位置到商户位置的终止时间,而骑手离店的时间则是骑手从商户位置到用户位置的起始时间。掌握这些准确的时间,能给时间预估模型提供准确的标签用于模型训练。我们在APP里看到的“预估配送时间”就是这样计算出来的。同时,知道骑手在商户位置等了多长时间,我们就可以知道商户准备这一单需要多长时间,也就是商户的“出餐时间”。而掌握了准确的出餐时间,我们在给某一单找合适骑手的时候就能更加地游刃有余了。
骑手调度
当用户在外卖平台下单后,平台就会开始为这一单寻找合适的骑手来配送,这个过程就叫骑手调度。骑手调度是一个复杂的过程,需要考虑同时考虑商户,骑手和用户的位置,还要考虑骑手身上已有的单和商户正在准备的单。一个总的原则是,让更近的,更顺路的骑手去取单。如果我们知道了骑手到店的准确时间,我们就可以知道骑手在当前时刻的具体位置,并且能够预估出骑手在未来一段时间的大概位置。这就给我们的骑手调度提供了准确可靠的数据源。
超时单判责
虽然调度系统会尽力保证每一单都尽快送达,但还是会有一些情况导致少部分运单会超时,给用户带来不好的体验。为了提升调度系统的性能,减少超时单。我们首先需要知道超时的原因,从而在未来的调度中作出改进。超时的两个主要原因是“商户已出餐但骑手未到店”和“骑手已到店但商户未出餐”。在没有明确数据的情况下,这两个对立的原因往往会出现“公说公有理,婆说婆有理”的情况。如果我们能够准确获得骑手到店的时间,这一困境就会迎刃而解。
二 挑战
既然获取准确的骑手到店时间是如此重要的问题,为什么现有的方法还是无法很好的解决这个问题呢?这是因为考虑到本地生活的场景,要获得准确的骑手到店时间,面临着以下几方面的挑战:
GPS在室内的漂移
现在手机定位最常用的方法就是GPS定位。但无论是GPS,还是我们最近刚组网成功的北斗系统