Skill v1.0.0
currentAutomated scan100/100version: "1.0.0"
name: pymoo description: Multi-objective optimization framework. NSGA-II, NSGA-III, MOEA/D, Pareto fronts, constraint handling, benchmarks (ZDT, DTLZ), for engineering design and optimization problems. license: Apache-2.0 license tags: [multi-objective-optimization, pareto-front, evolutionary-algorithms, constrained-optimization, pymoo] metadata: skill-author: K-Dense Inc. --------|----------|--------------|
| 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 | |
| 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:
from pymoo.problems import get_problem# Single-objectiveproblem = get_problem("rastrigin", n_var=10)problem = get_problem("rosenbrock", n_var=10)# Multi-objectiveproblem = get_problem("zdt1") # Convex frontproblem = get_problem("zdt2") # Non-convex frontproblem = get_problem("zdt3") # Disconnected front# Many-objectiveproblem = 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:
from pymoo.algorithms.soo.nonconvex.ga import GAfrom pymoo.operators.crossover.sbx import SBXfrom pymoo.operators.mutation.pm import PMalgorithm = 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 parallelization (if problem supports)
Best practices:
- Normalize objectives when scales differ significantly
- Set random seed for reproducibility
- Save history to analyze convergence:
save_history=True - Visualize results to understand solution quality
- Compare with true Pareto front when available
- Use appropriate termination criteria (generations, evaluations, tolerance)
- 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
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:
python3 scripts/single_objective_example.pypython3 scripts/multi_objective_example.pypython3 scripts/many_objective_example.pypython3 scripts/custom_problem_example.pypython3 scripts/decision_making_example.py
Additional Notes
Installation:
uv pip install pymoo
Dependencies: NumPy, SciPy, matplotlib, autograd (optional for gradient-based)
Documentation: https://pymoo.org/
Version: This skill is based on pymoo 0.6.x
Common patterns:
- Always use
ElementwiseProblemfor custom problems - Constraints formulated as
g(x) <= 0andh(x) = 0 - Reference directions required for NSGA-III
- Normalize objectives before MCDM
- Use appropriate termination:
('n_gen', N)orget_termination("f_tol", tol=0.001)