1. 基本VRP
目标函数
min ∑ k = 1 m ∑ j = 0 n c i j ⋅ x i j k \min \sum_{k=1}^{m} \sum_{j=0}^{n} c_{ij} \cdot x_{ij}^k mink=1∑mj=0∑ncij⋅xijk
- 含义:该目标函数旨在最小化总运输成本,其中 c i j c_{ij} cij表示从客户点 i i i到客户点 j j j的运输成本, x i j k x_{ij}^k xijk是一个决策变量,表示车辆 k k k是否从客户点 i i i运输到客户点 j j j。通过最小化总成本,可以提高运输效率。
约束条件
-
每个客户点必须被访问且仅被访问一次:
∑ k = 1 m ∑ j = 1 n x i j k = 1 , ∀ i = 1 , … , n \sum_{k=1}^{m} \sum_{j=1}^{n} x_{ij}^k = 1, \quad \forall i = 1, \ldots, n k=1∑mj=1∑nxijk=1,∀i=1,…,n- 含义:每个客户点 i i i必须被访问一次且仅被访问一次。这个约束确保了每个客户点的需求都被满足,并且不会重复访问。
- 也就是说, 对于每个节点i来说, 所有从i出发到所有j的所有车辆只能有1辆。
-
每辆车的路径必须从起点开始,并在终点结束:
- 从起点出发:
∑ j = 1 n x 0 j k = 1 , ∀ k = 1 , … , m \sum_{j=1}^{n} x_{0j}^k = 1, \quad \forall k = 1, \ldots, m j=1∑nx0jk=1,∀k=1,…,m - 在终点结束:
∑ j = 1 n x j 0 k = 1 , ∀ k = 1 , … , m \sum_{j=1}^{n} x_{j0}^k = 1, \quad \forall k = 1, \ldots, m j=1∑nxj0k=1,∀k=1,…,m - 含义:每辆车 k k k的路径必须从起点(通常是仓库或出发点)出发,并且在完成所有客户点的访问后返回到起点。这确保了车辆的行程是完整的。
- 从起点出发:
-
Binary (0-1) 约束:
x i j k ∈ { 0 , 1 } , ∀ i = 0 , … , n , j = 0 , … , n , k = 1 , … , m x_{ij}^k \in \{0, 1\}, \quad \forall i = 0, \ldots, n, j = 0, \ldots, n, k = 1, \ldots, m xijk∈{0,1},∀i=0,…,n,j=0,…,n,k=1,…,m- 含义:决策变量 x i j k x_{ij}^k xijk是二元变量,表示车辆 k k k是否从客户点 i i i运输到客户点 j j j。0表示不运输,1表示运输。这种约束确保了模型的决策是明确的,车辆要么选择运输,要么不选择运输。
总结
这些公式和约束条件共同构成了一个基本的车辆路径规划(VRP)模型,旨在优化运输成本,同时确保每个客户点的需求被满足,并且车辆的行程是合理的。通过这些约束,模型能够有效地规划车辆的运输路径。
2. 容量限制VRP
添加约束条件: 更新后的车辆容量限制表达式
∑ i = 1 n ∑ j = 1 n d j ⋅ x i j k ≤ Q k , ∀ k = 1 , … , m \sum_{i=1}^{n}\sum_{j=1}^{n} d_j \cdot x_{ij}^k \leq Q_k, \quad \forall k = 1, \ldots, m i=1∑nj=1∑ndj⋅xijk≤Qk,∀k=1,…,m
解释
-
双重求和:
- ∑ i = 1 n \sum_{i=1}^{n} ∑i=1n: 表示车辆从每个客户点 i i i出发。
- ∑ j = 1 n \sum_{j=1}^{n} ∑j=1n: 表示车辆访问每个客户点 j j j。
-
d j ⋅ x i j k d_j \cdot x_{ij}^k dj⋅xijk:
- 表示车辆 k k k从客户点 i i i到客户点 j j j所运输的需求量。
-
总之, 就是考虑了k车经过的全部的(i,j)对, 把所有的j需要的货物量 d j d_j dj添加起来, 也就是一路上要运输的总的数量. 不能超过车辆 k k k的最大容量 Q k Q_k Qk
参考文章
@若冰(马世拓)