人工智能

您所在的位置:网站首页 关于王一博:2021王一博最新资讯 人工智能

人工智能

2024-03-03 03:13| 来源: 网络整理| 查看: 265

0.写在前面

外卖配送是运筹优化算法重要应用领域,它的主要特点是并发高、延时低,为了解决这样的问题需要对业务进行深入理解,设计定制化优化手段。paper(A Two-Stage Fast Heuristic for Food Delivery Route Planning Problem)是2019年发表的一篇关于外卖配送路径规划的文章,十分接地气,接下来本文将对这篇文章做一番解读。

1.背景

在外卖场景,用户在外卖平台点单之后,订单信息会推送至商家确认接单,之后进入履约环节。调度系统对订单进行指派和路径规划,外卖配送员根据订单指派完成取餐和送餐任务。

而在配送问题中,路径规划是基本且重要的一个环节,它直接决定骑手服务路线的长度和时间,从而对订单的准时率、客户满意度都产生影响。下图是配送中骑手服务的路径规划示意图,该骑手身上有5个订单,其路径规划结果为:取(4个)⟶送(2个)⟶取(1个)⟶送(3个)。

目前,路径规划主要存在如下困难:

计算量爆炸:由于路径规划是NP难问题,无法采用多项式算法在有限时间内求解。当问题规模增大时,计算量也呈指数增长。例如,在(午晚)高峰时刻,每个骑手身上都可能有10个以上的订单需要完成,在这种情况下,可能的路径规划结果有2.38×10^15种,想要在有限时间内求解是极困难的。算法时效要求高:路径规划是指派算法的重要环节。指派算法是在线算法,线上会有大量的订单和骑手需要进行匹配,因此路径规划算法需要在极短时间内得到结果(毫秒级)

学界与配送场景下的路径规划问题相关的研究主要集中于PDPTW问题(pickup and delivery problem with time-windows),它考虑多个骑手和多个客户,每个客户的订单包含一个取点与一个送点,骑手按规定顺序访问各个节点完成订单的服务,从而达到某些目标函数(例如总行驶距离)的最优。求解PDPTW问题的算法包括:列生成算法(column generation)、分支切割(branch-and-cut)、分支切割定价(branch-and-cut-and-price)等精确计算算法,禁忌搜索(tabu search)、模拟退火(simulated annealing algorithm)、基于插入搜索的算法(insertion-based heuristic)、自适应大邻域搜索(adaptive large neighborhood search)、变深度搜索(variable-depth search algorithm)。由于在配送场景下,对算法时效性有极高的要求,上述算法均无法适用于配送场景的问题。在后文中,我们将介绍路径规划的问题模型,以及提出的启发式算法(Two-Stage Fast Heuristic),同时给出了一些仿真结果。

2.问题模型

背景中提到的配送场景下的路径规划问题可以被简化建模成单车辆PDPTW问题(single vehicle pickup and delivery problem with time-windows),即原PDPTW问题的单车辆简化(仅有一个骑手)。下图表示单车辆PDPTW问题研究中的一条典型路径。其中t_i为每个送点的预计送达时间(ETA,Estimated Time of Arrival),当订单产生时,t_i即被告知给商家和客户。T_i表示预估送达时间(ETR,Estimated Time of Route),由路径规划算法计算得出。d_i为点i−1到点i的距离。

本文中我们考虑最小化订单超时时间与路径长度,即目标函数为,该问题有两个约束:

优先约束:订单的取点需在送点前访问容量约束:骑手在服务过程中同时携带的订单数量具有上限3.算法设计

TSFH(Two-Stage Fast Heuristic)主要包括两个阶段

stage I:初始化得到一个初始可行解⟶采用贪婪插入策略与基于地理信息的加速策略stage II:对初始解进行邻域搜索⟶两种邻域分别对“最超时”和“最不超时”订单进行调整3.1初始化3.1.1贪婪插入初始化

贪婪插入初始化主要包括以下步骤:

订单按照ETA时间升序排序;取出第一个订单,进行排序。注意收到优先约束的影响,只有一种排列方法(取点在送点前);对剩余的订单,按顺序将其取送点插入所有可能位置,找到最优位置(目标函数最小),将其插入。

下图为初始化中贪婪插入的一个例子,在插入第二个订单时,我们有6种插入方案,根据目标函数最小原则,(A)为最优插入方案。

当所有点都完成插入后,便得到一个可行解。

3.1.2基于地理信息的加速策略

观察商家和客户的地理信息可以发现,商家之间可能距离很近(例如中心商业区域所含的商家可能服务半径5km以内的60%的客户),客户也是如此(多个客户可能位于同一个小区或楼宇)。因此我们可以通过分层聚类的方法将取送点聚类为不同的集群,通过对这些集群进行分析,我们可以减少无效插入,提高贪婪插入初始化的速度。根据引理1,2可以得到加速策略如下:若节点j被分到组i,则最好的插入策略是将其插入组i,或是组i之后的组之间。

下面分别介绍聚类算法以及相关引理。

【聚类算法】 令D为聚类范围(例如D=100m),按照以下逻辑对各个节点进行聚类:

若节点i未被分类,则节点i产生一个新组,并变成该组的中心点对于一个节点j,如果节点j没有被分类,且d_ij


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3