# Differential Evolution with Linear Bias Reduction in Parameter Adaptation
## 2 Materials and Methods
### Related Studies on Differential Evolution
For every mutation and crossover operation, new values are generated as follows:  
\[F=randc(M_{F,k},0.1),Cr=randn(M_{Cr,k},0.1), \tag{10}\]  
where \(randc\) is a Cauchy distributed random value, \(randn\) is normally distributed, and \(k\) is chosen in the range \([1,D]\) for every individual. The memory cells are used as location parameters of the distributions, and if the generated \(F\) value is below zero, it is generated again; however, if \(F>1\), then it is set to one; also if \(Cr<0\), then \(Cr=0\), and if \(Cr>1\), then \(Cr=1\). The memory cells are updated using the values of \(F\) and \(Cr\), which allow generating solutions with better fitness values. The successful \(F\) and \(Cr\) are stored in \(S_{F}\) and \(S_{Cr}\), as well as \(\Delta f_{j}=|f(u_{j})-f(x_{j})|\). The update is performed as follows:\[M_{F,k}^{g+1}=0.5(M_{F,k}^{g}+mean_{wL}(F)), \tag{11}\]  
\[M_{Cr,k}^{g+1}=0.5(M_{Cr,k}^{g}+mean_{wL}(Cr)), \tag{12}\]  
where \(g\) is the current generation number and \(mean_{wL}\) is the weighted Lehmer mean calculated as follows:  
\[mean_{wL}=\frac{\sum_{j=1}^{|S|}w_{j}S_{j}^{2}}{\sum_{j=1}^{|S|}w_{j}S_{j}}, \tag{13}\]  
where \(w_{j}=\frac{\Delta f_{j}}{\sum_{k=1}^{|S|}\Delta f_{k}}\) and \(S\) is either \(S_{Cr}\) or \(S_{F}\). Except the success-history adaptation, there are several other popular parameter adaptation methods, for example the jDE algorithm [21], which has been shown to be very efficient in solving complex optimization problems if a large computational resource is given [36]. In jDE, the following mechanism was proposed: for every individual in the population, a memory cell keeping a pair of \(F\) and \(Cr\) values is maintained. Initially, the values for all cells are set to \(M_{F,i}=0.5\) and \(M_{Cr,i}=0.9\), \(i=1,\dots,NP\), and new values are generated before the mutation and crossover operations:  
\[F_{i,g+1}= \begin{cases}random(F_{i},F_{u}),&\text{if }random(0,1)<\tau_{1}\\ F_{i,g},&\text{otherwise}\end{cases} . \tag{14}\]  
In a similar manner, the \(Cr\) values are generated:  
\[Cr_{i,g+1}= \begin{cases}random(0,1),&\text{if }random(0,1)<\tau_{2}\\ Cr_{i,g},&\text{otherwise}\end{cases} . \tag{15}\]  
The parameters \(\tau_{1}\) and \(\tau_{2}\) control the frequency of the \(F\) and \(Cr\) change and usually are set to 0.1. If the offspring generated with these parameter values have better fitness compared to the parent, then these \(F\) and \(Cr\) values are saved in the corresponding memory cells. The resulting jDE algorithm appeared to be highly competitive despite its simplicity, and its modifications jDE100 [37] and j2020 [36] have shown promising results during the CEC 2019 and CEC 2020 competitions on single-objective bound-constrained optimization with a large computational resource. One of the three main parameters of DE is the population size \(NP\). There have been several important studies on the DE population size, including [38]. Although several population size tuning algorithms exist, for example the structured population size reduction introduced in the SPSRDEMMS (Structured Population Size Redution Differential Evolution with Multiple Mutation Strategies) algorithm [39], the idea proposed in L-SHADE, the Linear Population Size Reduction (LPSR) is one of the most widely used. In LPSR, one or several individuals to be deleted is determined, and the worst in terms of fitness are removed at the end of each generation \(g\). The new population size is calculated as follows:  
\[NP_{g}=round(\frac{NP_{min}-NP_{max}}{NFE_{max}}NFE)+NP_{max} \tag{16}\]  
where \(NP_{min}=4\) is the minimal population size and \(NP_{max}\) is the initial population size. The population size reduction idea is to allow a wide search at the beginning to cover as much search space as possible, but later decrease the population size for better convergence to the best located optimum. The archive size \(NA\) is decreased in the same way as \(NP\).