Algorithms¶

pymoo.algorithms.so_genetic_algorithm.
ga
(pop_size=100, sampling=RandomSampling(), selection=TournamentSelection(func_comp=comp_by_cv_and_fitness), crossover=SimulatedBinaryCrossover(prob=0.9, eta=3), mutation=PolynomialMutation(prob=None, eta=5), eliminate_duplicates=True, n_offsprings=None, **kwargs)¶  Parameters
 pop_sizeint
The population sized used by the algorithm.
 sampling
Sampling
,Population
,numpy.array
The sampling process defines the initial set of solutions which are the starting point of the optimization algorithm. Here, you have three different options by passing
(i) A
Sampling
implementation which is an implementation of a random sampling method.(ii) A
Population
object containing the variables to be evaluated initially OR already evaluated solutions (F needs to be set in this case).(iii) Pass a two dimensional
numpy.array
with (n_individuals, n_var) which contains the variable space values for each individual. selection
Selection
This object defines the mating selection to be used. In an evolutionary algorithm each generation parents need to be selected to produce new offsprings using different recombination and mutation operators. Different strategies for selecting parents are possible e.g. selecting them just randomly, only in the neighbourhood, using a tournament selection to introduce some seletion pressure, …
 crossover
Crossover
The crossover has the purpose of create offsprings during the evolution. After the mating selection the parents are passed to the crossover operator which will dependent on the implementation create a different number of offsprings.
 mutation
Mutation
Some genetic algorithms rely only on the mutation operation. However, it has shown that increases the performance to perform a mutation after creating the offsprings through crossover as well. Usually the mutation operator needs to be initialized with a probability to be executed. Having a high probability of mutation will most of the time increase the diversity in the population.
 eliminate_duplicatesbool
The genetic algorithm implementation has a built in feature that eliminates duplicates after merging the parent and the offspring population. If there are duplicates with respect to the current population or in the offsprings itself they are removed and the mating process is repeated to fill up the offsprings until the desired number of unique offsprings is met.
 n_offspringsint (default: None)
Number of offspring that are created through mating. By default n_offsprings=None which sets the number of offsprings equal to the population size. By setting n_offsprings=1 a, so called, steadystate version of an algorithm can be achieved.
 Returns
 ga
Algorithm
Returns an SingleObjectiveGeneticAlgorithm algorithm object.
 ga

pymoo.algorithms.so_de.
de
(pop_size=100, sampling=LatinHypercubeSampling(iterations=100, criterion="maxmin"), variant="DE/rand/1/bin", CR=0.5, F=0.3, dither="vector", jitter=False, **kwargs)¶  Parameters
 pop_sizeint
The population sized used by the algorithm.
 sampling
Sampling
,Population
,numpy.array
The sampling process defines the initial set of solutions which are the starting point of the optimization algorithm. Here, you have three different options by passing
(i) A
Sampling
implementation which is an implementation of a random sampling method.(ii) A
Population
object containing the variables to be evaluated initially OR already evaluated solutions (F needs to be set in this case).(iii) Pass a two dimensional
numpy.array
with (n_individuals, n_var) which contains the variable space values for each individual. variant{DE/(randbest)/1/(bin/exp)}
The different variants of DE to be used. DE/x/y/z where x how to select individuals to be pertubed, y the number of difference vector to be used and z the crossover type. One of the most common variant is DE/rand/1/bin.
 Ffloat
The weight to be used during the crossover.
 CRfloat
The probability the individual exchanges variable values from the donor vector.
 dither{‘no’, ‘scalar’, ‘vector’}
One strategy to introduce adaptive weights (F) during one run. The option allows the same dither to be used in one iteration (‘scalar’) or a different one for each individual (‘vector).
 jitterbool
Another strategy for adaptive weights (F). Here, only a very small value is added or substracted to the weight used for the crossover for each individual.
 Returns
 de
Algorithm
Returns an DifferentialEvolution algorithm object.
 de

pymoo.algorithms.nsga2.
nsga2
(pop_size=100, sampling=RandomSampling(), selection=TournamentSelection(func_comp=binary_tournament), crossover=SimulatedBinaryCrossover(prob=0.9, eta=15), mutation=PolynomialMutation(prob=None, eta=20), eliminate_duplicates=True, n_offsprings=None, **kwargs)¶  Parameters
 pop_sizeint
The population sized used by the algorithm.
 sampling
Sampling
,Population
,numpy.array
The sampling process defines the initial set of solutions which are the starting point of the optimization algorithm. Here, you have three different options by passing
(i) A
Sampling
implementation which is an implementation of a random sampling method.(ii) A
Population
object containing the variables to be evaluated initially OR already evaluated solutions (F needs to be set in this case).(iii) Pass a two dimensional
numpy.array
with (n_individuals, n_var) which contains the variable space values for each individual. selection
Selection
This object defines the mating selection to be used. In an evolutionary algorithm each generation parents need to be selected to produce new offsprings using different recombination and mutation operators. Different strategies for selecting parents are possible e.g. selecting them just randomly, only in the neighbourhood, using a tournament selection to introduce some seletion pressure, …
 crossover
Crossover
The crossover has the purpose of create offsprings during the evolution. After the mating selection the parents are passed to the crossover operator which will dependent on the implementation create a different number of offsprings.
 mutation
Mutation
Some genetic algorithms rely only on the mutation operation. However, it has shown that increases the performance to perform a mutation after creating the offsprings through crossover as well. Usually the mutation operator needs to be initialized with a probability to be executed. Having a high probability of mutation will most of the time increase the diversity in the population.
 eliminate_duplicatesbool
The genetic algorithm implementation has a built in feature that eliminates duplicates after merging the parent and the offspring population. If there are duplicates with respect to the current population or in the offsprings itself they are removed and the mating process is repeated to fill up the offsprings until the desired number of unique offsprings is met.
 n_offspringsint (default: None)
Number of offspring that are created through mating. By default n_offsprings=None which sets the number of offsprings equal to the population size. By setting n_offsprings=1 a, so called, steadystate version of an algorithm can be achieved.
 Returns
 nsga2
Algorithm
Returns an NSGA2 algorithm object.
 nsga2

pymoo.algorithms.rnsga2.
rnsga2
(ref_points, epsilon=0.001, normalization="front", weights=None, extreme_points_as_reference_points=False, **kwargs)¶  Parameters
 ref_points
numpy.array
Reference Points (or also called Aspiration Points) as a
numpy.array
where each row represents a point and each column a variable (must be equal to the objective dimension of the problem) epsilonfloat
 weightsnp.array
 normalization{‘no’, ‘front’, ‘ever’}
 extreme_points_as_reference_pointsbool
 ref_points
 Returns
 rnsga2
Algorithm
Returns an RNSGA2 algorithm object.
 rnsga2

pymoo.algorithms.nsga3.
nsga3
(ref_dirs, pop_size=None, sampling=RandomSampling(), selection=TournamentSelection(func_comp=comp_by_cv_then_random), crossover=SimulatedBinaryCrossover(prob=1.0, eta=30), mutation=PolynomialMutation(prob=None, eta=20), eliminate_duplicates=True, n_offsprings=None, **kwargs)¶  Parameters
 ref_dirs
numpy.array
The reference direction that should be used during the optimization. Each row represents a reference line and each column a variable.
 pop_sizeint (default = None)
By default the population size is set to None which means that it will be equal to the number of reference line. However, if desired this can be overwritten by providing a positve number.
 sampling
Sampling
,Population
,numpy.array
The sampling process defines the initial set of solutions which are the starting point of the optimization algorithm. Here, you have three different options by passing
(i) A
Sampling
implementation which is an implementation of a random sampling method.(ii) A
Population
object containing the variables to be evaluated initially OR already evaluated solutions (F needs to be set in this case).(iii) Pass a two dimensional
numpy.array
with (n_individuals, n_var) which contains the variable space values for each individual. selection
Selection
This object defines the mating selection to be used. In an evolutionary algorithm each generation parents need to be selected to produce new offsprings using different recombination and mutation operators. Different strategies for selecting parents are possible e.g. selecting them just randomly, only in the neighbourhood, using a tournament selection to introduce some seletion pressure, …
 crossover
Crossover
The crossover has the purpose of create offsprings during the evolution. After the mating selection the parents are passed to the crossover operator which will dependent on the implementation create a different number of offsprings.
 mutation
Mutation
Some genetic algorithms rely only on the mutation operation. However, it has shown that increases the performance to perform a mutation after creating the offsprings through crossover as well. Usually the mutation operator needs to be initialized with a probability to be executed. Having a high probability of mutation will most of the time increase the diversity in the population.
 eliminate_duplicatesbool
The genetic algorithm implementation has a built in feature that eliminates duplicates after merging the parent and the offspring population. If there are duplicates with respect to the current population or in the offsprings itself they are removed and the mating process is repeated to fill up the offsprings until the desired number of unique offsprings is met.
 n_offspringsint (default: None)
Number of offspring that are created through mating. By default n_offsprings=None which sets the number of offsprings equal to the population size. By setting n_offsprings=1 a, so called, steadystate version of an algorithm can be achieved.
 ref_dirs
 Returns
 nsga3
Algorithm
Returns an NSGA3 algorithm object.
 nsga3

pymoo.algorithms.unsga3.
unsga3
(**kwargs)¶ This is an implementation of the Unified NSGA3 algorithm [9]. The same options as for
pymoo.algorithms.nsga3.nsga3
are available. Returns
 unsga3
Algorithm
Returns an UNSGA3 algorithm object.
 unsga3

pymoo.algorithms.rnsga3.
rnsga3
(ref_points, pop_per_ref_point, mu=0.05, **kwargs)¶  Parameters
 ref_points
numpy.array
Reference Points (or also called Aspiration Points) as a
numpy.array
where each row represents a point and each column a variable (must be equal to the objective dimension of the problem) pop_per_ref_pointint
Size of the population used for each reference point.
 mufloat
Defines the scaling of the reference lines used during survival selection. Increasing mu will result having solutions with a larger spread.
 Other Parameters
 ——
 n_offspringsint (default: None)
Number of offspring that are created through mating. By default n_offsprings=None which sets the number of offsprings equal to the population size. By setting n_offsprings=1 a, so called, steadystate version of an algorithm can be achieved.
 sampling
Sampling
,Population
,numpy.array
The sampling process defines the initial set of solutions which are the starting point of the optimization algorithm. Here, you have three different options by passing
(i) A
Sampling
implementation which is an implementation of a random sampling method.(ii) A
Population
object containing the variables to be evaluated initially OR already evaluated solutions (F needs to be set in this case).(iii) Pass a two dimensional
numpy.array
with (n_individuals, n_var) which contains the variable space values for each individual. selection
Selection
This object defines the mating selection to be used. In an evolutionary algorithm each generation parents need to be selected to produce new offsprings using different recombination and mutation operators. Different strategies for selecting parents are possible e.g. selecting them just randomly, only in the neighbourhood, using a tournament selection to introduce some seletion pressure, …
 crossover
Crossover
The crossover has the purpose of create offsprings during the evolution. After the mating selection the parents are passed to the crossover operator which will dependent on the implementation create a different number of offsprings.
 mutation
Mutation
Some genetic algorithms rely only on the mutation operation. However, it has shown that increases the performance to perform a mutation after creating the offsprings through crossover as well. Usually the mutation operator needs to be initialized with a probability to be executed. Having a high probability of mutation will most of the time increase the diversity in the population.
 eliminate_duplicatesbool
The genetic algorithm implementation has a built in feature that eliminates duplicates after merging the parent and the offspring population. If there are duplicates with respect to the current population or in the offsprings itself they are removed and the mating process is repeated to fill up the offsprings until the desired number of unique offsprings is met.
 ref_points
 Returns
 nsga3
Algorithm
Returns an NSGA3 algorithm object.
 nsga3

pymoo.algorithms.moead.
moead
(ref_dirs, n_neighbors=15, decomposition='auto', prob_neighbor_mating=0.7, **kwargs)¶  Parameters
 ref_dirs
numpy.array
The reference direction that should be used during the optimization. Each row represents a reference line and each column a variable.
 decomposition{ ‘auto’, ‘tchebi’, ‘pbi’ }
The decomposition approach that should be used. If set to auto for two objectives tchebi and for more than two pbi will be used.
 n_neighborsint
Number of neighboring reference lines to be used for selection.
 prob_neighbor_matingfloat
Probability of selecting the parents in the neighborhood.
 ref_dirs
 Returns
 moead
MOEAD
Returns an MOEAD algorithm object.
 moead