pymoo
Multi-Objective Optimization in Python
What it is and what it does
pymoo is a framework for single- and multi-objective optimization that provides state-of-the-art algorithms (such as NSGA2) alongside utilities for visualization and decision-making. It depends on numpy, scipy, and several specialized libraries (moocore, autograd, cma) to handle numerical computation and algorithm-specific operations. The package includes optional compiled extensions for performance-critical sections, which can be verified after installation.
Developers use pymoo to solve optimization problems where multiple conflicting objectives must be balanced—finding Pareto-optimal solutions rather than a single best answer. It is designed for researchers and practitioners working with evolutionary algorithms, constraint handling, and multi-objective problem benchmarking. The framework handles problem definition, algorithm selection, execution, and result visualization within a unified interface.
Use it for:
- Solve multi-objective engineering design problems where trade-offs between competing goals (cost, weight, performance) must be explored.
- Benchmark and compare evolutionary algorithms on standard test problems using built-in problem definitions.
- Visualize Pareto fronts and decision spaces to understand solution trade-offs in optimization results.
- Implement custom optimization algorithms by extending pymoo's base classes and algorithm interfaces.
- Research and prototype new multi-objective optimization techniques with access to standard algorithm implementations.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pymoo implements single- and multi-objective optimization algorithms with visualization and decision-making tools for solving complex optimization problems in Python.
Yes. pymoo is actively maintained, has no known vulnerabilities, supports current Python versions (3.10+), and fills a clear need for multi-objective optimization in Python. The medium install friction is justified by pre-built wheels and optional performance compilation. Suitable for research, engineering, and production use under Apache-2.0 licensing.
Install
pymoo on PyPI
pip
pip install pymoouv
uv add pymoopoetry
poetry add pymooInstalling pymoo
Before you install
Medium install friction due to compiled C extensions for performance; wheels are pre-built for Python 3.10–3.12 on major platforms (macOS, Linux, Windows). Active maintenance with a release 47 days ago.
License in practice
Apache-2.0 permissive license allows commercial and private use with minimal restrictions; suitable for most projects.
Quickstart
pip install pymoo
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.problems import get_problem
from pymoo.optimize import minimize
problem = get_problem("zdt1")
algorithm = NSGA2(pop_size=100)
res = minimize(problem, algorithm, ('n_gen', 200), seed=1)
Requires Python 3.10 or later; compiled extensions are optional but recommended for performance.
Verify before relying
- Whether compiled extensions are automatically used or require explicit configuration after install.
- Performance characteristics compared to other multi-objective optimization frameworks.
- Scalability limits for problem size or population size in real-world applications.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 8 — numpy, scipy, moocore, autograd, cma, matplotlib, alive_progress, Deprecated |
| Maintenance | actively maintained — 47 days since the last release |
| First released | |
| Downloads | 880,245/month — #4,822 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pymoo-0.6.2-cp310-cp310-macosx_10_9_universal2.whl; pymoo-0.6.2-cp310-cp310-macosx_11_0_arm64.whl; pymoo-0.6.2-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; pymoo-0.6.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; pymoo-0.6.2-cp310-cp310-musllinux_1_2_aarch64.whl; pymoo-0.6.2-cp310-cp310-musllinux_1_2_x86_64.whl; pymoo-0.6.2-cp310-cp310-win_amd64.whl; pymoo-0.6.2-cp311-cp311-macosx_10_9_universal2.whl; pymoo-0.6.2-cp311-cp311-macosx_11_0_arm64.whl; pymoo-0.6.2-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; pymoo-0.6.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; pymoo-0.6.2-cp311-cp311-musllinux_1_2_aarch64.whl; pymoo-0.6.2-cp311-cp311-musllinux_1_2_x86_64.whl; pymoo-0.6.2-cp311-cp311-win_amd64.whl; pymoo-0.6.2-cp312-cp312-macosx_10_13_universal2.whl; pymoo-0.6.2-cp312-cp312-macosx_11_0_arm64.whl; pymoo-0.6.2-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl; pymoo-0.6.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl; pymoo-0.6.2-cp312-cp312-musllinux_1_2_aarch64.whl; pymoo-0.6.2-cp312-cp312-musllinux_1_2_x86_64.whl
Keywords: optimization
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
deapDEAP is an evolutionary computation framework…
copyleft · top 15,000 on PyPI
moocoreProvides fast implementations of core…
copyleft · top 5,000 on PyPI
pygadPyGAD is a Python library for building and…
unclear · top 15,000 on PyPI
pyswarmsPySwarms implements particle swarm optimization…
permissive · top 15,000 on PyPI
mabwiserMABWiser implements multi-armed bandit…
permissive · top 15,000 on PyPI
paretosetComputes the Pareto (non-dominated) set from…
permissive · top 15,000 on PyPI
cvxoptcvxopt is a Python library for solving convex…
unclear · top 5,000 on PyPI
nloptNLopt provides Python bindings to the NLopt…
permissive · top 5,000 on PyPI
docplexModeling library for building and solving…
permissive · top 15,000 on PyPI
torch-optimizerProvides a collection of alternative…
permissive · top 15,000 on PyPI