*2.1. Di*ff*erential Evolution*

The DE consists of three main steps: mutation, crossover, and selection. In mutation, the attribute vector of the selected individual *x* is combined in a simple vector operation to generate the mutated vector *v*. The scale factor *F* of the control parameter is used in this operation. In the crossover step, according to the probability given by the crossover rate *CR* of the control parameter, the trial vector *u* is created by selecting the attribute from the original vector *x* or mutated vector *v*. Finally, in the selection step, the trial vector *u* is evaluated by the objective function and the fitness *f*(*u*) is compared

with the fitness of the selected vector *f*(*x*). The vector with the better fitness value survives to the next generation.

This paper focuses on improving the mutation process, so the paragraphs below describe the mutation process of the DE algorithm. The complete steps of DE can be referred to the literature [1]. The mutation strategy of DE/rand/1/bin can be expressed as follows:

$$
\sigma\_{i,G} = \mathbf{x}\_{r1,G} + F\_i \times (\mathbf{x}\_{r2,G} - \mathbf{x}\_{r3,G}) \tag{1}
$$

where *<sup>v</sup>i*,*G* is the mutated vector, and *<sup>x</sup>r1*,*G*, *<sup>x</sup>r2*,*G*, and *<sup>x</sup>r3*,*G* are three different individuals randomly selected from the population. *Fi* is the scaling factor, and *G* is the index of the current generation.

If any dimension of the mutated vector *<sup>v</sup>j*,*i*,*<sup>G</sup>* is outside the boundary of the search range [*xmin*, *xmax*], we perform the following correction for boundary-handling to handle infeasible solutions [45]:

$$\boldsymbol{\sigma}\_{j,i,G} = \begin{cases} \frac{\mathbf{x}\_{\min} + \mathbf{x}\_{j,i,G}}{2} & \text{if } \boldsymbol{\sigma}\_{j,i,G} < \mathbf{x}\_{\min} \\ \frac{\mathbf{x}\_{\max} + \mathbf{x}\_{j,i,G}}{2} & \text{if } \boldsymbol{\sigma}\_{j,i,G} > \mathbf{x}\_{\max} \end{cases} \tag{2}$$

where *j* is the dimensional index and *i* is the individual index.

The pseudo-code of the DE/rand/1/bin algorithm is shown in Algorithm 1.


It can be seen from the description of DE algorithm that users need to set three control parameters: crossover rate *CR*, scaling factor *F* and population size *NP*. The setting of these parameters is very important to the performance of DE.

Fine-tuning the control parameter is a time-consuming task, because of which most advanced variants of DE use parameter adaptation. This is also why Tanabe and Fukunaga proposed the SHADE [19] algorithm in 2013. Because the algorithms used in this paper are based on SHADE, it is described in more detail below.
