6.0 KiB
Pymoo Algorithms Reference
Comprehensive reference for optimization algorithms available in pymoo.
Single-Objective Optimization Algorithms
Genetic Algorithm (GA)
Purpose: General-purpose single-objective evolutionary optimization Best for: Continuous, discrete, or mixed-variable problems Algorithm type: (μ+λ) genetic algorithm
Key parameters:
pop_size: Population size (default: 100)sampling: Initial population generation strategyselection: 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)
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.)
Particle Swarm Optimization (PSO)
Purpose: Single-objective optimization through swarm intelligence Best for: Continuous problems, fast convergence on smooth landscapes
CMA-ES
Purpose: Covariance Matrix Adaptation Evolution Strategy Best for: Continuous optimization, particularly for noisy or ill-conditioned problems
Pattern Search
Purpose: Direct search method Best for: Problems where gradient information is unavailable
Nelder-Mead
Purpose: Simplex-based optimization Best for: Local optimization of continuous functions
Multi-Objective Optimization Algorithms
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 strategycrossover: Default SBX for continuousmutation: Default Polynomial Mutationsurvival: 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
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 directionscrossover: Default SBXmutation: 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", n_dim=4, n_partitions=12)
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 provides more uniform distribution
- NSGA-II has lower computational overhead
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
U-NSGA-III (Unified NSGA-III)
Purpose: Improved version handling various scenarios Best for: Many-objective problems with additional robustness
MOEA/D (Multi-Objective Evolutionary Algorithm based on Decomposition)
Purpose: Decomposition-based multi-objective optimization Best for: Problems where decomposition into scalar subproblems is effective
AGE-MOEA
Purpose: Adaptive geometry estimation Best for: Multi and many-objective problems with adaptive mechanisms
RVEA (Reference Vector guided Evolutionary Algorithm)
Purpose: Reference vector-based many-objective optimization Best for: Many-objective problems with adaptive reference vectors
SMS-EMOA
Purpose: S-Metric Selection Evolutionary Multi-objective Algorithm Best for: Problems where hypervolume indicator is critical Selection: Uses dominated hypervolume contribution
Dynamic Multi-Objective Algorithms
D-NSGA-II
Purpose: Dynamic multi-objective problems Best for: Time-varying objective functions or constraints
KGB-DMOEA
Purpose: Knowledge-guided dynamic multi-objective optimization Best for: Dynamic problems leveraging historical information
Constrained Optimization
SRES (Stochastic Ranking Evolution Strategy)
Purpose: Single-objective constrained optimization Best for: Heavily constrained problems
ISRES (Improved SRES)
Purpose: Enhanced constrained optimization Best for: Complex constraint landscapes
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
- 4+ objectives: NSGA-III
- Preference articulation: R-NSGA-II
- Decomposition-friendly: MOEA/D
- Hypervolume focus: SMS-EMOA
For constrained problems:
- Feasibility-based survival selection (works with most algorithms)
- Heavy constraints: SRES/ISRES
- Penalty methods for algorithm compatibility
For dynamic problems:
- Time-varying: D-NSGA-II
- Historical knowledge useful: KGB-DMOEA