**2. Elements of genetic and differential evolution algorithms**

Genetic algorithms and differential evolution algorithms are evolutionary algorithms that typically define objective functions so that the set of parameters being optimized are represented in a vector [3]. Parameter constraints are implemented by restricting the available solution spaces for each parameter in the vector. The basic design strategy for such genetic and differential evolution algorithms is to determine evolutionary operators that balance the algorithm's ability to both effectively search the solution space and converge to an optimal solution.

Genetic algorithms and differential evolution algorithms typically begin by randomly selecting *K*ð Þ 0 vectors, called candidate solutions or individuals, in the solution space. This initial set of candidate solutions is called the initial population. A subset of *M*ð Þ1 of these initial candidate solutions, or individuals, are selected as a function of their fitness, or cost, when evaluated with respect to the optimization criterion. Although many selection operators exist [12, 13], selection operators are typically designed to select a subset of *M*ð Þ1 candidate solutions from the population in a manner that should improve the overall fitness of the population. The candidate solutions that survive the selection operator form the initial mating pool of *M*ð Þ1

individuals where 1≤ *M*ð Þ1 ≤*K*ð Þ 0 . Candidate solutions from the mating pool are then selected for recombination and mutation. Recombination operators create new candidate solutions by combining vector elements from two or more of the candidate solutions from the mating pool. Mutation operators in genetic algorithms create new candidate solutions by altering elements of candidate solution vectors. In differential evolution, mutation operators create new candidate solutions by using vector operations, such as addition and scaling, on two or more of the candidate solutions from the mating pool. Regardless of the algorithm, the new candidate solutions created by recombination and mutation are added to the mating pool to create a new population of *K*ð Þ1 candidate solutions. This process of selection, recombination and mutation forms one generation, or iteration, of a genetic or differential evolution algorithm. This process iterates until a convergence criteria is met and an optimal solution is determined. A generic genetic algorithm or differential evolution algorithm can be summarized as follows:

Initialize population {*K*ð Þ 0 candidate solutions)}

*n* 0

$$\mathbf{repeat}$$

*n n* þ 1

Select *M n*ð Þ candidate solutions using a selection operator Generate new candidate solutions using a mutation operator Generate new candidate solutions using a recombination operator Add the new *K n*ð Þ� *M n*ð Þ candidate solutions to the mating pool **until** convergence condition is met

where *n* is the algorithm's iteration number.

Genetic operators such as recombination and mutation generate a combination of new candidate solutions that can be either similar or diverse from the candidate solutions in the mating pool. Controlling the ratio of the diversity and similarity of new candidate solutions added to a population each generation is a fundamental design parameter of any search algorithm [14]. Creating diversity, or exploration, is the process of generating candidate solutions that lie in previously unevaluated regions of the search space. Creating similarity, or exploitation, on the other hand, is the process of generating candidate solutions within a neighborhood of previously visited points so as to converge to an optimal point in the neighborhood. Exploration and exploitation are typically conflicting processes of a search algorithm because a lack of diversity can result in a population converging to a local minima or maxima and a lack of similarity can impede convergence. Therefore, every search algorithm needs to design an effective ratio of exploration and exploitation of a search space. In general, an optimal ratio of diversity and similarity is not only dependent on the search algorithm but also the cost, or objective, function. For example, determining the optimal solution of a unimodal objective function typically requires less exploration than determining an optimal solution of a multi-modal objective function that typically requires more exploration. Also, different generations, or iterations, of a search algorithm typically have a different optimal ratios of exploration and exploitation. For example, a search algorithm's early generations require more exploration than exploitation until the neighborhood of the optimal solution is found. After the neighborhood of the optimal solution is found, a search algorithm's generations require more exploitation and less exploration. Therefore, the goal of any search algorithm is to design a ratio of adding diverse new candidate solutions and similar new candidate solutions to each generation so that the algorithm can effectively determine optimal solutions for different types of objective functions.

Genetic algorithms and differential evolution algorithms typically use three operators, selection, mutation and recombination, for controlling the ratio of adding diverse and similar new candidate solutions to their populations. Selection operators control the ratio of exploration and exploitation by varying the selection process. A selection operator that is designed to select the most fit candidate solutions, the candidate solutions with the best costs when evaluated with respect to the optimization criterion, biases the selection process away from exploration and towards exploitation. A selection operator that is designed to select the least fit candidate solutions biases the selection process away from exploitation and towards exploration.

Mutation operators for a typical genetic algorithm or differential evolution algorithm randomly modify individuals from the mating pool to increase the diversity of a population. As a result, a typical mutation operator increases the exploration of unevaluated regions of the search space. However, some mutation operators only slightly alter individuals from the mating pool. In such cases, these types of mutation operators can be classified as an exploitation operator because most of the mutated individual is preserved and the mutated individual still remains in the neighborhood of the parent candidate solution. A recombination operator for a typical genetic algorithm or differential evolution algorithm combines two or more parent individuals, or candidate solutions, from the mating pool to generate a new and possibly more fit candidate solution. As a result, a typical recombination operator generates new candidate solutions within a neighborhood of the parent candidate solutions. From this perspective, a recombination operator increases exploitation and improves the convergence of the algorithm. However, when recombination uses a mutated candidate solution, recombination can create a new candidate solution in a previously unevaluated region of the search space. In such cases, recombination operators can improve exploration of the search space. In most cases, mutation operators improve a population's diversity and recombination operators improve an algorithm's convergence rate; however, in practice, the combination of selection, mutation and recombination determines the ratio of exploration and exploitation in both genetic algorithms and differential evolution algorithms.
