## 3 Optimization Approach  
The formulated problem is a nonlinear, convex, constrained, many-objective problem. This is a very complex problem that requires the usage of metaheuristic optimization algorithms. Considering this, the algorithm used for the optimization was the non-dominated sorting genetic algorithm NSGA-III [45]. This algorithm is an evolutionary algorithm suited to many-objective problems. While the NSGA-II algorithm could also be applied to many-objective problems, some researchers have shown the advantages of using NSGA-III. [PERSON] et al. [46] presented a plethora of benchmarks tested on both algorithms; NSGA-III outperformed NSGA-II on all problems except knapsack ones. [PERSON] et al. [47] showed that NSGA-III obtained better results on an open shop-scheduling problem with resource constraints. While there are many ways of dealing with constraints, the implementation used for this approach was a simple feasibility-first approach that did not compute the objective values for unfeasible solutions but rather assigned them the value of the worst objective value out of the entire population plus the constraint violation [48]. Furthermore, all variables and solutions were encoded as real numbers, and box constraints were in place on all variables to disable negative quantities and exploding quantities. To this end, the box constraints required decision variables to be greater or equal to 0 and smaller than the capacity of their storage location (e.g., a product in cold storage was allowed to have values as high as the capacity of the entire cold storage). The formulation described was implemented in Python, specifically using the Pymoo library [49]. Table 3 shows the values selected for each parameter used for the results' analysis. Refer back to Table 2 for a further description of the parameters. Table 4 shows the parameters used for the three components that control the optimization algorithm: the determination of the reference directions; the NSGA-III algorithm's parameters themselves, and the parameters of the termination criterion. \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameter** & **Value** \\ \hline Reference direction method & Das–Dennis \\ Reference direction dimensions & 3 \\ Reference direction number of partitions & 12 \\ Population size & 200 \\ Initial sampling & Random \\ Selection method & Tournament selection \\ Selection pressure & 2 \\ Crossover method & Simulated binary crossover \\ Crossover Eta & 30 \\ Number of offspring & 2 \\ Mutation method & Polynomial mutation \\ Mutation Eta & 20 \\ Termination tolerance & 0.1 \\ Generation window & 30 \\ Termination criterion calculation generation & 10 \\ period & 2000 \\ Maximum number of generations & 2000 \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Parameters used for the determination of the reference directions, NSGA-III algorithm, and termination criterion. Duplicate individuals are eliminated. \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameter** & **Value** \\ \hline \(n_{i,cold}\) & 50 \\ \(n_{i,aurchouse}\) & 250 \\ \(n_{i,tunks}\) & 24 \\ \(n_{t}\) & 60 \\ \(\alpha_{1}\) & 50,000 [IU] \\ \(\alpha_{2}\) & 40\% \\ \(\alpha_{3}\) & 135 [EU] \\ \(\alpha_{4}\) & 0.7 \\ \(\alpha_{5}\) & 8 \\ \(FC_{warehouse}\) & 100 [EU] \\ \(\beta_{1}\) & 0.0004 [EU/IU] \\ \(\beta_{2}\) & 250 [EU] \\ \(\beta_{3}\) & 0.00003 [EU/IU] \\ \(\gamma\) & [30, 90] [EU] \\ \(SW_{1}\) & 100 \\ \(SW_{2}\) & 10 \\ \(SW_{3}\) & 0.1 \\ \(Lim_{1}\) & \(2.5\times 10^{6}\) [IU] \\ \(Lim_{2}\) & \(1.25\times 10^{7}\) [IU] \\ \(Lim_{3:n_{t}}\) & [50, 150] [IU] \\ \(H_{1}\) & 1 [CU/IU] \\ \(H_{2}\) & 0.5 [CU/IU] \\ \(H_{3:n_{t}}\) & [0.3, 0.7] [CU/IU] \\ \(L_{i}\) & [5, 20] [day] \\ \(\sigma_{i}\) & [1, 20] [day] \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Values used for the aforementioned formulation. Check the parameters’ descriptions in Table 2. The column value shows either the value of the parameter or a range of values.