Skill Tracer
Skills › Scientific Agent Skills › pymoo

pymoo

skill · 309 lines · Apache-2.0 license · skills/pymoo/SKILL.md

The facts

Its description

Solves and validates single-, multi-, and many-objective optimization with pymoo, including NSGA-II, NSGA-III, MOEA/D, constraints, Pareto approximations, reference directions, and ZDT/DTLZ benchmarks for engineering and research problems.

The description the agent reads to decide when to use it.

From its settingsline 3

Tools it may use, or may not

allowed-tools: Read Write Edit Bash

Tools it may use while it runs without asking you first.

From its settingsline 5

Runs scripts

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

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 272 line 273 line 274 line 275 line 276

Files it mentions

references/quick_start_workflows.md, references/algorithms.md, references/problems.md, references/operators.md, references/lifecycle.md

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 93 line 145 line 167 line 199 line 252

Licence

Apache-2.0 license, from the skill file

The terms its author shares it under, which let it be shown here.

From its settingsline 4 licence text

Other settings

compatibility: Requires Python 3.10+ and pymoo 0.6.2 with its NumPy, SciPy, matplotlib and autograd dependencies. Optional joblib for parallel runners, optuna for its algorithm wrapper, and dill for checkpoints. Network needed for installation only. metadata: version: "1.6" last-reviewed: "2026-10-01" upstream-version: "0.6.2" skill-author: K-Dense Inc.

More settings at the top of the file, shown as written.

From its settingsline 6 line 7
Other files in this skill (13) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: pymoo
3description: Solves and validates single-, multi-, and many-objective optimization with pymoo, including NSGA-II, NSGA-III, MOEA/D, constraints, Pareto approximations, reference directions, and ZDT/DTLZ benchmarks for engineering and research problems.
4license: Apache-2.0 license
5allowed-tools: Read Write Edit Bash
6compatibility: Requires Python 3.10+ and pymoo 0.6.2 with its NumPy, SciPy, matplotlib and autograd dependencies. Optional joblib for parallel runners, optuna for its algorithm wrapper, and dill for checkpoints. Network needed for installation only.
7metadata:
8 version: "1.6"
9 last-reviewed: "2026-10-01"
10 upstream-version: "0.6.2"
11 skill-author: K-Dense Inc.
12---
14# Pymoo - Multi-Objective Optimization in Python

Pymoo - Multi-Objective Optimization in Python

Raw lines 1 to 15
16## Overview
18Pymoo 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. Targets stable **pymoo 0.6.2**, reviewed 2026-10-01 against current official docs and native toy runs.

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. Targets stable pymoo 0.6.2, reviewed 2026-10-01 against current official docs and native toy runs.

Raw lines 16 to 19
20## Installation
22```bash
23uv pip install "pymoo==0.6.2"
24```
26For reproducible environments, pin a version: `uv pip install "pymoo==0.6.2"`.
28**Dependencies:** The released 0.6.2 wheel requires NumPy, SciPy, moocore, autograd, cma, matplotlib, alive_progress, and Deprecated. NumPy 2.x is supported. The current installation prose describes some dependencies as optional; the released package metadata governs installation. Joblib, Optuna and dill are separate dependencies for the corresponding recipes.
30**Documentation:** https://pymoo.org/ — LLM-friendly index: https://pymoo.org/llms.txt

Installation

uv pip install "pymoo==0.6.2"

For reproducible environments, pin a version: uv pip install "pymoo==0.6.2".

Dependencies: The released 0.6.2 wheel requires NumPy, SciPy, moocore, autograd, cma, matplotlib, alive_progress, and Deprecated. NumPy 2.x is supported. The current installation prose describes some dependencies as optional; the released package metadata governs installation. Joblib, Optuna and dill are separate dependencies for the corresponding recipes.

Documentation: https://pymoo.org/ — LLM-friendly index: https://pymoo.org/llms.txt

Raw lines 20 to 31
32## When to Use This Skill
34This skill should be used when:
35- Solving optimization problems with one or multiple objectives
36- Finding Pareto-optimal solutions and analyzing trade-offs
37- Implementing evolutionary algorithms (GA, DE, PSO, NSGA-II/III)
38- Working with constrained optimization problems
39- Benchmarking algorithms on standard test problems (ZDT, DTLZ, WFG)
40- Customizing genetic operators (crossover, mutation, selection)
41- Visualizing high-dimensional optimization results
42- Making decisions from multiple competing solutions
43- Handling binary, discrete, continuous, or mixed-variable problems

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
Raw lines 32 to 44
45## Core Concepts

Core Concepts

Raw lines 45 to 46
47### The Unified Interface
49Pymoo uses a consistent `minimize()` function for all optimization tasks:
51```python
52from pymoo.optimize import minimize
54result = minimize(
55 problem, # What to optimize
56 algorithm, # How to optimize
57 termination, # When to stop
58 seed=1,
59 verbose=True
61```
63**Result object contains:**
64- `result.X`: Decision variables of optimal solution(s)
65- `result.F`: Objective values of optimal solution(s)
66- `result.G`: Raw inequality values (`g(x) <= 0` is feasible)
67- `result.H`: Raw equality residuals
68- `result.CV`: Aggregated constraint violation under the configured tolerances
69- `result.algorithm`: Final algorithm state; history is retained when requested
71**Check feasibility before plotting or selecting:** If no feasible solution was found, `result.X` and `result.F` can be `None`. With `return_least_infeasible=True`, a returned candidate can still violate constraints; report its `CV` and residuals instead of calling it feasible. Re-evaluate chosen candidates against the original physical constraints after any normalization or repair. See the [result contract](https://pymoo.org/interface/result.html).

The Unified Interface

Pymoo uses a consistent minimize() function for all optimization tasks:

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: Raw inequality values (g(x) <= 0 is feasible)
  • result.H: Raw equality residuals
  • result.CV: Aggregated constraint violation under the configured tolerances
  • result.algorithm: Final algorithm state; history is retained when requested

Check feasibility before plotting or selecting: If no feasible solution was found, result.X and result.F can be None. With return_least_infeasible=True, a returned candidate can still violate constraints; report its CV and residuals instead of calling it feasible. Re-evaluate chosen candidates against the original physical constraints after any normalization or repair. See the result contract.

Raw lines 47 to 72
73### Problem Definition Styles
75Pymoo supports three problem definition styles:
77- **`Problem`**: Vectorized — `_evaluate` receives a batch of solutions (matrix)
78- **`ElementwiseProblem`**: One solution per call — recommended for custom problems and parallel evaluation
79- **`FunctionalProblem`**: Define objectives and constraints as separate functions without subclassing

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
Raw lines 73 to 80
81### Problem Types
83**Single-objective:** One objective to minimize; negate a maximization objective and record the conversion
84**Multi-objective:** 2-3 conflicting objectives → Pareto front
85**Many-objective:** 4+ objectives → High-dimensional Pareto front
86**Constrained:** Objectives + inequality/equality constraints
87**Mixed-variable:** Continuous, integer, binary, and categorical variables in one problem
88**Dynamic:** Time-varying objectives or constraints

Problem Types

Single-objective: One objective to minimize; negate a maximization objective and record the conversion 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

Raw lines 81 to 89
90## Quick Start Workflows
92Nine workflows and context-dependent adaptation snippets are in
93[references/quick_start_workflows.md](references/quick_start_workflows.md):
95| # | Workflow | Use when |
96| --- | --- | --- |
97| 1 | Single-objective optimization | one objective, GA or DE |
98| 2 | Multi-objective (2-3 objectives) | NSGA-II and a Pareto front |
99| 3 | Many-objective (4+ objectives) | NSGA-III or reference-direction methods |
100| 4 | Custom problem definition | subclassing `Problem` / `ElementwiseProblem` |
101| 5 | Constraint handling | inequality and equality constraints |
102| 6 | Decision making from a Pareto front | scalarization and MCDM selection |
103| 7 | Visualization | scatter, PCP, radviz, and heatmap views |
104| 8 | Parallel evaluation | threads or joblib for expensive objectives |
105| 9 | Mixed-variable optimization | integer, binary, and categorical variables |

Quick Start Workflows

Nine workflows and context-dependent adaptation snippets are in references/quick_start_workflows.md:

#WorkflowUse when
1Single-objective optimizationone objective, GA or DE
2Multi-objective (2-3 objectives)NSGA-II and a Pareto front
3Many-objective (4+ objectives)NSGA-III or reference-direction methods
4Custom problem definitionsubclassing Problem / ElementwiseProblem
5Constraint handlinginequality and equality constraints
6Decision making from a Pareto frontscalarization and MCDM selection
7Visualizationscatter, PCP, radviz, and heatmap views
8Parallel evaluationthreads or joblib for expensive objectives
9Mixed-variable optimizationinteger, binary, and categorical variables
Raw lines 90 to 106
107## Algorithm Selection Guide

Algorithm Selection Guide

Raw lines 107 to 108
109### Single-Objective Problems
111| Algorithm | Best For | Key Features |
112|-----------|----------|--------------|
113| **GA** | General-purpose | Flexible, customizable operators |
114| **DE** | Continuous optimization | Good global search |
115| **PSO** | Smooth landscapes | Fast convergence |
116| **CMA-ES** | Difficult/noisy problems | Self-adapting |

Single-Objective Problems

AlgorithmBest ForKey Features
GAGeneral-purposeFlexible, customizable operators
DEContinuous optimizationGood global search
PSOSmooth landscapesFast convergence
CMA-ESDifficult/noisy problemsSelf-adapting
Raw lines 109 to 117
118### Multi-Objective Problems (2-3 objectives)
120| Algorithm | Best For | Key Features |
121|-----------|----------|--------------|
122| **NSGA-II** | Standard benchmark | Fast, reliable, well-tested |
123| **SPEA2** | Strength/density survival | Strength-based fitness, truncation for diversity |
124| **R-NSGA-II** | Preference regions | Reference point guidance |
125| **MOEA/D** | Decomposable problems | Scalarization approach |

Multi-Objective Problems (2-3 objectives)

AlgorithmBest ForKey Features
NSGA-IIStandard benchmarkFast, reliable, well-tested
SPEA2Strength/density survivalStrength-based fitness, truncation for diversity
R-NSGA-IIPreference regionsReference point guidance
MOEA/DDecomposable problemsScalarization approach
Raw lines 118 to 126
127### Many-Objective Problems (4+ objectives)
129| Algorithm | Best For | Key Features |
130|-----------|----------|--------------|
131| **NSGA-III** | 4-15 objectives | Reference direction-based |
132| **RVEA** | Adaptive search | Reference vector evolution |
133| **AGE-MOEA** | Complex landscapes | Adaptive geometry |

Many-Objective Problems (4+ objectives)

AlgorithmBest ForKey Features
NSGA-III4-15 objectivesReference direction-based
RVEAAdaptive searchReference vector evolution
AGE-MOEAComplex landscapesAdaptive geometry
Raw lines 127 to 134
135### Constrained Problems
137| Approach | Algorithm | When to Use |
138|----------|-----------|-------------|
139| Feasibility-first | NSGA-II, GA and compatible algorithms | Feasible candidates available |
140| Specialized | SRES, ISRES | Heavy constraints |
141| Penalty | GA + penalty | Algorithm compatibility |
143Algorithm choices are starting points, not performance guarantees. Pymoo MOEA/D does not support constraints directly.
145**See:** `references/algorithms.md` for algorithm parameters and restrictions

Constrained Problems

ApproachAlgorithmWhen to Use
Feasibility-firstNSGA-II, GA and compatible algorithmsFeasible candidates available
SpecializedSRES, ISRESHeavy constraints
PenaltyGA + penaltyAlgorithm compatibility

Algorithm choices are starting points, not performance guarantees. Pymoo MOEA/D does not support constraints directly.

See: references/algorithms.md for algorithm parameters and restrictions

Raw lines 135 to 146
Reads a file references/algorithms.md :145
147## Benchmark Problems

Benchmark Problems

Raw lines 147 to 148
149### Quick problem access:
150```python
151from pymoo.problems import get_problem
153# Single-objective
154problem = get_problem("rastrigin", n_var=10)
155problem = get_problem("rosenbrock", n_var=10)
157# Multi-objective
158problem = get_problem("zdt1") # Convex front
159problem = get_problem("zdt2") # Non-convex front
160problem = get_problem("zdt3") # Disconnected front
162# Many-objective
163problem = get_problem("dtlz2", n_obj=5, n_var=12)
164problem = get_problem("dtlz7", n_obj=4)
165```
167**See:** `references/problems.md` for complete test problem reference

Quick problem access:

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

Raw lines 149 to 168
Reads a file references/problems.md :167
169## Genetic Operator Customization

Genetic Operator Customization

Raw lines 169 to 170
171### Standard operator configuration:
172```python
173from pymoo.algorithms.soo.nonconvex.ga import GA
174from pymoo.operators.crossover.sbx import SBX
175from pymoo.operators.mutation.pm import PM
177algorithm = GA(
178 pop_size=100,
179 crossover=SBX(prob=0.9, eta=15),
180 mutation=PM(eta=20),
181 eliminate_duplicates=True
183```

Standard operator configuration:

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
)
Raw lines 171 to 184
185### Operator selection by variable type:
187**Continuous variables:**
188- Crossover: SBX (Simulated Binary Crossover)
189- Mutation: PM (Polynomial Mutation)
191**Binary variables:**
192- Crossover: TwoPointCrossover, UniformCrossover
193- Mutation: BitflipMutation
195**Permutations (TSP, scheduling):**
196- Crossover: OrderCrossover (OX)
197- Mutation: InversionMutation
199**See:** `references/operators.md` for comprehensive operator reference

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

Raw lines 185 to 200
Reads a file references/operators.md :199
201## Performance and Troubleshooting

Performance and Troubleshooting

Raw lines 201 to 202
203### Common issues and solutions:
205**Problem: Algorithm not converging**
206- Increase population size
207- Increase number of generations
208- Check if problem is multimodal (try different algorithms)
209- Verify constraints are correctly formulated
211**Problem: Poor Pareto front distribution**
212- For NSGA-III: Adjust reference directions
213- Increase population size
214- Check for duplicate elimination
215- Verify problem scaling
217**Problem: Few feasible solutions**
218- Use constraint-as-objective approach
219- Apply repair operators
220- Try SRES/ISRES for constrained problems
221- Check constraint formulation (should be g <= 0)
223**Problem: High computational cost**
224- Reduce population size
225- Decrease number of generations
226- Use simpler operators
227- Enable parallel evaluation via `elementwise_runner` (see Workflow 8)

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)
Raw lines 203 to 228
229### Best practices:
2311. **Use consistent scales** and minimization signs; resolve constant objective columns before normalization
2322. **Record seeds and versions**, then compare multiple seeds at matched evaluation budgets
2333. **Use callbacks** for lightweight diagnostics; `save_history=True` deep-copies algorithm states
2344. **Visualize results** to understand solution quality
2355. **Compare with true Pareto front** when available
2366. **Use appropriate termination criteria** (generations, evaluations, tolerance)
2377. **Tune operator parameters** for problem characteristics

Best practices:

  1. Use consistent scales and minimization signs; resolve constant objective columns before normalization
  2. Record seeds and versions, then compare multiple seeds at matched evaluation budgets
  3. Use callbacks for lightweight diagnostics; save_history=True deep-copies algorithm states
  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
Raw lines 229 to 238
239## Resources
241This skill includes comprehensive reference documentation and executable examples:

Resources

This skill includes comprehensive reference documentation and executable examples:

Raw lines 239 to 242
243### references/
244Detailed documentation for in-depth understanding:
246- **algorithms.md**: Complete algorithm reference with parameters, usage, and selection guidelines
247- **problems.md**: Benchmark test problems (ZDT, DTLZ, WFG) with characteristics
248- **operators.md**: Genetic operators (sampling, selection, crossover, mutation) with configuration
249- **visualization.md**: All visualization types with examples and selection guide
250- **constraints_mcdm.md**: Constraint handling techniques and multi-criteria decision making methods
251- **parallelization.md**: Parallel evaluation with StarmapParallelization and JoblibParallelization
252- [**lifecycle.md**](references/lifecycle.md): Termination, callbacks, algorithm copying, checkpoint/resume, and stochastic validation
254**Search patterns for references:**
255- Algorithm details: `grep -r "NSGA-II\|NSGA-III\|MOEA/D" references/`
256- Constraint methods: `grep -r "Feasibility First\|Penalty\|Repair" references/`
257- Visualization types: `grep -r "Scatter\|PCP\|Petal" references/`

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
  • lifecycle.md: Termination, callbacks, algorithm copying, checkpoint/resume, and stochastic validation

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/
Raw lines 243 to 258
Reads a file references/lifecycle.md :252
259### scripts/
260Executable examples demonstrating common workflows:
262- **single_objective_example.py**: Basic single-objective optimization with GA
263- **multi_objective_example.py**: Multi-objective optimization with NSGA-II, visualization
264- **many_objective_example.py**: Many-objective optimization with NSGA-III, reference directions
265- **custom_problem_example.py**: Defining custom problems (constrained and unconstrained)
266- **decision_making_example.py**: Multi-criteria decision making with different preferences
268The bundled demos use bounded populations/generations and do not establish convergence. Native verification covered serial GA/NSGA-II/III, constraint equations, operators, MCDM/indicators, thread runners, and checkpoint continuity. Process/distributed workers, dynamic algorithms, video encoding, and expensive external models were not executed. Pymoo is a local Python library; no remote API endpoint or credential is required for these workflows.
270**Run examples from the skill directory** (use `MPLBACKEND=Agg` for headless plotting):
271```bash
272python3 scripts/single_objective_example.py
273python3 scripts/multi_objective_example.py
274python3 scripts/many_objective_example.py
275python3 scripts/custom_problem_example.py
276python3 scripts/decision_making_example.py
277```
279Official review sources: [release notes](https://pymoo.org/versions.html), [problem definition](https://pymoo.org/interface/problem.html), [result](https://pymoo.org/interface/result.html), and sources linked in each reference.

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

The bundled demos use bounded populations/generations and do not establish convergence. Native verification covered serial GA/NSGA-II/III, constraint equations, operators, MCDM/indicators, thread runners, and checkpoint continuity. Process/distributed workers, dynamic algorithms, video encoding, and expensive external models were not executed. Pymoo is a local Python library; no remote API endpoint or credential is required for these workflows.

Run examples from the skill directory (use MPLBACKEND=Agg for headless plotting):

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

Official review sources: release notes, problem definition, result, and sources linked in each reference.

Raw lines 259 to 280
Runs code python3 scripts/single_objective_example.py :272
Runs code python3 scripts/multi_objective_example.py :273
Runs code python3 scripts/many_objective_example.py :274
Runs code python3 scripts/custom_problem_example.py :275
Runs code python3 scripts/decision_making_example.py :276
281## Additional Notes
283**Common patterns:**
284- Use `ElementwiseProblem` for custom problems (or `FunctionalProblem` for function-based definitions)
285- Use `vars` dict with typed variables for mixed-variable problems
286- Constraints formulated as `g(x) <= 0` and `h(x) = 0`
287- Reference directions required for NSGA-III
288- Normalize objectives before MCDM
289- Use bounded termination such as `('n_gen', N)` or `DefaultMultiObjectiveTermination(ftol=0.001, n_max_gen=100)`; the `f_tol` factory name is obsolete
290- Das-Dennis direction count is `C(p + m - 1, m - 1)`; budget population size before choosing partitions
291- An obtained nondominated set is a Pareto approximation, not a global optimality certificate
292- PseudoWeights matches pseudo-weight vectors, not a weighted sum; validate weights and finite, varying objective columns

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 bounded termination such as ('n_gen', N) or DefaultMultiObjectiveTermination(ftol=0.001, n_max_gen=100); the f_tol factory name is obsolete
  • Das-Dennis direction count is C(p + m - 1, m - 1); budget population size before choosing partitions
  • An obtained nondominated set is a Pareto approximation, not a global optimality certificate
  • PseudoWeights matches pseudo-weight vectors, not a weighted sum; validate weights and finite, varying objective columns
Raw lines 281 to 293
Boilerplate, lines 294 to 309. The same text appears in 125 other files here. Close
294## Citing Scientific Agent Skills
296This skill is part of Scientific Agent Skills by K-Dense. If it materially contributed to a
297manuscript, report, presentation, or code release, add the paper to the references or
298software section and tell the user you did so:
300> Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent
301> Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065.
302> https://doi.org/10.48550/arXiv.2609.00065
304Always cite the current version. The DOI and https://arxiv.org/abs/2609.00065 resolve to the
305latest arXiv version, so never append a version suffix such as `v1`. When network access is
306available, fetch https://arxiv.org/abs/2609.00065 (or
307http://export.arxiv.org/api/query?id_list=2609.00065) before writing the reference and take
308the author list, year, and version from that record. If the record lists a journal reference
309or publisher DOI, cite the published version instead.

From K-Dense-AI/scientific-agent-skills at 5f2bc03, 2026-10-26. Not read by a model yet. Summary and techniques by Claude Opus 5.5 on 2026-11-06.