Skip to main content

ExplorationMap

Trait ExplorationMap 

Source
pub trait ExplorationMap {
    type Node: Debug + Clone;
    type Edge: Debug + Clone;
    type Update;
    type Result;

    // Required methods
    fn apply(&mut self, update: Self::Update) -> Self::Result;
    fn get(&self, id: MapNodeId) -> Option<&Self::Node>;
    fn get_mut(&mut self, id: MapNodeId) -> Option<&mut Self::Node>;
    fn node_count(&self) -> usize;
    fn frontiers(&self) -> Vec<MapNodeId>;

    // Provided method
    fn apply_batch(&mut self, updates: Vec<Self::Update>) -> Vec<Self::Result> { ... }
}
Expand description

探索マップの抽象インターフェース

Tick ベースでマップを更新し、探索状態を管理する。

§型パラメータ

  • Node: ノードに持たせるデータ(課題 / Action / 状態 など)
  • Edge: エッジに持たせるデータ(遷移情報など)
  • Update: Tick 更新の入力型
  • Result: apply の結果型

§実装例

  • GraphMap: グラフ構造のマップ(現在の ExplorationSpace に相当)
  • GridMap: グリッド構造のマップ
  • TreeMap: 木構造のマップ

Required Associated Types§

Source

type Node: Debug + Clone

ノードに持たせるデータ型

Source

type Edge: Debug + Clone

エッジに持たせるデータ型

Source

type Update

Tick 更新の入力型

Source

type Result

apply の結果型

Required Methods§

Source

fn apply(&mut self, update: Self::Update) -> Self::Result

更新を適用する(Tick の中心 API)

毎 Tick でこのメソッドを呼び、マップ状態を更新する。 更新は確定的に処理され、結果が返される。

Source

fn get(&self, id: MapNodeId) -> Option<&Self::Node>

ノードを取得

Source

fn get_mut(&mut self, id: MapNodeId) -> Option<&mut Self::Node>

ノードを変更可能で取得

Source

fn node_count(&self) -> usize

ノード数

Source

fn frontiers(&self) -> Vec<MapNodeId>

現在のフロンティア(Expandable なノード群)を取得

Closed になったノードは含まれない。 これを「枯渇」「完了」と解釈するかは利用者の責務。

Provided Methods§

Source

fn apply_batch(&mut self, updates: Vec<Self::Update>) -> Vec<Self::Result>

複数の更新をバッチ適用

Implementors§

Source§

impl<N, E, S> ExplorationMap for GraphMap<N, E, S>
where N: Debug + Clone, E: Debug + Clone, S: MapState,