4.3.1. Crossover Process

As we know, two of the most important operators are the crossover operator and mutation operator for genetic operation [95], which have a grea<sup>t</sup> influence on the behavior and performance of genetic operation. Therefore, these operations are introduced into the DMQL-CS algorithm. In crossover process, a parameter *Cr* is defined as the probability of crossover and chromosomes are divided into pairs. We introduce the specifically designed crossover operation into the problem of logistics distribution center location in this paper, and apply it to a pair of chromosomes G1 and G2, as illustrated in Figure 2. First, some genes are randomly selected in chromosome G1, as those pointed to by a red arrow in the illustration. Then, these genes are found in chromosome G2, as pointed to by a green arrow. If the same gene is not found in G2, two genes are randomly selected as the crossover point. Generate one child as the combination of red-pointed genes in G1 and the rest of blue genes in G2, and generate another child as the combination of green-pointed genes in G2 and the rest of blue genes in G1. Finally, the optimal is found as an arc between any two nodes by using enumeration method, which keep the child to obtain the lowest objective value, and obtain chromosomes R1 and R2. Two chromosomes are selected from the parents and children with the smallest objective values to replace the parents.

**Figure 2.** Crossover process of chromosomes.

At the same time, the crossover rate (*Cr*) is a critical factor for how the crossover operator behaves, which determines the performance of the algorithm to some extent. To improve the search ability of the algorithm, a substantial number of strategies have been designed to adjust the crossover rate. In this work, a self-adaptive scheme was used to adjust the crossover rate, which can be calculated as shown below.

$$\mathbb{C}\_r = 1/\left[1 + \exp(K\_1)\mathcal{U}\right] \tag{17}$$

where = *favg* − *f*max, *favg* is the average fitness, *f*max is the max fitness, and *K*1 is the scale factor between 0 and 1, *K*1 = 0.02.
