ᵡᵿᵱᵮᵟ ᵣᶌᶅᶇᶌᶃ
6.3 FUSE の機能
6.3.1 バーチャルオブジェクト管理機能
FUSEでは,エージェント,アセット及び地形をバーチャルオブジェクトと呼び,バー チャルオブジェクト及びその相互作用を管理することができる.FUSEに登録された バーチャルオブジェクトにはIDが割り振られ,以後の操作はそのIDを利用して実施 する.
標準のバーチャルオブジェクトが有する属性は6軸座標とオブジェクト名であり,そ れ以外に必要な属性がある場合には開発者がバーチャルオブジェクトを継承してクラ
6.3 FUSEの機能 スを作成する.
バーチャルオブジェクトのうち,もっとも重要なものがエージェントである.エー ジェントはMASの主体であり,自律的に行動し,環境や他のエージェントとの相互作 用を行う.エージェントは必ずactionメソッドを実装する.このactionメソッドには そのエージェントの行動を記述する.actionメソッドは各シミュレーションサイクル ごとにシミュレーションエンジンから呼び出される.
エージェント同士の相互作用は原則としてメッセージの送受信によって行われる.メッ セージは基本的に宛先とデータコンテナで構成される.宛先に相手先のエージェント を指定し,データコンテナには自由にデータを設定することができる.メッセージは 特に指定がなければ次のシミュレーション周期で,指定があれば指定した論理時刻に 相手に届く.FUSEにおいて,メッセージの送受信ができるのはエージェント及び環境 である.
アセットは,シミュレーションに登場するエージェントのうち,自律的な動作を行 わないものである.たとえば,道路や建物等はアセットとして登録するのが適切であ る.アセットはactionクラスを有さず,能動的な動作を行わない.
6.3.2 環境管理機能
仮想市場における交渉シミュレーションのような抽象度の高いシミュレーションで なければ,MASにはエージェントが置かれるための世界として,環境モデルが必要で ある.
環境はFUSEのシミュレーションに一つだけ存在できる.FUSEの環境は地形及び アセットによって構成され,通常三次元空間として模擬される.
FUSE自体の規格としては,地形のフォーマットは定めていない.これは,詳細な 規格を設定することで適用範囲を狭くしないためである.ただし,一般に多く利用さ れる形態として,二次元メッシュによる地形表現を標準でサポートしている.
6.3.3 状況表示機能
FUSEには2D及び3Dによる状況表示機能が搭載されている.2D表示機能はJava
標準のSwingを利用しており,3D表示機能はOpenGLを利用している.状況表示機能
はシミュレーションエンジンを参照するが,シミュレーションエンジンからは状況表 示機能を参照することはない.そのため,状況表示を行わないシミュレーションを作 成することも可能である.2D状況表示及び3D状況表示機能の基本的な利用方法は共
6.
通である.FUSEでは,エージェント及びアセットといったFUSEで模擬を行うバー チャルオブジェクトと,それに対応する描画オブジェクトを対として描画を行う.
FUSEによる状況表示の流れを図6.2に示す.状況表示を利用する場合,FUSEのビュ ワーを担当するFusePanelクラスに対して,エージェント及びアセットの型と,それに 対応する描画オブジェクトの型を登録する.
sŝĞǁĞƌ
^ŝŵƵůĂƚŝŽŶŶŐŝŶĞ
ƐƐĞƚ/ŶĨŽ͘
dž͕LJ͕ƚLJƉĞ͕ĞƚĐ͙
ŐĞŶƚ/ŶĨŽ͘
dž͕LJ͕ƌĂŶŬ͕ĞƚĐ͙
ƌĂǁĞƌKďũĞĐƚ
ĨŽƌŐĞŶƚ ƌĂǁĞƌ
ůĂƐƐĞƐ ŐĞŶƚ
ƐƐĞƚ
^ĐƌĞĞŶ/ŵĂŐĞ
ƌĂǁĞƌKďũĞĐƚ ĨŽƌŐĞŶƚ
ƌĂǁĞƌKďũĞĐƚ ĨŽƌƐƐĞƚ ŐĞŶƚ/ŶĨŽ͘
dž͕LJ͕ƌĂŶŬ͕ĞƚĐ͙
図 6.2: 状況表示の流れ
FusePanelクラスはシミュレーションエンジンを監視しており,シミュレーションに
新たなバーチャルオブジェクトが参加した場合には,対応する描画オブジェクトクラ スからインスタンスを生成し,バーチャルオブジェクトと関連付けを行う.以後,描 画周期ごとにバーチャルオブジェクトの描画メソッドが呼び出される.
シミュレーションの開発者は,標準で提供されるDrawer2D及びDrawer3Dクラス を継承して描画クラスを定義する.Drawer2Dメソッドを利用する場合にはSwingを利
6.3 FUSEの機能 用して描画を行うコードを開発者が記述するが,3Dの場合に開発者が直接的に3DCG のためのコードを記述することは負担が大きい.そのためDrawer3Dに関してはコー ドの記述なしに3Dモデルを表示可能であることが求められるため,3Dモデルの形状 ファイルを読み込む機能を搭載した.
3Dモデルのファイル形式としては,3Dプリンター等で多く利用されるstl形式及 び,国内で広く利用されるMetasequoiaの標準フォーマットであるmqo形式に対応し ている.
6.3.4 プラグイン追加機能
FUSEを利用してMASを構築する場合,エージェントやアセットは用意された基本 クラスを継承して利用することが前提になるが,シミュレーションエンジンは機能が 複雑であるため,継承による独自の機能付加は推奨していない.そのため,FUSEの シミュレーションエンジンには,機能拡張のためのプラグインを追加する機能がある.
プラグインの追加によって,FUSE本体のコードを改修することなくシミュレーション エンジンに機能を付加することができる.
プラグインは複数登録することができ,また,プラグイン間には依存関係を設定す ることができる.プラグインから別のプラグインの機能を参照することも可能である.
プラグインは開発者がFuseLightPlugInクラスを継承することによって作成する.プラ グインには文字列とバージョンからなる識別子を設定する.この識別子は依存関係を 取得する際に利用される.プラグインはシミュレーションエンジンに登録することで 利用されるが,依存関係が存在する場合には依存されるプラグインを依存するプラグ インよりも先に登録する.
6.3.5 セーブ及びリストア機能
FUSEには,シミュレーション状態をセーブし,また保存された状態をリストアす る機能がある.保存の対象となるのは,エージェント,環境,メッセージであり,開発 者が必要と考えた要素があればそれを加えることもできる.シミュレーション状態は XML形式で保存されるため,必要に応じて解析することも容易である.
6.3.6 事後再生機能
シミュレーションを,特に訓練用途に用いる場合は,事後のレビュー(After Action
Review:AAR)は訓練効果を高めるために非常に重要なプロセスとなる.訓練用シミュ
6.
レーションはFUSEの想定する用途の一つであることから,FUSEもAARに対応する ための事後再生機能を有しており,一度実行したシミュレーションを終了後に再生表 示することができる.
再生表示を行っている際にはエージェントのactionメソッドは呼ばれないため,シ ミュレーション実行時と比較して計算機の負荷は小さく,高速な表示が可能である.
6.3.7 CaSPA による行動判断ルール
FUSEは前章で記述したCaSPAを標準で含んでおり,CaSPAルールに基づき行動 するエージェントを容易に実装することができる.また,CaSPAを利用したエージェ ントの思考を確認するために,CaSPAのタスクグラフを可視化する機能を有している.