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.
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
Name |
Identifier |
Objectives |
Reference |
|---|---|---|---|
Genetic Algorithm (GA) |
|
Single-objective |
|
Non-dominated Sorting Genetic Algorithm (NSGA-II) |
|
Multi-objective |
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 |