## 2 Materials and Methods
### Third Step: MILP Formulation for the Incremental Scheduling of Offshore Operations
Even if the same vessels are applied, a small offset should be added to render some vessels slightly less favorable to the optimizer, e.g., by adding just 0.1 to the costs of vessel two, 0.2 to vessel three, and so forth. This offset guarantees that the plans are not interchangeable between vessels. Moreover, small offsets only have a marginal impact on the overall cost. Additionally, the cost function applies three different penalty terms (second line of Equation (1)). The first term assigns a bonus \(B^{out}\) (negative cost) for each finished OWT. The other two terms assign an increasing bonus \(B^{early}\) the earlier an operation finishes during the prediction horizon. Therefore, the cost function first normalizes the finish time of an operation over \(N\) to be between 0 and 1 and then inverts this value by subtracting one from it. Finally, this value is multiplied with \(B^{early}\) and added to the penalty term. For non-installation operations, this bonus is scaled down to prevent the optimizer from favoring shorter operations over longer ones, i.e., to prevent it from fully loading the vessel to get this bonus when it would be possible to finish installation tasks instead. These two penalty terms aim to reduce the symmetry of the model, as described later. \[J =\sum_{v=1}^{V}\Bigg{(}\sum_{k=1}^{N}\left(Y_{v,k}^{loc}\right) \cdot C_{v}^{o}+\sum_{k=1}^{N}\left(Y_{v,k}^{atBay}\right)\cdot C_{v}^{p}+\sum _{k=1}^{N}\left(Y_{v,k}^{toSite}\right)\cdot C_{v}^{m}+\sum_{k=1}^{N}\left(Y_{ v,k}^{toPort}\right)\cdot C_{v}^{m}\Bigg{)} \tag{1}\] \[-\sum_{v=1}^{V}\Bigg{(}\sum_{k=1}^{N}\left(Y_{v,k}^{out}\cdot B^{ out}\right)+\sum_{k=1}^{N}\left(\frac{X_{v,k}^{V(Out}}{N}-1\right)\cdot-B^{early}+ \sum_{k=1}^{N}\left(\frac{X_{v,k}^{VOp}}{N}-1\right)\cdot\Big{(}-0.2\cdot B^{ early}\Big{)}\Bigg{)}\]  
As the model uses an hourly, time-indexed formulation over several vessels, all decision and support variables have the dimensions of \(V\times N\) with \(V\) being the number of applied installation vessels and \(N\) representing the prediction horizon in hours. The extended model uses four binary decision variables \(Y_{v,k}^{out}\), \(Y_{v,k}^{load}\), \(Y_{v,k}^{toPort}\), \(Y_{v,k}^{toSite}\) instead of only one in the original model. These denote if a specific vessel \(v\in\mathbb{N}^{+}\) starts an aggregate operation of the given type (install OWT, load components, move to port, move to site) at a given time instance \(k\in\mathbb{N}^{+}\). Whereas these variables could be summarized as a single variable that is indexed over the operation, the model and the resulting code remain easier readable and maintainable by using distinct variables. Additionally, the model uses a total of six support variables, which directly depend on the four decision variables. These variables generally denote ongoing events. For example, if an installation is started, the MILP notes this as part of the decision variable \(Y_{v,k}^{out}\). Additionally, it denotes the ongoing installation process using the dependent support variable \(Y_{v,k}^{busy}\). Moreover, this support variable records the duration of all ongoing operations, i.e., loading, movement and installation operations. The variables \(Y_{v,k}^{loc}\), and \(X_{v,k}^{cap}\) record the position and amount of currently loaded components for each vessel at each time instance. Therefore, constraints (2) and (4) use a very similar formulation. For example, these constraints denote the capacity as equal to the last time step plus one for a started loading operation and minus one for a commenced installation operation. Additionally, they constrain the capacity by a specified maximum capacity \(CAP\) by constraint (3). The location is formulated similarly but refers to movement operations instead. As both constraints rely on the previous time instance, the MILP contains additional constraints for the first time instance in a similar fashion. Instead of referring to the previous instance, these constraints use an initial value provided to the optimizer instead.