skillfed

pymoo

Multi-Objective Optimization in Python

pymoo v0.6.2 880.2K downloads/30d#4,822 on PyPI
Permissive license Apache-2.0 Active released

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 pymoo

uv

uv add pymoo

poetry

poetry add pymoo

Installing 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

Intended Audience :: DevelopersIntended Audience :: Science/ResearchOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Scientific/EngineeringTopic :: Scientific/Engineering :: Artificial IntelligenceTopic :: Scientific/Engineering :: Mathematics

Tags

multi-objective optimizationNSGA2 algorithmpareto front optimizationevolutionary algorithms pythonconstraint optimizationalgorithm benchmarkingoptimization visualization
evolutionary-algorithmspareto-optimizationmulti-objective

More Scientific/Engineering packages

Further reading