优化 | Pick and delivery problem的介绍与建模实现(二)
在上篇文章中,我们介绍了PDP的三种类型及其主要的运用场景。这次我们将专门针对一对多对一(1-M-1)问题来进行介绍,解释其模型并进行实现。
One-to-many-to-one (1-M-1) problems
一对多对一(1-M-1)问题是指PDP中的交货和取货涉及两组截然不同的商品:有些是从仓库运到客户的,而有些是从客户取货并交付给仓库。 在最近的20年中,基于产品回收再利用的趋势,1-M-1问题变得越来越普遍。 例如:在欧洲新设备的交付与废弃电子电器的回收一起进行; 饮料行业在配送饮料的同时将空瓶回收至仓库;一些货运公司将满载的托盘或容器一并交付给客户,再从客户那里收集空托盘或容器。
关于1-M-1 PDP的文献非常丰富且种类繁多,且也与内部的处理操作也具有内在联系:取货装车可能会阻碍交货,因此可能迫使卡车只能进行交货服务,再进行提货服务。 在这种情况下,如果客户需要两种服务,则必须两次访问,这些问题称为回程问题(backhaul problems)
。相反,将可以同时进行取货和送货两种操作的问题称为混合问题(mixed problems)
。 折中的情况是指允许部分客户(或所有客户)被多次访问。
在下图中,分别展示了了具有同时需求和单一需求,回程和混合服务的单车问题。其中0代表仓库。
其中图(a)、(b)是单个需求问题下不考虑和考虑回程的情况。图(c)、(d)在此基础上考虑了客户1同时需要提货和送货服务:包括2个送货单位和1个提货单位。 在图(d)中,由于回程限制,必须对客户1进行两次拜访:首先执行交货,然后执行提货。
Simultaneous Demands
带有同时取货和送货需求的车辆路径规划问题(The Vehicle Routing Problem with Simultaneous Pickup and Delivery,VRPSPD)
是1-M-1问题中研究最多,最通用的变体。它也被称为Multiple-Vehicle Hamiltonian 1-M-1-PDP with Combined Demands
。
其正式定义如下。 设 G = ( V , A ) G=(V,A) G=(V,A) 为有向图,其中顶点集为 V V V ,弧集为 A A A 。 0 0 0 代表仓库(depot)。 我们假设一个同质的车队 K K K ,每个车队都有容量 Q Q Q 。 每个客户 i i i 都有一个非负的送货需求 d i d_i di和提货需求 p i p_i pi 。车辆沿弧 ( i , j ) ∈ A (i,j) \in A (i,j)∈A 行驶的成本为 c i j c_{ij} cij 。目标是构建总成本最低的路线,使得车辆在一次访问中满足每个客户的提货和送货要求,并且不超过车辆的容量。
VRPSPD可以被建模如下:
其中,决策变量:
x i j k x_{ijk} xijk : 为1若弧 ( i , j ) ∈ A (i,j) \in A (i,j)∈A 被 k k k 经过;否则为0。
y i j y_{ij} yij和 z i j z_{ij} zij:是非负变量,代表弧 ( i , j ) ∈ A (i,j) \in A (i,j)∈A 上传送的提货和送货载荷。
目标函数为最小化成本:
min ∑ i ∈ V ∑ j ∈ V ∑ k ∈ K c i j x i j k \min \sum_{i\in V}\sum_{j\in V}\sum_{k\in K} c_{ij} x_{ijk} mini∈V∑j∈V∑k∈K∑cijxijk
约束如下:
∑ j ∈ V ∑ k ∈ K x i j k = 1 ∀ i ∈ V \ { 0 } \sum_{j\in V}\sum_{k\in K} x_{ijk}=1 \quad \forall i \in V\backslash \{0\} j∈V∑k∈K∑xijk=1∀i∈V\{ 0}
∑ j ∈ V x i j k − ∑ j ∈ V x j i k = 0 ∀ i ∈ V , k ∈ K \sum_{j\in V}x_{ijk} - \sum_{j\in V}x_{jik} =0\quad \forall i \in V,k\in K j∈V∑xijk−j∈V∑xjik=0∀i∈V,k∈K
∑ i ∈ V x 0 i k ≤ 1 ∀ k ∈ K \sum_{i\in V}x_{0ik} \le 1 \quad \forall k\in K i∈V∑x0ik≤1∀k∈K
y i j + z i j ≤ Q ∑ k ∈ K x i j k ∀ i , j ∈ V y_{ij}+ z_{ij} \le Q \sum_{k\in K} x_{ijk} \quad \forall i,j \in V yij+zij≤Qk∈K∑xijk∀i,j∈V