带时间窗约束的车辆路径规划问题(VRPTW)

带时间窗约束的VRP问题,即在满足约束条件的情况下,求解最短路径。

问题数学描述

假设有CC个客户点,编号从1到CC,所有的客户用集合C\mathcal{C}来表示。给定有向图G\mathcal{G}=(V,A)(\mathcal{V},\mathcal{A}),其中V=C{o,d}\mathcal{V}=\mathcal{C}\cup\{o,d\}为图中点集,包括客户集合C\mathcal{C}和车厂点oo及其复制点dd; A={(i,j)i,jV,ij}\mathcal{A}= \{(i, j)|\forall i,j\in\mathcal{V}, i\neq j\}为弧集, 表示图G\mathcal{G}中的所有弧。每一段弧(i,j)(i,j)的行驶成本为cijc_{ij}。每一个客户ii都有一个已知的需求qiq_i,以及时间窗[ai,bi][a_i, b_i]和服务时间lil_i,其中aia_i为客户ii的最早开始的服务时间,bib_i为客户ii的最晚开始的服务时间。除此之外,用TijT_{ij}来表示弧(i,j)(i,j)行驶时间。问题中的车辆均为同质的车辆,车辆的最大容量为QQ

模型定义

决策变量

  • xij{0,1},(i,j)Ax_{ij}\in\{0, 1\}, \forall (i,j)\in \mathcal{A} 为弧(i,j)(i,j)的决策变量,取值为0或1,表示弧(i,j)(i,j)是否被选中。
  • ti0iVt_i\geq 0, \forall i \in \mathcal{V} 表示车辆到达点ii的时间。
  • ui0iVu_i\geq 0, \forall i \in \mathcal{V} 表示车辆到达点ii的剩余容量。

目标函数

最小化总的行驶成本:

mini,jAcijxij\min \sum_{i,j\in\mathcal{A}} c_{ij}x_{ij}

约束

  • 离开客户的车辆数目必须为1:

jVxij=1,iC\sum_{j\in\mathcal{V}}x_{ij}=1, \forall i\in\mathcal{C}

  • 进出入车厂的数量必须相等, 车厂的流平衡约束:

jVxojiVxid=0\sum_{j\in\mathcal{V}}x_{oj} - \sum_{i\in\mathcal{V}}x_{id} = 0

  • 进出入客户的车的数量必须相等,客户点的流平衡约束:

iVxijiVxji=0,jC\sum_{i\in\mathcal{V}}x_{ij} - \sum_{i\in\mathcal{V}}x_{ji} = 0, \forall j\in\mathcal{C}

  • 车辆的容量约束, (MTZ子回路消除):

ui+qiujM(1xij),(i,j)Au_i + q_i - u_j \leq M(1-x_{ij}), \forall (i,j) \in \mathcal{A}

  • 车辆行驶时间约束:

ti+li+TijtjM(1xij),(i,j)At_i + l_i + T_{ij}- t_j \leq M(1-x_{ij}), \forall (i,j) \in \mathcal{A}

  • 客户时间窗约束:

aitibi,iVa_i \leq t_i \leq b_i, \forall i \in \mathcal{V}

  • 车辆容量约束:

0uiQ,iV0\leq u_i \leq Q, \forall i \in \mathcal{V}

完整的VRPTW的数学优化模型如下:

min(i,j)Acijxijs.t.jVxij=1,iCjVxojiVxid=0iVxjiiVxij=0,jCui+qjujM(1xij),(i,j)A, jCti+li+TijtjM(1xij),(i,j)Aaitibi,iV0uiQ,iVxij{0,1},(i,j)A\begin{align} \min & \quad \sum_{(i,j) \in \mathcal{A}} c_{ij} x_{ij} \\ \text{s.t.} & \quad \sum_{j \in \mathcal{V}} x_{ij} = 1, && \forall i \in \mathcal{C} \\ & \quad \sum_{j \in \mathcal{V}} x_{oj} - \sum_{i \in \mathcal{V}} x_{id} = 0 \\ & \quad \sum_{i \in \mathcal{V}} x_{ji} - \sum_{i \in \mathcal{V}} x_{ij} = 0, && \forall j \in \mathcal{C} \\ & \quad u_i + q_j - u_j \leq M(1 - x_{ij}), && \forall (i,j) \in \mathcal{A},\ j \in \mathcal{C} \\ & \quad t_i + l_i + T_{ij} - t_j \leq M(1 - x_{ij}), && \forall (i,j) \in \mathcal{A} \\ & \quad a_i \leq t_i \leq b_i, && \forall i \in \mathcal{V} \\ & \quad 0 \leq u_i \leq Q, && \forall i \in \mathcal{V} \\ & \quad x_{ij} \in \{0,1\}, && \forall (i,j) \in \mathcal{A} \end{align}