Execution and evaluation#

Cross-layer

On the existing Stage-based path, the Initializer creates the initial population and the OptimizationStrategy advances the work for each generation. The Algorithm generates candidates, the SurrogateManager and AcquisitionFunction predict and score them, and the Evaluator performs the expensive true evaluation. The results update the Algorithm’s population and Archive, and generation processing repeats until Termination meets its stopping condition.

Pipeline flow#

The diagram shows the data flow from initialization through the termination check. A configuration without a Surrogate can omit prediction and scoring.

        flowchart TD
    INIT["Initializer<br/>Create initial population"] --> STEP
    subgraph STEP["OptimizationStrategy.step()<br/>Process one generation"]
        direction TB
        ASK["Algorithm.ask()<br/>Generate candidates"] --> PREDICT["SurrogateManager.predict()<br/>Predict"]
        PREDICT --> SCORE["AcquisitionFunction<br/>Score candidates"]
        SCORE --> SEL["Select candidates for true evaluation"]
        SEL --> EVAL["Evaluator → Problem<br/>Expensive evaluation"]
        EVAL --> TELL["Algorithm.tell()<br/>Update population"]
    end
    STEP --> TERM{"Termination?"}
    TERM -- "No" --> STEP
    TERM -- "Yes" --> RESULT([Result])
    EVAL -- "Evaluated points" --> ARC[("Archive")]
    ARC -. "Training data" .-> PREDICT
    

Each Stage emits typed events through the CallbackManager. This lets you observe progress or swap behavior at runtime without subclassing a Stage.

Component roles#

Component

Role

Problem

Defines the objective function, design variables, search bounds, constraints, and optimization direction.

Initializer

Creates the initial population and Archive before the loop starts.

Algorithm

Generates candidates with ask() and applies evaluation results to the population with tell().

OptimizationStrategy

Builds one generation’s processing and decides which candidates receive true evaluation.

SurrogateManager

Coordinates Surrogate training and prediction.

Surrogate

Predicts from training data; it does not define scoring.

AcquisitionFunction

Converts predictions into scores for candidate selection.

Evaluator

Evaluates the objective function sequentially or in parallel.

Population

Holds evaluated individuals and population data.

Termination

Determines when generation processing ends.

CallbackManager

Observes and records events from the entire pipeline.

Initialization (Initializer)

Choose how to create the initial population and Archive.

Initializer
Evaluator

Run sequential and parallel objective evaluations.

Evaluator
OptimizationStrategy

Assemble candidate generation, prediction, evaluation planning, and state updates.

OptimizationStrategy
Termination

Combine stopping conditions such as evaluation and generation limits.

Termination