Expand description
Selection - ノード選択アルゴリズム
§設計思想: TypeAliasPolicyPattern
各 Selection アルゴリズムは独立した struct として実装され、
SelectionLogic trait を実装する。
- ロジックの分離: 各アルゴリズムの実装が独立
- 型による制約: Operator の型パラメータで組み合わせを制約可能
- Config 連携:
SelectionKindenum で Config/serde 対応 - 動的切り替え:
AnySelectionで enum dispatch による動的ディスパッチ
§統計情報
Selection アルゴリズムは SwarmStats(collector/stats.rs)を Single Source of Truth
として使用する。各メソッドは &SwarmStats を引数に取り、アクション統計を参照する。
§モジュール構成
| モジュール | 内容 |
|---|---|
stats | NodeStats(後方互換) |
kind | Selection の種類(SelectionKind enum) |
fifo | FIFO 選択 |
ucb1 | UCB1 選択 |
greedy | Greedy 選択 |
thompson | Thompson Sampling 選択 |
any | 動的選択ラッパー(AnySelection) |
§使用例
ⓘ
use swarm_engine_core::exploration::selection::{Fifo, Ucb1, SelectionLogic};
// 静的型付け(コンパイル時に Selection が決定)
let fifo = Fifo::new();
let ucb1 = Ucb1::new(1.41);
// 動的切り替え(実行時に Selection を変更可能)
let any = AnySelection::from_kind(SelectionKind::Ucb1, 1.41);Structs§
- Fifo
- FIFO 選択(frontiers の順番)
- Greedy
- Greedy 選択(ボーナス最大を優先)
- Node
Stats - ノードの実行統計
- Thompson
- Thompson Sampling 選択
- Ucb1
- UCB1 選択
Enums§
- AnySelection
- 動的に Selection を切り替えられるラッパー
- Selection
Kind - Selection アルゴリズムの種類
Traits§
- Selection
Logic - ノード選択ロジック
Type Aliases§
- Fifo
Selection - FifoSelection の別名(後方互換)
- Greedy
Selection - GreedySelection の別名(後方互換)
- Thompson
Selection - ThompsonSelection の別名(後方互換)
- Ucb1
Selection - Ucb1Selection の別名(後方互換)