# Bi-Objective Optimization for Joint Time-Invariant Allocation of Berths and Quay Cranes
## 5 Numerical Experiments
### Results and Analysis  
#### 5.2.1 Performance Comparison Between IMOCS and GUROBI  
In this section, we compare the results of the IMOCS algorithm with the GUROBI solver for solving instances of \(|V|\) = 10, 15, 20 to evaluate the performance of the IMOCS algorithm. The metrics evaluated are the objective function value and the CPU runtime used for solving. In the GUROBI solver, the nonlinear constraints are processed using approximate linearization, and the two objectives are solved separately by weighting multiple objectives with a preset upper bound of 7200 s. For the IMOCS algorithm, each instance is run independently 10 times in the same computational environment and the optimal objective value is selected. It is worth noting that in order to better represent the performance of IMOCS algorithm on a single objective for comparison with the results solved by GUROBI, we set the two objectives to be the same, allowing us to solve the two objectives separately instead of optimizing them simultaneously.  
The results of the solution are shown in Table 5. In the table, the first column shows the size of the problem and the second column shows the index of the instance. \(Obj_{Gi}\) and \(Obj_{Hi}\) are the values of the objective functions solved by GUROBI and IMOCS, respectively. \(T_{G}\) and \(T_{I}\) are the total CPU runtimes for GUROBI and IMOCS, and are used to solve the two objectives, respectively. The \(Gap\) is the percentage deviation of the algorithm output from the best possible solution and is calculated by \(Gap_{i}~{}=~{}(Obj_{Hi}-Obj_{Gi})/Obj_{Gi}\times 100\%\).  
As can be seen from Table 5, for instances with \(V~{}=~{}10\), the gap between the objective function values solved by IMOCS and GUROBI is 0, and the CPU runtime used by IMOCS is very small. For instances with \(V~{}=~{}15\), the difference between the objective function values obtained by the two methods is very small (the minimum difference is only 0.36%, the maximum difference is only 1.84%, and the average difference is only 0.89%), but the CPU runtime used by the IMOCS algorithm is significantly smaller than that used by GUROBI. For instances with \(V~{}=~{}20\), the gap between the objective function values obtained by the two methods is larger than for instances with \(V~{}=~{}\{10,15\}\), except for the instances where GUROBI fails to solve the problem within the time constraints, suggesting that the effectiveness of IMOCS optimization diminishes as the size of the problem increases. In fact, the gap between the two methods is not significant, with a maximum of only 8.73%.  
Moreover, the CPU runtime for IMOCS algorithm solving is acceptable in practice, i.e., around 2-4 min for a 20-vessel instance. It is worth noting that the time for GUROBI solving increases dramatically with the size of the problem. Even for instances of the same size, there are significant fluctuations in the CPU runtime for GUROBI solving. In order to more visually represent the solution result, the space-time plot of vessel berthing and the Gantt chart of QC assignments obtained from the solution for instance 10-4 are given in Figure 6. For example, vessel 1 berths at 130 m from the seaside at hour 15 of the planning time period and is serviced by QCs 1-6.