## 3 New Compact Models
### Solving the New Models via Constraint Programming  
Modern Constraint Programming solvers such as Google OR-Tools CP-SAT [44]--the one adopted for the present work--are able to solve compact MILP models efficiently [45]. In particular, these solvers are very effective in treating logical inferences that can be expressed effectively without the use of big-\(M\) coefficients (that weaken linear relaxations and consequently worsen solving times) in their syntax. The two MILP models discussed in Sections 3.1 and 3.2 use such a technique to describe the nonlinear relation between the variable \(x_{ij}\) and the set of variables \(\{y_{i},u_{j}^{t},d_{j},w_{j}\}\) in order to turn the constraints off whenever the value of \(x_{ij}\) is equal to zero. In this section, we will therefore manipulate the models previously introduced in order to transform the constraints involving big-\(M\)s into logical inferences. Notice that this operation mentioned above is not strictly required, since CP-SAT is able to deal with big-\(M\) constraints natively, but according to some preliminary tests, using logical inferences enhances the performance of the solver. Conversely, MILP solvers such as CPLEX [46]--the one adopted for the present work--that are also able to treat logical inferences without big-\(M\) constraints present a strong degradation of the performances when big-\(M\) constraints are removed. For this reason, in the experiments reported in Section 4, we will use big-\(M\) constraints for the MILP solver and logical inferences for the CP solver.  
Finally, it can be observed that CP solvers only accept integer-valued variables, which means that the value of the \(c_{ij}\)s should be discretized before being passed to the model in case they are not integer. See Montemanni and Dell'Amico [45] for a deeper traction.  
In detail, the _Complete_ model can be adapted by modifying constraints (3), (6), (9) and (10), which are substituted by the following ones:  
\[x_{ij} \implies y_{j}=y_{i}+1 \forall(i,j)\in A:j\
eq r \tag{21}\] \[x_{ij} \implies u_{j}^{t}\geq u_{i}^{t} \forall t\in V^{R},(i,j)\in A\] (22) \[x_{ij} \implies d_{j}=d_{i}+w_{j}+c_{ij} \forall(i,j)\in A \tag{23}\]  
Constraints (21) implement subtour elimination. The nonlinear relationship \(y_{j}=(y_{i}+1)x_{ij}\) is modeled by setting the value of \(y_{j}\) to \(y_{i}+1\) if \(x_{ij}=1\) (true). Technically, the logical implication is implemented through the _OnlyEnforcelf_ construct of the CP-SAT solver [44]. Constraints (22) are the precedence-enforcing constraints that set the value of \(u_{j}^{t}\) to be greater than or equal to \(u_{j}^{t}\) if \(x_{ij}=1\) and model the nonlinear relationship \(u_{j}^{t}\geq u_{i}^{t}x_{ij}\). Constraints (23) set the value of \(d_{j}\) to \(d_{i}+w_{j}+c_{ij}\) if \(x_{ij}=1\). The set of constraints (23) deals therefore with the nonlinear relationship \(\left(d_{j}-d_{i}-w_{j}-c_{ij}\right)x_{ij}=0\). Notice that the two constraints (9) and (10) are now combined in a single set of constraints.  
Analogously, it is possible to obtain a version of the _Reduced_ model based on logical inferences by changing constraints (3) to (21) and substituting constraints (19), (9) and (10) with the following new ones:  
\[x_{ij} \implies u_{j}^{t}\geq u_{i}^{t} \forall t\in V_{0}^{R},(i,j)\in A_{0} \tag{24}\] \[x_{ij} \implies d_{j}=d_{i}+w_{j}+c_{ij} \forall(i,j)\in A_{0} \tag{25}\]  
Notice that constraints (24) and (25) are the versions of (22) and (23) specialized to the reduced graph \(G_{0}\) for what concerns zero-cost precedences and that constraints (25) cover again both the sets (9) and (10).