Tutorials#

Cross-layer

These pages show implementations for specific optimization scenarios. Choose a page for single-objective, multi-objective, constrained, mixed-variable, or another goal. Each page is an example for one scenario and does not assume a particular configuration depth.

Optimization scenarios#

Single-Objective Optimization

Solve an expensive single-objective problem with minimize(), choosing the algorithm, surrogate, and evaluation strategy.

Single-Objective Optimization
Multi-Objective Optimization

Solve a problem with trade-offs between objectives and extract the Pareto front.

Multi-Objective Optimization
Constrained Optimization

Define inequality constraints and control how infeasible solutions are handled.

Constrained Optimization
Mixed-Variable Optimization

Solve problems that include integer and categorical variables alongside continuous variables.

Mixed-Variable Optimization
Dynamic Switching

Switch the evaluation strategy or SurrogateManager at runtime based on the surrogate’s prediction accuracy.

Dynamic Switching Based on Surrogate Accuracy
Reproducibility and Checkpointing

Make long-running optimizations reproducible and resumable.

Reproducibility and Checkpointing
Logging Progress

Record optimization progress with the standard logging module.

Logging Progress
Integrating External Libraries

Incorporate scikit-learn and PyTorch models as surrogates, and pymoo operators, algorithms, and problems, through adapters.

Integrating External Libraries

Configuration and control#

These guides cover choosing built-in components, assembling the low-level API, and adding Hooks or Callbacks to an execution path. The guides contain the details; this page provides an overview and links.

Choose and swap built-in components

Choose the built-in component for a responsibility.

Choose and swap built-in components
Assemble Optimizer with the low-level API

Assemble a full configuration with a surrogate, combine termination conditions, and inspect each generation with iterate().

Assembling an Optimizer with the Low-Level API
Choose a Hook, Stage, or Callback

Choose how to extend and observe an execution path.

Choose a Hook, Stage, or Callback
Run an optimization with the high-level API

Run an optimization through the high-level API and read its Result.

Run an optimization with the high-level API
Implement a custom component

Implement, register, and test a custom component that follows an existing contract. The guide also covers porting external Operators to native code.

Add a custom component to an existing contract