# Pymoo > Framework de optimización multiobjetivo: NSGA-II, NSGA-III, MOEA/D, frentes de Pareto, manejo de restricciones y benchmarks (ZDT, DTLZ) para problemas de diseño e ingeniería. Fuente: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/pymoo Markdown: https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/pymoo.md Repositorio: https://github.com/K-Dense-AI/scientific-agent-skills Autor: K-Dense-AI Licencia: Apache-2.0 license Actualizado: el mes pasado Coste de contexto: 44 tok instalada, 2.6k tok al activarse, 20.8k tok con todos los archivos del bundle Bundle: 13 archivos, 81 KB Permisos que pide: read write edit bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent claude-code # Cursor npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent cursor # Codex npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent codex # Gemini CLI npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent gemini # Windsurf npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent windsurf # Cline npx -y skills add K-Dense-AI/scientific-agent-skills --skill pymoo --agent cline ``` ## Qué hace - Resuelve problemas de optimización mono y multiobjetivo con algoritmos como NSGA-II, NSGA-III, MOEA/D y SPEA2 - Encuentra frentes de Pareto y analiza soluciones de compromiso en problemas con objetivos en conflicto - Ofrece problemas de referencia (ZDT, DTLZ, WFG) para comparar algoritmos - Permite personalizar operadores genéticos (cruce, mutación, selección) y manejar restricciones - Incluye nueve flujos de trabajo listos para ejecutar y scripts de ejemplo para cada tipo de problema ## Cuándo usarla - El usuario resuelve problemas de optimización con uno o varios objetivos - Necesita encontrar soluciones Pareto-óptimas y analizar trade-offs - Quiere implementar algoritmos evolutivos (GA, DE, PSO, NSGA-II/III) o comparar contra problemas de referencia - Trabaja con variables binarias, discretas, continuas o mixtas y necesita elegir entre soluciones competidoras ## Qué la activa - "Optimiza este problema con NSGA-II y muéstrame el frente de Pareto" - "Define un problema personalizado en pymoo con restricciones" - "Compara NSGA-II y MOEA/D en el problema ZDT1" - "Elige el algoritmo adecuado para un problema con 5 objetivos" ## Antes de instalar - Requiere Python 3.10+ y pymoo (uv pip install pymoo); matplotlib, autograd y joblib son opcionales según la función usada. - Necesita en el PATH: python3 ## Archivos - SKILL.md — 10 KB - references/algorithms.md — 8 KB - references/constraints_mcdm.md — 11 KB - references/operators.md — 9 KB - references/parallelization.md — 3 KB - references/problems.md — 7 KB - references/quick_start_workflows.md — 11 KB - references/visualization.md — 9 KB - scripts/custom_problem_example.py — 5 KB - scripts/decision_making_example.py — 4 KB - scripts/many_objective_example.py — 2 KB - scripts/multi_objective_example.py — 2 KB - scripts/single_objective_example.py — 2 KB ## SKILL.md Reproducido tal cual desde K-Dense-AI/scientific-agent-skills bajo Apache-2.0 license. Esta sección es el documento original y está en inglés. # 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, SPEA2), 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. Current stable release: **pymoo 0.6.1.6** (November 2025). ## Installation ```bash uv pip install pymoo ``` For reproducible environments, pin a version: `uv pip install "pymoo==0.6.1.6"`. **Dependencies:** NumPy (2.x compatible since 0.6.1.3), SciPy, matplotlib (visualization). Autograd is optional for gradient-based features (since 0.6.1.3). **Documentation:** https://pymoo.org/ — LLM-friendly index: https://pymoo.org/llms.txt ## 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 ## 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 Definition Styles Pymoo supports three problem definition styles: - **`Problem`**: Vectorized — `_evaluate` receives a batch of solutions (matrix) - **`ElementwiseProblem`**: One solution per call — recommended for custom problems and parallel evaluation - **`FunctionalProblem`**: Define objectives and constraints as separate functions without subclassing ### 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 **Mixed-variable:** Continuous, integer, binary, and categorical variables in one problem **Dynamic:** Time-varying objectives or constraints ## Quick Start Workflows Nine runnable workflows are in [references/quick_start_workflows.md](references/quick_start_workflows.md): | # | Workflow | Use when | | --- | --- | --- | | 1 | Single-objective optimization | one objective, GA or DE | | 2 | Multi-objective (2-3 objectives) | NSGA-II and a Pareto front | | 3 | Many-objective (4+ objectives) | NSGA-III or reference-direction methods | | 4 | Custom problem definition | subclassing `Problem` / `ElementwiseProblem` | | 5 | Constraint handling | inequality and equality constraints | | 6 | Decision making from a Pareto front | scalarization and MCDM selection | | 7 | Visualization | scatter, PCP, radviz, and heatmap views | | 8 | Parallel evaluation | threads, processes, or Dask for expensive objectives | | 9 | Mixed-variable optimization | integer, binary, and categorical variables | ## Algorithm Selection Guide ### Single-Objective Problems | Algorithm | Best For | Key Features | |-----------|----------|--------------| | **GA** | General-purpose | Flexible, customizable operators | | **DE** | Continuous optimization | Good global search | | **PSO** | Smooth landscapes | Fast convergence | | **CMA-ES** | Difficult/noisy problems | Self-adapting | ### Multi-Objective Problems (2-3 objectives) | Algorithm | Best For | Key Features | |-----------|----------|--------------| | **NSGA-II** | Standard benchmark | Fast, reliable, well-tested | | **SPEA2** | Archive-based MOO | Strength-based fitness, external archive | | **R-NSGA-II** | Preference regions | Reference point guidance | | **MOEA/D** | Decomposable problems | Scalarization approach | ### Many-Objective Problems (4+ objectives) | Algorithm | Best For | Key Features | |-----------|----------|--------------| | **NSGA-III** | 4-15 objectives | Reference direction-based | | **RVEA** | Adaptive search | Reference vector evolution | | **AGE-MOEA** | Complex landscapes | Adaptive geometry | ### Constrained Problems | Approach | Algorithm | When to Use | |----------|-----------|-------------| | Feasibility-first | Any algorithm | Large feasible region | | Specialized | SRES, ISRES | Heavy constraints | | Penalty | GA + penalty | Algorithm compatibility | **See:** `references/algorithms.md` for comprehensive algorithm reference ## Benchmark Problems ### Quick problem access: ```python from pymoo.problems import get_problem # Single-objective problem = get_problem("rastrigin", n_var=10) problem = get_problem("rosenbrock", n_var=10) # Multi-objective problem = get_problem("zdt1") # Convex front problem = get_problem("zdt2") # Non-convex front problem = get_problem("zdt3") # Disconnected front # Many-objective problem = get_problem("dtlz2", n_obj=5, n_var=12) problem = get_problem("dtlz7", n_obj=4) ``` **See:** `references/problems.md` for complete test problem reference ## Genetic Operator Customization ### Standard operator configuration: ```python from pymoo.algorithms.soo.nonconvex.ga import GA from pymoo.operators.crossover.sbx import SBX from pymoo.operators.mutation.pm import PM algorithm = GA( pop_size=100, crossover=SBX(prob=0.9, eta=15), mutation=PM(eta=20), eliminate_duplicates=True ) ``` ### Operator selection by variable type: **Continuous variables:** - Crossover: SBX (Simulated Binary Crossover) - Mutation: PM (Polynomial Mutation) **Binary variables:** - Crossover: TwoPointCrossover, UniformCrossover - Mutation: BitflipMutation **Permutations (TSP, scheduling):** - Crossover: OrderCrossover (OX) - Mutation: InversionMutation **See:** `references/operators.md` for comprehensive operator reference ## Performance and Troubleshooting ### Common issues and solutions: **Problem: Algorithm not converging** - Increase population size - Increase number of generations - Check if problem is multimodal (try different algorithms) - Verify constraints are correctly formulated **Problem: Poor Pareto front distribution** - For NSGA-III: Adjust reference directions - Increase population size - Check for duplicate elimination - Verify problem scaling **Problem: Few feasible solutions** - Use constraint-as-objective approach - Apply repair operators - Try SRES/ISRES for constrained problems - Check constraint formulation (should be g <= 0) **Problem: High computational cost** - Reduce population size - Decrease number of generations - Use simpler operators - Enable parallel evaluation via `elementwise_runner` (see Workflow 8) ### Best practices: 1. **Normalize objectives** when scales differ significantly 2. **Set random seed** for reproducibility 3. **Save history** to analyze convergence: `save_history=True` 4. **Visualize results** to understand solution quality 5. **Compare with true Pareto front** when available 6. **Use appropriate termination criteria** (generations, evaluations, tolerance) 7. **Tune operator parameters** for problem characteristics ## Resources This skill includes comprehensive reference documentation and executable examples: ### references/ Detailed documentation for in-depth understanding: - **algorithms.md**: Complete algorithm reference with parameters, usage, and selection guidelines - **problems.md**: Benchmark test problems (ZDT, DTLZ, WFG) with characteristics - **operators.md**: Genetic operators (sampling, selection, crossover, mutation) with configuration - **visualization.md**: All visualization types with examples and selection guide - **constraints_mcdm.md**: Constraint handling techniques and multi-criteria decision making methods - **parallelization.md**: Parallel evaluation with StarmapParallelization and JoblibParallelization **Search patterns for references:** - Algorithm details: `grep -r "NSGA-II\|NSGA-III\|MOEA/D" references/` - Constraint methods: `grep -r "Feasibility First\|Penalty\|Repair" references/` - Visualization types: `grep -r "Scatter\|PCP\|Petal" references/` ### scripts/ Executable examples demonstrating common workflows: - **single_objective_example.py**: Basic single-objective optimization with GA - **multi_objective_example.py**: Multi-objective optimization with NSGA-II, visualization - **many_objective_example.py**: Many-objective optimization with NSGA-III, reference directions - **custom_problem_example.py**: Defining custom problems (constrained and unconstrained) - **decision_making_example.py**: Multi-criteria decision making with different preferences **Run examples:** ```bash python3 scripts/single_objective_example.py python3 scripts/multi_objective_example.py python3 scripts/many_objective_example.py python3 scripts/custom_problem_example.py python3 scripts/decision_making_example.py ``` ## Additional Notes **Common patterns:** - Use `ElementwiseProblem` for custom problems (or `FunctionalProblem` for function-based definitions) - Use `vars` dict with typed variables for mixed-variable problems - Constraints formulated as `g(x) <= 0` and `h(x) = 0` - Reference directions required for NSGA-III - Normalize objectives before MCDM - Use appropriate termination: `('n_gen', N)` or `get_termination("f_tol", tol=0.001)` ## Dónde encaja - Categoría: [Datos y analítica](https://skillsagentes.com/categorias/datos-analitica.md) — Consulta, limpia y visualiza datos sin salir del agente. - Creador: [K-Dense-AI](https://skillsagentes.com/creators/k-dense-ai.md) — 163 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Citation Management](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/citation-management.md): Gestión integral de citas académicas: busca en OpenAlex, PubMed y Google Scholar, extrae metadatos precisos, valida citas y genera entradas BibTeX correctamente formateadas. - [Scientific Slides](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/scientific-slides.md): Crea decks de diapositivas y presentaciones para charlas de investigación: PowerPoint, presentaciones de conferencia, seminarios, defensas de tesis. Da estructura, plantillas, guía de tiempos y validación visual. - [Literature Review](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/literature-review.md): Realiza revisiones bibliográficas sistemáticas y completas usando varias bases académicas (PubMed, arXiv, bioRxiv, Semantic Scholar). Genera markdown y PDF con citas verificadas en varios estilos (APA, Nature, Vancouver). - [Infographics](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/infographics.md): Crea infografías profesionales con Nano Banana Pro AI y refinamiento iterativo inteligente. Usa Gemini 3.6 Flash para revisar la calidad e integra investigación con Perplexity Sonar. Soporta 10 tipos, 8 estilos y paletas para daltonismo. - [Latex Posters](https://skillsagentes.com/skills/k-dense-ai/scientific-agent-skills/latex-posters.md): Crea pósteres de investigación profesionales en LaTeX con beamerposter, tikzposter o baposter, para conferencias y comunicación científica: layout, colores, columnas múltiples e integración de figuras. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)