## 3 Multi-Objective Optimization
### Multi-Objective Hybrid Butterfly Optimization and Particle Swarm Optimization Algorithm
```
Initialize the parameters \(N_{P}\), \(n\), \(a\), \(c\), \(c_{1}\), \(c_{2}\), MaxIter  Uniformly and randomly generate initial solutions \(\mathbf{x}_{i}^{(0)}\quad\forall i=1,2,\ldots,N_{P}\)  Set the initial \(\mathbf{x}_{i,pbest}^{(0)}\) and \(\mathbf{x}_{best}^{(0)}\) values  Calculate initial intensity \(\tilde{I}\) and \(\varphi_{i}\)  Initialize archive \(\mathbb{P}_{s}\) while\(iter<MaxIter\)do for i = 1:\(N_{P}\)do  Calculate the adaptive parameter \(PS^{(G+1)}=\sqrt{\frac{1}{N_{P}-1}\sum\limits_{i=1}^{N_{P}}\left(d^{(G+1)}-d_{ i}^{(G+1)}\right)^{2}}\) if\(PS^{(G+1)}>0.5\)then \(\mathbf{x}_{i}^{(G+1)}=\mathbf{x}_{i}^{(G)}+\left(r^{2}\times\mathbf{x}_{gbest}^{(G )}-\mathbf{x}_{i}^{(G)}\right)\times\varphi_{i}+c_{2}rand_{2}\Big{(}\mathbf{x}_ {gbest}^{(G)}-\mathbf{x}_{i}^{(G)}\Big{)}\) elseif\(PS^{(G+1)}\leq 0.5\)then \(\mathbf{x}_{i}^{(G+1)}=\mathbf{x}_{i}^{(G)}+\left(r^{2}\times\mathbf{x}_{j}^{(G )}-\mathbf{x}_{k}^{(G)}\right)\times\varphi_{i}+c_{1}rand_{1}\Big{(}\mathbf{x}_ {best,i}^{(G)}-\mathbf{x}_{i}^{(G)}\Big{)}\) endif  Update archive \(\mathbb{P}_{s}\)  Determine the personal best solution according to \(\mathbf{x}_{i,pbest}^{(G+1)}=\left\{ \begin{array}{l}\mathbf{x}_{i,pbest}^{(G )},\quad\text{if}\mathbf{x}_{i,pbest}^{(G)}\prec\mathbf{x}_{i}^{(G)}\\ \mathbf{x}_{i}^{(G)},\text{otherwise}\end{array} \right.\)  Calculate \(\mathbf{x}_{gbest}^{(G)}\) endfor endwhile
```  
**Algorithm 1** Pseudo-code of the proposed hybrid butterfly optimization and Particle Swarm Optimization Algorithm--HMOBPSO. The methodology of the proposed HMOBPSO algorithm, described above, can be divided into the following steps:  
1. Initialize parameters: Initialize parameters of the HMOBPSO algorithm, including the population size \(N_{P}\), the maximum number of generations \(MaxIter\), and the lower and upper bounds of decision space \(x_{j}^{Lower},x_{j}^{Upper}\). Furthermore, initialize \(c_{1}=2\), \(c_{2}=2\), \(a=\)0.25, \(c=\)0.01. 2. Generate the initial population: Generate the initial population of solutions by randomly deploying \(N_{P}\) solutions within the predefined bounds using the equation \[x_{i,j}^{(o)}=x_{j}^{Lower}+\left(x_{j}^{Upper}-x_{j}^{Lower}\right)\cdot rand,\] where \(rand\) is a random number in \([0,1]\) and the vector of initial positions is \(\mathbf{x  
\(\mathbf{x}_{i}^{(\mathcal{G})}\) in the population \((i=1,\ldots,N_{P})\). Therefore, if \(PS^{G+1}>0.5\), we apply the expression shown in Equation (38), which facilitates the exploration of the solution space. Otherwise, when \(PS^{G+1}\leq 0.5\), we apply the expression shown in Equation (39) to improve local search. * _Calculate the crowding distance:_ For each newly obtained solution in the population, calculate the crowding distance. * _Update archive:_\(\mathbb{P}_{s}\) Based on the calculated crowding distance, update the archive \(\mathbb{P}_{s}\), where each solution is compared with each non-dominated solution in an archive in order to determine whether the solution should stay in the archive. * _Update the personal best:_ Using the expression \[\mathbf{x}_{i,pbest}^{(G+1)}=\left\{ \begin{array}{c}\mathbf{x}_{i,pbest}^{( G)},\quad\text{if}\mathbf{x}_{i,pbest}^{(G)}\prec\mathbf{x}_{i}^{(G)}\\ \mathbf{x}_{i}^{(G)},\text{otherwise}\end{array} \right.,\] \[\forall i=1,2,\ldots,N_{P}\] update the personal best solution of the entire population. * _Update the global best:_ Using the solutions in the archive \(\mathbb{P}_{s}\), update the global best solution \(\mathbf{x}_{\text{{\emph{gbest}}}}^{(G)}\). * _Stopping criterion:_ Stop the execution of the HMOBPSO algorithm if the termination criterion is satisfied and go to Step 15; otherwise, go to Step 7 and repeat the search for the global optimal solution. * _Display result:_ Display the optimal result, which is reflected through the appropriate Pareto-optimal set as well as a set of solutions that belong to the Pareto-optimal set.