## 3 Proposed Approach
### Evolutionary Algorithms
#### 3.3.1 L-SHADE Algorithm  
The L-SHADE approach is a modification of the DE algorithm, firstly introduced in [7]. As previously mentioned, DE has three main parameters, and deciding upon which parameter to employ presents a difficult task, as they have an impact on the algorithm's speed and efficiency. The L-SHADE algorithm uses a set of \(H=5\) historical memory cells containing values \((M_{F,q};M_{Cr,q})\) to generate new parameter values \(F\) and \(Cr\) for every mutation and crossover procedure. Mentioned parameter values are sampled using a randomly chosen memory index \(q\in[1,H]\) as follows:  
\[F=randc(M_{F,q},0.1), \tag{7}\]  
\[Cr=randn(M_{Cr,q},0.1), \tag{8}\]  
where \(randc(M_{F,q},0.1)\) and \(randn(M_{Cr,q},0.1)\) are random numbers generated by Cauchy and normal distributions, respectively. The \(Cr\) value is set to 0 or 1 if it spans outside the range \([0,1]\), and the \(F\) value is set to 1 if \(F>1\) or is generated again if \(F<0\). The values of \(F\) and \(Cr\), which caused an improvement to an individual, are saved into two arrays, \(S_{F}\) and \(S_{Cr}\), together with the difference of the fitness value \(\Delta f\).  
The memory cell with index \(h\), incrementing from 1 to \(H\) every generation, is updated as follows:  
\[\Delta f_{i}=|f(\widehat{v}_{i})-f(v_{i})|, \tag{9}\]  
\[\omega_{i}=\frac{\Delta f_{i}}{\sum_{k=1}^{|S|}\Delta f_{k}}, \tag{10}\]  
\[mean_{\omega L}=\frac{\sum_{i=1}^{|S|}\omega_{i}\times S_{i}^{2}}{\sum_{i=1}^ {|S|}\omega_{i}\times S_{i}}, \tag{11}\]  
where \(S\) is either \(S_{Cr}\) or \(S_{F}\). Then, the previous parameter values are used to set the new ones in the following way:  
\[M_{F,q}^{8+1}=c\times M_{F,q}^{8}+(1-c)\times mean_{\omega L}(F), \tag{12}\]  
\[M_{Cr,q}^{8+1}=c\times M_{Cr,q}^{8}+(1-c)\times mean_{\omega L}(Cr). \tag{13}\]  
In the last two formulas, \(c\) is an update parameter set to 0.5, and \(g\) is the current iteration number.  
The L-SHADE algorithm uses the Linear Population Size Reduction (LPSR) approach to adjust the population size \(NP\). To be more specific, it is recalculated at the end of each iteration, and the worst individuals are removed from the population. The new number of individuals depends on the available computational resources:  
\[NP_{g+1}=round\bigg{(}\frac{NP_{min}-NP_{max}}{NFE_{max}}\times NFE+NP_{max} \bigg{)}, \tag{14}\]  
where \(NP_{min}=4\) and \(NP_{max}\) are the minimal and initial population sizes, respectively, \(NFE\) is the current number of function evaluations, while \(NFE_{max}\) is the maximal number of function evaluations.  
Finally, L-SHADE uses an external archive \(A\) of inferior solutions. The archive, \(A\), contains parent solutions rejected during selection operation, and is filled until its size reaches the predefined value \(NA\). Once the archive is full, new solutions replace randomly selected ones in \(A\). The current-to-pbest mutation (5) is changed to use the individuals from the archive so that the \(l\) index is taken either from the population or the archive \(A\) with a probability of 0.5. Additionally, the archive size, \(NA\), decreases together with the population size in the same manner.