SuperAPI AI Directory

alterlab-pymoo

General & other

View repository

Updated 10-15 19:56

About this skill

Pymoo - Multi-Objective Optimization in Python

Overview

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), 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.

When to Use This Skill

This skill should be used when:

  • Solving optimization problems with one or multiple objectives
  • Finding Pareto-optimal solutions and analyzing trade-offs
  • Implementing evolutionary algorithms (GA, DE, PSO, NSGA-II/III)
  • Working with constrained optimization problems
  • Benchmarking algorithms on standard test problems (ZDT, DTLZ, WFG)
  • Customizing genetic operators (crossover, mutation, selection)
  • Visualizing high-dimensional optimization results
  • Making decisions from multiple competing solutions
  • Handling binary, discrete, continuous, or mixed-variable problems

Does NOT Trigger

Scenario Use Instead
Simulating queues or shared resources over time (discrete-event simulation) alterlab-simpy
Hyperparameter search for a machine-learning model (grid/random search, CV) alterlab-scikit-learn
Closed-form optimum of a formula via derivatives or symbolic solving alterlab-sympy

Core Concepts

The Unified Interface

Pymoo uses a consistent minimize() function for all optimization tasks:

from 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 history

Problem Types

Single-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 Dynamic: Time-varying objectives or constraints

Core Workflow

  1. Pick problem type — single, multi (2-3 obj), many (4+ obj), or constrained.
  2. Define or select the problem — built-in via get_problem(...), or subclass ElementwiseProblem for custom (objectives in out["F"], inequality constraints g(x) <= 0 in out["G"], equality h(x) = 0 in out["H"]).
  3. Choose the algorithm — NSGA-II for 2-3 objectives, NSGA-III (with reference directions) for 4+, GA/DE/PSO/CMA-ES for single-objective. See the selection tables in references/quick_reference.md.
  4. Set termination — ('n_gen', N), ('n_evals', N), or tolerance-based get_termination("moo", ftol=1e-3, n_max_gen=500) ("soo" for single-objective; there is no "f_tol" key).
  5. Run with minimize(problem, algorithm, termination, seed=1, verbose=True).
  6. Inspect result.X / result.F / result.G (or result.CV for constraint violation).
  7. Decide & visualize — apply MCDM to pick a preferred Pareto solution, plot with Scatter/PCP/Petal.

Always set seed for reproducibility, normalize objectives when scales differ, and provide reference directions for NSGA-III.

Routing — where to look

You need… Go to
Complete copy-paste examples for all 7 workflows (single/multi/many-objective, custom problems, constraint handling, MCDM decision making, visualization) references/workflows.md
Algorithm-selection tables, benchmark problem list, operator config, troubleshooting, best practices, install references/quick_reference.md
Deep algorithm reference (parameters, usage, selection) references/algorithms.md
Benchmark test problems (ZDT, DTLZ, WFG) with characteristics references/problems.md
Genetic operators (sampling, selection, crossover, mutation) references/operators.md
All visualization types with examples references/visualization.md
Constraint handling + multi-criteria decision making references/constraints_mcdm.md

Runnable scripts (scripts/): single_objective_example.py, multi_objective_example.py, many_objective_example.py, custom_problem_example.py, decision_making_example.py. Run with uv run python scripts/<name>.py.

Search references: grep -r "NSGA-II\|NSGA-III\|MOEA/D" references/ · grep -r "Feasibility First\|Penalty\|Repair" references/ · grep -r "Scatter\|PCP\|Petal" references/

Install

uv pip install pymoo

Dependencies (installed automatically): NumPy, SciPy, matplotlib, autograd, cma, moocore. Docs: https://pymoo.org/ — this skill targets pymoo 0.6.x (current 0.6.2, June 2026, which restored CMA-ES under NumPy 2).