Evolutionary Algorithms#

Evolutionary algorithms are a class of optimization algorithms inspired by biological evolution. They maintain a population of candidate solutions, where each individual is defined by a set of parameters, analogous to genes. The candidates are evaluated according to their fitness (objective value), and better individuals are preferentially selected as parents.

New individuals are then generated by recombining and mutating the selected parents. Selection concentrates the search on promising solutions (exploitation), while mutation and recombination introduce variation that allows new regions of the parameter space to be explored (exploration). Repeating this process over successive generations gradually drives the population toward better solutions.

../../_images/reference_evolution_diagram.png

Figure 3 One generation of an evolutionary algorithm in a two-parameter search space (\(x_1\), \(x_2\)). Selection picks the fitter individuals as parents, and recombination and mutation turn them into the next generation.#

Different evolutionary algorithms use different strategies for selecting parents, generating offspring, applying mutation and recombination, and deciding which individuals form the next generation. Despite these differences, they all follow the same basic evolutionary principle: a population of candidate solutions is iteratively improved through selection and variation.

Supported Algorithms#

The supported algorithms are summarized below

Table 1 Supported evolutionary algorithms. The identifier is the string passed as the algorithm argument of Evolution.#

Name

Identifier

Objectives

Reference

Genetic Algorithm (GA)

"ga"

Single-objective

pymoo GA

Non-dominated Sorting Genetic Algorithm (NSGA-II)

"nsga2"

Multi-objective

pymoo NSGA-II

Genetic Algorithm (GA)#

GA is a single-objective evolutionary algorithm that mimics the process of natural selection. It uses techniques such as selection, crossover, and mutation to evolve a population of candidate solutions towards an optimal solution. Some of the key default parameters used in pymoo are:

Parameter Description

Default value

crossover type

SBX (simulated binary crossover)

crossover probability - float, [0,1]

0.5

distribution index for sbx crossover - float, [0,100]

15

mutation type

PM (polynomial mutation)

mutation probability - float, [0,1]

0.9

distribution index for polynomial mutation - float, [0,100]

20

Non-dominated Sorting Genetic Algorithm (NSGA-II)#

NSGA-II is a popular multi-objective evolutionary algorithm that uses non-dominated sorting and crowding distance to maintain diversity in the population. Its core ideas are similar to GA, but it is designed to handle multiple objectives simultaneously. Some of the key default parameters used in pymoo are:

Parameter Description

Default value

crossover type

SBX (simulated binary crossover)

crossover probability - float, [0,1]

0.9

distribution index for sbx crossover - float, [0,100]

15

mutation type

PM (polynomial mutation)

mutation probability - float, [0,1]

0.9

distribution index for polynomial mutation - float, [0,100]

20