无人机与卡车联合配送问题建模(FSTSP)

随着电商与即时物流的快速发展,"最后一公里"配送成本通常占到整个供应链成本的 25%–40%,是降本增效的关键环节。地面卡车受道路网络与交通状况约束,而无人机具有空中直线飞行、不受地面道路限制、速度快等优势,但受续航、载重与法规限制。将两者结合:卡车作为"移动基站"携带无人机,沿路径在合适的节点起飞与收回无人机,由无人机负责那些对卡车而言"绕路严重"的客户,从而在不大幅增加车辆数量的前提下提升配送效率。

这种"卡车 + 无人机"协同配送问题最早由 Murray 和 Chu (2015) 以 Flying Sidekick Traveling Salesman Problem(FSTSP) 的形式提出,其核心决策有三:①确定卡车的行驶路径与客户服务顺序;②确定每个客户由卡车还是无人机服务;③确定无人机各架次(sortie)的起飞点与收回点。本文给出该问题的混合整数规划(MIP)模型。

问题描述

考虑一个配送场景:区域内有一个车场(配送中心)、若干个客户,以及一辆同时携带一架无人机的卡车。车场派出卡车,卡车沿路径依次访问客户;无人机可以在卡车到达的任意节点(含车场)起飞,直线飞行至某个客户完成配送后,飞回卡车路径上的某个后续节点被收回,与卡车继续前行。目标是设计卡车路径与无人机各架次,使完成全部客户配送的总时间最小,即最小化卡车返回车场的时刻(makespan)。

下图展示了一个 FSTSP 示例:卡车从车场出发,依次访问客户 1、2、3 后返回车场;在客户 1 处无人机起飞,配送客户 4 后,在客户 3 处被收回。

FSTSP示例

基本假设

为便于建模,作如下假设:

  1. 一辆卡车携带一架无人机。卡车负责运输无人机与部分包裹,其路径为从车场出发、最终返回车场的闭合回路。
  2. 无人机单次架次只服务一个客户(单件包裹载荷),服务完毕后须飞回卡车所在节点被收回。
  3. 无人机只能在卡车到达的节点(含车场)起飞与收回;起飞、收回过程需要一定时间,并入服务时间处理。
  4. 无人机沿欧氏距离直线飞行,不受道路网络约束;飞行时间与距离成正比,且单次架次从起飞到收回的总时长不超过续航 ee
  5. 每个客户恰好被服务一次,服务时间固定:卡车服务一个客户需 sts_t,无人机服务一个客户需 sds_d
  6. 同一节点不同时作为起飞点和收回点。

符号

决策变量:

  • xij{0,1}x_{ij}\in\{0, 1\}:卡车的路径决策,xij=1x_{ij}=1 表示卡车行驶弧 (i,j)(i,j)xij=0x_{ij}=0 表示不行驶;
  • yijk{0,1}y_{ijk}\in\{0, 1\}:无人机的飞行路径决策,yijk=1y_{ijk}=1 表示无人机从节点 ii 起飞,服务客户 jj,并在节点 kk 收回,yijk=0y_{ijk}=0 表示不执行该飞行路径, 无人机的起飞点、回收点与访问节点必须不相同,即 ijki\neq j\neq k
  • tiRt_i\in\mathbb{R}:卡车到达节点 ii 的时间;
  • tiRt'_i\in\mathbb{R}:无人机到达节点 ii 的时间;
  • uiZ+u_i\in\mathbb{Z}^+:为了消除子环路而引入的辅助变量: 表示第 ii 个客户点被访问的次序;
  • pij{0,1}p_{ij}\in\{0, 1\}:辅助决策变量, 如果卡车在路径上先访问了节点ii,再访问节点jj,则 pij=1p_{ij}=1,否则 pij=0p_{ij}=0, 该变量是为了确保无人机访问点的先后顺序和卡车是一致的。

参数:

  • cc:客户的总数;
  • C={1,2,,c}\mathcal{C}=\{1,2,\ldots,c\}:全部客户的编号集合;
  • CC\mathcal{C}'\subsetneq \mathcal{C}:无人机可以服务的客户子集;
  • N={0,1,,c+1}\mathcal{N}=\{0,1,\ldots,c+1\}:网络中所有节点的集合,其中 00 为车场,11cc 为客户,c+1c+1 为返回车场的复制点;
  • N0={0,1,,c}\mathcal{N}_0=\{0,1,\ldots,c\}:卡车可以离开的节点集合;
  • N+={1,,c+1}\mathcal{N}_+=\{1,\ldots,c+1\}:卡车在行驶过程中可以到达的节点集合;
  • τij\tau_{ij}: 卡车从点 ii 到点 jj 的行驶时间;
  • τij\tau'_{ij}: 无人机从点 ii 到点 jj 的飞行时间;
  • SLS_L: 无人机起飞所需的准备时间;
  • SRS_R: 无人机回收所需的收回时间;
  • ee: 无人机的飞行能力或者续航能力(以时间为单位);
  • P={(i,j,k)iN0, jC, kN+}\mathcal{P}=\{(i,j,k) | \forall i\in\mathcal{N}_0,\ j\in\mathcal{C}',\ k\in\mathcal{N}_+\}:无人机路径的三元组集合,其中 ii 是起飞点,jj 是服务的客户,kk 是收回点;
  • MM: 充分大的正数。

数学模型

目标函数

最小化卡车或无人机返回仓库的最晚时间,即完成最小化全部配送的总时间:

min tc+1\min\ t_{c+1}

约束条件

(1)卡车路径约束:卡车路径约束的主要作用是保证规划的路径是一个闭合的环路。

iN0ijxij+iN0ijkN+(i,j,k)Pyijk=1,jC(1) \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} x_{ij} + \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} = 1, \quad \forall j \in \mathcal{C} \tag{1}

jN+x0j=1(2) \sum_{j \in \mathcal{N}_+} x_{0j} = 1 \tag{2}
iN0xi,c+1=1(3) \sum_{i \in \mathcal{N}_0} x_{i, c+1} = 1 \tag{3}
uiuj+1(c+2)(1xij)0,iC,  jN+:ij(4) u_i - u_j + 1 - (c+2)(1 - x_{ij}) \leq 0, \quad \forall i \in \mathcal{C}, \; j \in \mathcal{N}_+ : i \neq j \tag{4}
1uic+2,iN+(5) 1 \leq u_i \leq c+2, \quad \forall i \in \mathcal{N}_+ \tag{5}
iN0ijxij=kN+kjxjk,jC(6) \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} x_{ij} = \sum_{\substack{k \in \mathcal{N}_+ \\ k \neq j}} x_{jk}, \quad \forall j \in \mathcal{C} \tag{6}

各个约束式的含义如下。约束式(1)确保每个客户只被访问一次(无人机和卡车加起来访问一次)。约束式(2)保证卡车一定从仓库出发一次。约束式(3)保证卡车最终必须到达终点一次。约束式(4)为子环路消除约束。约束式(5)限定了访问顺序决策变量uiu_i的取值范围。约束式(6)为卡车的路径流平衡约束。

(2)无人机路径约束:无人机的路径约束旨在确保无人机的飞行路径符合实际操作要求。

jCijkN+(i,j,k)Pyijk1,iN0(7) \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \leq 1, \quad \forall i \in \mathcal{N}_0 \tag{7}

iN0ikjC(i,j,k)Pyijk1,kN+(8) \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \leq 1, \quad \forall k \in \mathcal{N}_+ \tag{8}
2yijkhN0hixhi+lClkxlk,iC,  j{C:ij},  k{N+:(i,j,k)P}(9) 2y_{ijk} \leq \sum_{\substack{h \in \mathcal{N}_0 \\ h \neq i}} x_{hi} + \sum_{\substack{l \in \mathcal{C} \\ l \neq k}} x_{lk}, \quad \forall i \in \mathcal{C}, \; j \in \{\mathcal{C} : i \neq j\}, \; k \in \{\mathcal{N}_+ : (i,j,k) \in \mathcal{P}\} \tag{9}
y0jkhN0hkxhk,jC,  k{N+:(0,j,k)P}(10) y_{0jk} \leq \sum_{\substack{h \in \mathcal{N}_0 \\ h \neq k}} x_{hk}, \quad \forall j \in \mathcal{C}, \; k \in \{\mathcal{N}_+ : (0,j,k) \in \mathcal{P}\} \tag{10}
ukui1+(c+2)(1jC(i,j,k)Pyijk)0,iC,  k{N+:ki}(11) u_k - u_i - 1 + (c+2) \left( 1 - \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right) \geq 0, \quad \forall i \in \mathcal{C}, \; k \in \{\mathcal{N}_+ : k \neq i\} \tag{11}

各个约束式的含义如下。约束式(7)和约束式(8)限制了无人机至多可以从特定点(包括仓库)起飞或者回收一次。约束式(9)表示如果无人机从ii点起飞,且在kk点被回收,则卡车必须访问ii点和kk点。约束式(10)表示如果无人机从起点起飞并在飞点被回收,则卡车必须访问kk点。约束式(11)表示如果无人机从ii点起飞,且在kk点被回收,则卡车必须在访问kk点之前就访问ii点。

(3)卡车与无人机配合约束:卡车和无人机的配合约束是为了保证无人机和卡车在时间和空间上的一致性。具体约束如下:

titiM(1jCijkN+(i,j,k)Pyijk),iC(12) t_{i}^{\prime} \geq t_{i} - M \left( 1 - \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall i \in \mathcal{C} \tag{12}
titi+M(1jCijkN+(i,j,k)Pyijk),iC(13) t_{i}^{\prime} \leq t_{i} + M \left( 1 - \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall i \in \mathcal{C} \tag{13}
tktkM(1iN0ikjC(i,j,k)Pyijk),kN+(14) t_{k}^{\prime} \geq t_{k} - M \left( 1 - \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall k \in \mathcal{N}_+ \tag{14}
tktk+M(1iN0ikjC(i,j,k)Pyijk),kN+(15) t_{k}^{\prime} \leq t_{k} + M \left( 1 - \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall k \in \mathcal{N}_+ \tag{15}

各个约束式的含义如下。约束式(12)和约束式(13)表示如果卡车司机要在ii点放飞无人机,则无人机和卡车一定是同时到达ii点的,即ti=tit'_i = t_i。约束式(14)和约束式(15)表示如果卡车司机要在kk点回收无人机,则无人机和卡车必须同时到达kk点,即tk=tkt'_k = t_k

(4)访问时间约束:访问时间约束旨在决策卡车和无人机访问每个客户点的时间,并保证访问先后顺序和到达客户点的时间的一致性。具体约束如下:

tkth+τhk+sL(lCklmN+(k,l,m)Pyklm)+sR(iN0ikjC(i,j,k)Pyijk)M(1xhk),hN0,  k{N+:kh}(16) t_k \geq t_h + \tau_{hk} + s_L \left( \sum_{\substack{l \in \mathcal{C} \\ k \neq l}} \sum_{\substack{m \in \mathcal{N}_+ \\ (k,l,m) \in \mathcal{P}}} y_{klm} \right) + s_R \left( \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right) - M(1 - x_{hk}), \quad \forall h \in \mathcal{N}_0, \; k \in \{\mathcal{N}_+ : k \neq h\} \tag{16}
tjti+τijM(1kN+(i,j,k)Pyijk),jC,  i{N0:ij}(17) t_j' \geq t_i' + \tau_{ij}' - M \left( 1 - \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall j \in \mathcal{C}', \; i \in \{\mathcal{N}_0 : i \neq j\} \tag{17}
tktj+τjk+sRM(1iN0(i,j,k)Pyijk),jC,  k{N+:kj}(18) t_k' \geq t_j' + \tau_{jk}' + s_R - M \left( 1 - \sum_{\substack{i \in \mathcal{N}_0 \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \right), \quad \forall j \in \mathcal{C}', \; k \in \{\mathcal{N}_+ : k \neq j\} \tag{18}
tk(tjτij)e+M(1yijk),kN+,  j{C:jk},  i{N0:(i,j,k)P}(19) t_k' - (t_j' - \tau_{ij}') \leq e + M(1 - y_{ijk}), \quad \forall k \in \mathcal{N}_+, \; j \in \{\mathcal{C} : j \neq k\}, \; i \in \{\mathcal{N}_0 : (i,j,k) \in \mathcal{P}\} \tag{19}
tltkM(3jC(i,j,k)PljyijkmCmi,k,lnN+(l,m,n)P,ni,kylmnpil),iN0,  k{N+:ki},  l{C:li,  lk}(20) t_l' \geq t_k' - M \left( 3 - \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P} \\ l \neq j}} y_{ijk} - \sum_{\substack{m \in \mathcal{C} \\ m \neq i, k, l}} \sum_{\substack{n \in \mathcal{N}_+ \\ (l,m,n) \in \mathcal{P}, n \neq i, k}} y_{lmn} - p_{il} \right), \quad \forall i \in \mathcal{N}_0, \; k \in \{\mathcal{N}_+ : k \neq i\}, \; l \in \{\mathcal{C} : l \neq i, \; l \neq k\} \tag{20}

各个约束式的含义如下。约束式(16)表示如果卡车经过弧(hk)(h,k),则到达hh点的时间,加上弧(hk)(h,k)上的行驶时间,再加上卡车放飞和回收无人机的时间,小于等于卡车于kk点开始服务的时间。约束式(17)表示无人机访问客户的时间和起飞时间之间的数量先后关系。约束式(18)表示无人机到达回收点处的时间先后关系。约束式(19)表示无人机单次配送来回的总飞行时间不得超过其续航时间。约束式(20)保证了前后两次放飞无人机的时间先后关系。如果卡车经过弧(i,l)(i,l),在ii点放飞无人机,在kk点回收无人机,之后在ll点再次放飞无人机,则无人机到达kk点的时间必须小于等于其到达ll点的时间。简单来讲就是无人机被放飞后必须首先回收,然后才能再次放飞。

(5)子回路消除约束:防止出现不经过车场的子回路。uiu_ipijp_{ij}描述卡车访问的点的顺序,它们的取值与被无人机访问的点无关

uiuj1+(c+2)pij0,iC,  j{C:ij}(21) u_i - u_j - 1 + (c+2)p_{ij} \geq 0, \quad \forall i \in \mathcal{C}, \; j \in \{\mathcal{C} : i \neq j\} \tag{21}

uiuj+1(c+2)(1pij)0,iC,  j{C:ij}(22) u_i - u_j + 1 - (c+2)(1 - p_{ij}) \leq 0, \quad \forall i \in \mathcal{C}, \; j \in \{\mathcal{C} : i \neq j\} \tag{22}
pij+pji=1,iC,  j{C:ij}(23) p_{ij} + p_{ji} = 1, \quad \forall i \in \mathcal{C}, \; j \in \{\mathcal{C} : i \neq j\} \tag{23}

(6)初始条件:初始条件设置如下:

t0=0,(24) t_0 = 0, \tag{24}

t0=0,(25) t'_0 = 0, \tag{25}
p0j=1,jC(26) p_{0j} = 1, \forall j \in \mathcal{C} \tag{26}

完整模型

将上述各部分汇总如下:

Minimizetc+1Subject toiN0ijxij+iN0ijkN+(i,j,k)Pyijk=1,jCjN+x0j=1iN0xi,c+1=1uiuj+1(c+2)(1xij)0,{iC,  jN+:ij}1uic+2,iN+iN0ijxij=kN+kjxjk,jCjCijkN+(i,j,k)Pyijk1,iN0iN0ikjC(i,j,k)Pyijk1,kN+2yijkhN0hixhi+lClkxlk,{iC,  jC,  kN+:(i,j,k)P}y0jkhN0hkxhk,{jC,  kN+:(0,j,k)P}ukui1+(c+2)(1jC(i,j,k)Pyijk)0,{iC,  kN+:ki}titiM(1jCijkN+(i,j,k)Pyijk),iCtiti+M(1jCijkN+(i,j,k)Pyijk),iCtktkM(1iN0ikjC(i,j,k)Pyijk),kN+tktk+M(1iN0ikjC(i,j,k)Pyijk),kN+tkth+τhk+sL(lCklmN+(k,l,m)Pyklm)+sR(iN0ikjC(i,j,k)Pyijk)M(1xhk),{hN0,  kN+:kh}tjti+τijM(1kN+(i,j,k)Pyijk),{iN0,  jC:ij}tktj+τjk+sRM(1iN0(i,j,k)Pyijk),{jC,  kN+:kj}tk(tjτij)e+M(1yijk),{iN0,  jC,  kN+:(i,j,k)P}tltkM(3jC(i,j,k)PljyijkmCmi,k,lnN+(l,m,n)P,ni,kylmnpil),{iN0,  kN+:ki,  lC:li,  lk}uiuj1+(c+2)pij0,{iC,  jC:ij}uiuj+1(c+2)(1pij)0,{iC,  jC:ij}pij+pji=1,{iC,  jC:ij}t0=0t0=0p0j=1,jCxij{0,1},{iN0,  jN+:ij}yijk{0,1},(i,j,k)Ppij{0,1},{iC,  jC:ij}uiZ+,iN+ti0,  ti0,iN0CN+ \begin{aligned} \text{Minimize} \quad & t_{c+1} \\ \text{Subject to} \quad & \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} x_{ij} + \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} = 1, && \forall j \in \mathcal{C} \\ & \sum_{j \in \mathcal{N}_+} x_{0j} = 1 \\ & \sum_{i \in \mathcal{N}_0} x_{i, c+1} = 1 \\ & u_i - u_j + 1 - (c+2)(1 - x_{ij}) \leq 0, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{N}_+ : i \neq j\} \\ & 1 \leq u_i \leq c+2, && \forall i \in \mathcal{N}_+ \\ & \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq j}} x_{ij} = \sum_{\substack{k \in \mathcal{N}_+ \\ k \neq j}} x_{jk}, && \forall j \in \mathcal{C} \\ & \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \leq 1, && \forall i \in \mathcal{N}_0 \\ & \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk} \leq 1, && \forall k \in \mathcal{N}_+ \\ & 2y_{ijk} \leq \sum_{\substack{h \in \mathcal{N}_0 \\ h \neq i}} x_{hi} + \sum_{\substack{l \in \mathcal{C} \\ l \neq k}} x_{lk}, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{C}, \; k \in \mathcal{N}_+ : (i,j,k) \in \mathcal{P}\} \\ & y_{0jk} \leq \sum_{\substack{h \in \mathcal{N}_0 \\ h \neq k}} x_{hk}, && \forall \{j \in \mathcal{C}, \; k \in \mathcal{N}_+ : (0,j,k) \in \mathcal{P}\} \\ & u_k - u_i - 1 + (c+2)\left(1 - \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right) \geq 0, && \forall \{i \in \mathcal{C}, \; k \in \mathcal{N}_+ : k \neq i\} \\ & t_{i}^{\prime} \geq t_{i} - M\left(1 - \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall i \in \mathcal{C} \\ & t_{i}^{\prime} \leq t_{i} + M\left(1 - \sum_{\substack{j \in \mathcal{C} \\ i \neq j}} \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall i \in \mathcal{C} \\ & t_{k}^{\prime} \geq t_{k} - M\left(1 - \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall k \in \mathcal{N}_+ \\ & t_{k}^{\prime} \leq t_{k} + M\left(1 - \sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall k \in \mathcal{N}_+ \\ & t_k \geq t_h + \tau_{hk} + s_L\left(\sum_{\substack{l \in \mathcal{C} \\ k \neq l}} \sum_{\substack{m \in \mathcal{N}_+ \\ (k,l,m) \in \mathcal{P}}} y_{klm}\right) + s_R\left(\sum_{\substack{i \in \mathcal{N}_0 \\ i \neq k}} \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right) - M(1 - x_{hk}), && \forall \{h \in \mathcal{N}_0, \; k \in \mathcal{N}_+ : k \neq h\} \\ & t_j' \geq t_i' + \tau_{ij}' - M\left(1 - \sum_{\substack{k \in \mathcal{N}_+ \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall \{i \in \mathcal{N}_0, \; j \in \mathcal{C} : i \neq j\} \\ & t_k' \geq t_j' + \tau_{jk}' + s_R - M\left(1 - \sum_{\substack{i \in \mathcal{N}_0 \\ (i,j,k) \in \mathcal{P}}} y_{ijk}\right), && \forall \{j \in \mathcal{C}, \; k \in \mathcal{N}_+ : k \neq j\} \\ & t_k' - (t_j' - \tau_{ij}') \leq e + M(1 - y_{ijk}), && \forall \{i \in \mathcal{N}_0, \; j \in \mathcal{C}, \; k \in \mathcal{N}_+ : (i,j,k) \in \mathcal{P}\} \\ & t_l' \geq t_k' - M\left(3 - \sum_{\substack{j \in \mathcal{C} \\ (i,j,k) \in \mathcal{P} \\ l \neq j}} y_{ijk} - \sum_{\substack{m \in \mathcal{C} \\ m \neq i, k, l}} \sum_{\substack{n \in \mathcal{N}_+ \\ (l,m,n) \in \mathcal{P}, n \neq i, k}} y_{lmn} - p_{il}\right), && \forall \{i \in \mathcal{N}_0, \; k \in \mathcal{N}_+ : k \neq i, \; l \in \mathcal{C} : l \neq i, \; l \neq k\} \\ & u_i - u_j - 1 + (c+2)p_{ij} \geq 0, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{C} : i \neq j\} \\ & u_i - u_j + 1 - (c+2)(1 - p_{ij}) \leq 0, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{C} : i \neq j\} \\ & p_{ij} + p_{ji} = 1, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{C} : i \neq j\} \\ & t_0 = 0 \\ & t'_0 = 0 \\ & p_{0j} = 1, && \forall j \in \mathcal{C} \\ & x_{ij} \in \{0,1\}, && \forall \{i \in \mathcal{N}_0, \; j \in \mathcal{N}_+ : i \neq j\} \\ & y_{ijk} \in \{0,1\}, && \forall (i,j,k) \in \mathcal{P} \\ & p_{ij} \in \{0,1\}, && \forall \{i \in \mathcal{C}, \; j \in \mathcal{C} : i \neq j\} \\ & u_i \in \mathbb{Z}^+, && \forall i \in \mathcal{N}_+ \\ & t_i \geq 0, \; t'_i \geq 0, && \forall i \in \mathcal{N}_0 \cup \mathcal{C} \cup \mathcal{N}_+ \end{aligned}

问题变体

  • VRPD(Vehicle Routing Problem with Drones):多辆卡车、多架无人机的推广,需要同时决定客户到卡车的分配以及各卡车携带的无人机架次。
  • PDSTSP(Parallel Drone Scheduling TSP):无人机从车场独立起飞、配送并返回车场,与卡车并行作业,不依赖卡车作为移动基站。
  • 其他扩展:考虑时间窗、无人机多包裹载荷、电池更换/充电站、风速与风向、禁飞区与噪声限制、动态订单等。

求解思路:FSTSP 是 NP-hard 的(卡车全配送时退化为 TSP),实际中常用元启发式(遗传算法、模拟退火、自适应大邻域搜索等)求解大规模实例;分支定界、割平面等精确方法适用于中小规模实例。

参考文献

  1. Murray, C. C., & Chu, A. G. (2015). The flying sidekick traveling salesman problem: Optimization of drone-assisted parcel delivery. Transportation Research Part C: Emerging Technologies, 54, 86–109.
  2. Agatz, N., Bouman, P., & Schmidt, M. (2018). Optimization approaches for the traveling salesman problem with drone. Transportation Science, 52(4), 965–981.