Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA/D, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 99% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 135% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 158% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 107% | 0% |
Pymoo is a comprehensive Python framework for optimization with emphasis on multi-objective problems. Solve single and multi-objective optimization using state-of-the-art algorithms (NSGA-II/III, MOEA/D, SPEA2), benchmark problems (ZDT, DTLZ), customizable genetic operators, and multi-criteria decision making methods. Excels at finding trade-off solutions (Pareto fronts) for problems with conflicting objectives. Current stable release: pymoo 0.6.1.6 (November 2025).
bashuv pip install pymoo
For reproducible environments, pin a version: uv pip install "pymoo==0.6.1.6".
Dependencies: NumPy (2.x compatible since 0.6.1.3), SciPy, matplotlib (visualization). Autograd is optional for gradient-based features (since 0.6.1.3).
Documentation: https://pymoo.org/ — LLM-friendly index: https://pymoo.org/llms.txt
This skill should be used when:
Pymoo uses a consistent minimize() function for all optimization tasks:
pythonfrom pymoo.optimize import minimize result = minimize( problem, # What to optimize algorithm, # How to optimize termination, # When to stop seed=1, verbose=True )
Result object contains:
result.X: Decision variables of optimal solution(s)result.F: Objective values of optimal solution(s)result.G: Constraint violations (if constrained)result.algorithm: Algorithm object with historyPymoo supports three problem definition styles:
Problem: Vectorized — _evaluate receives a batch of solutions (matrix)ElementwiseProblem: One solution per call — recommended for custom problems and parallel evaluationFunctionalProblem: Define objectives and constraints as separate functions without subclassingSingle-objective: One objective to minimize/maximize Multi-objective: 2-3 conflicting objectives → Pareto front Many-objective: 4+ objectives → High-dimensional Pareto front Constrained: Objectives + inequality/equality constraints Mixed-variable: Continuous, integer, binary, and categorical variables in one problem Dynamic: Time-varying objectives or constraints
Nine runnable workflows are in references/quick_start_workflows.md:
| # | Workflow | Use when | | --- | --- | --- | | 1 | Single-objective optimization | one objective, GA or DE | | 2 | Multi-objective (2-3 objectives) | NSGA-II and a Pareto front | | 3 | Many-objective (4+ objectives) | NSGA-III or reference-direction methods | | 4 | Custom problem definition | subclassing Problem / ElementwiseProblem | | 5 | Constraint handling | inequality and equality constraints | | 6 | Decision making from a Pareto front | scalarization and MCDM selection | | 7 | Visualization | scatter, PCP, radviz, and heatmap views | | 8 | Parallel evaluation | threads, processes, or Dask for expensive objectives | | 9 | Mixed-variable optimization | integer, binary, and categorical variables |
| Algorithm | Best For | Key Features | |-----------|----------|--------------| | GA | General-purpose | Flexible, customizable operators | | DE | Continuous optimization | Good global search | | PSO | Smooth landscapes | Fast convergence | | CMA-ES | Difficult/noisy problems | Self-adapting |
| Algorithm | Best For | Key Features | |-----------|----------|--------------| | NSGA-II | Standard benchmark | Fast, reliable, well-tested | | SPEA2 | Archive-based MOO | Strength-based fitness, external archive | | R-NSGA-II | Preference regions | Reference point guidance | | MOEA/D | Decomposable problems | Scalarization approach |
| Algorithm | Best For | Key Features | |-----------|----------|--------------| | NSGA-III | 4-15 objectives | Reference direction-based | | RVEA | Adaptive search | Reference vector evolution | | AGE-MOEA | Complex landscapes | Adaptive geometry |
| Approach | Algorithm | When to Use | |----------|-----------|-------------| | Feasibility-first | Any algorithm | Large feasible region | | Specialized | SRES, ISRES | Heavy constraints | | Penalty | GA + penalty | Algorithm compatibility |
See: references/algorithms.md for comprehensive algorithm reference
pythonfrom pymoo.problems import get_problem # Single-objective problem = get_problem("rastrigin", n_var=10) problem = get_problem("rosenbrock", n_var=10) # Multi-objective problem = get_problem("zdt1") # Convex front problem = get_problem("zdt2") # Non-convex front problem = get_problem("zdt3") # Disconnected front # Many-objective problem = get_problem("dtlz2", n_obj=5, n_var=12) problem = get_problem("dtlz7", n_obj=4)
See: references/problems.md for complete test problem reference
pythonfrom pymoo.algorithms.soo.nonconvex.ga import GA from pymoo.operators.crossover.sbx import SBX from pymoo.operators.mutation.pm import PM algorithm = GA( pop_size=100, crossover=SBX(prob=0.9, eta=15), mutation=PM(eta=20), eliminate_duplicates=True )
Continuous variables:
Binary variables:
Permutations (TSP, scheduling):
See: references/operators.md for comprehensive operator reference
Problem: Algorithm not converging
Problem: Poor Pareto front distribution
Problem: Few feasible solutions
Problem: High computational cost
elementwise_runner (see Workflow 8)save_history=TrueThis skill includes comprehensive reference documentation and executable examples:
Detailed documentation for in-depth understanding:
Search patterns for references:
grep -r "NSGA-II\|NSGA-III\|MOEA/D" references/grep -r "Feasibility First\|Penalty\|Repair" references/grep -r "Scatter\|PCP\|Petal" references/Executable examples demonstrating common workflows:
Run examples:
bashpython3 scripts/single_objective_example.py python3 scripts/multi_objective_example.py python3 scripts/many_objective_example.py python3 scripts/custom_problem_example.py python3 scripts/decision_making_example.py
Common patterns:
ElementwiseProblem for custom problems (or FunctionalProblem for function-based definitions)vars dict with typed variables for mixed-variable problemsg(x) <= 0 and h(x) = 0('n_gen', N) or get_termination("f_tol", tol=0.001)Other measured skills in the registry, with their headline benchmark lift.