---
primary_layer: cross
related_layers: [layer2, layer3]
page_type: entry
---
# 実行と評価
既存のStageベース経路では、Initializerが初期集団を作り、OptimizationStrategyが世代ごとの処理を進めます。 Algorithmが候補を生成し、SurrogateManagerとAcquisitionFunctionが予測とスコア計算を行った後、Evaluatorが高コストな真の評価を実行します。 評価結果はAlgorithmの集団とArchiveへ反映され、Terminationが停止条件を満たすまで世代処理を繰り返します。
## パイプラインの流れ
次の図は、初期化から終了判定までのデータの流れを示します。 Surrogateを使わない構成では、予測とスコア計算の部分を省略できます。
```{mermaid}
flowchart TD
INIT["Initializer
Create initial population"] --> STEP
subgraph STEP["OptimizationStrategy.step()
Process one generation"]
direction TB
ASK["Algorithm.ask()
Generate candidates"] --> PREDICT["SurrogateManager.predict()
Predict"]
PREDICT --> SCORE["AcquisitionFunction
Score candidates"]
SCORE --> SEL["Select candidates for true evaluation"]
SEL --> EVAL["Evaluator → Problem
Expensive evaluation"]
EVAL --> TELL["Algorithm.tell()
Update population"]
end
STEP --> TERM{"Termination?"}
TERM -- "No" --> STEP
TERM -- "Yes" --> RESULT([Result])
EVAL -- "Evaluated points" --> ARC[("Archive")]
ARC -. "Training data" .-> PREDICT
```
各StageはCallbackManagerを通じて型付きイベントを発行します。 そのため、Stageをサブクラス化せずに進行状況を観測したり、実行時の差し替えを行ったりできます。
## コンポーネントの役割
| コンポーネント | 役割 |
|---|---|
| [Problem](problem_and_ranking/problem.md) | 目的関数、設計変数、探索範囲、制約、最適化方向を定義します。 |
| [Initializer](execution_and_evaluation/initialization.md) | ループ開始前の初期集団とArchiveを生成します。 |
| [Algorithm](search_algorithms/algorithm.md) | `ask()`で候補を生成し、`tell()`で評価結果を集団へ反映します。 |
| [OptimizationStrategy](execution_and_evaluation/strategies.md) | 一世代の処理を組み立て、真の評価へ送る候補を決めます。 |
| [SurrogateManager](surrogate_modeling/surrogate_manager.md) | Surrogateの学習と予測を調整します。 |
| [Surrogate](surrogate_modeling/surrogate.md) | 学習データから予測します。スコア計算の方法は持ちません。 |
| [AcquisitionFunction](surrogate_modeling/acquisition_functions.md) | 予測結果を候補選択用のスコアへ変換します。 |
| [Evaluator](execution_and_evaluation/evaluation.md) | 目的関数を逐次または並列に評価します。 |
| [Population](observation_and_state/population.md) | 評価済みの個体と集団のデータを保持します。 |
| [Termination](execution_and_evaluation/termination.md) | 世代処理を終了する条件を判定します。 |
| [CallbackManager](observation_and_state/callbacks.md) | パイプライン全体のイベントを観測し、記録します。 |
::::{grid} 1 2 2 3
:gutter: 3
:::{grid-item-card} {fa}`play;sd-mr-1` 初期化(Initializer)
:link: execution_and_evaluation/initialization
:link-type: doc
初期集団とArchiveを生成する方法を選びます。
:::
:::{grid-item-card} {fa}`microchip;sd-mr-1` Evaluator
:link: execution_and_evaluation/evaluation
:link-type: doc
目的関数の逐次評価と並列評価を実行します。
:::
:::{grid-item-card} {fa}`chess-knight;sd-mr-1` OptimizationStrategy
:link: execution_and_evaluation/strategies
:link-type: doc
候補生成、予測、評価計画、状態更新の流れを組み立てます。
:::
:::{grid-item-card} {fa}`stop;sd-mr-1` Termination
:link: execution_and_evaluation/termination
:link-type: doc
評価回数や世代数などの終了条件を組み合わせます。
:::
::::
```{toctree}
:hidden:
execution_and_evaluation/initialization
execution_and_evaluation/evaluation
execution_and_evaluation/strategies
execution_and_evaluation/termination
```