Skip to content
Back to skills

Alterlab Pymoo

ASecurity

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.

  • 68 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
data-aipythongobashapi

Works with

  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 11 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-pymoo --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Alterlab Pymoo?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Alterlab Pymoo
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alterlab-ieu-alterlab-pymoo/badge)](https://www.skillsdirectory.com/skills/alterlab-ieu-alterlab-pymoo)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: alterlab-pymoo
description: 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.
license: Apache-2.0
allowed-tools: Read Write Edit Bash(python:*) Bash(uv:*)
compatibility: No API key required. Runs locally via `uv run python`; requires pymoo 0.6.x (current 0.6.2 as of 2026-09).
metadata:
    skill-author: AlterLab
    version: "1.0.1"
    last_updated: "2026-09-23"
---

# 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:

```python
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

```bash
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).

Files in this skill

  • SKILL.md16.4 KB
  • references/algorithms.md6 KB
  • references/constraints_mcdm.md10.6 KB
  • references/operators.md8.6 KB
  • references/problems.md6.9 KB
  • references/visualization.md9 KB
  • scripts/custom_problem_example.py4.7 KB
  • scripts/decision_making_example.py4.5 KB
  • scripts/many_objective_example.py2.1 KB
  • scripts/multi_objective_example.py1.7 KB
  • scripts/single_objective_example.py1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.