p10 | Pickup and Delivery Problem with Time Windows (PDPTW)¶
See also
This problem is sourced from EvoCut.
Note
We add implicit assumptions that travel times \(d^k_{0i}, d^k_{iH} \geq 0\) and \(d_{ij} > 0\), time windows \(\tau^-_i, \tau^+_i \ge 0\) with \(\tau^-_i \geq \tau^+_i\), and that travel times satisfy the triangle inequalities \(d^k_{0i} \le d^k_{0j} + d_{ji}\) and \(d_{ij} \le d_{im} + d_{mj}\).
\(d_{ij} > 0\) is necessary to eliminate 2-cycles and ensure there is a strict ordering of jobs in a route.
EvoCut arXiv submission
v1does not include this problem.EvoCut arXiv submission
v2proposes four inequalities used to generate formulationsp10.b-e.
Description¶
Route a fleet of vehicles to serve pickup-and-delivery requests in precedence order, subject to time window constraints, minimizing total travel cost. Each request has a pickup location that must be served within a time window. Job rejection is permitted via self-loops with a penalty equal to the job’s loaded travel time. Formulated as a MILP over a complete directed graph of truck and job nodes.
Formulations¶
Formulation a (valid)¶
See also
This formulation is sourced from EvoCut.
Note
This is the MILP formulation given in Section F.5 of the v2 arXiv paper.
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of trucks/vehicles in the fleet |
integer |
scalar |
|
Number of pickup and delivery jobs |
integer |
scalar |
|
Travel time from job i’s return terminal to job j’s pickup terminal; d[i][i] is the loaded time (rejection penalty) of job i |
continuous |
|
|
Travel time from the home terminal of truck k to job i’s pickup terminal |
continuous |
|
|
Travel time from job i’s return terminal to the home terminal of truck k |
continuous |
|
|
Time at which each truck becomes available |
continuous |
|
|
Earliest permissible arrival time at each job’s pickup terminal |
continuous |
|
|
Latest permissible arrival time at each job’s pickup terminal |
continuous |
|
Definitions¶
Name |
Description |
Formulation |
|---|---|---|
|
Big-M constant for arrival-time propagation: upper bound on any feasible arrival time |
\(M = 2 \max_{i,j \in \{0,\dots,N-1\}} d_{ij}\) |
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if arc (u,v) is selected in the routing cycle cover; x[K+i][K+i]=1 means job i is rejected |
binary |
|
|
Arrival time at job i’s pickup terminal |
continuous |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of trucks is at least one. |
\(K \geq 1\) |
yes |
Number of jobs is at least one. |
\(N \geq 1\) |
yes |
All travel times between jobs are strictly positive. |
\(d_{ij} > 0 \quad \forall i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for depot-to-job travel: going directly to job i is no longer than going via job j first. |
\(d^k_{0i} \leq d^k_{0j} + d_{ji} \quad \forall k \in \{0,\dots,K-1\},\, i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for job-to-job travel. |
\(d_{ij} \leq d_{im} + d_{mj} \quad \forall i, j, m \in \{0,\dots,N-1\}\) |
yes |
Truck available times are nonnegative. |
\(v^k \geq 0 \quad \forall k \in \{0,\dots,K-1\}\) |
yes |
Earliest permissible arrival times are nonnegative. |
\(\tau^-_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Latest permissible arrival times are nonnegative. |
\(\tau^+_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Constraints¶
Each node has exactly one outgoing arc.
\[ \sum_{v=0}^{K+N-1} x_{uv} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Each node has exactly one incoming arc.
\[ \sum_{v=0}^{K+N-1} x_{vu} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Arrival time at job i is at least the earliest possible arrival from any truck.
\[ \delta_i - \sum_{k=0}^{K-1} (d^k_{0i} + v^k)\,x_{k,K+i} \ge 0 \quad \forall i \in \{0,\dots,N-1\} \]Arrival time propagation between consecutive jobs via big-M.
\[ \delta_j - \delta_i - M\,x_{K+i,K+j} + (d_{ii}+d_{ij})\,x_{K+i,K+i} \ge d_{ii}+d_{ij}-M \quad \forall i,j \in \{0,\dots,N-1\} \]Time-window feasibility for each job’s pickup.
\[ \tau^-_i \le \delta_i \le \tau^+_i \quad \forall i \in \{0,\dots,N-1\} \]
Objective¶
Minimize total travel cost: deadhead from truck homes, inter-job travel, and returns to truck homes.
Formulation b (valid)¶
See also
This formulation is sourced from EvoCut.
Note
Any arc from job \(i\) to job \(j\) whose travel time makes job \(j\)’s time window unreachable from job \(i\) is fixed to zero.
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of trucks/vehicles in the fleet |
integer |
scalar |
|
Number of pickup and delivery jobs |
integer |
scalar |
|
Travel time from job i’s return terminal to job j’s pickup terminal; d[i][i] is the loaded time (rejection penalty) of job i |
continuous |
|
|
Travel time from the home terminal of truck k to job i’s pickup terminal |
continuous |
|
|
Travel time from job i’s return terminal to the home terminal of truck k |
continuous |
|
|
Time at which each truck becomes available |
continuous |
|
|
Earliest permissible arrival time at each job’s pickup terminal |
continuous |
|
|
Latest permissible arrival time at each job’s pickup terminal |
continuous |
|
Definitions¶
Name |
Description |
Formulation |
|---|---|---|
|
Earliest feasible arrival time at job i: maximum of the time-window lower bound and the earliest reachable time from any truck. |
\(\mathrm{EST}_i = \max\!\left(\tau^-_i,\, \min_{k \in \{0,\dots,K-1\}} (v^k + d^k_{0i})\right) \quad \forall i \in \{0,\dots,N-1\}\) |
|
Set of arc pairs (i, j) that are infeasible due to time windows: job j cannot be served after job i. |
\(\mathcal{A}^- = \{(i,j) \in \{0,\dots,N-1\}^2 : i \neq j \wedge \mathrm{EST}_i + d_{ii} + d_{ij} > \tau^+_j\}\) |
|
Big-M constant for arrival-time propagation: upper bound on any feasible arrival time. |
\(M = 2 \max_{i,j \in \{0,\dots,N-1\}} d_{ij}\) |
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if arc (u,v) is selected in the routing cycle cover; x[K+i][K+i]=1 means job i is rejected |
binary |
|
|
Arrival time at job i’s pickup terminal |
continuous |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of trucks is at least one. |
\(K \geq 1\) |
yes |
Number of jobs is at least one. |
\(N \geq 1\) |
yes |
All travel times between jobs are strictly positive. |
\(d_{ij} > 0 \quad \forall i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for depot-to-job travel: going directly to job i is no longer than going via job j first. |
\(d^k_{0i} \leq d^k_{0j} + d_{ji} \quad \forall k \in \{0,\dots,K-1\},\, i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for job-to-job travel. |
\(d_{ij} \leq d_{im} + d_{mj} \quad \forall i, j, m \in \{0,\dots,N-1\}\) |
yes |
Truck available times are nonnegative. |
\(v^k \geq 0 \quad \forall k \in \{0,\dots,K-1\}\) |
yes |
Earliest permissible arrival times are nonnegative. |
\(\tau^-_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Latest permissible arrival times are nonnegative. |
\(\tau^+_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Constraints¶
Each node has exactly one outgoing arc.
\[ \sum_{v=0}^{K+N-1} x_{uv} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Each node has exactly one incoming arc.
\[ \sum_{v=0}^{K+N-1} x_{vu} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Arrival time at job i is at least the earliest possible arrival from any truck.
\[ \delta_i - \sum_{k=0}^{K-1} (d^k_{0i} + v^k)\,x_{k,K+i} \ge 0 \quad \forall i \in \{0,\dots,N-1\} \]Arrival time propagation between consecutive jobs via big-M.
\[ \delta_j - \delta_i - M\,x_{K+i,K+j} + (d_{ii}+d_{ij})\,x_{K+i,K+i} \ge d_{ii}+d_{ij}-M \quad \forall i,j \in \{0,\dots,N-1\} \]Time-window feasibility for each job’s pickup.
\[ \tau^-_i \le \delta_i \le \tau^+_i \quad \forall i \in \{0,\dots,N-1\} \]EC1: Fix to zero any arc from job i to job j that is infeasible due to time windows.
\[ x_{K+i,K+j} = 0 \quad \forall (i,j) \in \mathcal{A}^- \]
Objective¶
Minimize total travel cost: deadhead from truck homes, inter-job travel, and returns to truck homes.
Formulation c (valid)¶
See also
This formulation is sourced from EvoCut.
Note
For each pair of jobs \((i, j)\) that are individually feasible but where both sequencings can’t both occur, at most one of \(x_{K+i,K+j}\), \(x_{K+j,K+i}\), or rejection self-loop \(x_{K+i,K+i}\) may be active.
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of trucks/vehicles in the fleet |
integer |
scalar |
|
Number of pickup and delivery jobs |
integer |
scalar |
|
Travel time from job i’s return terminal to job j’s pickup terminal; d[i][i] is the loaded time (rejection penalty) of job i |
continuous |
|
|
Travel time from the home terminal of truck k to job i’s pickup terminal |
continuous |
|
|
Travel time from job i’s return terminal to the home terminal of truck k |
continuous |
|
|
Time at which each truck becomes available |
continuous |
|
|
Earliest permissible arrival time at each job’s pickup terminal |
continuous |
|
|
Latest permissible arrival time at each job’s pickup terminal |
continuous |
|
Definitions¶
Name |
Description |
Formulation |
|---|---|---|
|
Earliest start time for job i: maximum of its time-window lower bound and the earliest any truck can arrive |
\(\mathrm{EST}_i = \max\!\left(\tau^-_i,\, \min_{k \in \{0,\dots,K-1\}} (v^k + d^k_{0i})\right) \quad \forall i \in \{0,\dots,N-1\}\) |
|
Set of infeasible sequencing pairs (i,j): job j cannot follow job i without violating j’s time window |
\(\mathcal{A}^- = \{(i,j) \in \{0,\dots,N-1\}^2 : i \ne j \wedge \mathrm{EST}_i + d_{ii} + d_{ij} > \tau^+_j\}\) |
|
Set of mutually feasible pairs: distinct jobs where neither sequencing direction is in A_minus |
\(F_2 = \{(i,j) \in \{0,\dots,N-1\}^2 : i \ne j,\, (i,j) \notin \mathcal{A}^-,\, (j,i) \notin \mathcal{A}^-\}\) |
|
Big-M constant for arrival-time propagation: upper bound on any feasible arrival time |
\(M = 2 \max_{i,j \in \{0,\dots,N-1\}} d_{ij}\) |
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if arc (u,v) is selected in the routing cycle cover; x[K+i][K+i]=1 means job i is rejected |
binary |
|
|
Arrival time at job i’s pickup terminal |
continuous |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of trucks is at least one. |
\(K \geq 1\) |
yes |
Number of jobs is at least one. |
\(N \geq 1\) |
yes |
All travel times between jobs are strictly positive. |
\(d_{ij} > 0 \quad \forall i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for depot-to-job travel: going directly to job i is no longer than going via job j first. |
\(d^k_{0i} \leq d^k_{0j} + d_{ji} \quad \forall k \in \{0,\dots,K-1\},\, i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for job-to-job travel. |
\(d_{ij} \leq d_{im} + d_{mj} \quad \forall i, j, m \in \{0,\dots,N-1\}\) |
yes |
Truck available times are nonnegative. |
\(v^k \geq 0 \quad \forall k \in \{0,\dots,K-1\}\) |
yes |
Earliest permissible arrival times are nonnegative. |
\(\tau^-_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Latest permissible arrival times are nonnegative. |
\(\tau^+_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Constraints¶
Each node has exactly one outgoing arc.
\[ \sum_{v=0}^{K+N-1} x_{uv} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Each node has exactly one incoming arc.
\[ \sum_{v=0}^{K+N-1} x_{vu} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Arrival time at job i is at least the earliest possible arrival from any truck.
\[ \delta_i - \sum_{k=0}^{K-1} (d^k_{0i} + v^k)\,x_{k,K+i} \ge 0 \quad \forall i \in \{0,\dots,N-1\} \]Arrival time propagation between consecutive jobs via big-M.
\[ \delta_j - \delta_i - M\,x_{K+i,K+j} + (d_{ii}+d_{ij})\,x_{K+i,K+i} \ge d_{ii}+d_{ij}-M \quad \forall i,j \in \{0,\dots,N-1\} \]Time-window feasibility for each job’s pickup.
\[ \tau^-_i \le \delta_i \le \tau^+_i \quad \forall i \in \{0,\dots,N-1\} \]EC2: For each mutually feasible pair (i,j), at most one of the two sequencing directions or a rejection of i can hold.
\[ x_{K+i,K+j} + x_{K+j,K+i} + x_{K+i,K+i} \le 1 \quad \forall (i,j) \in F_2 \]
Objective¶
Minimize total travel cost: deadhead from truck homes, inter-job travel, and returns to truck homes.
Formulation d (valid)¶
See also
This formulation is sourced from EvoCut.
Note
For each clique \(C\) in the time-window conflict graph (pairs of jobs that cannot share any truck route), at least \(|C| - |K_C|\) jobs in \(C\) must be rejected, where \(|K_C|\) is the number of trucks that can serve any job in \(C\).
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of trucks/vehicles in the fleet |
integer |
scalar |
|
Number of pickup and delivery jobs |
integer |
scalar |
|
Travel time from job i’s return terminal to job j’s pickup terminal; d[i][i] is the loaded time (rejection penalty) of job i |
continuous |
|
|
Travel time from the home terminal of truck k to job i’s pickup terminal |
continuous |
|
|
Travel time from job i’s return terminal to the home terminal of truck k |
continuous |
|
|
Time at which each truck becomes available |
continuous |
|
|
Earliest permissible arrival time at each job’s pickup terminal |
continuous |
|
|
Latest permissible arrival time at each job’s pickup terminal |
continuous |
|
Definitions¶
Name |
Description |
Formulation |
|---|---|---|
|
Earliest start time for each job: max of time window lower bound and earliest reachable time from any truck |
\(\mathrm{EST}_i = \max\!\left(\tau^-_i,\, \min_{k \in \{0,\dots,K-1\}} (v^k + d^k_{0i})\right) \quad \forall i \in \{0,\dots,N-1\}\) |
|
Set of directed job pairs (i,j) where job j cannot follow job i due to time window infeasibility |
\(\mathcal{A}^- = \{(i,j) \in \{0,\dots,N-1\}^2 : i \ne j \wedge \mathrm{EST}_i + d_{ii} + d_{ij} > \tau^+_j\}\) |
|
Set of trucks that can feasibly serve at least one job in clique C within its time window |
\(K_C = \{k \in \{0,\dots,K-1\} : \exists\, i \in C,\ v^k + d^k_{0i} \le \tau^+_i\} \quad \forall C \subseteq \{0,\dots,N-1\}\) |
|
Family of cliques in the conflict graph induced by A^-: subsets C of jobs such that every distinct pair (i,j) in C has both (i,j) and (j,i) in A^- |
\(\mathcal{C} = \{C \subseteq \{0,\dots,N-1\} : \forall i, j \in C,\ i \ne j \Rightarrow (i,j) \in \mathcal{A}^- \wedge (j,i) \in \mathcal{A}^-\}\) |
|
Big-M constant for arrival-time propagation: upper bound on any feasible arrival time |
\(M = 2 \max_{i,j \in \{0,\dots,N-1\}} d_{ij}\) |
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if arc (u,v) is selected in the routing cycle cover; x[K+i][K+i]=1 means job i is rejected |
binary |
|
|
Arrival time at job i’s pickup terminal |
continuous |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of trucks is at least one. |
\(K \geq 1\) |
yes |
Number of jobs is at least one. |
\(N \geq 1\) |
yes |
All travel times between jobs are strictly positive. |
\(d_{ij} > 0 \quad \forall i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for depot-to-job travel: going directly to job i is no longer than going via job j first. |
\(d^k_{0i} \leq d^k_{0j} + d_{ji} \quad \forall k \in \{0,\dots,K-1\},\, i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for job-to-job travel. |
\(d_{ij} \leq d_{im} + d_{mj} \quad \forall i, j, m \in \{0,\dots,N-1\}\) |
yes |
Truck available times are nonnegative. |
\(v^k \geq 0 \quad \forall k \in \{0,\dots,K-1\}\) |
yes |
Earliest permissible arrival times are nonnegative. |
\(\tau^-_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Latest permissible arrival times are nonnegative. |
\(\tau^+_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Constraints¶
Each node has exactly one outgoing arc.
\[ \sum_{v=0}^{K+N-1} x_{uv} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Each node has exactly one incoming arc.
\[ \sum_{v=0}^{K+N-1} x_{vu} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Arrival time at job i is at least the earliest possible arrival from any truck.
\[ \delta_i - \sum_{k=0}^{K-1} (d^k_{0i} + v^k)\,x_{k,K+i} \ge 0 \quad \forall i \in \{0,\dots,N-1\} \]Arrival time propagation between consecutive jobs via big-M.
\[ \delta_j - \delta_i - M\,x_{K+i,K+j} + (d_{ii}+d_{ij})\,x_{K+i,K+i} \ge d_{ii}+d_{ij}-M \quad \forall i,j \in \{0,\dots,N-1\} \]Time-window feasibility for each job’s pickup.
\[ \tau^-_i \le \delta_i \le \tau^+_i \quad \forall i \in \{0,\dots,N-1\} \]EC3: For each clique C in the conflict graph, at least |C|-|K_C| jobs in C must be rejected.
\[ \sum_{i \in C} x_{K+i,K+i} \ge |C| - |K_C| \quad \forall C \in \mathcal{C}:\,|C|>|K_C| \]
Objective¶
Minimize total travel cost: deadhead from truck homes, inter-job travel, and returns to truck homes.
Formulation e (valid)¶
See also
This formulation is sourced from EvoCut.
Note
For each triple \((i, k, j)\) where serving \(k\) after \(i\) and then \(j\) after \(k\) violates \(j\)’s time window, at most one of the two arcs \(x_{K+i,K+k}\), \(x_{K+k,K+j}\), or rejection self-loop \(x_{K+k,K+k}\) may be active.
Parameters¶
Name |
Description |
Type |
Shape |
|---|---|---|---|
|
Number of trucks/vehicles in the fleet |
integer |
scalar |
|
Number of pickup and delivery jobs |
integer |
scalar |
|
Travel time from job i’s return terminal to job j’s pickup terminal; d[i][i] is the loaded time (rejection penalty) of job i |
continuous |
|
|
Travel time from the home terminal of truck k to job i’s pickup terminal |
continuous |
|
|
Travel time from job i’s return terminal to the home terminal of truck k |
continuous |
|
|
Time at which each truck becomes available |
continuous |
|
|
Earliest permissible arrival time at each job’s pickup terminal |
continuous |
|
|
Latest permissible arrival time at each job’s pickup terminal |
continuous |
|
Definitions¶
Name |
Description |
Formulation |
|---|---|---|
|
Earliest start time for job i: the maximum of its time window lower bound and the earliest any truck can reach it |
\(\mathrm{EST}_i = \max\!\left(\tau^-_i,\, \min_{k \in \{0,\dots,K-1\}} (v^k + d^k_{0i})\right) \quad \forall i \in \{0,\dots,N-1\}\) |
|
Set of arc pairs (i,j) that are infeasible: serving j after i always violates j’s time window upper bound |
\(\mathcal{A}^- = \{(i,j) \in \{0,\dots,N-1\}^2 : i \ne j \wedge \mathrm{EST}_i + d_{ii} + d_{ij} > \tau^+_j\}\) |
|
Set of incompatible triples (i,k,j): routing i->k->j always violates j’s time window upper bound |
\(Q = \{(i,k,j) \in \{0,\dots,N-1\}^3 : i \ne k,\, k \ne j,\, (i,k) \notin \mathcal{A}^-,\, (k,j) \notin \mathcal{A}^-,\, \max(\mathrm{EST}_k,\, \mathrm{EST}_i + d_{ii} + d_{ik}) + d_{kk} + d_{kj} > \tau^+_j\}\) |
|
Big-M constant for arrival-time propagation: upper bound on any feasible arrival time |
\(M = 2 \max_{i,j \in \{0,\dots,N-1\}} d_{ij}\) |
Variables¶
Name |
Description |
Type |
Shape / Indices |
|---|---|---|---|
|
1 if arc (u,v) is selected in the routing cycle cover; x[K+i][K+i]=1 means job i is rejected |
binary |
|
|
Arrival time at job i’s pickup terminal |
continuous |
|
Assumptions¶
Description |
Formulation |
Implicit |
|---|---|---|
Number of trucks is at least one. |
\(K \geq 1\) |
yes |
Number of jobs is at least one. |
\(N \geq 1\) |
yes |
All travel times between jobs are strictly positive. |
\(d_{ij} > 0 \quad \forall i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for depot-to-job travel: going directly to job i is no longer than going via job j first. |
\(d^k_{0i} \leq d^k_{0j} + d_{ji} \quad \forall k \in \{0,\dots,K-1\},\, i, j \in \{0,\dots,N-1\}\) |
yes |
Triangle inequality for job-to-job travel. |
\(d_{ij} \leq d_{im} + d_{mj} \quad \forall i, j, m \in \{0,\dots,N-1\}\) |
yes |
Truck available times are nonnegative. |
\(v^k \geq 0 \quad \forall k \in \{0,\dots,K-1\}\) |
yes |
Earliest permissible arrival times are nonnegative. |
\(\tau^-_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Latest permissible arrival times are nonnegative. |
\(\tau^+_i \geq 0 \quad \forall i \in \{0,\dots,N-1\}\) |
yes |
Constraints¶
Each node has exactly one outgoing arc.
\[ \sum_{v=0}^{K+N-1} x_{uv} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Each node has exactly one incoming arc.
\[ \sum_{v=0}^{K+N-1} x_{vu} = 1 \quad \forall u \in \{0,\dots,K+N-1\} \]Arrival time at job i is at least the earliest possible arrival from any truck.
\[ \delta_i - \sum_{k=0}^{K-1} (d^k_{0i} + v^k)\,x_{k,K+i} \ge 0 \quad \forall i \in \{0,\dots,N-1\} \]Arrival time propagation between consecutive jobs via big-M.
\[ \delta_j - \delta_i - M\,x_{K+i,K+j} + (d_{ii}+d_{ij})\,x_{K+i,K+i} \ge d_{ii}+d_{ij}-M \quad \forall i,j \in \{0,\dots,N-1\} \]Time-window feasibility for each job’s pickup.
\[ \tau^-_i \le \delta_i \le \tau^+_i \quad \forall i \in \{0,\dots,N-1\} \]EC4: For each triple (i,k,j) where serving k after i and j after k violates the time window of j, at most one of the two arcs or a rejection of k can hold.
\[ x_{K+i,K+k} + x_{K+k,K+j} + x_{K+k,K+k} \le 1 \quad \forall (i,k,j) \in \mathcal{Q} \]
Objective¶
Minimize total travel cost: deadhead from truck homes, inter-job travel, and returns to truck homes.