Skill Tracer
Skills › Scientific Agent Skills › pymoo › algorithms.md

algorithms.md

238 lines · skills/pymoo/references/algorithms.md at 5f2bc03

Open on GitHub
1# Pymoo Algorithms Reference
2
3Reference for pymoo 0.6.2. Selection guidance is heuristic; compare seeds at matched evaluation budgets. Continuous defaults do not automatically support every variable type.
4

Pymoo Algorithms Reference

Reference for pymoo 0.6.2. Selection guidance is heuristic; compare seeds at matched evaluation budgets. Continuous defaults do not automatically support every variable type.

Raw lines 1 to 4
5## Single-Objective Optimization Algorithms
6

Single-Objective Optimization Algorithms

Raw lines 5 to 6
7### Genetic Algorithm (GA)
8**Purpose:** General-purpose single-objective evolutionary optimization
9**Best for:** Continuous problems with default operators; discrete types require compatible operators
10**Algorithm type:** (μ+λ) genetic algorithm
12**Key parameters:**
13- `pop_size`: Population size (default: 100)
14- `sampling`: Initial population generation strategy
15- `selection`: Parent selection mechanism (default: Tournament)
16- `crossover`: Recombination operator (default: SBX)
17- `mutation`: Variation operator (default: Polynomial)
18- `eliminate_duplicates`: Remove redundant solutions (default: True)
19- `n_offsprings`: Offspring per generation
21**Usage:**
22```python
23from pymoo.algorithms.soo.nonconvex.ga import GA
24algorithm = GA(pop_size=100, eliminate_duplicates=True)
25```

Genetic Algorithm (GA)

Purpose: General-purpose single-objective evolutionary optimization Best for: Continuous problems with default operators; discrete types require compatible operators Algorithm type: (μ+λ) genetic algorithm

Key parameters:

  • pop_size: Population size (default: 100)
  • sampling: Initial population generation strategy
  • selection: Parent selection mechanism (default: Tournament)
  • crossover: Recombination operator (default: SBX)
  • mutation: Variation operator (default: Polynomial)
  • eliminate_duplicates: Remove redundant solutions (default: True)
  • n_offsprings: Offspring per generation

Usage:

from pymoo.algorithms.soo.nonconvex.ga import GA
algorithm = GA(pop_size=100, eliminate_duplicates=True)
Raw lines 7 to 26
27### Differential Evolution (DE)
28**Purpose:** Single-objective continuous optimization
29**Best for:** Continuous parameter optimization with good global search
30**Algorithm type:** Population-based differential evolution
32**Variants:** Multiple DE strategies available (rand/1/bin, best/1/bin, etc.)

Differential Evolution (DE)

Purpose: Single-objective continuous optimization Best for: Continuous parameter optimization with good global search Algorithm type: Population-based differential evolution

Variants: Multiple DE strategies available (rand/1/bin, best/1/bin, etc.)

Raw lines 27 to 33
34### Particle Swarm Optimization (PSO)
35**Purpose:** Single-objective optimization through swarm intelligence
36**Best for:** Continuous problems, fast convergence on smooth landscapes

Particle Swarm Optimization (PSO)

Purpose: Single-objective optimization through swarm intelligence Best for: Continuous problems, fast convergence on smooth landscapes

Raw lines 34 to 37
38### CMA-ES
39**Purpose:** Covariance Matrix Adaptation Evolution Strategy
40**Best for:** Continuous optimization, particularly for noisy or ill-conditioned problems

CMA-ES

Purpose: Covariance Matrix Adaptation Evolution Strategy Best for: Continuous optimization, particularly for noisy or ill-conditioned problems

Raw lines 38 to 41
42### Pattern Search
43**Purpose:** Direct search method
44**Best for:** Problems where gradient information is unavailable

Pattern Search

Purpose: Direct search method Best for: Problems where gradient information is unavailable

Raw lines 42 to 45
46### Nelder-Mead
47**Purpose:** Simplex-based optimization
48**Best for:** Local optimization of continuous functions

Nelder-Mead

Purpose: Simplex-based optimization Best for: Local optimization of continuous functions

Raw lines 46 to 49
50### MixedVariableGA
51**Purpose:** Single-objective optimization with mixed variable types
52**Best for:** Problems with continuous, integer, binary, and categorical variables
54**Usage:**
55```python
56from pymoo.core.mixed import MixedVariableGA
57from pymoo.core.variable import Real, Integer, Choice, Binary
59# Define problem with vars dict (see mixed-variable docs)
60algorithm = MixedVariableGA(pop_size=20)
61```
63For multi-objective mixed-variable problems, pass a survival operator:
64```python
65from pymoo.operators.survival.rank_and_crowding import RankAndCrowding
66algorithm = MixedVariableGA(pop_size=20, survival=RankAndCrowding())
67```

MixedVariableGA

Purpose: Single-objective optimization with mixed variable types Best for: Problems with continuous, integer, binary, and categorical variables

Usage:

from pymoo.core.mixed import MixedVariableGA
from pymoo.core.variable import Real, Integer, Choice, Binary

# Define problem with vars dict (see mixed-variable docs)
algorithm = MixedVariableGA(pop_size=20)

For multi-objective mixed-variable problems, pass a survival operator:

from pymoo.operators.survival.rank_and_crowding import RankAndCrowding
algorithm = MixedVariableGA(pop_size=20, survival=RankAndCrowding())
Raw lines 50 to 68
69### Optuna (Mixed-Variable SOO)
70**Purpose:** Single-objective mixed-variable search via Optuna wrapper
71**Best for:** Hyperparameter-style mixed search when Optuna's TPE/samplers are preferred
73**Usage:**
74```python
75from pymoo.algorithms.soo.nonconvex.optuna import Optuna
76algorithm = Optuna()
77```
79Requires Optuna installed separately: `uv pip install optuna`

Optuna (Mixed-Variable SOO)

Purpose: Single-objective mixed-variable search via Optuna wrapper Best for: Hyperparameter-style mixed search when Optuna's TPE/samplers are preferred

Usage:

from pymoo.algorithms.soo.nonconvex.optuna import Optuna
algorithm = Optuna()

Requires Optuna installed separately: uv pip install optuna

Raw lines 69 to 80
81## Multi-Objective Optimization Algorithms

Multi-Objective Optimization Algorithms

Raw lines 81 to 82
83### NSGA-II (Non-dominated Sorting Genetic Algorithm II)
84**Purpose:** Multi-objective optimization with 2-3 objectives
85**Best for:** Bi- and tri-objective problems requiring well-distributed Pareto fronts
86**Selection strategy:** Non-dominated sorting + crowding distance
88**Key features:**
89- Fast non-dominated sorting
90- Crowding distance for diversity
91- Elitist approach
92- Binary tournament mating selection
94**Key parameters:**
95- `pop_size`: Population size (default: 100)
96- `sampling`: Initial population strategy
97- `crossover`: Default SBX for continuous
98- `mutation`: Default Polynomial Mutation
99- `survival`: RankAndCrowding
101**Usage:**
102```python
103from pymoo.algorithms.moo.nsga2 import NSGA2
104algorithm = NSGA2(pop_size=100)
105```
107**When to use:**
108- 2-3 objectives
109- Need for distributed solutions across Pareto front
110- Standard multi-objective benchmark

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

Purpose: Multi-objective optimization with 2-3 objectives Best for: Bi- and tri-objective problems requiring well-distributed Pareto fronts Selection strategy: Non-dominated sorting + crowding distance

Key features:

  • Fast non-dominated sorting
  • Crowding distance for diversity
  • Elitist approach
  • Binary tournament mating selection

Key parameters:

  • pop_size: Population size (default: 100)
  • sampling: Initial population strategy
  • crossover: Default SBX for continuous
  • mutation: Default Polynomial Mutation
  • survival: RankAndCrowding

Usage:

from pymoo.algorithms.moo.nsga2 import NSGA2
algorithm = NSGA2(pop_size=100)

When to use:

  • 2-3 objectives
  • Need for distributed solutions across Pareto front
  • Standard multi-objective benchmark
Raw lines 83 to 111
112### SPEA2 (Strength Pareto Evolutionary Algorithm 2)
113**Purpose:** Multi-objective optimization using strength and density survival
114**Best for:** Bi- and tri-objective problems; alternative to NSGA-II for strength/density selection
115**Selection strategy:** Strength-based fitness + k-nearest-neighbor density estimation
117**Key features:**
118- Strength/density survival in the current population; no separate persistent external archive is configured by this constructor
119- Strength value measures how many solutions a point dominates
120- Improved in pymoo 0.6.1.6
122**Usage:**
123```python
124from pymoo.algorithms.moo.spea2 import SPEA2
125algorithm = SPEA2(pop_size=100)
126```
128**When to use:**
129- 2-3 objectives
130- Prefer strength/density survival over crowding distance
131- Compare against NSGA-II on benchmark problems

SPEA2 (Strength Pareto Evolutionary Algorithm 2)

Purpose: Multi-objective optimization using strength and density survival Best for: Bi- and tri-objective problems; alternative to NSGA-II for strength/density selection Selection strategy: Strength-based fitness + k-nearest-neighbor density estimation

Key features:

  • Strength/density survival in the current population; no separate persistent external archive is configured by this constructor
  • Strength value measures how many solutions a point dominates
  • Improved in pymoo 0.6.1.6

Usage:

from pymoo.algorithms.moo.spea2 import SPEA2
algorithm = SPEA2(pop_size=100)

When to use:

  • 2-3 objectives
  • Prefer strength/density survival over crowding distance
  • Compare against NSGA-II on benchmark problems
Raw lines 112 to 132
133### NSGA-III
134**Purpose:** Many-objective optimization (4+ objectives)
135**Best for:** Problems with 4 or more objectives requiring uniform Pareto front coverage
136**Selection strategy:** Reference direction-based diversity maintenance
138**Key features:**
139- Reference directions guide population
140- Maintains diversity in high-dimensional objective spaces
141- Niche preservation through reference points
142- Underrepresented reference direction selection
144**Key parameters:**
145- `ref_dirs`: Reference directions (REQUIRED)
146- `pop_size`: Defaults to number of reference directions
147- `crossover`: Default SBX
148- `mutation`: Default Polynomial Mutation
150**Usage:**
151```python
152from pymoo.algorithms.moo.nsga3 import NSGA3
153from pymoo.util.ref_dirs import get_reference_directions
155ref_dirs = get_reference_directions("das-dennis", 4, n_partitions=3) # n_dim is positional
156algorithm = NSGA3(ref_dirs=ref_dirs)
157```
159**NSGA-II vs NSGA-III:**
160- Use NSGA-II for 2-3 objectives
161- Use NSGA-III for 4+ objectives
162- NSGA-III aims to spread candidates over chosen directions; coverage is not guaranteed
163- NSGA-II has lower computational overhead

NSGA-III

Purpose: Many-objective optimization (4+ objectives) Best for: Problems with 4 or more objectives requiring uniform Pareto front coverage Selection strategy: Reference direction-based diversity maintenance

Key features:

  • Reference directions guide population
  • Maintains diversity in high-dimensional objective spaces
  • Niche preservation through reference points
  • Underrepresented reference direction selection

Key parameters:

  • ref_dirs: Reference directions (REQUIRED)
  • pop_size: Defaults to number of reference directions
  • crossover: Default SBX
  • mutation: Default Polynomial Mutation

Usage:

from pymoo.algorithms.moo.nsga3 import NSGA3
from pymoo.util.ref_dirs import get_reference_directions

ref_dirs = get_reference_directions("das-dennis", 4, n_partitions=3)  # n_dim is positional
algorithm = NSGA3(ref_dirs=ref_dirs)

NSGA-II vs NSGA-III:

  • Use NSGA-II for 2-3 objectives
  • Use NSGA-III for 4+ objectives
  • NSGA-III aims to spread candidates over chosen directions; coverage is not guaranteed
  • NSGA-II has lower computational overhead
Raw lines 133 to 164
165### R-NSGA-II (Reference Point Based NSGA-II)
166**Purpose:** Multi-objective optimization with preference articulation
167**Best for:** When decision maker has preferred regions of Pareto front

R-NSGA-II (Reference Point Based NSGA-II)

Purpose: Multi-objective optimization with preference articulation Best for: When decision maker has preferred regions of Pareto front

Raw lines 165 to 168
169### U-NSGA-III (Unified NSGA-III)
170**Purpose:** Improved version handling various scenarios
171**Best for:** Many-objective problems with additional robustness

U-NSGA-III (Unified NSGA-III)

Purpose: Improved version handling various scenarios Best for: Many-objective problems with additional robustness

Raw lines 169 to 172
173### MOEA/D (Multi-Objective Evolutionary Algorithm based on Decomposition)
174**Purpose:** Decomposition-based multi-objective optimization
175**Best for:** Unconstrained problems where decomposition into scalar subproblems is effective
177Supply `ref_dirs` explicitly (the constructor uses their count). The 0.6.2 implementation rejects constraints. Choose `n_neighbors` no greater than the direction count and compatible with parent selection. Transforming constraints into objectives changes the problem and requires final feasibility checks.

MOEA/D (Multi-Objective Evolutionary Algorithm based on Decomposition)

Purpose: Decomposition-based multi-objective optimization Best for: Unconstrained problems where decomposition into scalar subproblems is effective

Supply ref_dirs explicitly (the constructor uses their count). The 0.6.2 implementation rejects constraints. Choose n_neighbors no greater than the direction count and compatible with parent selection. Transforming constraints into objectives changes the problem and requires final feasibility checks.

Raw lines 173 to 178
179### AGE-MOEA
180**Purpose:** Adaptive geometry estimation
181**Best for:** Multi and many-objective problems with adaptive mechanisms

AGE-MOEA

Purpose: Adaptive geometry estimation Best for: Multi and many-objective problems with adaptive mechanisms

Raw lines 179 to 182
183### RVEA (Reference Vector guided Evolutionary Algorithm)
184**Purpose:** Reference vector-based many-objective optimization
185**Best for:** Many-objective problems with adaptive reference vectors

RVEA (Reference Vector guided Evolutionary Algorithm)

Purpose: Reference vector-based many-objective optimization Best for: Many-objective problems with adaptive reference vectors

Raw lines 183 to 186
187### SMS-EMOA
188**Purpose:** S-Metric Selection Evolutionary Multi-objective Algorithm
189**Best for:** Problems where hypervolume indicator is critical
190**Selection:** Uses dominated hypervolume contribution

SMS-EMOA

Purpose: S-Metric Selection Evolutionary Multi-objective Algorithm Best for: Problems where hypervolume indicator is critical Selection: Uses dominated hypervolume contribution

Raw lines 187 to 191
192## Dynamic Multi-Objective Algorithms

Dynamic Multi-Objective Algorithms

Raw lines 192 to 193
194### D-NSGA-II
195**Purpose:** Dynamic multi-objective problems
196**Best for:** Time-varying objective functions or constraints

D-NSGA-II

Purpose: Dynamic multi-objective problems Best for: Time-varying objective functions or constraints

Raw lines 194 to 197
198### KGB-DMOEA
199**Purpose:** Knowledge-guided dynamic multi-objective optimization
200**Best for:** Dynamic problems leveraging historical information

KGB-DMOEA

Purpose: Knowledge-guided dynamic multi-objective optimization Best for: Dynamic problems leveraging historical information

Raw lines 198 to 201
202## Constrained Optimization

Constrained Optimization

Raw lines 202 to 203
204### SRES (Stochastic Ranking Evolution Strategy)
205**Purpose:** Single-objective constrained optimization
206**Best for:** Heavily constrained problems

SRES (Stochastic Ranking Evolution Strategy)

Purpose: Single-objective constrained optimization Best for: Heavily constrained problems

Raw lines 204 to 207
208### ISRES (Improved SRES)
209**Purpose:** Enhanced constrained optimization
210**Best for:** Complex constraint landscapes

ISRES (Improved SRES)

Purpose: Enhanced constrained optimization Best for: Complex constraint landscapes

Raw lines 208 to 211
212## Algorithm Selection Guidelines
214**For single-objective problems:**
215- Start with GA for general problems
216- Use DE for continuous optimization
217- Try PSO for faster convergence on smooth problems
218- Use CMA-ES for difficult/noisy landscapes
220**For multi-objective problems:**
221- 2-3 objectives: NSGA-II or SPEA2
222- 4+ objectives: NSGA-III
223- Preference articulation: R-NSGA-II
224- Decomposition-friendly: MOEA/D
225- Hypervolume focus: SMS-EMOA
227**For constrained problems:**
228- Check algorithm support: feasibility-based survival is common, but MOEA/D rejects constrained problems
229- Heavy constraints: SRES/ISRES
230- Penalty methods for algorithm compatibility
232**For dynamic problems:**
233- Time-varying: D-NSGA-II
234- Historical knowledge useful: KGB-DMOEA
236For Das-Dennis directions, `get_reference_directions("das-dennis", m, n_partitions=p)` creates `C(p+m-1,m-1)` points on the simplex. With five objectives, p=3 gives 35 directions whereas p=12 gives 1820; NSGA-III defaults its population to this count. Reference directions are not feasible decision vectors or guaranteed Pareto points. NSGA-III also works with two/three objectives; four objectives is a routing heuristic, not an API minimum.
238Reviewed 2026-10-01 against [algorithm catalogue](https://pymoo.org/algorithms/list.html), [NSGA-III](https://pymoo.org/algorithms/moo/nsga3.html), [MOEA/D](https://pymoo.org/algorithms/moo/moead.html), [mixed variables](https://pymoo.org/customization/mixed.html), and released source. GA/DE/PSO, mixed/Optuna, NSGA-II/III, and MOEA/D received bounded native checks; the other algorithms are documentation/source-reviewed choices, not performance-validated recommendations.

Algorithm Selection Guidelines

For single-objective problems:

  • Start with GA for general problems
  • Use DE for continuous optimization
  • Try PSO for faster convergence on smooth problems
  • Use CMA-ES for difficult/noisy landscapes

For multi-objective problems:

  • 2-3 objectives: NSGA-II or SPEA2
  • 4+ objectives: NSGA-III
  • Preference articulation: R-NSGA-II
  • Decomposition-friendly: MOEA/D
  • Hypervolume focus: SMS-EMOA

For constrained problems:

  • Check algorithm support: feasibility-based survival is common, but MOEA/D rejects constrained problems
  • Heavy constraints: SRES/ISRES
  • Penalty methods for algorithm compatibility

For dynamic problems:

  • Time-varying: D-NSGA-II
  • Historical knowledge useful: KGB-DMOEA

For Das-Dennis directions, get_reference_directions("das-dennis", m, n_partitions=p) creates C(p+m-1,m-1) points on the simplex. With five objectives, p=3 gives 35 directions whereas p=12 gives 1820; NSGA-III defaults its population to this count. Reference directions are not feasible decision vectors or guaranteed Pareto points. NSGA-III also works with two/three objectives; four objectives is a routing heuristic, not an API minimum.

Reviewed 2026-10-01 against algorithm catalogue, NSGA-III, MOEA/D, mixed variables, and released source. GA/DE/PSO, mixed/Optuna, NSGA-II/III, and MOEA/D received bounded native checks; the other algorithms are documentation/source-reviewed choices, not performance-validated recommendations.

Raw lines 212 to 238