"Use pymoo for single-, multi-, and many-objective optimization,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill pymoo --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pymoo?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-pymoo)More formats (shields.io, HTML) on the badges page.
---
name: pymoo
description: "Use pymoo for single-, multi-, and many-objective optimization,
custom problems, evolutionary operators, performance tuning, and Pareto
analysis."
metadata:
disco-role: operating
disable-model-invocation: true
license: Apache 2.0
---
# pymoo
Use this repo skill when a task involves pymoo, evolutionary computation,
single-objective optimization, multi-objective or many-objective optimization,
Pareto fronts, custom optimization problems, genetic operators, reference
directions, constraint handling, performance indicators, or pymoo visualization.
pymoo is a Python package for optimization workflows. It minimizes all
objectives, represents inequality constraints as `G <= 0`, and centers common
usage around a `Problem`, an `Algorithm`, a termination criterion, and
`pymoo.optimize.minimize`.
## Quick install and smoke
Public install path:
```bash
python -m pip install -U pymoo
```
Minimal import/runtime check:
```bash
python - <<'PY'
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.optimize import minimize
from pymoo.problems import get_problem
res = minimize(get_problem("zdt1"), NSGA2(pop_size=20), ("n_gen", 3), seed=1, verbose=False)
print(res.F.shape, res.algorithm.evaluator.n_eval)
PY
```
For a bundled self-check after installing pymoo, run
[scripts/pymoo_quickstart_smoke.py](scripts/pymoo_quickstart_smoke.py).
## Route by task
| User task signal | Read |
| --- | --- |
| Run NSGA-II/NSGA-III/GA/DE/PSO/MOEA/D, choose an algorithm, set termination, use `minimize`, inspect `Result`, callbacks, history, ask-and-tell, external evaluation loop | [optimization-workflows](sub-skills/optimization-workflows/SKILL.md) |
| Define a custom problem, choose `Problem` vs `ElementwiseProblem` vs `FunctionalProblem`, use `get_problem`, fix `F`/`G`/`H` shapes, convert maximization or constraints, handle bounds/Pareto fronts | [problem-modeling](sub-skills/problem-modeling/SKILL.md) |
| Configure real/integer/binary/choice variables, mixed-variable search, sampling/crossover/mutation/repair, duplicate elimination, initial populations, custom object/permutation operators, hyperparameter helper APIs | [operators-and-variables](sub-skills/operators-and-variables/SKILL.md) |
| Speed up slow evaluations, vectorize objectives, add thread/process starmap, use optional joblib/dask/ray, check Cython compiled extensions, reason about optional GPU/backend paths, control history/progress overhead | [performance-and-parallelization](sub-skills/performance-and-parallelization/SKILL.md) |
| Compute hypervolume, GD/IGD/epsilon/KKTPM/R-metric, generate reference directions, use decomposition or MCDM, analyze convergence/history, save headless Pareto plots | [analysis-and-visualization](sub-skills/analysis-and-visualization/SKILL.md) |
## Operating rules that prevent common pymoo mistakes
1. **Minimization only**: negate objectives that are originally maximized.
2. **Constraint sign**: inequality constraints are feasible when `out["G"] <= 0`;
equality residuals belong in `out["H"]` with `n_eq_constr`.
3. **Validate problem shapes first**: check tiny `problem.evaluate(...)` samples
before tuning algorithms.
4. **Use explicit budgets**: pass termination tuples such as `("n_gen", 50)` or
`("n_evals", 5000)` for reproducible scripts.
5. **Seed stochastic runs**: pass `seed=...` and control randomness inside custom
objective code, especially under parallel evaluation.
6. **Match algorithm to search space**: mixed/discrete/permutation variables need
matching variables/operators or repair, not just a float-coded algorithm.
7. **Keep optional extras explicit**: base pymoo includes matplotlib and core
numerical dependencies; joblib/dask/ray, Optuna, COMO-CMA-ES, pyrecorder, and
GPU frameworks are optional task-specific additions.
8. **Use headless plotting in agents**: set a non-interactive Matplotlib backend
and save figures instead of relying on GUI `show()`.
## Shared references
- [API entrypoints](references/api-entrypoints.md): cross-sub-skill import map,
version/extras notes, and first checks.
- [Troubleshooting](references/troubleshooting.md): install/import, compiled
extension, optional dependency, and cross-workflow failure routing.
- [Repo provenance](references/repo-provenance.md): source version and evidence
baseline for refresh decisions.
- [Repo routing metadata](references/repo-routing-metadata.json): structured
router metadata consumed during managed import.
## Bundled self-check scripts
- [scripts/pymoo_quickstart_smoke.py](scripts/pymoo_quickstart_smoke.py): base
import, compiled-extension status, and tiny `NSGA2`/`ZDT1` run.
- Sub-skill scripts cover custom-problem shape validation, mixed-variable search,
parallel elementwise evaluation, indicator checks, compiled-extension checks,
and headless scatter plotting.
## Avoid this skill when
- The task is generic mathematical optimization with SciPy and does not use
pymoo APIs, evolutionary operators, Pareto fronts, or pymoo problem classes.
- The task is hyperparameter optimization with Optuna/Ray Tune alone and no pymoo
algorithm/problem integration.
- The task requires training deep learning models or GPU tensor code unrelated to
pymoo's optional vectorized objective pattern.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!