## 4 Solution Approach
A crossover operation was applied to the mutant vector to create a potential candidate solution called a trial vector. For the mutant vector \(v_{i}\) and the candidate solution \(z_{i}\), the crossover operation is defined for each \(n\in\{1,2,\ldots,N\}\) in (22). \[u_{in}=\{ \begin{array}{l}v_{in}\;if\;\;Rand(0,1)<CR\\ z_{in}\;otherwise\end{array}  \tag{22}\]  
After the crossover operation, the _RealToBinary_ procedure in Appendix A was applied to transform the trial vector \(u_{i}\) to a binary vector \(\overline{u}_{idg}\) before evaluating its fitness function value \(H_{1}(\overline{u}_{i})\). The trial vector was selected to replace the current candidate solution if it was better than the current candidate solution. That is, the current candidate solution \(z_{i}\) was replaced by the trial vector \(u_{i}\) if \(H_{1}(\overline{u}_{i})\geq H_{1}(z_{i})\). Algorithm 1 shows the Discrete Differential Evolution (DE) Algorithm with Mutation Strategy m.  
Figure 1: A flow chart for the DE-\(m\) algorithm with mutation strategy \(m\). ```
Step 0: Set parameters Step 0-1: Set mutation strategy m Step 0-2: Set parameters Step \(G\) Set \(NP\)\(CR=0.5\) Set \(F_{i}\) for \(i\in\{1,2,\ldots,NP\}\) Step 1: Initialization Step 1-1: Generate a population \(\{z_{i},\,i\in\{1,2,\ldots,NP\}\}\) randomly Step 1-2: Compute \(H_{1}(z_{i})\) Step 1-3: \(t\gets 1\) Step 2: Main Loop While (\(t<G\)) For \(i=1\) to \(NP\) Step 2.1: Perform mutation operations If (m = 1) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (15) Else If (m = 2) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (16) Else If (m = 3) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (17) Else If (m = 4) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (18) Else If (m = 5) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (19) Else If (m = 6) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (20) Else If (m = 7) Generate \(F_{i}=N_{i}(0.5,0.5)\) Perform mutation operation to compute mutant vector \(v_{i}\) according to formula (21) Step 2.2: Apply crossover operation to compute trial vector \(u_{i}\) according to formula (22) Step 2.3: Compute the binary vector associated with \(u_{i}\) Step 2.4: \(\tilde{u}_{in}\gets RealToBinary(u_{in})\) for \(n\in\{1,2,\ldots,N\}\) Step 2.5: Update candidate \(i\) If \(H_{1}(\tilde{u}_{i})\geq H_{1}(z_{i})\)\(z_{i}=u_{i}\) End If End For \(t\gets t+1\) End While
```  
**Algorithm 1**Discrete Differential Evolution (DE) Algorithm with Mutation Strategy m  
Like the DE approach, PSO is also a population-based approach which maintains a population of candidate solutions in the solution-finding process. In the PSO approach, a candidate solution in the population is called a particle, and the population of particles is called a swarm. The way to improve the quality of a particle in the PSO approach is based on the sharing of information among the swarm of particles. More concretely, each particle attempts to improve its solution quality by adjusting its velocity according to its historical best solution (personal best), the global best of the swarm, or other relevant information provided by the swarm of particles. Please refer to Table 3 for the notations and variables used in the three variants of the PSO algorithm. Figure 2 shows the flow chart for the three variants of the PSO algorithm considered in this study. All three PSO-based algorithms followed the same operation process to determine the personal best and global best and update the velocity. The differences between the three variants of the PSO algorithm were the methods of updating the velocity. For the classical PSO algorithm, the velocity is updated according to Equation (23).