# Crossover Rate Sorting in Adaptive Differential Evolution
## 2 Materials and Methods
### Parameter Adaptation for Mutation and Crossover  
The simplicity and efficiency of DE made it a highly popular numerical optimization algorithm, leading to vast amounts of studies. As the current study is not focused on a comprehensive review, interested readers are redirected to several older surveys, such as [8; 9; 22], as well as more recent ones [10; 11], and studies dedicated to parameter adaptation [23]. Moreover, several studies have made attempts to design parameter adaptation techniques automatically with genetic programming [24] or neuroevolution [25]. The most commonly used parameter adaptation mechanism, which tunes both scaling factor \(F\) and crossover rated \(Cr\), was introduced in the SHADE algorithm [5] and further extended in L-SHADE [26] by adding population size control called LPSR. The parameter adaptation in SHADE originated from JADE and maintains a set of memory cells, containing averaged successful values of \(F\) and \(Cr\). These memory cells are updated at the end of each generation based on which the values result in an improvement in terms of fitness. However, since the JADE algorithm, the most well-performing DE methods use almost the same adaptation scheme for the crossover rate, although its influence on the performance is crucial [27]. In SHADE, the crossover rates are generated with normal distribution and 0.1 variance from the memory cell values \(M_{Cr,r}\), where \(r\in[1,H]\) is chosen randomly for each individual, and \(H\) is the memory size as follows:  
\[Cr=randn(M_{Cr,r},0.1), \tag{5}\]  
where \(randn(m,\sigma)\) is a normally distributed random value. If \(Cr\) generated for the \(i\)-th individual is outside \([0,1]\), it is truncated to this range. The update of the memory cell is performed with the weighted Lehmer mean:  
\[mean_{wL}=\frac{\sum_{j=1}^{|S^{Cr}|}w_{j}(S^{Cr}_{j})^{2}}{\sum_{j=1}^{|S^{ Cr}|}w_{j}S^{Cr}_{j}}, \tag{6}\]  
where \(w_{j}=S^{Cr}_{\Delta f_{j}}/(\sum_{k=1}^{|S|}S^{Cr}_{\Delta f_{k}})\), \(S^{Cr}\) is a set of successful crossover rates. The values are updated as follows:  
\[M^{g+1}_{Cr,k}=0.5(M^{g}_{Cr,k}+mean_{(wL,Cr)}), \tag{7}\]  
where \(g\) is the current generation number, and \(k\) is the index of the memory cell to be updated, iterated in the range \([1,H]\). Various studies have investigated ways of improving DE crossover. For example, in [28], the repairing of the crossover rate was proposed, which considered the actual rate of the crossover applied to certain individuals instead of the set \(Cr\) value. This enabled the more accurate tuning of \(Cr\) and increased performance in certain scenarios. In [29], the hybrid linkage crossover (HLX) is proposed, aimed at detecting the linkages between pairs of variables and consisting of three parts: constructing linkage matrix, grouping variables, and applying group-wise crossover. In [30], the rotating crossover operator (RCO) is proposed to mitigate the problem of inefficient crossover due to rotated objective function landscape. The RCO enables us to adjust the rotation vectors, resulting in more efficient utilization of the computational resource. In [31], the superior-inferior (SI) crossover scheme is considered, which was developed to improve the diversity of the population when individuals are excessively clustered. If this is the case, the SI scheme recombines superior and inferior individuals in the crossover; otherwise, the superior-superior scheme is applied. Several studies, such as [32; 33], applied several crossover strategies to generate offspring, combining exponential and binomial crossover. In [12], the crossover rate sorting was proposed for the JADE algorithm, and the modification was called JADE_sort. The sorting was performed according to fitness values, with smaller \(Cr\) values assigned to better target vectors. For the sorting to be possible, all \(Cr\) values were generated before the crossover step. In addition to this, the scheme retention mechanism was proposed to improve local search.