## 4 Methodology
### The Algorithm and Its Components
#### 4.2.3 _Mowoats_ Algorithm  
_MOWOATS_ (see Algorithm 3) starts with setting the main parameters of _WOA_ and an empty \(EL\). First, a population is generated randomly from the dataset. Objective values are computed according to the mathematical description of the problem. Then, _MOWOATS_ updates the \(EL\) with the best solutions in the initial population according to Pareto dominance criterion. According to the value of \(p\), the algorithm chooses whether to apply intensification or diversification on the swarm. Therefore, it increases the chances of diversification to ensure that generated solutions are uniformly distributed over \(PF\). Furthermore, the solutions in the \(EL\) are used to guide the evolution of the swarm members during both the intensification and the diversification phases.  
In case that the number of iterations without improvement exceeds \(Max\_NonImprove\), _MOWOATS_ applies randomly either \(Intensification\_Crossover\) procedure (Algorithm 1) or \(Diversification\_Crossover\) procedure (Algorithm 2), to prevent getting trapped in local optima. At the end of the algorithm, the algorithm returns the non-dominated solutions stored in \(EL\).  
```
Initialization.  Set of particles in swarm \(Np\), number of features of each object \(d\), empty \(EL\), set \(Max\_NonImprove\) to be maximum number of iterations without improvement, and initialize the whale algorithm parameters. for\(i=1,\ldots,Np\)do  Generate initial solutions randomly from the dataset.  Compute the objective value of current solution according to objective functions that describe the problem.  Update solutions in \(EL\) according to Pareto dominance criterion. endfor Main Loop. for\(t=1,\ldots,MaxIt\)do for\(i=1,\ldots,Np\)do  Update \(WOA\) parameters \(a,A,C,l,p\). if\((p>0.2)\)then if\((|A|<1)\)then  Select a random whale \(\overrightarrow{X}^{*}(t)\) from \(EL\).  Update position of the current whale \(\overrightarrow{X}_{i}(t)\) applying next equation. \[\overrightarrow{D}=|C\cdot\overrightarrow{X}^{*}(t)-\overrightarrow{X}(t)|.\] (20) \[\overrightarrow{X}(t+1)=\overrightarrow{X}(t)+(A/4)\cdot \overrightarrow{D}.\] (21) elseif\((|A|\geq 1)\)then  Select a random whale \(\overrightarrow{X}_{rand}(t)\) from current swarm.  Update position of current whale \(\overrightarrow{X}_{i}(t)\) applying next equation. \[\overrightarrow{D}=|C\cdot\overrightarrow{X}_{rand}(t)-\overrightarrow{X}(t)|.\] (22) \[\overrightarrow{X}(t+1)=\overrightarrow{X}(t)+(A/4)\cdot \overrightarrow{D}\] (23) endif elseif\((p\leq 0.2)\)then  Select a random whale \(\overrightarrow{X}^{*}(t)\) from\(EL\).  Update position of current whale \(\overrightarrow{X}_{i}(t)\) applying next equation \[\overrightarrow{D}=|\overrightarrow{X}^{*}(t)-\overrightarrow{X}(t)|,\] (24) \[\overrightarrow{X}(t+1)=\overrightarrow{D}\cdot e^{bl}\cdot\cos(2 \pi l)+\overrightarrow{X}^{*}(t)\] (25) endif  Compute the objective value of current whale \(\overrightarrow{X}_{i}(t)\) according to the objective functions that describe the problem.  Update solutions in \(EL\) according to Pareto dominance criterion. endfor if(number of iterations without improvement \(\geq Max\_NonImprove\))then  Set \(\tau\) to a random value. if\((\tau<0.5)\)then  Apply intensification procedure Intensification\(\_\)Crossover(\(S\),\(EL\)) (Algorithm 1). else  Apply diversification procedure Diversification\(\_\)Crossover(\(S\)) (Algorithm 2). endif endfor  Return non-dominated solutions stored in \(EL\)
```  
**Algorithm 3** Pseudocode for _MOWOATS_ algorithm