6.9 KiB
Pymoo Test Problems Reference
Comprehensive reference for benchmark optimization problems in pymoo.
Single-Objective Test Problems
Ackley Function
Characteristics:
- Highly multimodal
- Many local optima
- Tests algorithm's ability to escape local minima
- Continuous variables
Griewank Function
Characteristics:
- Multimodal with regularly distributed local minima
- Product term introduces interdependencies between variables
- Global minimum at origin
Rastrigin Function
Characteristics:
- Highly multimodal with regularly spaced local minima
- Challenging for gradient-based methods
- Tests global search capability
Rosenbrock Function
Characteristics:
- Unimodal but narrow valley to global optimum
- Tests algorithm's convergence in difficult landscape
- Classic benchmark for continuous optimization
Zakharov Function
Characteristics:
- Unimodal
- Single global minimum
- Tests basic convergence capability
Multi-Objective Test Problems (2-3 objectives)
ZDT Test Suite
Purpose: Standard benchmark for bi-objective optimization Construction: f₂(x) = g(x) · h(f₁(x), g(x)) where g(x) = 1 at Pareto-optimal solutions
ZDT1
- Variables: 30 continuous
- Bounds: [0, 1]
- Pareto front: Convex
- Purpose: Basic convergence and diversity test
ZDT2
- Variables: 30 continuous
- Bounds: [0, 1]
- Pareto front: Non-convex (concave)
- Purpose: Tests handling of non-convex fronts
ZDT3
- Variables: 30 continuous
- Bounds: [0, 1]
- Pareto front: Disconnected (5 separate regions)
- Purpose: Tests diversity maintenance across discontinuous front
ZDT4
- Variables: 10 continuous (x₁ ∈ [0,1], x₂₋₁₀ ∈ [-10,10])
- Pareto front: Convex
- Difficulty: 21⁹ local Pareto fronts
- Purpose: Tests global search with many local optima
ZDT5
- Variables: 11 discrete (bitstring)
- Encoding: x₁ uses 30 bits, x₂₋₁₁ use 5 bits each
- Pareto front: Convex
- Purpose: Tests discrete optimization and deceptive landscapes
ZDT6
- Variables: 10 continuous
- Bounds: [0, 1]
- Pareto front: Non-convex with non-uniform density
- Purpose: Tests handling of biased solution distributions
Usage:
from pymoo.problems.multi import ZDT1, ZDT2, ZDT3, ZDT4, ZDT5, ZDT6
problem = ZDT1() # or ZDT2(), ZDT3(), etc.
BNH (Binh and Korn)
Characteristics:
- 2 objectives
- 2 variables
- Constrained problem
- Tests constraint handling in multi-objective context
OSY (Osyczka and Kundu)
Characteristics:
- 6 objectives
- 6 variables
- Multiple constraints
- Real-world inspired
TNK (Tanaka)
Characteristics:
- 2 objectives
- 2 variables
- Disconnected feasible region
- Tests handling of disjoint search spaces
Truss2D
Characteristics:
- Structural engineering problem
- Bi-objective (weight vs displacement)
- Practical application test
Welded Beam
Characteristics:
- Engineering design problem
- Multiple constraints
- Practical optimization scenario
Omni-test
Characteristics:
- Configurable test problem
- Various difficulty levels
- Systematic testing
SYM-PART
Characteristics:
- Symmetric problem structure
- Tests specific algorithmic behaviors
Many-Objective Test Problems (4+ objectives)
DTLZ Test Suite
Purpose: Scalable many-objective benchmarks Objectives: Configurable (typically 3-15) Variables: Scalable
DTLZ1
- Pareto front: Linear (hyperplane)
- Difficulty: 11^k local Pareto fronts
- Purpose: Tests convergence with many local optima
DTLZ2
- Pareto front: Spherical (concave)
- Difficulty: Straightforward convergence
- Purpose: Basic many-objective diversity test
DTLZ3
- Pareto front: Spherical
- Difficulty: 3^k local Pareto fronts
- Purpose: Combines DTLZ1's multimodality with DTLZ2's geometry
DTLZ4
- Pareto front: Spherical with biased density
- Difficulty: Non-uniform solution distribution
- Purpose: Tests diversity maintenance with bias
DTLZ5
- Pareto front: Degenerate (curve in M-dimensional space)
- Purpose: Tests handling of degenerate fronts
DTLZ6
- Pareto front: Degenerate curve
- Difficulty: Harder convergence than DTLZ5
- Purpose: Challenging degenerate front
DTLZ7
- Pareto front: Disconnected regions
- Difficulty: 2^(M-1) disconnected regions
- Purpose: Tests diversity across disconnected fronts
Usage:
from pymoo.problems.many import DTLZ1, DTLZ2
problem = DTLZ1(n_var=7, n_obj=3) # 7 variables, 3 objectives
WFG Test Suite
Purpose: Walking Fish Group scalable benchmarks Features: More complex than DTLZ, various front shapes and difficulties
Variants: WFG1-WFG9 with different characteristics
- Non-separable
- Deceptive
- Multimodal
- Biased
- Scaled fronts
Constrained Multi-Objective Problems
MW Test Suite
Purpose: Multi-objective problems with various constraint types Features: Different constraint difficulty levels
DAS-CMOP
Purpose: Difficulty-adjustable and scalable constrained multi-objective problems Features: Tunable constraint difficulty
MODAct
Purpose: Multi-objective optimization with active constraints Features: Realistic constraint scenarios
Dynamic Multi-Objective Problems
DF Test Suite
Purpose: CEC2018 Competition dynamic multi-objective benchmarks Features:
- Time-varying objectives
- Changing Pareto fronts
- Tests algorithm adaptability
Variants: DF1-DF14 with different dynamics
Custom Problem Definition
Define custom problems by extending base classes:
from pymoo.core.problem import ElementwiseProblem
import numpy as np
class MyProblem(ElementwiseProblem):
def __init__(self):
super().__init__(
n_var=2, # number of variables
n_obj=2, # number of objectives
n_ieq_constr=0, # inequality constraints
n_eq_constr=0, # equality constraints
xl=np.array([0, 0]), # lower bounds
xu=np.array([1, 1]) # upper bounds
)
def _evaluate(self, x, out, *args, **kwargs):
# Define objectives
f1 = x[0]**2 + x[1]**2
f2 = (x[0]-1)**2 + x[1]**2
out["F"] = [f1, f2]
# Optional: constraints
# out["G"] = constraint_values # <= 0
# out["H"] = equality_constraints # == 0
Problem Selection Guidelines
For algorithm development:
- Simple convergence: DTLZ2, ZDT1
- Multimodal: ZDT4, DTLZ1, DTLZ3
- Non-convex: ZDT2
- Disconnected: ZDT3, DTLZ7
For comprehensive testing:
- ZDT suite for bi-objective
- DTLZ suite for many-objective
- WFG for complex landscapes
- MW/DAS-CMOP for constraints
For real-world validation:
- Engineering problems (Truss2D, Welded Beam)
- Match problem characteristics to application domain
Variable types:
- Continuous: Most problems
- Discrete: ZDT5
- Mixed: Define custom problem