人工智能 |
您所在的位置:网站首页 › 关于王一博:2021王一博最新资讯 › 人工智能 |
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 |