## 3 Review of PSO, DE, and DEPSO
### Differential Evolution
#### 3.2.2 DEPSO Algorithm  
The self-adaptive differential evolution algorithm based on particle swarm optimization (DEPSO) [39] is a recent method, which incorporates characteristics of the PSO algorithm within the structure of the DE algorithm for solving numerical optimization problems. In this algorithm, the top \(\alpha\cdot NP\) (\(\alpha\in[0.1,0.9]\)) of the best particles in the current iteration is used to form an elite sub-swarm (\(P\)), while the rest are used to form a non-elite sub-swarm (\(Q\)). The DEPSO algorithm follows a scheme similar to the standard version of the DE algorithm, i.e., it uses mutation, crossover, and selection operators within the evolutionary process of the algorithm. Within the mutation, a mutation strategy is implemented that, in a self-adaptive way, selects between two mutation schemes to generate in each iteration a mutated vector \(V_{i,l+1}\) for the \(i\)-th particle \(X_{i,t}\), as follows:  
\[V_{i,l+1}= \begin{cases}X_{r1,t}^{P}+F_{i}\cdot(X_{r2,t}^{P}-X_{r3,t}^{Q})& \text{if }rand[0,1]<SP_{t}\\ \omega\cdot X_{i,t}+c_{1}\cdot r_{1}\cdot(X_{gbest,t}-X_{i,t})&\\ +c_{2}\cdot r_{2}\cdot(X_{pbest,t}-X_{i,t})&\text{otherwise}\end{cases}  \tag{32}\]where \(rand[0,1]\) is a random number selected uniformly within the interval \([0,1]\) and \(SP_{t}\) represents the probability of selecting between one of the two mutation schemes. In Equation (32), the case in which \(rand[0,1]<SP_{t}\) represents the form in which a novel mutation scheme denoted DE/e-rand/1 generates a mutated vector \(V_{i,t+1}\). In this scheme, two optimal solutions of the elite sub-swarm \((X_{r1,t}^{p}\) and \(X_{r2,t}^{p})\) and one solution of the non-elite sub-swarm \((X_{r3,C}^{Q})\) are required, and a scaling factor \(F_{i}\) is used, which acts at the level of each particle. The remaining case represents the way in which the mutation scheme of the standard PSO algorithm is used to generate a mutated vector \(V_{i,t+1}\). The selection probability \(SP_{t}\) of Equation (32) changes adaptively within the evolution of the algorithm, as follows:  
\[SP_{t}=\frac{1}{1+e^{(1-(t_{max}/(t+1))^{*})}} \tag{33}\]  
where \(t_{max}\) is the maximum number of iterations and \(t\) is the current iteration. \(\tau\) is a positive constant. Within the crossover operator, a test vector \(U_{i,t}\) is generated by combining the information of the current particle \(X_{i,t}\) and the mutated vector \(V_{i,t+1}\), following the binomial crossover (see Equation (23)). The selection of the surviving particle to the next iteration is carried out by the competition between the current particle \(X_{i,t}\) and the test vector \(U_{i,t}\); the one with the best fit value according to the objective function is selected to remain within the next iteration. When a particle remains stagnant over a maximum number of iterations (e.g., 5), the values of its corresponding scale factor \(F_{i}\) and crossover probability \(Cr_{i}\) are reset in order to increase diversity. The way in which the values of these parameters are reset is as follows:  
\[F_{i,t+1}= \begin{cases}F_{i,t}&\text{if }NS_{i}<NS_{max}\\ F_{i}+rand[0,1]\cdot(F_{u}-F_{l})&\text{otherwise}\end{cases}  \tag{34}\]  
\[Cr_{i,t+1}= \begin{cases}Cr_{i,t}&\text{if }NS_{i}<NS_{max}\\ Cr_{l}+rand[0,1]\cdot(Cr_{u}-Cr_{l})&\text{otherwise}\end{cases}  \tag{35}\]  
where \(F_{i}\) and \(Cr_{i}\) are the scaling factor and the crossover probability, respectively, of the particle \(X_{i,t}\) at iteration \(t\). \(F_{l}=0.1\) and \(F_{u}=0.8\) are the lower and upper bounds respectively of the scaling factor. \(Cr_{l}=0.3\) and \(Cr_{u}=1.0\) are the lower and upper bounds, respectively, of the crossover probability and \(rand[0,1]\) is a random number selected within the interval \([0,1]\). \(NS_{i}\) is a stagnation counter for each particle and \(NS_{max}\) is the maximum number of iterations with stagnation.