Skip to main content

Module map

Module map 

Source
Expand description

Exploration Map - 探索マップの抽象層

課題空間を「マップ走査」として解くための抽象インターフェース。

§設計思想

  • Tick ベース更新: apply(update) -> Result で状態を確定的に更新
  • Node の抽象化: 何を Node とするかは実装が決める
  • 内部表現の自由: Graph / Grid / Tree など実装詳細は隠蔽

§使用例

// 課題を Node とするマップ
let mut map = TaskMap::new();

// Tick ごとに更新を適用
let result = map.apply(update);

// フロンティアから次の探索対象を取得
for node_id in map.frontiers() {
    let node = map.get(node_id);
    // ...
}

§旧 ExplorationSpace からの移行

ExplorationSpace には以下の機能があったが、クリーンな探索マップ設計では 多くが不要になる(または別レイヤーの責務となる)。

§新設計で解決済み

旧機能問題点新設計での解決
NodeKind (Exploration/ActionNode)分岐がコード全体に散らばるNode 型パラメータ <N> で柔軟に
2つの apply APIapply_updateapply_results 混在apply() に統一
ExplorationNode 固定拡張性がないMapNode<T> で任意データを格納

§別レイヤーの責務(マップ外で処理)

旧機能新設計での扱い
DependencyGraph 統合Orchestrator/Strategy 層で注入
SubRoot 管理上位レイヤーで課題分解を担当
NodeSelectionStrategyStrategy 層で frontiers() を使って実装
has_successful_action_globally上位レイヤーで履歴管理

§シンプル化により不要

旧機能理由
NodeState (5状態)Open/Closed の2状態で十分。詳細は Node データ T で管理
TrialPolicy (OneShot/Retriable/Probabilistic)Node データ T でリトライ回数を管理
ActionCategory (NodeExpand/NodeStateChange)Update バリアントで明示
ExplorationTarget / ExplorationUpdateGraphMapUpdate で統一
NodeAssignment (複雑なメタデータ)シンプルな MapNodeId で足りる

§設計原則

  1. マップは純粋なデータ構造: 戦略やポリシーは外から注入
  2. Tick ベースの確定的更新: apply() で全ての状態遷移を表現
  3. Node の抽象化: 課題/Action/状態など、用途に応じて型で表現
  4. 複雑さは上位レイヤーへ: DependencyGraph、SubRoot 等は Orchestrator の責務

Structs§

GraphMap
グラフベースの探索マップ
MapEdge
汎用エッジラッパー
MapEdgeId
エッジ ID(マップ内で一意)
MapNode
汎用ノードラッパー
MapNodeId
ノード ID(マップ内で一意)

Enums§

AddResult
追加操作の結果
GraphMapUpdate
GraphMap の更新入力
MapApplyResult
汎用的な更新結果
MapError
マップ操作のエラー
MapNodeState
ノードの基本状態

Traits§

ExplorationMap
探索マップの抽象インターフェース
GraphExplorationMap
グラフ構造を持つマップ
HierarchicalMap
階層構造を持つマップ
MapState
Map が状態型 S に要求する制約

Type Aliases§

MapResult
マップ操作の結果型