### 3.7.207. Sequence dependent set-up

Denotes the fact that a constraint can be used for modelling sequence dependent set -up between pairs of tasks. Given,

• a collection of $n$ tasks $\mathrm{\pi ―}$, where each task ${t}_{i}\beta \mathrm{\pi ―}$ $\left(1\beta €i\beta €n\right)$ has an origin ${o}_{i}$, a duration ${d}_{i}$, an end ${e}_{i}$ $\left({o}_{i}+{d}_{i}={e}_{i}\right)$ and a machine ${m}_{i}$ to which it will be assigned,

• and a $n$ by $n$ matrix $\mathrm{\beta ³}$ of positive integers ${\mathrm{\Xi ΄}}_{ij}$ $i,j\beta \left[1,n\right]$ where ${\mathrm{\pi \pi \pi €}}_{i}$ denotes the ${i}^{th}$ row of matrix $\mathrm{\beta ³}$,

we want to express the fact that ${\mathrm{\Xi ΄}}_{ij}$ enforces a minimum distance between the completion of task ${t}_{i}\beta \mathrm{\pi ―}$ and the start of task ${t}_{j}\beta \mathrm{\pi ―}$ under the hypotheses that (a)Β both tasks are assigned the same machine (i.e.,Β ${m}_{i}={m}_{j}$) and that (b)Β task ${t}_{j}$ immediately follows task ${t}_{i}$ (i.e.,Β there is no task ${t}_{k}\beta \mathrm{\pi ―}$ $\left(k\beta \left\{i,j\right\}\right)$ such that ${m}_{k}={m}_{i}\beta §{e}_{i}\beta €{o}_{k}\beta §{e}_{k}\beta €{o}_{j}$). In addition, tasks assigned to the same machine should not overlap (i.e.,Β  such that ${m}_{i}={m}_{j}$ we have ${e}_{i}\beta €{o}_{j}\beta ¨{e}_{j}\beta €{o}_{i}$). We show how to model the previous sequence dependent set -up constraint under the hypothesis that we have one single machine. Without loss of generality we assume that ${\mathrm{\Xi ΄}}_{ii}=0$ for all $i\beta \left[1,n\right]$.

In a first phase we create for each task ${t}_{i}\beta \mathrm{\pi ―}$ $\left(1\beta €i\beta €n\right)$ three additional variables ${s}_{i}$, ${g}_{i}$ and ${c}_{i}$ that respectively correspond to:

• The successor variable ${s}_{i}\beta \left[1,n\right]$ allows to get the immediate successor of task ${t}_{i}$. On the one hand, the assignment ${s}_{i}=i$ denotes the fact that task ${t}_{i}$ has no immediate successor (i.e.,Β task ${t}_{i}$ is the last task running on machine ${m}_{i}$), on the other hand, ${s}_{i}=j$ denotes the fact that task ${t}_{j}$ is the immediate successor of task ${t}_{i}$.

• The gap variable ${g}_{i}$ represents the size of the gap between the end of task ${t}_{i}$ and the start of its immediate successor (the gap is equal to 0 when task ${t}_{i}$ has no immediate successor).

• The extended completion variable ${c}_{i}$ represents the sum of the end of task ${t}_{i}$ and the corresponding gap variable ${g}_{i}$ (i.e.,Β ${c}_{i}={e}_{i}+{g}_{i}$).

In a second phase we post for each task ${t}_{i}\beta \mathrm{\pi ―}$ $\left(1\beta €i\beta €n\right)$ the following constraints:

Finally in a third phase we create a collection of nodes $\mathrm{\pi ½\pi Ύ\pi ³\pi ΄\pi }$ where each item corresponds to a task ${t}_{i}\beta \mathrm{\pi ―}$ $\left(1\beta €i\beta €n\right)$ and has an $\mathrm{\pi \pi \pi \pi \pi ‘}$ attribute set to $i$, a $\mathrm{\pi \pi \pi \pi }$ attribute set to ${s}_{i}$, a $\mathrm{\pi \pi \pi \pi \pi }$ attribute set to ${o}_{i}$ and an $\mathrm{\pi \pi \pi }$ attribute set to ${c}_{i}$. We post a $\mathrm{\pi \pi \pi \pi \pi \pi \pi \pi }_\mathrm{\pi \pi \pi \pi }$$\left(1,\mathrm{\pi ½\pi Ύ\pi ³\pi ΄\pi }\right)$ constraint for linking the successor variables, the start variables and the extended completion variables associated with the different tasks. The first argument of the $\mathrm{\pi \pi \pi \pi \pi \pi \pi \pi }_\mathrm{\pi \pi \pi \pi }$ constraint enforces one single path corresponding to the succession of the different tasks on the unique machine.