pymoo

Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA/D, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems.

Install

Hot:15

Download and extract to your skills directory

Copy command and send to AI Agent for auto-install:

Download and install this skill https://openskills.cc/api/download?slug=k-dense-ai-skills-pymoo&locale=en&source=copy

Pymoo - Python Multi-Objective Optimization Framework

Skill Overview


Pymoo is a Python framework dedicated to multi-objective optimization. It provides advanced evolutionary algorithms such as NSGA-II, NSGA-III, and MOEA/D, helping you efficiently solve single-objective and multi-objective optimization problems and analyze Pareto-front trade-off solutions.

Applicable Scenarios

1. Engineering Design and Optimization


When you need to solve multi-objective trade-off problems in engineering design—such as structural design, parameter optimization, and resource allocation—Pymoo can help you find optimal combinations of design solutions, balancing conflicting metrics like cost, performance, and reliability.

2. Algorithm Research and Benchmarking


If you are a researcher or student who needs to implement, test, or compare different evolutionary algorithms, Pymoo offers complete benchmark problem sets such as ZDT, DTLZ, and WFG, and supports flexible customization of genetic operators—making algorithm research more efficient.

3. Data Science and Machine Learning Optimization


In scenarios such as hyperparameter tuning, model selection, and feature engineering in machine learning—where multiple metrics must be optimized simultaneously (e.g., accuracy, model complexity, and training time)—Pymoo’s multi-objective optimization capabilities can help you find the best model configuration.

Core Features

1. Extensive Optimization Algorithm Library


Pymoo integrates popular evolutionary algorithms, including GA, DE, PSO, and CMA-ES for single-objective optimization, as well as NSGA-II, NSGA-III, MOEA/D, and SPEA2 for multi-objective optimization. It covers everything from simple to complex optimization scenarios, without needing to implement algorithms from scratch.

2. Flexible Problem Definition


Supports defining optimization problems via ElementwiseProblem, FunctionalProblem, or by directly inheriting from the Problem class. It can handle continuous, integer, binary, and mixed variables, as well as constrained optimization problems (inequality and equality constraints), meeting the needs of different domains.

3. Comprehensive Analysis and Visualization Tools


Includes a variety of visualization methods such as Pareto-front visualization, scatter plots, parallel coordinate plots, and pie charts, as well as multi-criteria decision-making (MCDM) tools (pseudo-weights, compromise programming, knee-point selection) to help you understand and choose optimal solutions.

FAQs

What is Pymoo? What is it mainly used for?


Pymoo is a Python-based multi-objective optimization framework focused on using evolutionary algorithms (e.g., NSGA-II, NSGA-III, MOEA/D) to solve single-objective and multi-objective optimization problems. It is particularly suitable for engineering design problems with conflicting objectives, allowing you to find the set of Pareto-optimal solutions and helping decision-makers make trade-offs among different objectives. The current stable version is 0.6.1.6.

How do I choose an appropriate algorithm in Pymoo?


Algorithm selection depends on the problem type. For multi-objective problems with 2–3 objectives, NSGA-II is recommended (standard and reliable). For “multi-objective” problems with 4+ objectives, choose NSGA-III (requires reference directions). For single-objective problems, GA, DE, PSO, and CMA-ES are all good options. For problems with many constraints, you can consider SRES or use penalty methods.

How can I define my own optimization problem?


There are three ways to define a problem:
1) Inherit from the ElementwiseProblem class (recommended for custom problems);
2) Use FunctionalProblem to directly pass in the objective function and constraint functions;
3) Inherit from the Problem class (vectorized evaluation).

When defining, you need to specify the number of variables (dimension), the number of objectives, variable bounds, and implement the _evaluate method to return objective values and the degree of constraint violation.