コンセプト
MaaS Blender は、Mobility as a Service(MaaS)システムを評価するためのイベント駆動・離散時間シミュレーション・プラットフォームです。
MaaS Blender はシステムの状態変化を「タイムスタンプ付きイベント」として表現します。 需要の生成、ユーザーの意思決定、出発、到着といったあらゆる状態変化は、特定のシミュレーション時刻に発生するイベントとして表現されます。
イベント中心のモデリング
MaaS Blender において、イベントはコンポーネント間の主たる相互作用の手段です。
- コンポーネントは通常、イベントの送受信によって相互作用します。
- 各イベントはシステム状態の観測可能な変化を表します。
このアプローチにより、コンポーネント間の疎結合が促進されます。
関心の分離
イベント中心のモデリングによって、以下のようにそれぞれのコンポーネントに責務を分離します。 なお、ここで示すコンポーネントはあくまでリファレンス実装の例を示すものです。 例えば、モビリティサービスが独自の経路探索エンジンを内包したり、需要ジェネレータとユーザーモデルを一体化したりするなど、用途に応じて自由に構成できます。
- シミュレーション実行とイベント伝播を調停する「ブローカー」
- ユーザーの需要を生成する「需要ジェネレータ」
- ユーザーの意思決定をモデリングする「ユーザーモデル」
- 車両の運行を管理する「モビリティサービス」
- 実行可能な移動手段を提案する「経路探索/計画コンポーネント」
各コンポーネントは自らの内部ロジックとその状態変化のみを担い、イベントを介して他のコンポーネントと相互作用します。
決定性
MaaS Blender では、任意のシミュレーション時刻に同時に実行されるコンポーネントは1つだけです。 コンポーネントは、それぞれの次の予定イベント時刻によって決まる決定的な順序で逐次実行されます。
その結果、コンポーネントの内部ロジックが決定的であれば、同一の入力に対してシミュレーションの挙動は決定的です。 この性質によってデバッグが容易になり、評価結果が安定します。
設計目標
MaaS Blender の中核となる設計目標は次の通りです。
- モジュール性: 多様なモビリティ・サービスやモデルの統合を可能にする
- 決定性: シミュレーション結果の再現性を保証する
- 透明性: 明示的なイベントトレースにより挙動を説明可能にする