Alterlab pymoo
Skill AlterLab-IEU/AlterLab-Academic-Skills/skills/data-science/alterlab-pymoo
Multi-objective optimization with pymoo — NSGA-II, NSGA-III, MOEA/D, Pareto-front computation, constraint handling, and standard benchmarks (ZDT, DTLZ). Use when solving multi-objective or constrained optimization problems, computing Pareto-optimal trade-offs, or tackling engineering design problems with competing objectives. Part of the AlterLab Academic Skills suite.From its SKILL.md
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-pymooAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
5.0 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
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
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
- Pick problem type — single, multi (2-3 obj), many (4+ obj), or constrained.
- Define or select the problem — built-in via
get_problem(...), or subclassElementwiseProblemfor custom (objectives inout["F"], inequality constraintsg(x) <= 0inout["G"], equalityh(x) = 0inout["H"]). - 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. - Set termination —
('n_gen', N)orget_termination("f_tol", tol=0.001). - Run with
minimize(problem, algorithm, termination, seed=1, verbose=True). - Inspect
result.X/result.F/result.G(orresult.CVfor constraint violation). - 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: NumPy, SciPy, matplotlib, autograd (optional). Docs: https://pymoo.org/ — this skill targets pymoo 0.6.x.
What ships with it: 13 files
74.8 KB alongside SKILL.md, 5 of them executable
evals/
- evals.json4.5 KB
references/
- algorithms.md6.0 KB
- constraints_mcdm.md12.2 KB
- operators.md8.6 KB
- problems.md6.9 KB
- quick_reference.md4.6 KB
- visualization.md9.5 KB
- workflows.md8.1 KB
scripts/
- custom_problem_example.pyruns4.7 KB
- decision_making_example.pyruns4.5 KB
- many_objective_example.pyruns2.0 KB
- multi_objective_example.pyruns1.7 KB
- single_objective_example.pyruns1.6 KB