优化 | Pick and delivery problem的简介与建模实现(二)

本文深入探讨一对多对一(1-M-1)的Pick and delivery problem(PDP),解释其模型并用Python调用Gurobi进行求解。重点讨论了同时需求问题(VRPSPD)和一对一问题的建模及约束条件,展示如何通过优化算法解决这类物流优化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上篇文章中,我们介绍了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} miniVjVkKcijxijk

约束如下:

∑ 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\} jVkKxijk=1iV\{ 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 jVxijkjVxjik=0iV,kK
∑ i ∈ V x 0 i k ≤ 1 ∀ k ∈ K \sum_{i\in V}x_{0ik} \le 1 \quad \forall k\in K iVx0ik1kK
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+zijQkKxijki,jV

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值