## 3 Multi-Objective Optimization Algorithms
### Optimized multi-Objective Particle Swarm Optimization (OMOPSO)

Table 3: Comparisons between metaheuristic methods [16; 17; 18; 19; 37; 40; 41; 42; 43]. ```
1:Begin
2:Step 1: initialize positions for all sperms. 3:Step 2: initialize Winners. 4:Step 2: archive the Winners in \(\in-\textit{archive}\)
5:Step 3: crowd the winners using crowding operation. 6:Step 4: define counter (\(i\)) and define number of maximum iterations (\(i_{\text{Max}}\)). 7:Step 5: do//this do is a do--while
8:For \(<\)each sperm\(>\)do
9: Select winner from the sperm swarm
10: Update sperms positions using the predefined sperm velocity update rule (perform swim)
11: Perform mutation procedure (Algorithm 5)
12: Evaluate the fitness for each sperm
13: Update personal sperm current best solution
14:End if
15: Update Set of Winners (SoW)
16: Archive winner in \(\in-\textit{archive}\)
17: Crowd the SoW using crowding operation
18: Update value of counter (i)
19:Step 6: while\(i<i_{\text{Max}}\)
20:Step 7: archive results in \(\in-\textit{archive}\)
21:End procedure
```  
**Algorithm 4**Multi-objective Optimization Algorithm based on Sperm Fertilization Procedure (MOSFP) [19]  
MOSFP algorithm is our algorithm proposed in [19] that simulates sperm swarm motility when they fertilize the egg. This algorithm is a multi-objective version of SSO algorithm that proposed in [37]. MOSFP algorithm performs a set of operations to find a solution for multi-objective optimization problems. These operations are crowding, which is used to crowd the global best solutions that are known as winners, mutation, which divides the swarm into three equal parts, after that, performs uniform mutation on the first part and non-uniform mutation on the second part, and also it does not apply any mutation on the third part of the swarm. At the end, it performs archive on the winners. Algorithm 4 summarizes MOSFP procedure. In addition, Algorithm 5 summarizes the mutation part of MOSFP algorithm [19]. Appendix A demonstrates how the MOSFET algorithm works. ```
1:Begin
2:Step 1: initialize positions for all sperms. 3:Step 2: initialize Winners. 4:Step 2: archive the Winners in \(\in-\textit{archive}\)
5:Step 3: crowd the winners using crowding operation. 6:Step 4: define counter (\(i\)) and define number of maximum iterations (\(i_{\text{Max}}\)). 7:Step 5: do//this do is a do--while
8:For \(<\)each sperm\(>\)do
9: Select winner from the sperm swarm
10: Update sperms positions using the predefined sperm velocity update rule (perform swim)
11: Perform mutation procedure (Algorithm 5)
12: Evaluate the fitness for each sperm
13: Update personal sperm current best solution
14:End if
15: Update Set of Winners (SoW)
16: Archive winner in \(\in-\textit{archive}\)
17: Crowd the SoW using crowding operation
18: Update value of counter (i)
19:Step 6: while\(i<i_{\text{Max}}\)
20:Step 7: archive results in \(\in-\textit{archive}\)
21:End procedure
```  
**Algorithm 5**Multi-objective Optimization Algorithm based on Swarm Fertilization Procedure (MOSFP) [19]  
We have standardized all the symbols and the naming convention throughout the manuscript, which the abbreviation of these algorithms and their pseudocodes are kept as their resources [16; 19; 45; 46] without any changes. The abbreviations of previous mentioned algorithms are summarized in the following Table 4:  
_The Crossover and Mutation of Algorithms_  
Based on the previous pseudocodes of the aforementioned algorithms, we can notice that NSGA-II and SPEA2 use both crossover and mutation operations while OMOPSO and MOSFET use different types of mutation operations. In this section, we review these operations based on the JMetal tool [47]. JMetal tool is considered as one of the most popular tool in the area of optimization, which contains many types of single-objective and multi-objective optimization algorithms. Crossover operator is a genetic operator that changes a chromosome from one generation to the next to produce new results. NSGA-II and SPEA2 use Simulated Binary Crossover (SBX) [48]. The SBX of chromosome (_X_) can be calculated by:  
\[\left\{