Comments
Description
Transcript
参加型シミュレーションのための マルチエージェントアーキテクチャの 研究
参加型シミュレーションのための マルチエージェントアーキテクチャの 研究 山根 昇平 Abstract ユビキタス環境を用いた公共空間でのサービスは,オープンで大量の 利用者が想定されるため,利用者の行動を予測することが難しい.こ のようなシステムのテストを行う場合,実際のシステム利用者を集め た被験者実験を行うことが望ましいが,大量の被験者を集めて実証実 験を行うには莫大なコストがかかる.そこで,利用者をエージェントと してモデル化したマルチエージェントシミュレーションが有効である. マルチエージェントシミュレーションを実施するためには,エージェ ントのモデル化技術が必要不可欠である.そこで,参加型デザインに 基づくマルチエージェントシミュレーションの開発手法として,参加 型シミュレーションがある.参加型シミュレーションでは,利用者をシ ミュレーションに参加させ,その振舞いを観察することによってエー ジェントのモデルを獲得する. 参加型シミュレーションに基づく大規模なマルチエージェントシミュ レーション開発を実施するためには,参加型シミュレーションを実施 し,エージェントモデルを獲得,さらに,獲得したモデルが適切である かどうか確認するため,モデルのテスト,精錬,というプロセスを行う 環境が必要となる.このプロセスを行うためには,参加型シミュレー ションを実施するプラットフォーム,獲得したモデルを用いてマルチ エージェントシミュレーションを実施するプラットフォーム,および, エージェントモデルの修正を行うプラットフォームが必要となる. 本研究では,これらのプラットフォームの実現のため,シナリオ記 述言語に基づくアプローチをとった.シナリオ記述言語では,あらか じめシナリオの記述に用いる語彙を定義し,応用分野がエージェント を制御するシナリオを,語彙に基づいて動作するエージェントをエー ジェントシステム開発者が実装する.このことにより,様々なエージェ ントシステムを用いてシナリオを獲得・修正しながらシミュレーション を実施する場合においても,エージェントシステム開発者を介するこ i となく参加型デザインのプロセスを繰り返すことが可能である. 本論文では,シナリオ記述言語のアーキテクチャを基盤として,参 加型シミュレーションやマルチエージェントシミュレーション,シナリ オの修正のためのプラットフォームに求められる要件について考察し, それを満たすアーキテクチャとして,以下の3つを示した. 1. シミュレーション制御のためのアーキテクチャ 大規模マルチエージェントシミュレーションを用いて参加型シミュ レーションを行うためには,様々な制御が必要となる.ひとつは, 大規模になるとエージェントの行動シナリオが非常に複雑になり メンテナンスが困難となるため,状況に応じて行動シナリオを切 り替えることで,ひとつひとつの行動シナリオを簡潔にする必要 がある.もうひとつは,参加型シミュレーションではシミュレー ション中に人間が意思決定を行うため実時間でのシミュレーショ ンが求められるが,長期間にわたるシミュレーションを全て実時 間で行うのは非効率的である.したがって,参加者の操作するエー ジェントを監視し,時間の管理を行う制御が必要である.これら の制御を実現するため,メタシナリオ記述言語の開発と,メタレ ベルアーキテクチャの考案を行った.メタシナリオ記述言語では, シミュレーションの状況を拡張状態遷移機械の状態として,制御 を拡張状態遷移機械の遷移として表現することで,シミュレーショ ンの制御の記述を可能とした.メタレベルアーキテクチャでは, シナリオインタプリタをメタレベルで制御することで,メタシナ リオに基づいた柔軟な制御を可能とした. 2. エージェントモデル精錬のためのアーキテクチャ エージェントの修正や拡張についても,利用者の意見を取り入れ ることが好ましい.しかし,修正や拡張が必要になるたびにエー ジェントの作成プロセスを繰り返すのは効率的ではない.そこで, エージェントの修正や拡張を,利用者自身が行うことができれば, 利用者の意見を効果的に取り入れたエージェントの修正や拡張が 可能となる.この目的のため,本稿では,リハーサル指向テスト を提案する.リハーサル指向テストとは,エージェントと人間と がエージェントの動作に関する対話を行うことによって,舞台の リハーサルで監督が役者に指示を出すように,エージェントを修 正/拡張するものである.リハーサル指向テストの修正機能として, 状態遷移機械モデルを対象として,状態遷移を修正する機能を定 ii 義した.それを基に,エージェントが修正に必要な機能を利用者 から得る対話プロトコルを設計した.そして,対話プロトコルに 基づいた対話から,エージェントがシミュレーション実行中に自 身のシナリオを修正できるよう,メタレイヤを備えたエージェン トアーキテクチャを示した. 3. 参加型シミュレーション環境構築のためのアーキテクチャ 参加型シミュレーションを行うためには,シミュレーションプラッ トフォームが必要となる.このプラットフォームには,エージェン トと環境とのインタラクションや,環境の変化の再現,参加者の ためのユーザインタフェースなど,様々な機能が要求される.そこ で,これらの機能を備えたアプリケーションとしてネットワーク ゲームに注目し,ネットワークゲームに基づく参加型シミュレー ションプラットフォームのアーキテクチャを提案する.まず,ネッ トワークゲームを用いて参加型シミュレーションを行うためには, ゲーム内で自律エージェントを動作させる必要がある.そのため, ネットワークゲームとシナリオ処理系の結合を行った.ネットワー クゲーム内のエージェントをシナリオ制御することにより,プラッ トフォーム本体に手を入れることなく,エージェントのシナリオ 記述を変更することで,エージェントの振る舞いを変更しながら シミュレーションを繰り返すことができる.また,接続に際して, ネットワークゲームとシナリオ処理系との通信を,一度メッセー ジに変換して行っている.このため,多くの既存システムとの接 続が可能である.このことにより,応用に合わせた様々なプラッ トフォームとの接続が実現できる. また,提案したアーキテクチャに基づいて参加型シミュレーション プラットフォームを実装し,具体例を用いて参加型シミュレーションが 実施できることを示した.さらに,アーキテクチャについて,大規模環 境にも適用可能なスケーラビリティを持つことを示した. iii 謝辞 本研究を進めていく中で,日頃より熱心な御指導と多くの御助言をい ただきました,京都大学大学院情報学研究科社会情報学専攻の石田亨 教授に深く感謝申し上げます.また,アドバイザとして有益な御助言を 賜りました京都大学大学院情報学研究科社会情報学専攻の喜多一教授, 京都大学大学院情報学研究科通信情報システム専攻の湯浅太一教授に 深く感謝致します. 株式会社数理システムの山本秋成氏には,シナリオ記述言語 Q を 利用するにあたり数多くの御助言をいただきましたこと,感謝致しま す.また,gumonji/Q の開発にあたりましては,コミュニティーエンジ ン株式会社の中嶋謙互氏,小田垣まりか氏の御協力に深く感謝致しま す.gumoji/Q の開発,実験の実施においては,澤田祥一氏の御助力に 深く感謝申し上げます. 京都大学大学院情報学研究科社会情報学専攻の松原繁夫准教授,服 部宏充助教には,日頃より御助言と議論いただきましたこと,深く感 謝致します.また,名古屋大学情報基盤センター情報基盤ネットワーク 研究部門の八槇博史准教授,北海道大学大学院情報科学研究科複合情 報学専攻の小山聡准教授にも,研究を進める上で御助言いただきまし たこと,感謝致します. 情報通信研究機構の村上陽平氏,株式会社エヌ・ティ・ティ・ドコ モの鳥居大祐氏,京都大学大学院情報学研究科社会情報学専攻の中島 悠助教には,研究に関してだけでなく,研究室生活においても多くの 御助言いただきましたこと,深く感謝致します. 研究室生活を共にいたしました Arif Bramantoro 氏,研究室生活を 支えてくださった久保田庸子氏,小杉照美氏,岩間陽子氏に深く感謝 致します.最後に,研究活動だけでなく日頃の生活を共にした石田・松 原研究室の皆様,本研究に関して議論くださった皆様,私を支えてく ださった全ての方に,深く感謝の意を表します. v Contents 1 はじめに 1.1 目的 . . . . . . . . 1.2 シナリオ記述言語 1.3 課題 . . . . . . . . 1.4 論文の概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 関連研究 2.1 マルチエージェントシミュレーションの開発技術 . . . 2.1.1 エージェントプログラミング言語 . . . . . . . . 2.1.2 エージェントプログラムの検証 . . . . . . . . . 2.2 MABS のためのプラットフォーム . . . . . . . . . . . . 2.2.1 マルチエージェントシミュレーションプラット フォームに関する研究 . . . . . . . . . . . . . . 2.2.2 専門家との協調 . . . . . . . . . . . . . . . . . . 2.2.3 マルチエージェントシミュレーションのスケーラ ビリティに関する研究 . . . . . . . . . . . . . . 2.3 議論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 シナリオ記述言語 Q 3.1 変数と値 . . . . . . 3.2 キューとアクション 3.3 制御構造 . . . . . . 3.4 シナリオ . . . . . . 3.5 エージェント . . . . 3.6 環境 . . . . . . . . . 3.7 応用例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 6 . . . . 7 7 8 9 9 . 10 . 11 . 11 . 12 . . . . . . . 15 16 17 19 21 24 26 27 4 シミュレーション制御のためのアーキテクチャ 4.1 はじめに . . . . . . . . . . . . . . . . . . . 4.2 シナリオ記述 . . . . . . . . . . . . . . . . . 4.2.1 シナリオ処理系 . . . . . . . . . . . 4.3 メタシナリオ . . . . . . . . . . . . . . . . . 4.3.1 機能定義 . . . . . . . . . . . . . . . 4.3.2 記述例 . . . . . . . . . . . . . . . . 4.4 シナリオ実行制御アーキテクチャ . . . . . 4.4.1 メタレベル制御アーキテクチャ . . 4.4.2 メタシナリオ実行の流れ . . . . . . 4.5 参加型シミュレーションへの適用 . . . . . 4.5.1 シミュレーションの説明 . . . . . . 4.5.2 アバターのシナリオ . . . . . . . . . 4.5.3 時間管理を行うメタシナリオ . . . 4.6 評価 . . . . . . . . . . . . . . . . . . . . . . 4.6.1 実験 . . . . . . . . . . . . . . . . . . 4.6.2 測定結果 . . . . . . . . . . . . . . . 4.7 まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 リハーサル指向テストのためのアーキテクチャ 5.1 まえがき . . . . . . . . . . . . . . . . . . . . . . 5.2 リハーサル指向テスト . . . . . . . . . . . . . . . 5.2.1 シナリオ記述 . . . . . . . . . . . . . . . 5.2.2 リハーサル指向テストのプロセス . . . . 5.2.3 状態遷移モデルを用いた修正機能の定義 5.3 対話プロトコル . . . . . . . . . . . . . . . . . . 5.3.1 状態遷移実行中における対話プロトコル 5.3.2 イベント待機中における対話プロトコル 5.4 メタレイヤを用いたアーキテクチャ . . . . . . . 5.4.1 アーキテクチャ . . . . . . . . . . . . . . 5.5 例題 . . . . . . . . . . . . . . . . . . . . . . . . . 5.6 応用例 . . . . . . . . . . . . . . . . . . . . . . . . 5.7 議論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 37 37 37 37 39 39 41 43 45 45 46 47 47 49 50 51 . . . . . . . . . . . . . 53 53 55 56 57 58 60 61 62 63 63 68 71 71 6 ネットワークゲームに基づく参加型シミュレーションのための アーキテクチャ 75 viii 6.1 6.2 6.3 6.4 6.5 6.6 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . 背景 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 関連研究 . . . . . . . . . . . . . . . . . . . . . . 6.2.2 シナリオ記述言語 Q . . . . . . . . . . . . . . . . 6.2.3 ネットワークゲーム gumonji . . . . . . . . . . ネットワークゲームとシナリオ処理系の結合 . . . . . . 6.3.1 ネットワークゲームの利用 . . . . . . . . . . . . 6.3.2 設計 . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.3 アーキテクチャ . . . . . . . . . . . . . . . . . . 6.3.4 実行フロー . . . . . . . . . . . . . . . . . . . . . メタレベル制御 . . . . . . . . . . . . . . . . . . . . . . 参加型シミュレーションの実施 . . . . . . . . . . . . . 6.5.1 gumonji/Q . . . . . . . . . . . . . . . . . . . . 6.5.2 農業経営シミュレーションの実施 . . . . . . . . 実現可能な参加型シミュレーション . . . . . . . . . . . 6.6.1 他のシミュレータとの連携 . . . . . . . . . . . . 6.6.2 オープンな参加型シミュレーション . . . . . . . 6.6.3 実世界でのコミュニケーションを含むシミュレー ション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 77 77 78 78 79 79 80 81 83 84 85 85 86 88 88 88 . 89 7 おわりに 91 Bibliography 95 Publications 103 ix List of Figures 1.1 1.2 参加型デザインに基づくシミュレーション開発 . . . . . マルチエージェントシステムのシナリオ制御 . . . . . . . 3.1 3.2 3.3 3.4 3.5 着物について説明するマイクロソフトエージェント FreeWalk エージェント . . . . . . . . . . . . . . . . 方向を尋ねるエージェント . . . . . . . . . . . . . . 出口へ向かうエージェント . . . . . . . . . . . . . . 出口へ案内するエージェント . . . . . . . . . . . . . . . . . . 28 30 31 32 33 4.1 4.2 エージェントのシナリオを切り替えるメタシナリオの例 エージェントのシナリオを切り替えるメタシナリオの記 述例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . メタレベル制御のアーキテクチャ . . . . . . . . . . . . . シナリオ実行制御のシーケンス図 . . . . . . . . . . . . . シミュレーションの GUI . . . . . . . . . . . . . . . . . . アバターのシナリオ . . . . . . . . . . . . . . . . . . . . . 時間管理のメタシナリオ . . . . . . . . . . . . . . . . . . 時間管理を行うメタシナリオの状態遷移図 . . . . . . . . エージェントのシナリオ . . . . . . . . . . . . . . . . . . 39 リハーサル指向テストのインタフェース . . . . . . . . シナリオと内部モデルの分離 . . . . . . . . . . . . . . . 修正開始時の対話プロトコル . . . . . . . . . . . . . . . 状態遷移の修正と削除を行うための対話プロトコル . . 状態の追加と削除,状態遷移の追加を行うための対話プ ロトコル . . . . . . . . . . . . . . . . . . . . . . . . . . メタレイヤを用いたアーキテクチャ . . . . . . . . . . . 56 57 61 62 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.1 5.2 5.3 5.4 5.5 5.6 xi . . . . . . . . . . . . . . 2 3 40 41 44 45 46 48 49 50 . 63 . 65 5.7 5.8 5.9 5.10 シナリオ修正時のシーケンス . . . . . . . . . 避難シミュレーションのスクリーンショット 修正前のシナリオ . . . . . . . . . . . . . . . 修正後のシナリオ . . . . . . . . . . . . . . . 6.1 6.2 A Screenshot of gumonji . . . . . . . . . . . . . . . . . . ネットワークゲームとマルチエージェントシステムによ る参加型シミュレーション . . . . . . . . . . . . . . . . ネットワークゲームとシナリオ処理系の結合 . . . . . . キュー・アクションの実行フロー . . . . . . . . . . . . 農業経営者の行動モデル . . . . . . . . . . . . . . . . . 例題の実行画面 . . . . . . . . . . . . . . . . . . . . . . 6.3 6.4 6.5 6.6 xii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 69 69 70 . 78 . . . . . 80 82 84 86 87 List of Tables 4.1 4.2 メタシナリオのキュー・アクション . . . . . . . . . . . . 38 オーバーヘッドの測定結果 . . . . . . . . . . . . . . . . . 50 6.1 gumonji/Q のキューとアクション . . . . . . . . . . . . . . 85 xiii Chapter 1 はじめに 1.1 目的 ユビキタス環境を用いた公共空間でのサービスは,オープンで大量の 利用者が想定されるため,利用者の行動を予測することが難しい.例 えば,渋滞緩和のために経路や時間帯を分散させるナビゲーションシ ステムを考えた場合,利用者がナビゲーションに従うかどうかが不明 であるため,システムの効果を検証することが難しい.このようなシ ステムのテストを行う場合,実際のシステム利用者を集めた被験者実 験を行うことが望ましいが,大量の被験者を集めて実証実験を行うに は莫大なコストがかかる.そこで,利用者をエージェントとしてモデ ル化したマルチエージェントシミュレーションが有効である. マルチエージェントシミュレーションを実施するためには,エージェ ントのモデル化技術が必要不可欠である.このため,利用者をシミュ レーションに参加させ,その振舞いを観察することによってエージェン トのモデルを獲得する参加型シミュレーションについて研究がなされ てきた [Ishida 07a],[Guyot 05]. 図 1.1 に示した参加型デザインに基づくマルチエージェントシミュ レーションの開発は,以下のプロセスに沿って行われる.まず,参加型 シミュレーションにより,シミュレーション中の参加者の振る舞いを観 測し,そこからエージェントモデルを獲得する.次に,得られたモデル が動作するシミュレータを開発し,動作させる.シミュレーションされ たエージェントの振る舞いが現実世界と合致しない場合,エージェン トモデルの精錬を行い,現実世界の振る舞いと合致させる.精錬され 1 Figure 1.1: 参加型デザインに基づくシミュレーション開発 たエージェントモデルを用いてシミュレーションを行い,個々の行動や 創発される現象の分析を行う.あるいは,参加型シミュレーションを再 度行うことで,新たなエージェントモデルを獲得する. 以上のプロセスを繰り返し行うことで,マルチエージェントシミュ レーションをより現実に近いものにしていくことが参加型デザインに 基づくシミュレーション開発の目的である.このプロセスを行うため には,参加型シミュレーションを実施するプラットフォーム,獲得した モデルを用いてマルチエージェントシミュレーションを実施するプラッ トフォーム,および,エージェントモデルの修正を行うプラットフォー ムが必要となる.図 1.1 に示すように,エージェントモデルは,参加型 シミュレーションとエージェントシミュレーションにおいて,異なる複 数のプラットフォームへの入力となる.さらに開発プロセスが進行す る中で,エージェントモデルの獲得と修正が繰り返し行われる.この ようにモデルの変更が発生する度に,プラットフォームのエージェント に修正を加えることは効率的で花井.そこで本研究では,モデルの追 加と修正を容易に行うため,シナリオ記述言語に基づくエージェント 制御を導入する. 1.2 シナリオ記述言語 図 5.2 に,シナリオ記述言語に基づくエージェント制御のアーキテク チャを示す.エージェントモデルは,応用分野ごとに定義された語彙を 2 Figure 1.2: マルチエージェントシステムのシナリオ制御 用いて,シナリオとして記述される.シナリオはシナリオインタプリ タに読み込まれ,エージェントシステムに実装されたエージェント制 御機能へと変換される.このエージェント制御機能は,シナリオの記述 に用いる語彙を実現するため,エージェントシステム開発者によって 実装される.こうすることにより,一度語彙を定義すれば,以降はエー ジェントシステム開発者を介することなく,シナリオ記述に基づいて動 作するエージェントが実現できる. 以下本研究では,このシナリオ記述言語に基づくマルチエージェン トシステムの制御を基盤として,参加型デザインを実施するための課 題に取り組む. 1.3 課題 本研究では,参加型シミュレーションに基づく大規模なマルチエージェ ントシミュレーション開発を実施するための基盤技術の確立を目的とし ている.この実現のためには,参加型シミュレーションを実施し,エー ジェントモデルを獲得,さらに,獲得したモデルが適切であるかどうか 確認するため,モデルのテスト,精錬,というプロセスを行う環境が必 要となる.ここで問題となるのは,参加型シミュレーションの実施,お よびモデルのテスト,精錬である.これらのプロセスでは,マルチエー ジェントシミュレーションを実施する必要があり,そのためのプラット フォームを開発しなければならない.本論文では,これらのプラット フォームに求められる要件について考察し,それを満たすアーキテク チャとして,以下の3つを示す. 1. シミュレーション制御のためのアーキテクチャ 3 大規模マルチエージェントシミュレーションを用いて参加型シミュ レーションを行うためには,様々な制御が必要となる.ひとつは, 大規模になるとエージェントの行動シナリオが非常に複雑になり メンテナンスが困難となるため,状況に応じて行動シナリオを切 り替えることで,ひとつひとつの行動シナリオを簡潔にする必要 がある.もうひとつは,参加型シミュレーションではシミュレー ション中に人間が意思決定を行うため実時間でのシミュレーショ ンが求められるが,長期間にわたるシミュレーションを全て実時 間で行うのは非効率的である.したがって,参加者の操作するエー ジェントを監視し,時間の管理を行う制御が必要である.これら の制御を実現するために,以下の二つの課題に取り組む. • 制御機能の定義 メタシナリオを用いて行動シナリオの切り替えや時間管理を 記述するために必要な機能を定義する必要がある. • 制御アーキテクチャの考案 メタシナリオに基づいた制御を実現するため,シミュレー ション実行中に行動シナリオやシミュレーション速度が制 御できるのアーキテクチャを考案する必要がある.大規模 シミュレーションプラットフォームに導入することを想定し ているため,大規模シミュレーションプラットフォームのス ケーラビリティを損なわないアーキテクチャでなければなら ない. 2. エージェントモデル精錬のためのアーキテクチャ エージェントの修正や拡張についても,利用者の意見を取り入れ ることが好ましい.しかし,修正や拡張が必要になるたびにエー ジェントの作成プロセスを繰り返すのは効率的ではない.そこで, エージェントの修正や拡張を,利用者自身が行うことができれば, 利用者の意見を効果的に取り入れたエージェントの修正や拡張が 可能となる.この目的のため,本稿では,リハーサル指向テスト を提案する.リハーサル指向テストとは,エージェントと人間と がエージェントの動作に関する対話を行うことによって,舞台の リハーサルで監督が役者に指示を出すように,エージェントを修 4 正/拡張するものである.リハーサル指向テストの実現のため,以 下の三つの課題に取り組む. • リハーサル指向テストに必要な機能の整理 マルチエージェントシステムにおけるリハーサル指向テスト がどのようなものかを定義する.さらに,その中でどのよう な機能を実現する必要があるのかを整理する. • 対話プロトコルの設計 リハーサル指向テストは,人間とエージェントとの対話に よって行われる.そこで,定義したリハーサル指向テストの 機能を実現するための対話プロトコルを設計する. • リハーサル指向テストのためのアーキテクチャ リハーサル指向テストでは,エージェントシナリオに対し て人間が直接変更を加えるのではなく,対話に基づいてエー ジェントが修正を行う.そこで,エージェントに自身のシナ リオを修正させるためのアーキテクチャが必要となる. 3. 参加型シミュレーション環境構築のためのアーキテクチャ 参加型シミュレーションを行うためには,シミュレーションプラッ トフォームが必要となる.このプラットフォームには,エージェン トと環境とのインタラクションや,環境の変化の再現,参加者の ためのユーザインタフェースなど,様々な機能が要求される.そこ で,これらの機能を備えたアプリケーションとしてネットワーク ゲームに注目し,ネットワークゲームに基づく参加型シミュレー ションプラットフォームのアーキテクチャを提案する.そのため に,以下の2つの課題に取り組む. • エージェントの振る舞いの外部定義 参加型シミュレーションを実施する場合,シミュレーション 上でソフトウェアエージェントを動作させる必要がある.ま た,その振る舞いは参加型シミュレーション実施者によって 変更されることが想定される.そのため,エージェントの振 る舞いをプラットフォームの外部で定義し,プラットフォー ムに手を加えることなく変更できる仕組みが必要である. 5 • 汎用的なプラットフォームの実現 本研究では,社会シミュレーションに関して特定の応用を 想定せず,様々な領域に関して,ネットワークゲームを用い た参加型シミュレーションの実施手法の確立を目指す.した がって,シミュレーション環境やエージェントの行動を,応 用に応じて変更できるような拡張性が求められる. 1.4 論文の概要 本論文は,序論である本章を含めて,7つの章で構成される. 第2章では,関連研究として,マルチエージェントシミュレーショ ンの開発に関する研究を示す. 第3章では,基盤技術としてシナリオ記述言語について説明する. 本研究用いるシナリオ記述言語 Q は,エージェントと外部とのインタ ラクションを記述する目的で開発され,既存のエージェントシステム と接続することでエージェントの制御が可能となる. 第4章では,シミュレーション制御のためのアーキテクチャについ て説明する.大規模な環境下での参加型シミュレーションを想定し,そ のために必要なシミュレーション制御機能とそれらを実現するための アーキテクチャを示す. 第5章では,リハーサル指向テストのためのアーキテクチャについ て説明する.ここでは,まずリハーサル指向テストについて説明し,そ の機能を定義する.そして,リハーサル指向テストのための対話プロ トコルの設計について延べ,それに基づいた修正の実行のためのアー キテクチャを示す. 第6章では,ネットワークゲームに基づく参加型シミュレーション のためのアーキテクチャについて説明する.ネットワークゲームに対 してエージェントの振る舞いを外部で定義,制御し,様々な応用につい て参加型シミュレーションを実施するためのアーキテクチャを示す. 第7章では,まとめとして,本研究の成果について述べる. 6 Chapter 2 関連研究 計算機の高速化,大容量化を背景に,従来よりも微視的な視点によるシ ミュレーションが実現できるようになっている.その一例として,人間ひ とりひとりをエージェントとしてモデル化し,創発される現象を観察す る,マルチエージェントシミュレーション (Multiagent Based Simulation) がある.マルチエージェントシミュレーションは,個々の振る舞いやイ ンタラクションを扱うため,それらの違いが重要となる社会システム の再現に適していると考えられている.近年では,マルチエージェント シミュレーションの応用は,交通,災害避難,医療,製造など多岐にわ たり,数多くのマルチエージェントシステムが研究・開発されている. しかしながら,マルチエージェントシミュレーションの開発には, エージェントモデルに関わる理論だけでなく,その実装や,エージェン ト間の関係,通信といった,様々な困難が含まれる.したがってシミュ レーションの開発を応用領域の専門家のみで行うのはコストが大きく, エージェントの専門家との協調や,開発を支援する技術が必要となる. そこで,本章では,マルチエージェントシミュレーションの開発の 支援という観点から,既存研究を示す. 2.1 マルチエージェントシミュレーションの開発 技術 多くのソフトウェアシステム開発は,まず抽象的な仕様が定義され,そ れをより具体的な複数の仕様にブレイクダウンしていくことで行われ 7 る.この作業を再帰的に繰り返し,実装レベルでの仕様までブレイク ダウンし,それを実装することによってソフトウェアシステムを開発 する. しかしながら,エージェントシステムのような反応型のシステムの 場合,このプロセスを素直に実行することが困難である.なぜなら,反 応型のシステムは,システムの実行中における振る舞いによって定義 されており,実行前後の状態が形式化されていないためである.また, エージェントシステムの場合は,通常の反応型システムよりも仕様の抽 象度が高いことが多く,そのためこの作業が非常に困難である.そこで, 仕様から実装へのギャップを埋めるため,仕様の記述とそこから実装へ の変換を支援する技術が求められる.さらに,そのため,エージェント プログラムの検証も非常に困難なものとなっている [Wooldridge 97]. 本節では,エージェントシステム開発プロセスにおいて,どのよう な技術が研究されているか説明する. 2.1.1 エージェントプログラミング言語 計算機の発展とともに,計算機によって実行されるプログラムは複雑 化していった.それに伴って,計算機と人間とのインタフェースとして プログラミング言語が開発され,進化している.エージェント分野にお いても,設計と実装のギャップを埋めるため,様々なエージェントプロ グラミング言語が研究・開発されてきた.特に,エージェントを信念, 願望,意図で表現する BDI をベースとしたエージェントプログラミン グ言語が数多く開発されている. [Peter 09] では,エージェントの知識表現と行動を明確に区別する ことのできるプログラミング言語 BSM を導入し,BDI エージェントの 実装における,応用領域に依存しないマクロの開発方法が示されてい る.また,[Hindriks 09] では,BDI の実装にも用いらているエージェン ト分野での伝統的なプログラミング言語 GOAL において,それを拡張 し,目標を終了状態ではなく状態の列とした場合に,エージェントが どのように実装されるかが示されている.[Nick 09] では,マルチエー ジェントシステムを,role,norm,sanction で定義される組織と個々の エージェントとのインタラクションから成るものとして実装すること のできる言語が提案されている. また,エージェントシステムの生産性を高めるため,エージェント を含むエージェントシステムの各要素の再利用性も重要な課題である. 8 [Ricci 08] では,環境を開発するための高レベルな汎用プログラミングモ デルと,エージェントが動的に生成,共有される MAS の設計,開発手法 を示すことにより,既存のエージェントプラットフォームに A&A(Agents and Artifact) モデルを導入する手法を示した.[Da Silva 08] では,MABS を,エージェントの性質を表現した Component,Component を具体化 する Scenario,シミュレーション構成を複数の Scenario で定義する Experiment の 3 層に分割し,それぞれを再利用可能なものとしている. 2.1.2 エージェントプログラムの検証 前述のようなエージェントの実装の複雑さ,また,特にシミュレーション においては,エージェントの仕様が明確でないといった理由から,エー ジェントプログラムの検証手法が課題となっており,さまざまな研究 がなされている.[Nguyen 09] では,エージェントの検証を行うに当た り,進化的にテストケースを自動生成し,段階的に性能を向上させる 手法を提案している.また,[Hetu 08] では,人間とエージェントとの やり取りの観察からエージェントのモデルを改善していく Human-inthe-loop シミュレーションを,多人数の環境に適用した多人数参加型 Human-in-the-loop シミュレーションを提案している. 2.2 MABS のためのプラットフォーム 一方で,マルチエージェントシミュレーションの開発を支援する目的で, エージェントモデルを基盤としたマルチエージェントプラットフォーム に関する研究が数多くなされている. 前述のとおり,マルチエージェントシステムをスクラッチから開発 を行うのは,大きなコストを伴う作業である.マルチエージェントシ ミュレーションの応用では,そのコストを削減するため,既存のシミュ レータを用い,そこにマルチエージェントモデルを導入するという手 法が採られることが多い. また,マルチエージェントシミュレーションを実施する場合には, いかにして応用領域の専門家と協調していくかが問題となる.たとえ ば,Drogoul らは,マルチエージェントシミュレーションの実施のため, 応用領域の専門家,計算機の専門家のほか,それらの橋渡しをするも のとしてモデル設計家という役割を導入し,シミュレーションの設計 9 プロセスを示している [Drogoul 02].石田らによって開発されたシナリ オ記述言語 Q は,計算機の専門家と応用領域の専門家が協調してマル チエージェントシステムを開発する場合,それらの間のインタフェー スとなることを目的として設計されている [Ishida 11]. さらに,近年では,マルチエージェントシミュレーションが一般化 するに従い,大規模なマルチエージェントシミュレーションに対する要 求も高まっている.たとえば,マルチエージェントモデルをベースとし た大規模システム用プラットフォームとして Caribbean が開発されてい る [Yamamoto 01]. 本節では,これらの問題に対して,どのようなプラットフォームが 研究・開発されているか,また,どのような応用がなされているかを説 明する. 2.2.1 マルチエージェントシミュレーションプラットフォー ムに関する研究 既存のシステムを用いてマルチエージェントシミュレーションを行う 場合,より低レベルなシステムを用い,それを基盤としてマルチエー ジェントモデルの導入を行うといったアプローチが取られることが多 い.[Tumer 07] では,物理モデルをベースとした航空交通シミュレータ FACET を用いて,航空交通管理のエージェントシミュレーションを実施 している.[Thengvall 09] では,無人航空機のチームの警邏シミュレー ションのため,地理的なシミュレーションと強化学習を備えたマルチ エージェントシミュレータ COLMAS を開発し,その評価を行っている. [Taghaddos 08] では,建設現場のエージェントシミュレーションを行う ために,汎用シミュレータ基盤技術である High Level Architecture(HLA) を用いたシミュレーションを開発している. また,シミュレーションに必要な機能を補完する目的で既存システ ムが利用されることも多く,最近では,三次元仮想空間を利用する目的 で,三次元ゲームエンジンを用いたマルチエージェントシミュレーショ ンプラットフォームが開発されている.たとえば,[Fishwick 08] では, 中国文化の理解のためのシミュレーションを行う目的で,文化にかか わる様々な現実世界の要因を再現するため,3 次元マルチユーザ環境で あるセカンドライフを用いた実験を行っている. 10 2.2.2 専門家との協調 マルチエージェントシミュレーションを実際に行うには,応用領域の専 門家がシミュレーション開発に関わることは必須である.[Abbink 09] では,列車運行を例題として,マルチエージェントシステムの開発プ ロセスを示し,各領域分野と協調して開発することが重要であると提 示されている. 応用領域の専門家の取り入れ方はいくつか考えられるが, [Drogoul 02][Ishida 11] のように,計算機の専門家と応用領域の専門家 が同時に開発に参加する手法が多い.たとえば,[Johnson 09] では,避 難キャンプのマルチエージェントシミュレーションを,軍人や心理学者 といった専門家の意見を取り入れて改善していくプロセスが示されて いる. 一方で,シミュレーションの設計・開発が十分容易なものとなれば, 開発プロセスにおいて計算機の専門家との協調を必要とせず,応用領 域の専門家が独自に開発プロセスを実施できると考えられる.このよ うな技術に関する研究として,[Hahn 08] では,エージェント分野の非 専門家がエージェントシステムの開発を行えるよう,グラフィカルな ツールによりエージェントモデルを記述し,そこからコードを生成す る技術を開発している. 2.2.3 マルチエージェントシミュレーションのスケーラビ リティに関する研究 一般に,システムのスケーラビリティを考慮する場合,システムの大 規模化に伴って,いかに計算資源を効率よく利用するかが問題となる. このことは,マルチエージェントシミュレーションにおいても例外では ない. 計算機技術の発達により,計算機一台一台の性能は向上したが,依 然十分でないケースも多く,複数の計算機を用いることにより,より多 くの計算資源を確保できることは明白である.しかしながら,それらを 効率よく利用するためには,一台の計算機の場合よりも困難な問題に 取り組まなければならない.[Wang 08] では,大規模な群衆シミュレー ションのため,複数台の計算機を用いることを前提としている.ここ で問題としているのは,複数台のエージェントにいかにエージェント を分散させるかである.エージェントの分散に偏りが生じると,各計 11 算機における計算資源の利用状態にも偏りが生じ,結果期待できる性 能が得られないことがある.そこで,この論文では,クラスタリング 手法のひとつである K 平均法を用いて,群衆を複数の計算機に分割し てシミュレーションを行う手法を提案している. また,大規模システムのための既存技術を応用し,それを基盤にマ ルチエージェントモデルを導入することで,大規模マルチエージェント システムを実現することも可能である.[Xiong 08] では,PDES(Parallel Discrete Event System) で用いられていた技術を応用し,”sense-think-act” サイクルを持つエージェントによるシミュレーションを大規模に行う ための API を開発している.そして,[Perron 08] では,この技術を用 いた応用実験を行い,その効果を検証している. 一方で,エージェントモデルを見直し,規模の拡大に伴うオーバー ヘッドの削減や計算量の削減を行うことにより,スケーラビリティを 実現する研究もなされている.前者の例として,[Pawlaszczyk 09] では, マルチエージェントシミュレーションのスケーラビリティに影響する要 素を分析し,それに基づいてエージェント間通信のための同期プロト コルを提案,検証を行っている.これは,特定の応用に関するもので はないため,同様のモデル化手法を用いたシミュレーションにおいて 適用可能である.一方後者の例として,[Claes 08] では,大規模なエー ジェントシミュレーションを効率的に実施するため,計算量は少ないが 粒度の荒いモデルと,計算量が多いが粒度の細かいモデルを切り替え て行う手法を,交通シミュレーションの分野で提案し,検証を行ってい る.このような技術は,それ自身に汎用性は少ないものの,どういう タイミングでモデルの切り替えを行えば良いか,その検証プロセスが 確立されることで,様々な分野に適用できると考えられる. 2.3 議論 本章では,マルチエージェントシミュレーションに関して,その開発に どのような技術が用いられているか,人工知能およびシミュレーション 分野の研究を示した. マルチエージェントシミュレーションは,それ自身複雑な理論と計 算を伴うシステムであると同時に,その開発にシミュレーションの領 域分野の専門家の知識が必要不可欠である.そのため,マルチエージェ ントシミュレーションの開発にかかるコストを削減する一方で,領域 12 の専門家の知識を取り入れた開発技術が求められている. したがって,マルチエージェントシミュレーションの実現のたには, 応用領域の専門家を取り入れたシミュレーションの開発プロセス,そ のプロセスを実現するためのプラットフォーム,さらには,シミュレー ションを効率的に実行するための基盤技術といった,様々なレイヤにお ける技術を統合していかなければならない. 13 Chapter 3 シナリオ記述言語 Q エージェントシステムやマルチエージェントシステムの研究分野では, 様々な種類のソフトウェアエージェントが研究,開発されてきた.複雑 な計算機システムや通信システムの利用において人間をサポートする, パーソナルエージェントが典型的な例である.一方で,本研究では,人 間のコミュニティの一員として動く社会的エージェントに注目する.社 会的エージェントとは,パーソナルエージェントのように人間対計算 機のインタラクションを支援するのではなく,人間対人間のインタラク ションを支援するエージェントである.社会的エージェントの性質を 理解するためには,社会的エージェントを用いた実験を行うことので きるプラットフォームが必要となる.そこで本章では,社会的エージェ ントと人間との間のインタラクションを設計するための,シナリオ記 述言語について説明する. これまで,エージェントの内部メカニズムに基づいてエージェント の振る舞いを記述する言語が多く提案されてきた.しかしながら,社 会的エージェントの場合,エージェントと人間との間のプロトコルを 考える必要がある.Q は,エージェントの外部から見た役割に基づい て,エージェントと人間とのインタラクションを記述するための言語 である.そのため,Q はエージェントの内部メカニズムには依存せず, エージェントの振る舞いに対する依頼を記述することを目標とする. エージェント記述言語からインタラクション設計言語への視点の移 行は,言語仕様に対し,また言語処理系に対し,大きな変化を生じさ せる.Q は,エージェントがどのような言語を用いてどのように記述 されているかに感知しない.例えば,エージェントが外部から「走れ」 15 「歩け」という 2 つの依頼しか受け付けないのであれば,Q の言語仕様 は「走れ」「歩け」の 2 つの構文を許すだけである.さらにその構文の 意味するところは,実際に依頼を発してみなければ分からない.大き く手を振って速く走るか,ジョギングするかはエージェントによるので あり,その実装は Q の記述には影響しない.従って Q には,エージェ ントの動作を記述する「JAVA 言語呼び出し」のような,直接実行を想 定した機能は存在しない. Q を実現するため,Scheme1 を拡張してキュー,アクション,ガー ド付きコマンドを導入する.Q は Scheme を母言語とするため,Q シナ リオ中ではすべての Scheme の機能を用いることができる.次節以降で は,新たに追加した言語機能について説明する. 3.1 変数と値 変数は予約語以外のアルファベットで始まるシンボルである.変数は 宣言をしてから用いる.変数の宣言には以下の2通りの方法がある. 1. “define” によるグローバル変数の宣言. 2. “let”,“letrec” および “let*” によるローカル変数の宣言. 変数への値の代入は,以下の3通りの方法がある. 1. “define”,“let”,“let*” による初期値の設定. 2. “set!” による代入. 3. キュー,アクションの実行による代入(3.3 節を参照). この中で,唯一キューやアクションの実行による代入が明示的でな い.このようにキューやアクションの内部で代入される変数をパター ン変数と呼ぶ.パターン変数の他愛は常に参照値であり,参照値を扱 うために以下の操作が用意されている. 1. refval variable: 参照 variable の参照先の値を取得する. 1 Scheme は Lisp の方言のひとつであり,Guy によって考案された. 16 Lewis Steele Jr. と Gerald Jay Sussman 2. set-ref! variable value: 参照 variable の参照先の値を value に更新 する. 3. make-ref value: value を参照する参照値を作成する. パターン変数の記法として “$” で始まるシンボルの利用が推奨され ている.パターン変数も変数であるので,他の変数と同様に宣言が必 要である. 3.2 キューとアクション インタラクションのきっかけとなるイベントはキュート呼ばれ,エー ジェントに観測の依頼を行うものである.キューは副作用を持たず,指 定されたイベントの観測に成功するまで待ち続ける.キューが正しく 実行されると,#t が返される.下記のように,キューは “defcue” によっ て定義される.名前は “?” で始まるものを用いることが推奨される. 構文 3.1. キューの定義 (defcue name {(:keyword in|out|inout)}*) 例 3.1. キューの定義 (defcue ?position (:name in) (:distance in) (:angle in)) (defcue ?observe (:name in) (:gesture in)) (defcue ?hear (:from out) (:word in)) (defcue ?see (:object in) (:direction in)) 上記のキューの定義において,“in”,“out” は,エージェントとシナ リオインタプリタとの間のデータの流れを示している.“in” が指定さ れた場合は,キーワード引数の値はシナリオインタプリタからエージェ ントへと渡される.一方で “out” が指定された場合は,キーワード引数 の値はエージェントからシナリオインタプリタへと渡される.“inout” が指定された場合は,キーワード引数の値はエージェントへ渡された 後,シナリオインタプリタへ渡される. 17 一方アクションは,環境に対して何らかの作用を起こすことを依頼 する.アクションには同期アクションと非同期アクションがあり,非同 期アクションは実行の完了を待たずに後続のアクションを実行するた め,複数のアクションを並列に実行することができる.同期アクション は,実行の完了を待ってから後続のアクションを実行するため,他のア クションと並列に実行することはできない. 下記のように,アクションは “defaction” コマンドによって定義され る.アクションが正しく実行された場合には#t が返される.同期アク ションには “!” で始まる名前を,非同期アクションには “!!” で始まる名 前を用いることが推奨されている.同期と非同期の両方の性質を持つ アクションについては,例えば “!walk” と “!!walk” といったように,両 方のアクションを定義する. 構文 3.2. アクションの定義 (defaction name {(:keyword in|out|inout)}*) 例 3.2. アクションの定義 (defaction (defaction (defaction (defaction !walk (:from in) (:to in)) !!walk (:from in) (:to in)) !speak (:to in) (:sentence in)) !approach (:to in) (:distance in) (:angle in)) (defaction !!approach (:to in) (:distance in) (:angle in)) キーワード引数は,キューやアクションを実行する際に必要となる 様々な情報を決定するために用いる.キーワード引数は,“:” で始まる キーワードシンボルとその値で定義する.例えば,“:to Jerry” という表 記では,キーワードシンボルが “to”,その値が “Jerry” となる. 下記の例はそれぞれ,Jerry が “Hello” と話しかけてくるのを待つ, バスターミナルから駅へと歩く.Jerry へ “Hello” と話しかける,駅が南 の方向に見えるかどうか確認する,という行動をエージェントへ依頼 するものである.この例で “!walk” の代わりに “!!walk” を用いた場合, 18 エージェントは歩き始めるのと同時に Jerry に話しかけることになる. このように,非同期アクションによりエージェントシナリオの柔軟性 (と同時に複雑さ)が高くなる. 例 3.3. キューとアクションの実行 (?hear :from Jerry :word "Hello") (!walk :from "bus_terminal" :to "railway_station") (!speak :to Jerry :sentence "Hello.") (?see :object "railway_station" :direction "south") プログラミング言語における関数とは異なり,Q ではキューやアク ションの意味を定義しない.したがって,キューやアクションの意味は エージェントの実装に完全に依存し,それぞれのエージェントがそれ ぞれの実装に基づいて実行する. 3.3 制御構造 条件分岐や再帰呼び出しなど,Scheme のすべての制御構造を Q シナリ オの記述に用いることができる.加えて,複数のキューを同時に待機 するため,ガード付きコマンドを導入した. 構文 3.3. ガード付きコマンド (guard {(cue {form}*)}* [(otherwise {form}*)]) ガード付きコマンドは, キューとフォームからなる節の並びである. すべてのキューは一括してエージェントに送られ,エージェントは全て のキューを並行して観測する.観測しているキューのうちいずれかの キューが真になると,そのキューに後続するフォームを順に評価する. キューがひとつでも真になった時点で,キューの並行観測を終了する. いずれのキューも真とならない場合,“otherwise” 節が指定されていれ ば, 後続するフォームが評価される.ただし,“otherwise” 節の実行の タイミングは,各エージェントシステムに任される.ガード付きコマン ドの返却値は最後のフォームの評価結果となる.もし複数のキューが 成功した場合,どれを選択するかはエージェントシステムに任される. 19 例 3.4. ガード付きコマンド (guard ((?hear :from $agent :word "Hello") (!speak :to (refval $agent) :word "Hello")) ((?hear :from $agent :word "Fire") (!!approach :to "exit" :distance "near") (!speak :to $agent :sentence "Here is an exit!"))) (guard ((?hear :name $agent :word "What ’s that?") (guard ((?position :name "Kyoto_station" :distance "near") (!speak :to (refval $agent) :sentence "That ’s Kyoto station.")) ((?position :name "Kyoto_university" :distance "near") (!speak :to (refval $agent) :sentence "That ’s Kyoto University")) (otherwise (!speak :to (refval $agent) :sentence "I can’t see anything."))))) ひとつ目の例は,“Hello” という単語を聞くか “Fire” という単語を 聞くかという,ふたつの事象を並行観測している例である.ふたつ目 の例はガード付きコマンドを入れ子にした例である.エージェントが “Whta’s that?” という文を聞くと,京都駅に近いか,京都大学に近いか, あるいはどちらとも近くないかという判断をするための並行観測が実 行される. 20 3.4 シナリオ シナリオは状態遷移を記述するために用いられ,“defscenario” で定義す る.それぞれの状態はガード付きコマンドとして定義されるが,キュー の代わりに条件を指定することも可能である.シナリオは,他のシナ リオや関数の内部で呼び出すことができる. 構文 3.4. シナリオの定義 (defscenario name ({variable}* {&key (variable value)}* {&pattern (variable value)}* {&aux (variable value)}*) {(state {(testform {form}*)}* {(cue {form}*)}* [(otherwise {form}*)])}*) 各状態には,“testform” または “cue” を指定する.前者は Scheme の 条件文である.後者は “otherwise” とともにガード付きコマンドとして 実行される.したがって,“testform” が真であれば後続のフォームが実 行され,偽であれば観測された “cue” に後続するフォームが実行される. 状態遷移については,“form*” 中の “(go state)” が用いられる.それ ぞれの状態には意味のある名前をつけることを推奨する.“form*” の中 で状態遷移が実行されなかった場合には,シナリオを終了する.シナ リオの返り値は,そのシナリオの最後の文の返り値となる. 例 3.5. シナリオの定義 (defscenario chat (&key (message "Oh! Jiro, good boy!") &pattern ($agent #f)) (greeting ((?hear :from $agent :word "Hello") (go messaging)) ((?hear :from $agent :word "Bye") (go farewell))) 21 (messaging ((equal? (refval $agent) Jiro) (!speak :to Jiro :sentence message)) (otherwise (!speak :to (refval $agent) :sentence "Hello"))) (farewell (#t (!speak :to (refval $agent) :sentence "Bye")))) 上記の例では,chat シナリオは “greeting”,“messaging”,および “farewell” の3つの状態から成る.初期状態である状態 “greeting” では, エージェントは誰かが “Hello” あるいは “Bye” と言うのを待っている. エージェントが “Hello” という言葉を聞くと,状態 “messaging” に遷移 する.一方 “Bye” という言葉を聞いた場合には,状態 “farewell” へと遷 移する.状態 “messaging” では,“Hello” という言葉を言ったのが “Jiro” であった場合には,“Jiro” に対して,変数 “message” に割り当てられて いる “Oh! Jiro, good boy!” という言葉を発する.“Hello” という言葉を 言ったのが他のエージェントであった場合には,“Hello” と返事をする. 状態 “farewell” では,“Bye” と返事をする. エージェントにシナリオを実行させる方法は2通りある.ひとつ はエージェントの定義中のキーワード引数 “scenario” に設定する(3.6. エージェントを参照)方法である.もうひとつは,下記のようにシナリ オを実行する方法である. 構文 3.5. シナリオの実行 (scenario_name agentID arguments) 上記の定義において,“scenario name” は実行するシナリオを,“agentID” はシナリオを実行するエージェントを,“arguments” はシナリオの 実行に必要な引数を,それぞれ指定する. 例 3.6. シナリオの実行 (chat Taro :message "Hi, Jiro.") 22 上記の例では,“Taro” に “chat” という名前のシナリオを実行させて いる.同様にして,別のシナリオや関数の中でシナリオを呼び出すこ とができる. 例 3.7. シナリオ中でのシナリオ呼び出し (defscenario chat_1 () (small_talk (#t (chat self :message "Hi, Jiro.")))) 例 3.8. 関数内でのシナリオ呼び出し (defscenario chat_2 () (small_talk (#t (fchat self "Hi, Jiro.")))) (define (fchat agent message) (chat agent :message message)) ただし,関数内でシナリオを呼び出す場合には注意が必要である. シナリオの呼び出しにはそのシナリオの実行主体を指定しなければな らないが,シナリオと異なり関数にはその関数の実行主体を参照する 方法が存在しない.そこで,関数の実行時に引数として,関数の実行主 体のエージェント ID を渡しておくと便利である.例えば “chat” シナリ オを実行する関数は,上記のように引数として実行主体のエージェン ト ID が渡されている.なお,上記の両方の例に現れる “self” は,各シ ナリオを実行しているエージェント ID を表す. 一方,関数内にはシナリオだけでなく,キューやアクションを記述 することも可能である.ただし,キューやアクションは暗黙のうちに “self” を参照するので,関数内で “self” にエージェント ID を束縛する 必要がある.そのため関数の引数に実行主体となるエージェントの ID を渡さなければならない. 例 3.9. 関数内でのキューとアクションの実行 (defscenario greeting () (greeting 23 (#t (fhello self 3))) (define (fhello agent distance) (let ((self agent) ($agent (make-ref #f))) (?position :name $agent :distance distance) (!speak :to (ref-val $agent) :sentence "Hello."))) 上記の例では,関数 “fhello” の実行時に “self” が引数 “agent” に束縛 される. 3.5 エージェント エージェントとアバターは下記のように定義する. 構文 3.6. エージェントとアバターの定義 (defagent name [:scenario value] ;; A scenario assigned to the agent. [:population value] ;; The number of agents ;; generated by this definition. {:keyword value}*) (defavatar name [:scenario value] ;; A scenario assigned to the avatar. [:population value] ;; The number of avatars ;; generated by this definition. {:keyword value}*) あらかじめ Q の言語仕様によって用意されているキーワード引数は “:scenario” と “:population” の二つだけである.前者はエージェント・ア 24 バターに割り当てるシナリオを指定するために用いられ,後者は同じ 定義によって生成されるエージェント・アバターの個体数を指定する ために用いられる.ただし,これらのキーワード引数の利用はオプショ ナルである.“:scenario” が省略された場合は,後で明示的にエージェン トにシナリオを実行させる必要がある.一方,“:population” が省略され た場合は,個体数 1 を意味する. 例 3.10. エージェントの定義 (defagent evacuation_leader :scenario fire_navigation :population 1 :location ’(100.0 -10.0 5.0 45.0) ;; Agent ’s initial coordinate. :shape ’("body1.wrl" "body2.wrl")) ;; Agent ’s image data. (defagent evacuees :scenario fire_drill :population 10 :location ’((100.0 -10.0 5.0) (50.0 10.0 1.0)) ;; Area where agents are to show up. :shape ’(("body1.wrl" "body2.wrl"))) ;; Agents ’ image data. ひとつ目の例では,シナリオ “fire navigation” を実行するエージェ ント “evacuation leader” を定義している.キーワード引数 “location” と “shape” によりエージェント作成のためのより詳しい情報を与えている. “location” と “shape” の値はエージェントの初期位置と画像データを表 している.ふたつ目の例では,10 体のエージェント “evacuees” を定義 し,同じシナリオ “fire drill” を実行させている. エージェントやアバターには ID が振られ,指定した名前に割り当 てられる.“population” に2以上の値が設定された場合には,エージェ ント ID のリストが割り当てられる.リストから ID を得るには “list-ref” 関数を用いる.下記の例は,エージェント群 “evacuees” の4番目のエー ジェントの ID を取得している. 例 3.11. リストからエージェント ID の取得 25 (list-ref evacuees 3) 多くの場合,エージェントは,そのエージェントの振る舞いを規定 するシナリオと共に定義される.エージェント群が同じシナリオを実 行した場合でも,エージェントはそれぞれ環境とのインタラクション を行うため,異なったアクションを実行する.人間によって制御される アバターは通常シナリオを必要としないが,その行動を制約したい場 合にはシナリオを与えることができる. 3.6 環境 エージェントやアバターの環境を定義する場合には,任意で “defenv” を用いる. 構文 3.7. 環境の定義 (defenv name {:keyword value}*) キーワード引数とその値はそれぞれのエージェントシステムによっ て個別に定義される. 例 3.12. 環境の定義 (defenv virtual_space :max_entry 100 ;; Maximum number of agents (integer) :ip_address "i.kyoto-u.ac.jp" ;; IP address to connect (string) :port_number 12345 ;; Port number to connect (integer) :vrml_url "http://www.ai.i.kyoto-u.ac.jp/shijo_street/" ;; URL of VRML source codes (string) :vrml_path "data/shijo_street/") ;; Relative path to the resource directory 26 上記の例では,環境 “virtual space” が定義されている.この環境は 100 体までのエージェントを扱うことができる.IP アドレスとポート 番号は “virtual space” に接続するために用いられ,また,画像データの URL も指定されている.最後の引数では,ローカルディレクトリの相 対パスが指定されている. 3.7 応用例 本節では,マイクロソフトエージェントを用いた例を示す.アクショ ン “!gesture” により,マイクロソフトエージェントに 60 種類のジェ スチャーを行わせることができる.ここでは,マイクロソフトエー ジェントの Marlin を以下のように制御したいと仮定する.ユーザが “http://www.news.com/” を見ていると,エージェントはジェスチャーを しながら “Hello” と話しかけ,その日のトピックをいくつか見せる.そし て,ユーザはその中からひとつを選択する.このような振る舞いをエー ジェントに依頼するため,Q で記述したシナリオを以下に示す.エー ジェントはユーザが選択するまで待ち続ける. 例 3.13. メニューからの選択 (defscenario Web_navigation (&pattern ($x #f) &aux (time #f)) (introduction ((?watch_web :url "http://www.news.com/") (!gesture :animation "Greet") (!speak :sentence "Hello, I am Marlin.") (!fly :x 50 :y 300) (go selection))) (selection (!display :url "http://www.news.com/topics.html") (!speak :sentence "What are you interested in?") (!ask :selection ’("Japanese Kimono" "Sumo Wrestling" "Sudoku" 27 Figure 3.1: 着物について説明するマイクロソフトエージェント "Nothing")) (?receive :selection $x) (go agent-initiative))) 次に,以下のようなタスクを Merlin に与えるとする.ユーザが日本 の伝統的な衣服である着物について学ぼうとしており,着物に関する Web サイトを閲覧している.エージェントは,ユーザが新しいページ を開くごとに,その要約を提示する(図 3.1).ユーザが何も反応しな かった場合は,次の話題に移行する. 例 3.14. 相互主導型 Web ナビゲーション (agent-initiative (#t (!speak :sentence "Hmm, you are so enthusiastic.") (!speak :sentence "Then, how about this page?") (!display 28 :url "http://kimono.com/index.htm") (go user-initiative))) (user-initiative ((?watch_web :url "http://kimono.com/type.htm") (!speak :sentence "There are many types of obi.") (!speak :sentence "Can you tell the difference?") (go user-initiative)) ((?watch_web :url "http://kimono.com/fukuro.htm") (!gesture :animation "GestureLeft") (!speak :sentence "Fukuro obi is for a ceremonial dress.") (!speak :sentence "Use it at a dress-up party!") (go user-initiative)) ((?watch_web :url "http://kimono.com/maru.htm") (scenario_for_maruobi self) (go user-initiative)) ((?timeout :time 20) (go change-topic))) (change-topic (otherwise (!speak :sentence "Did you enjoy Japanese Kimono?") (!speak :sentence "OK, let ’s go to the next topic.") (go selection)))) もうひとつの応用例として,FreeWalk エージェントを挙げる.この エージェントは,ユーザ(以下の例における “you”)を安全な出口まで 29 Figure 3.2: FreeWalk エージェント 案内する.シナリオの開始後,ユーザがエージェント(赤い服を着た 女性)に近づくと,エージェントはユーザに “Where is the exit?” と尋 ねる. 例 3.15. 移動と会話(図 3.2) (defscenario evacuation_guidance() (approach (#t (!walk :route ’((1.5 0.0))) (?position :name you :distance "near") (!!face :to you) (!speak :to you :sentence "Where is the exit?") (go ask))) ユーザがエージェントから離れると,エージェントはユーザに付い ていく.ユーザが角の方向を指差すと,エージェントは指差した方向に 歩いていく. 例 3.16. 方向を尋ねる(図 3.3) (ask ((?position :name you :angle "rear") 30 Figure 3.3: 方向を尋ねるエージェント (!turn :to you) (!speak :to you :sentence "Please tell me.") (go ask)) ((?position :name you :distance "far") (!turn :to you) (!approach :to you :distance "close") (!speak :to you :sentence "Where will you go?") (go ask)) ((?position :name you :point_angle "angle_to_corner") (!!face :to "corner") (!turn :to "corner") (!speak :to you :sentence "OK.") (!walk :route "path_to_corner") (!!face :to you) (!turn :to you) (!speak :to you :sentence "Let’s go together!") (go together))) 31 Figure 3.4: 出口へ向かうエージェント エージェントが角に到達すると,ユーザに一緒に来るように求める. ユーザがエージェントのところへ到達すると,エージェントは出口へ と歩き出す.ユーザが付いていかずに立ち止まっていると,エージェン トはユーザの方を向いて,一緒に来るように求める. 例 3.17. エージェントに追従(図 3.4) (together ((?hear :from you) (!speak :to you :sentence "What happened?") (!behave :gesture "Come") (!speak :to you :sentence "This way.") (go together)) ((?position :name you :distance "near") (!face :to “ exit ”) (!turn :to "exit") (go exit))) エージェントが出口へ着くと,ユーザに先に行くように指示する. ユーザが出口から出たのを見た後,エージェントはユーザに付いて出 口から出る. 32 Figure 3.5: 出口へ案内するエージェント 例 3.18. 避難誘導(図 3.5) (exit ((?position :name agent :from "exit" :distance "near") (!turn :to you) (!speak :to you :sentence "We arrived at the exit. After you.")) ((?position :name you :distance "near") (!walk :route "path_to_exit") (go exit)))) 33 Chapter 4 シミュレーション制御のための アーキテクチャ 4.1 はじめに 高性能コンピュータや分散コンピューティング環境を利用した,数万 から数百万のエージェントを扱うことのできる,大規模マルチエージェ ントシステム(MMAS)について議論がされ始めている [Ishida 05]. MMAS の応用として,ひとつの都市全体を対象とした交通シミュ レーション [Balmer 04a] や災害時シミュレーションを行うことが考えら れる.このような大規模シミュレーションでは,多数のエージェントの 多様な動作のためにシミュレーションの状況も多様に変化したり,ひと つの事象の広域的な影響を観測するためにシミュレートする期間が長 期間になったりすることが想定される.このような場合,シミュレー ションの柔軟な制御が必要である.例えば,以下のふたつの制御があ げられる. 第一に,大規模マルチエージェントシミュレーションでは,エージェ ントの行動シナリオは非常に複雑なものになるという問題がある.例え ば,交通シミュレーションにおいては,しばしばエージェントのトリッ プ1 の作成が問題となる.トリップ生成の手法として,OD 表を用いた 手法 [Balmer 04b] や,遺伝的アルゴリズムを用いた手法 [Charypar 03] が提案されている.多様に変化する状況に対して,起こりうる全ての 1 出発地から目的地までの一回の移動 35 状況に対応できる行動シナリオを作成するのではなく,特定の状況で のみ動作する行動シナリオを複数用意して状況に応じて切り替えるこ とで,ひとつひとつの行動シナリオを簡潔にすることができる. 第二に,シミュレーションをトレーニングに用いたり,その過程 を通じてより正確なエージェントのモデルを得るには,一部のエージ ェントを人間が直接操作する参加型シミュレーションが有効である. [Murakami 05a][Guyot 05].参加型シミュレーションではシミュレーショ ン内で人間が意思決定を行うため,実時間でのシミュレーションが求 められる.長期間なシミュレーション全てを実時間で行うのは非効率 的である.そこで,人間が操作するエージェントを監視して操作者に 意思決定が必要な場面のみ実時間に切り替える制御が必要となる. このように,MMAS を用いてシミュレーションを行う場合,エー ジェント数だけでなく,シミュレーションの制御も問題となる.本研究 の目的は,大規模シミュレーションにおけるこれらの柔軟な制御を実 現することである.この目的の達成のため,シミュレーションの観測/ 制御およびエージェントの行動シナリオの観測/制御を記述するための 言語として,メタシナリオを提案する.メタシナリオに基づく制御の 実現のため,我々は以下の課題に取り組んだ. 制御機能の定義. メタシナリオを用いて行動シナリオの切り替えや時 間管理を記述するために必要な機能を定義する必要がある. 制御アーキテクチャの考案. メタシナリオに基づいた制御を実現する ため,シミュレーション実行中に行動シナリオやシミュレーション 速度が制御できるのアーキテクチャを考案する必要がある.また, MMAS に導入することを想定しているため,MMAS のスケーラ ビリティを損なわないアーキテクチャでなければならない. 以下,第 4.2 節で行動シナリオの記述に用いるシナリオ記述言語の 説明,第 4.3 節でメタシナリオの説明,第 4.4 節でメタシナリオにもと づく制御を実現するメタレベルアーキテクチャの説明,第 4.5 節でメタ シナリオの参加型シミュレーションへの適用例,第 4.6 節でアーキテク チャのスケーラビリティに関する評価を行う. 36 4.2 シナリオ記述 我々は,エージェントの行動シナリオを記述する言語として,第 3 章で 説明したシナリオ記述言語 Q[Ishida 02a] を用いた. 4.2.1 シナリオ処理系 シナリオ処理系はシナリオ記述を解釈し,キュー,アクション,ガード 付きコマンドの実行依頼をエージェントシステムに送る.エージェン トシステムがキュー,アクション,ガード付きコマンドを実行する機能 を持っていない場合,エージェントシステムが提供する機能に変換す ることで,これらの命令を実行させる.シナリオ処理系は,エージェン トシステムからの実行結果をもとに次に実行する命令を決定し,エー ジェントシステムに実行依頼を送る. このように,シナリオ処理系はエージェントシステムと切り離され ている.そこで,メタシナリオ処理系は,シナリオ処理系を制御する ことで,エージェントシステムには手を加えることなく,エージェント のシナリオ実行の制御が可能となる. 4.3 メタシナリオ 本章では,シミュレーション制御を記述するための言語であるメタシ ナリオについて述べる. 4.3.1 機能定義 参加型シミュレーションにおいて,アバターの操作者の意思決定の完 了は,直ちにシミュレーション環境に反映されるのではなく,アバター の内部状態の変化としてあらわれる場合が多い.したがって,操作者 の意思決定を観測するためには,シナリオの実行状況を観測する必要 がある.また,シミュレーションの状況に応じたシナリオの変更を行う ためには,シミュレーションの状況の観測やシナリオの変更といった機 能が必要である.その他,シミュレーション速度の変更などのためのシ ミュレーションの環境情報の操作や,シミュレーション実行者とのイン タフェースのための機能が必要となる. 37 Table 4.1: メタシナリオのキュー・アクション エージェントの制御 ?observeAction アクションの実行を観測 ?observeCue キューの実行の観測 ?observeTransition 状態遷移の観測 ?observeScenario シナリオ実行の観測 !runCue エージェントにキューの実行を依頼 !runAction エージェントにアクションの実行を依頼 !releaseScenario エージェントからシナリオを解放 !assignScenario エージェントにシナリオを割り当て シミュレーションの制御 ?observeEnvironment シミュレーション環境を観測 !getEnvironment シミュレーション環境情報を取得 !setEnvironment シミュレーション環境の設定 !createAgent エージェントの作成 !deleteAgent エージェントの削除 !createCrowd 群集の作成 !createAvatar アバターの作成 !startSimulation シミュレーション開始 !stopSimulation シミュレーション停止 シミュレーション実行者の環境の観測 ?observeMetaEnvironment シミュレーション実行者の環境を観測 !getMetaEnvironment シミュレーション実行者の環境を取得 メタシナリオは,シミュレーションの状況に応じた制御を行う.し たがって,拡張遷移機械モデルを用いてメタシナリオを記述する.状 態遷移モデルを用いることにより,シミュレーションの状況を状態遷移 機械の状態,制御を状態遷移機械の遷移として表現できる. 2章で説明した Q も,拡張状態遷移機械モデルを用いている.そこ で,メタシナリオの言語機能としても,キュー,アクション,ガード 付きコマンドなどを採用する.メタシナリオのキュー/アクションを 4.1 にまとめた.表中において,?で始まるコマンドはキュー,!で始まるコ マンドはアクションを表している. メタシナリオのキュー・アクションを 4.1 にまとめた.4.1 におい 38 Figure 4.1: エージェントのシナリオを切り替えるメタシナリオの例 て,?で始まるコマンドはキューを表し,!で始まるコマンドはアクショ ンを表している. 4.3.2 記述例 メタシナリオを用いて,シナリオの切り替えを実現した例を 6.6 に示す. 図中では,各状態を円で表し,状態遷移を矢印で表した.また,状態 遷移のきっかけとなるキューの観測と,状態遷移に伴うアクションの実 行は, (キューの観測/アクションの実行)という形で状態遷移の矢印に 添えて示した. 6.6 の例では,メタシナリオは昼と夜の二状態を持つ.また,エー ジェントには昼用のシナリオと夜用のシナリオが用意されている.6.6 のメタシナリオでは,昼に夜用のシナリオの実行を観測すると,エー ジェントに夜用のシナリオの実行を停止させ,代わりに昼用のシナリ オを割り当てて実行させる.夜の場合も同様に,エージェントのシナ リオを変更する. 4.1 のキュー・アクションを用いて 6.6 のメタシナリオを記述したも のを,4.2 に示す. 4.4 シナリオ実行制御アーキテクチャ 本章では,メタシナリオの記述に従ってシミュレーションを制御する アーキテクチャを説明する.さらに,このアーキテクチャを用いたシナ 39 (defmetascenario day-and-night (&pattern (agent #f)) (day ; 19:00 になるのを観測する ((?observeEnvironment :name "time" :value "19:00") (go night)) ; nightScenario の実行を観測し, ; エージェントを変数 agent に代入する ((?observeScenario :name ’nightScenario :agent agent) ; agent から nightScenario を解放する (!releaseScenario :name ’nightScenario :agent agent) ; agent に dayScenario を割り当てる (!assignScenario :name ’dayScenario :agent agent) (go day)) (night ; 7:00 になるのを観測する ((?observeEnvironment :name "time" :value "7:00") (go day)) ; dayScenario の実行を観測し, ; エージェントを変数 agent に代入する ((?observeScenario :name ’dayScenario :agent agent) ; agent から dayScenario を解放する (!releaseScenario :name ’dayScenario :agent agent) ; agent に nightScenario を割り当てる (!assignScenario :name ’nightScenario :agent agent) (go night))) Figure 4.2: エージェントのシナリオを切り替えるメタシナリオの記述例 40 Figure 4.3: メタレベル制御のアーキテクチャ リオ実行制御の流れを説明する. 4.4.1 メタレベル制御アーキテクチャ 大規模システムにメタシナリオを導入する場合,いかにオーバーヘッド を軽減するかが問題となる.そこで我々は 6.3 のようなアーキテクチャ を考案した. シナリオ記述 シナリオ記述は,第 2 章で述べたように,エージェント の行動シナリオを記述したものである. 41 シナリオインタプリタ シナリオインタプリタは,シナリオ記述を解釈 実行するもので,エージェントシステム上の特定のエージェント と対応している.シナリオ記述はシナリオインタプリタによって 解釈実行され,シナリオインタプリタは対応するエージェントに 対してセンサ・アクチュエータの起動依頼を行う. メタシナリオ記述 メタシナリオ記述では,実行する命令の変更といっ た,シナリオインタプリタによるシナリオの解釈実行に対する観 測や制御を記述する.また,メタシナリオ記述では,シミュレー ション速度の変更のような,エージェントシステムの環境設定・ 取得を記述することができる. メタシナリオインタプリタ メタシナリオインタプリタは,メタシナリ オ記述の解釈実行を行う.シナリオ記述の解釈実行の観測はシナ リオインタプリタ対して,エージェントのセンサ・アクチュエー タの起動やエージェントシステムの環境設定・取得はエージェン トシステムに対して,それぞれ実行依頼が行われる. エージェントシステム エージェントシステムは,シナリオインタプリ タやメタシナリオインタプリタから受け取った,エージェントシ ステムやエージェントに対する依頼を実行する. メタシナリオ導入によるオーバーヘッドは,主にシナリオインタプ リタの観測/ 制御に起因する.例えば,メタシナリオインタプリタがす べてのシナリオインタプリタの動作を逐一観測し,必要に応じた制御 を行うことで,より柔軟な制御が実現できる.しかし,このような方 式では,メタシナリオインタプリタの処理や,通信のため,オーバー ヘッドが大きくなってしまう.6.3 の方式では,このオーバーヘッドを 軽減するため,シナリオの観測はシナリオインタプリタに依頼し,制 御が必要な場合にのみメタシナリオインタプリタに観測結果を返して いる.この観測結果は,メタシナリオインタプリタが持つ Queue に入 れられ,順番に処理される. また,シミュレーションに対して複数のメタシナリオを適用するこ ともできる.例えば,シナリオを切り替えるためのメタシナリオと時 間管理を行うためのメタシナリオを実行することで,シナリオ切り替 えと時間管理の両方を行うことができる.この場合,メタシナリオイ ンタプリタが複数起動されることになる. 42 4.4.2 メタシナリオ実行の流れ ひとつ例をとりあげて,メタシナリオの実行手順について説明する.こ こで取り上げる例は次のようなものである.メタシナリオはまず,シ ナリオインタプリタのアクション!run の実行を観測する.シナリオイ ンタプリタから観測通知を受け取ると,メタシナリオインタプリタは エージェントに対して!walk の実行を依頼する. この例について,メタシナリオの実行手順を説明する.シーケンス 図で記述すると 6.4 のようになる. 1. メタシナリオインタプリタは,メタシナリオ記述を読み込んで解 釈することで,実行すべき命令を決定する.この例ではまず,シナ リオインタプリタがエージェントに対して!run の実行依頼を送 るのを観測するため,観測依頼を各シナリオインタプリタに送る. 2. 一方でシナリオインタプリタは,エージェントの実行を行うため, シナリオ記述を読み込んで実行すべき命令を決定する. 3. (2)で決定された命令はまず,メタシナリオインタプリタが観 測を依頼している命令,すなわち!run と一致するか判定が行わ れる. 4. !run ではないと判定された場合,エージェントシステム上のエー ジェントに対してセンサ・アクチュエータの起動依頼が送られ, (2) の手順に戻る. 5. !run であると判定された場合,メタシナリオインタプリタに観 測結果として,シナリオの実行状況を送り,その後シナリオの実 行を続行するために(2)の手順に戻る. 6. シナリオインタプリタから観測結果としてシナリオ実行状況受け とったメタシナリオインタプリタは,メタシナリオ記述を読み込 んで次に実行する命令を決定する. 7. 図 6.4 の例では,次に実行する命令は,観測通知を送ったシナリ オインタプリタに対応するエージェントに対する,!walk の実行 であるため,エージェントシステム上のエージェントに対して, !walk の実行依頼を送る. 43 Figure 4.4: シナリオ実行制御のシーケンス図 44 Figure 4.5: シミュレーションの GUI 4.5 参加型シミュレーションへの適用 本章では,メタシナリオを参加型シミュレーションに適用することで, メタシナリオの有効性を示す. 参加型シミュレーションでは,シミュレーション内にアバターが含 まれる.アバターの操作者に意思決定を行う必要が生じた場合,シミュ レーション速度を落とす必要がある.また,意思決定が終了すれば,速 度を元に戻さなければならない.メタシナリオを用いて,シミュレー ションとアバターの状況を観測して,それにもとづいたシミュレーショ ンの制御を行うことにより,この時間管理が実現できる. 4.5.1 シミュレーションの説明 本章で行うシミュレーションの GUI を 4.5 に示す.このシミュレーショ ンでは,格子状の道路があり,道路上をエージェントが通行している. 道路上にはアバターが一体配置されている.このアバターが特定の交 差点(4.5 で円で囲った交差点)に近づいたとき,右折,左折といった 意思決定を行うため,シミュレーション速度を遅くする.そして意思決 定が完了したら,速度を元に戻す. 45 Figure 4.6: アバターのシナリオ 4.5 の右側のウィンドウが,エージェントやアバターが通行する道 路である.4.5 中の左側のウィンドウは,アバターの操作ウィンドウで ある.このウィンドウ上の “LEFT”,“RIGHT”,ボタンをクリックする ことにより,アバターに左折,右折の指示を行うことができる. 4.5.2 アバターのシナリオ アバターのシナリオの状態遷移図を 4.6 に示す.アバターのシナリオで は,前方に車があるときのみ停止し,前方に車が無ければ直進し続け る.一方で,このシナリオでは 4.5 で示した GUI によって,ユーザから の入力を受け付けている.この入力を読み取ることで,交差点で右折, 左折を行う機能を持つ.入力が無ければ,そのまま直進する. 4.6 に示したように,ユーザから「右折」という指示があった場合は turn-right 状態へ, 「左折」という指示があった場合は turn-left 状態へ遷移する.turn-right/turn-left 状態では,交差点の右折/ 左折が可能な地点まで前進を続ける.そして到達したら,右折/左折を 行い,moving 状態へ遷移する. このように,アバターに対してシナリオを与えることで,アバター の操作者は意思決定が必要な部分だけ操作を行い,それ以外の部分,例 えば他のエージェントとの衝突を避けるためにアバターを停止すると いったような部分は,自動化することができる. 46 4.5.3 時間管理を行うメタシナリオ 本シミュレーションでは,アバターが特定の交差点に近づくことで,操 作者に右折するか左折するかという意思決定が発生する.そこで,ア バターが交差点の近くにいて意思決定を行っている間だけシミュレー ションの速度を遅くし,意思決定が完了するとシミュレーションの速度 を元に戻す.この時間管理を行うメタシナリオを 4.7 に示した.状態遷 移図は 4.8 に示す. このメタシナリオは次のように動作する.まず,initial-state でエージェントの配置などを行い,on-road へ遷移する.on-road で はアバターが交差点に近づくのを観測し,観測されると速度を実時間ま で落とし,near-junction に遷移する.near-junction ではアバ ターの状態遷移を観測することで,操作者の意思決定の完了を観測する. 意思決定の完了が観測されると,速度を元に戻す.within-junction はアバターの意思決定が完了しているが,アバターがまだ交差点の近く にいる状態である.意思決定が完了後直ちに on-road へ遷移すると, そのまますぐに near-junction へと遷移してしまうため,この状態 でアバターが交差点から遠ざかるのを待つ. 本章の例のように,操作者の意思決定の完了は,ただちにシミュレー ション環境へ反映されるのではなく,エージェントの内部状態の変化 として現れることが多い.メタレベルアーキテクチャにより,シナリ オの状態遷移といったシナリオ実行状況の観測を行うことで,エージェ ントの内部状態の変化を観測して時間管理を行うことが可能となった. このように,メタレベルでエージェントのシナリオ実行を監視,制御 することにより,エージェントの動作を含んだシミュレーションの状況 の観測にもとづいた,柔軟なシミュレーションの制御が可能となる. 4.6 評価 前章までで,メタシナリオによって大規模シミュレーションに必要な制 御がいかに実現されるかを示した.メタシナリオの目標はシミュレー ションの柔軟な制御であるが,大規模なシステムを想定した場合,ス ケーラビリティも重要な課題となる.前章でシミュレーションに用いた システムは試作品であり,十分なスケーラビリティは得られていない. しかしながら,IBM で開発された Caribbean[Yamamoto 01] 上にシナリ オインタプリタを実装することにより,一台の PC 上において十万程度 47 (defmetascenario meta-traffic () (initial-state (#t (!createCrowd :name ’Cars :population 20) (!createAvatar :name ’myCar) (!assignScenario :name ’car :agent Cars) (!assignScenario :name ’car-avatar :agent myCar) (!startSimulation) (go on-road))) (on-road ; myCar が交差点 (2,1) に近づくのを観測する ((?observeEnvironment :name ’onIntersection :args (list myCar 2 1)) ; シミュレーション速度を遅くする (!setEnvironment :name ’sim-speed :args "slow") (go near-junction))) (near-junction ; myCar が交差点 (2,1) から遠ざかるのを観測する ((?observeEnvironment :name ’outOfIntersection :args (list myCar 2 1)) ; シミュレーション速度を速くする (!setEnvironment :name ’sim-speed :args "fast") (go on-road)) ; myCar が car-avatar シナリオの ; turn-right 状態に遷移するのを観測する ((?observeTransition :scenario ’car-avatar :scene ’turn-right :agent myCar) ; シミュレーション速度を速くする (!setEnvironment :name ’sim-speed :args "fast") (go within-junction)) ; myCar が car-avatar シナリオの ;turn-left 状態に遷移するのを観測する ((?observeTransition :scenario ’car-avatar :scene ’turn-left :agent myCar) ; シミュレーション速度を速くする (!setEnvironment :name ’sim-speed :args "fast") (go within-junction))) (within-junction ; myCar が交差点 (2,1) から遠ざかるのを観測する ((?observeEnvironment :name ’outOfIntersection :args (list myCar 2 1)) (go on-road)))) Figure 4.7: 時間管理のメタシナリオ 48 Figure 4.8: 時間管理を行うメタシナリオの状態遷移図 のシナリオインタプリタを同意に動作させることができるという実験 結果を得ている.したがって,この Caribbean を用いたシステムにメタ レベルアーキテクチャを導入するとき,導入によるオーバーヘッドが 十分小さければ,メタシナリオを用いた大規模システムが実現可能で ある.そこで本章では,試作品を用いて,シナリオ処理系にメタレベ ルアーキテクチャを導入したときのオーバーヘッドを計測する. 4.6.1 実験 第 4 章で説明したように,メタシナリオインタプリタとシナリオイン タプリタの間でやり取りされる主な情報は,シナリオ実行状況の観測 依頼とその結果である.そこで,以下のような実験を行い,オーバー ヘッドを測定した. • エージェント数は 100 体 • 各々のエージェントは,個別のカウンタを持っている • エージェントのシナリオは 4.9 で示す • メタシナリオは 4.9 中の「空のアクション」を観測する 49 Figure 4.9: エージェントのシナリオ Table 4.2: オーバーヘッドの測定結果 N 1 10 100 メタシナリオ無し 30361 34708 35183 メタシナリオ有り 20238(337.30) 34277(57.13) 33937(5.66) • 1 分間測定を行い,全エージェントのカウンタ値の総数を計算する 以上の実験を 3 回繰り返し,平均値をとった. 4.6.2 測定結果 測定結果を 4.2 に示す.4.2 において,N は 4.9 中の N,括弧内の値は一 秒あたりのメタシナリオによる観測回数を示している.4.2 では,メタ シナリオ無しの N=1 の値が N=10,100 に比べて小さくなっている.こ れは,エージェントが 4.9 状態 1 から状態 1 へ遷移する場合と,状態 1, 状態 2,状態 1 の順に遷移する場合の計算量が違うためで,N=1 ではす べて後者の遷移となるために値が小さくなっている.したがってオー バーヘッドの評価は,同じ N の値における,メタシナリオ無しの場合 と有りの場合を比較することで行う. 4.2 が示すように,観測頻度が比較的低い場合(N=10,N=100 の場 合)には,オーバーヘッドはほとんど見られなかった.これは,6.3 の アーキテクチャでは,観測が行われない場合には通信などの処理が発 生しないためである.観測頻度が比較的高い場合(N=1)には,観測結 50 果メッセージの処理のため,若干のオーバーヘッドが生じていること が分かる. このことから,参加型シミュレーションの時間管理のように,観測 する対象が少ないときはオーバーヘッドによる実行速度への影響はな いと考えられる.また,シナリオ切り替えのような例では,切り替え を行う状況になったときに大量の観測結果メッセージが送られるため, 一時的に動作速度が遅くなる.しかし,それ以外の状況ではオーバー ヘッドは微少であるため,シミュレーション全体としての影響は少な い.したがって,本研究で想定するような参加型シミュレーションや交 通シミュレーションに関して,6.3 のアーキテクチャは妥当であると考 えられる. 4.7 まとめ 交通シミュレーションや参加型シミュレーションを大規模環境下で行う には,実行時のシミュレーション状況やエージェントの行動シナリオ を監視し,それにもとづいた制御を行う必要が生じる.このため,我々 が達成した目標は以下の二点である. 1. メタシナリオ記述言語の開発 シミュレーションの状況を拡張状態遷移機械の状態として,制御 を拡張状態遷移機械の遷移として表現することで,シミュレーショ ンの制御を記述するための言語を提案した. 2. メタレベルアーキテクチャの考案 シナリオインタプリタをメタレベルで制御することで,メタシナ リオにもとづいた柔軟な制御を可能とするメタレベルアーキテク チャを考案した. これらに関して,例題により,時間管理やシナリオの切り替えが実 現できることを示した.また,アーキテクチャに関して,我々の想定す る参加型シミュレーションや交通シミュレーションに関して,大規模マ ルチエージェントシステムのスケーラビリティが損なわれないことを 示した. 51 Chapter 5 リハーサル指向テストのための アーキテクチャ 5.1 まえがき 人間をエージェントとしてモデル化して行うマルチエージェントシミュ レーションや,複数のサービスエージェントが互いに協調して人間をサ ポートするシステムなど,マルチエージェントシステムの応用は多岐 にわたる.このようなマルチエージェントシステムの開発にあたって は,利用者の意見を取り入れることが重要となる.マルチエージェン トシミュレーションを行う場合には,模倣される被験者がエージェン トとしてモデル化されるため,被験者の意見を取り入れることで,被 験者をより忠実に再現するモデルが得られる.また,サービスを行う エージェントを開発する場合には,実際の利用者の意見を取り入れる ことで,サービスの質を向上させることができる. マルチエージェントシステムの開発において,利用者を参加させる 参加型デザインを行う手法として,参加型シミュレーションが挙げられ る [Drogoul 03][Guyot 05].参加型シミュレーションとは,マルチエー ジェントシミュレーションの中に,被験者が計算機を通して操作する エージェントを参加させるものである.参加型シミュレーションによっ て得られた被験者の操作ログや被験者へのインタビューから,被験者 を模倣するためのエージェントのモデルを得る手法について研究がな されている [Murakami 05a]. エージェントの修正や拡張についても,利用者の意見を取り入れる 53 ことが好ましい.しかし,修正や拡張が必要になるたびにエージェント の作成プロセスを繰り返すのは効率的ではない.そこで,エージェン トの修正や拡張を,利用者自身が行うことができれば,利用者の意見 を効果的に取り入れたエージェントの修正や拡張が可能となる.また, サービスの利用者自身がサービスを修正したり拡張したりすることに よって,利用者に適したサービスが,システム開発者を介することな く実現できる. 我々の目的は,プログラミング言語やエージェント技術などエージェ ント開発に必要な知識を持たない一般の利用者に,エージェントの修 正や拡張を行わせることのできる技術を開発することである.この目 的のため,本稿では,リハーサル指向テストを提案する.リハーサル 指向テストとは,エージェントと人間とがエージェントの動作に関す る対話を行うことによって,舞台のリハーサルで監督が役者に指示を 出すように,エージェントを修正/拡張するものである. マルチエージェントシステムにおけるリハーサル指向テストを実現 するために,本研究で我々は以下の問題に取り組んだ. リハーサル指向テストに必要な機能の整理. マルチエージェントシス テムにおけるリハーサル指向テストがどのようなものかを定義す る.さらに,その中でどのような機能を実現する必要があるのか を整理する. 対話プロトコルの設計. リハーサル指向テストは,人間とエージェン トとの対話によって行われる.そこで,定義したリハーサル指向 テストの機能を実現するための対話プロトコルを設計する. リハーサル指向テストのためのアーキテクチャ リハーサル指向テスト では,エージェントシナリオに対して人間が直接変更を加えるので はなく,対話に基づいてエージェントが修正を行う.そこで,エー ジェントに自身のシナリオを修正させるためのアーキテクチャが 必要となる. 以下,第 5.2 節でリハーサル指向テストについて詳細に説明し,第 5.3 節でリハーサル指向テストにおけるユーザとエージェントとの間の 対話プロトコルについて説明する.次に,第 5.4 節でリハーサル指向テ ストのためのアーキテクチャについて説明する.第 5.5 節ではリハーサ ル指向テストの実行例を示し,第 5.6 節ではリハーサル指向テストの応 54 用について延べる.第 5.7 節では他のエージェント開発手法との比較を 議論する. 5.2 リハーサル指向テスト リハーサル指向テストを導入する目的は,参加型シミュレーションに基 づいて設計されたエージェントの振る舞いを修正することにある.参加 型シミュレーションは,コンピュータゲームのように,マルチエージェ ントシミュレーションにユーザの操作するキャラクター(アバターと呼 ばれる)を参加させて行う.ある被験者の振る舞いを模倣するエージェ ントは,その被験者の操作ログおよびその被験者へのインタビューを 基に設計される.この場合,リハーサル指向テストを利用してエージェ ントの振る舞いを修正するのは,参加型シミュレーションの被験者とな る.被験者は,自身を模倣するエージェントの振る舞いを観察し,エー ジェントが想定と異なる振る舞いを見せた場合に,振る舞いの修正を 行う. 本研究で提案するリハーサル指向テストとは,人間を監督,エージェ ントを役者に見立て,リハーサルを行うようにエージェントの動作の 修正を行うものである.リハーサル指向テストにより,計算機の非専 門家でも,容易にエージェントの動作を修正することが可能になる. 図 5.1 に,リハーサル指向テストの実装例のインタフェースを示す. マルチエージェントシステムを用いたシミュレーションにおいてリハー サル指向テストを行う場合,人間がエージェントの振舞いを監視でき るように,シミュレーションを可視化する.シミュレーションを可視化 して,エージェントや環境の状態を観測できるプラットフォームとし て,FreeWalk/Q[Nakanishi 04b] が挙げられる.人間は可視化されたシ ミュレーションを監視し,問題点を発見する.問題点を発見すると,該 当するエージェントに話しかけ,動作を停止させて修正のための対話 を開始する.図 5.1 の例では,エージェントからは文字による発言と修 正に必要と考えられる情報を表示したウィンドウを開き,人間は発言 内容を入力することでエージェントに指示を送っている.この例では, 文字の表示と入力で対話を行っているが,音声認識や音声合成を用い て音声による対話が実現できれば,より容易にリハーサル指向テスト が行える.指示が終わると,エージェントは対話ウィンドウを閉じ,動 作を再開する. 55 Figure 5.1: リハーサル指向テストのインタフェース 例えば,エージェントが障害物のために前に進めなくなってしまっ たため,そのエージェントに振り返らせたいという場面を想定する.こ の場合,利用者とエージェントは,エージェントのシナリオを表示した ウィンドウを通して対話を行う.利用者がシナリオの修正を終えると, エージェントはウィンドウを閉じ,修正開始時の状態からシナリオの 実行を再開する.これにより,エージェントはその場で膠着状態を解消 することができる. 5.2.1 シナリオ記述 本研究では,エージェントの外的な振舞い(他のエージェントや環境と のインタラクション)をシナリオとして記述し,エージェントの内部モ デルと分離させる手法 [Ishida 02a] をとる. エージェントの外的な振舞いであるシナリオと,エージェントの内 部モデルを分離させることにより,リハーサル指向テストで修正の対 象となる部分を明確化することができる.エージェント内部モデルは, シナリオに記述された振舞いをシミュレーション環境上で実現するた めに,計算機の専門家によって作成される.一方,シナリオは,エー ジェントの外的な振舞いのみを抽出したものであるので,計算機の非 専門家でも理解できる.このシナリオを修正することで,定義された 56 Figure 5.2: シナリオと内部モデルの分離 内部モデルの上で,エージェントが利用者にとって適切な動作を行う ようにする. 図 5.2 は,シナリオとエージェントの内部モデルを分離させた構造 を示したものである.図 5.2 に示すように,エージェントの外的な振舞 いを記述したシナリオは,シナリオインタプリタに入力され,エージェ ント内部モデルに振舞いを依頼する.エージェント内部モデルは,依頼 された振舞いを実行するため,適切なセンサー/アクチュエータを実行 する.本研究で用いたシナリオ記述言語 Q は,上記のようなアーキテ クチャを用いて,計算機の非専門家にエージェントの振舞いを記述させ るための言語である.Q では,エージェントのシナリオを拡張状態遷移 モデルで記述する.Q の詳細な言語仕様については,文献 [Ishida 07b] に記述されている. 5.2.2 リハーサル指向テストのプロセス リハーサル指向テストの実現のため,演劇のリハーサルにおける,次 のふたつの特徴に注目した.ひとつは,演劇の実行中における修正で ある.リハーサルでは,本番と同様の形式で演劇を行い,それを監督 が観察する.そして役者の演技に問題点を発見した場合,その場で修 正し,確認を行う.もうひとつは,コンテキストの共有である.監督と 役者は,修正の指示を行っている時点において,舞台の状況,他の役者 の状況,台本の内容と進行状況などの情報を共有している.以上のよ うな特徴をもとに,マルチエージェンシミュレーションにおけるリハー サル指向テストのプロセスについて述べる. 57 リハーサル指向テストは,大きく分けてふたつのプロセスから成る. ひとつはマルチエージェントシミュレーションを実行して問題点を発 見するプロセスで,もうひとつは発見した問題点を修正するプロセス である. マルチエージェントシミュレーションの実行と問題点の発見.マル チエージェントシミュレーションを実行する.それぞれのエージェント は,それぞれに与えられたシナリオに従って動作する.利用者はこの シミュレーションを監視し,問題のある振舞いをするエージェントが いないかどうか確認する.もし問題点を発見した場合,シミュレーショ ンを停止して問題点の修正へと移行する. 発見した問題点の修正.エージェントの振舞いに問題点を発見した 場合,シミュレーションを停止して修正を行う.利用者は,エージェン トに対してどのように振る舞えばよいかを指示する.エージェントは, 利用者からの指示とコンテキストから,指示を満足するようシナリオ の状態遷移機械に修正を加える.修正が完了すると,マルチエージェン トシミュレーションを再開する.このとき,修正を指示されたエージェ ントは,修正後のシナリオに従って動作する. このうち,問題点の発見のプロセスは,主にマルチエージェントシ ステムの可視化機能により実現される.したがって,本稿ではこれ以 降,エージェントシナリオの問題点を修正する方法について詳しく説 明する. 5.2.3 状態遷移モデルを用いた修正機能の定義 本研究では,シナリオを記述するモデルとして,状態遷移モデルを用 いる.状態遷移モデルは記述が簡易かつ,図で表現することで視覚的 に理解が可能であるので,計算機の非専門家であっても比較的容易に その動作を理解できる. 利用者がエージェントのインタラクションを設計する際,状態遷移 モデルに基づいたシナリオを記述し,リハーサル指向テストによって デバッグを行う.したがって,リハーサル指向テストの修正機能には, 状態遷移機械の修正を行うために十分な機能が含まれて居なければな らない. 状態遷移モデルは一般的に,状態の集合 Q,イベントの集合 C,ア クションの集合 A,状態遷移関数の集合 ∆,初期状態 q0 ∈ Q を用いて hQ,C, A, ∆, q0 i で定義される.ここでは,システム動作中のある時刻 t に 58 おけるシナリオの状態 st ∈ S を,時刻 t で実行中の遷移関数 δt ,時刻 t での状態 qt を用いて以下のように表す. st = hQ,C, A, ∆, q0 , δt , qt i (5.1) このように定義すると,シナリオの修正機能は st の修正として定義 できる.すなわち,st の各要素を修正の対象として考えることができ る.しかしながら,すべての要素が修正の対象となるわけではない.C および A はそれぞれエージェントが観測するイベント,エージェントが 環境に対して起こす作用であるが,これらはマルチエージェントシス テムの機能として実装されるものである.リハーサル指向テストでは, 与えられたシステムのもとで,エージェントを適切に動作させること を目的とする.したがって,C および A については,修正の対象としな い.また,q0 は初期状態であり,システム動作中に初期状態を変更す ることはないので,これも修正の対象外とする.さらに,シナリオ実 行中の状態である δt や qt を変更することも考えられない.リハーサル 指向テストでは,これらを除いた,Q および ∆ を修正の対象とする.そ れぞれについて必要な修正操作は,追加,変更,削除である.状態に ついては,状態の変更はその状態に到る,あるいは,その状態からの 状態遷移を変更することであるので,追加,削除についてのみ考える. 以上のことから,必要な修正機能は以下の 5 つである. • 状態の追加:追加する状態を指示する. • 状態の削除:削除する状態を指示する. • 状態遷移の追加:状態遷移の各要素 (遷移前の状態,イベント,ア クション,遷移後の状態) を指定して状態遷移を追加する. • 状態遷移の変更:変更する状態遷移と,変更後の状態遷移の各要 素を指定して,状態遷移を変更する. • 状態遷移の削除:削除する状態遷移を指示する. リハーサル指向テストでは,これらの修正機能に必要な情報を人間 とエージェントの対話により収集する. 59 5.3 対話プロトコル リハーサル指向テストでは,シミュレーションのある時点におけるシ ナリオとシミュレーション環境の状態を用いて,利用者とエージェント との対話によりシナリオを修正する.しかしながら,完全に自由な対 話を許せば,そこから利用者の修正意図を判断するのはエージェント にとって非常に困難となる.そこで,対話に制約をかけることで,利 用者に決められた形式での発話を要求することにより,その意図を判 断しやすくする.また,一般のシステム利用者や応用領域の専門家と いった,計算機の非専門家にとって,どのような手順でシナリオを修正 すればよいかは明確には分からない.制約を利用者に示すことにより, シナリオを修正するためにどのような情報をどのような手順で提供す れば良いか,利用者に理解させることができる.本節では,対話に制 約をかけるために設計した対話プロトコルについて説明する. 利用者とエージェントとの対話を簡潔なものとするため,シミュレー ションのコンテキストを用いる.具体的には,時刻 t に修正を開始した とすると,エージェントシナリオ中の qt ∈ Q および δt ∈ ∆ がコンテキ ストとして利用される.前述の通り,リハーサル指向テストで修正の 対象となるのは,状態遷移機械モデルで記述されたエージェントシナ リオの状態と状態遷移である.利用者は,状態を削除する場合には削 除する状態を,状態遷移を追加する場合には遷移元と遷移先の状態を, 状態遷移の修正する場合には遷移元の状態,遷移先の状態,および遷移 関数を,状態遷移の削除する場合には削除する遷移関数を,それぞれ 指定する必要がある.これらの修正に関しては,qt ,δt を用いることに より,利用者とエージェントとの間の対話を簡略化することができる. リハーサル指向テストの中で修正中の状態を qc ,修正中の状態遷移 を δt とする.修正開始時刻 t においては,qc に対しては qt ,δc に対し ては δt がそれぞれ割り当てられる.状態の削除については,削除対象 である Q に qc を用いる.状態遷移の追加については,遷移元の状態 Q に qc を用いる.状態遷移の修正および削除では,修正や削除の対象と なる状態遷移 ∆ に δc を用いる. 以上のようなコンテキストを用いて,対話プロトコルを設計する. シナリオの修正を開始した瞬間において,エージェントのシナリオ実 行状態は,状態遷移関数のなかのアクションを実行している状態か,あ るいは,ある状態でイベントの発生を待機している状態のいずれかで ある.それぞれの状況から開始して,どのような修正が考えられるか 60 Figure 5.3: 修正開始時の対話プロトコル 見ていく. 修正開始時における対話プロトコルを図 5.3 に示す.前節で述べた ように,修正を開始した時点におけるエージェントのシナリオの実行状 態は,状態遷移の中のアクションを実行しているか,あるいは,ある状 態でイベントを待機している状態である.修正開始時の対話プロトコ ルは,これらふたつのシナリオ実行状態のうちどちらの状態にあるか によって,ふたつに分岐する.もし,エージェントがアクションを実行 中であれば,そのアクションを含む状態遷移関数についての修正を行 う.このとき実行中の状態遷移が δc となる.ここで,状態遷移の修正 を行ったあと,あるいは,状態遷移の修正が必要ない場合には,状態の 修正へと移行することができる.このとき,修正の対象となる状態 qc としては,状態遷移 δc の遷移前の状態が用いられる.エージェントが アクションを実行中で無い場合,すなわち,シナリオのある状態でイベ ントを待機している場合は,その状態を qc として状態の修正に関する 対話を開始する.ここで,状態の追加や削除,状態遷移の追加を行う. 状態遷移の変更や削除を行う場合には,変更や削除となる状態遷移を 指定し,それを δc として状態遷移の修正についての対話へと移行する. 5.3.1 状態遷移実行中における対話プロトコル 図 5.4 に,状態遷移実行中における対話プロトコルを示す.ここでは, 状態遷移の修正と削除が行われる.状態遷移関数の修正については,ま ず,観測するイベント,実行するアクション,遷移先の状態のどれを修 61 Figure 5.4: 状態遷移の修正と削除を行うための対話プロトコル 正するかを選択する.そして,それぞれについてどのように修正する かを指示する.さらに修正する必要がある場合には,同様の対話を繰 り返す.状態遷移関数の削除については,削除の指示を出すことで,修 正の対象となっている状態遷移関数 δc の削除が行われる.また,状態 遷移の追加などの状態の修正を行う場合は,状態の修正を行うことを 伝える.修正の対象となる状態 qc には,状態遷移関数 δc の遷移前の状 態が用いられる. 5.3.2 イベント待機中における対話プロトコル 図 5.5 に,イベント待機中における対話プロトコルを示す.ここでは, 状態の追加と削除,状態遷移の追加が行われる.状態の追加について は,状態の追加を指示することで,新しい状態を作成する.状態遷移 を追加を指示すると,まず,追加される状態遷移の遷移前の状態とし ては,qc が選択される.その後,状態遷移の追加に必要な情報をひと つずつたずねる.図 5.5 の対話プロトコルでは,状態遷移の追加を指示 するときに,その状態遷移の発火条件となるイベントを最初に指示す る.続いて,その状態遷移に伴って実行されるアクションを指示する. 最後に,遷移後の状態を指定する. また,qc を起点とする状態遷移の修正や削除を行う場合には,修正 62 Figure 5.5: 状態の追加と削除,状態遷移の追加を行うための対話プロ トコル や削除の対象となる状態遷移を指定して,状態遷移の修正に関する対 話に移行する.利用者が qc から遷移する状態遷移を修正,あるいは削 除しようとする場合,利用者はまずどの状態遷移を修正,削除するか を指定し,その後図 5.4 で示される,状態遷移を修正するための対話に 移行する. 5.4 メタレイヤを用いたアーキテクチャ 前節までで,人間とエージェントとの対話から,シナリオをどのように 修正するかという人間の指示を得る方法について述べた.続いて,得ら れた修正の指示を,エージェントが実行中のシナリオに反映させる必 要がある.本研究では,対話により得られた修正の指示を修正コマン ドに変更し,それをシナリオに適用することでシナリオの修正を行う. 本節では,対話から修正コマンドを生成し,シナリオに適用するた めのアーキテクチャを示すとともに,シナリオの記述にシナリオ記述 言語 Q[Ishida 02a] を用いた場合のシナリオ修正コマンドを示す. 5.4.1 アーキテクチャ リハーサル指向テストでは,エージェントはふたつの状態を持つ.すな わち,エージェントシステムが動作していてエージェントはシナリオ 63 からの動作依頼に従って動作している状態と,人間とエージェントが シナリオの修正に関する対話を行っている状態である.そこで本研究 では,エージェントをふたつのレイヤ,すなわち,Execution Layer と Meta Layer に分ける.Execution Layer では,シナリオ記述に従ってエー ジェントを制御し,Meta Layer では,人間と対話を行ってシナリオの 修正を行う.図 6.3 に設計したアーキテクチャを示す. 以下では,図 6.3 の各要素について,詳細を述べる.まずは,Execution Layer について説明する.Execution Layer は,以下の3つの要素 からなる. Scenario エージェントと外部とのインタラクションを記述したもの.リ ハーサル指向テストでは,このシナリオを修正する. Scenario interpreter シナリオ記述を読み込んで解釈し,Sensor & Actuator の起動依頼を送る. Sensor & actuator 環境の観測や環境に対する作用といった機能を実行 する. 続いて,Meta Layer について説明する.Meta Layer は,以下の5つ の要素からなる. Interaction protocol エージェントと人間との対話に関する制約を記述 したもの.この制約に則って人間に対する発話を生成し,人間か らの指示を解析する. Dialog analyzer Interaction Protocol の制約の下で,対話に必要なシナリ オの情報を Scenario analyzer から受け取り,人間に対する質問を 生成する.また,人間からの指示を受け取り,Interaction Protocol と照合して Scenario analyzer に指示内容を渡す. Scenario log シナリオの実行履歴を保存する.この実行履歴は,シナ リオの情報として必要に応じて Scenario analyzer によって用いら れる. Scenario analyzer 状態遷移関数や実行中の状態など,人間との対話に 必要なシナリオの情報を Dialog analyzer に送る.また,Dialog analyzer から受け取ったシナリオ修正指示とシナリオの情報から,シ ナリオ修正コマンドを生成して Scenario modifier に渡す. 64 Figure 5.6: メタレイヤを用いたアーキテクチャ 65 Scenario modifier シナリオ修正コマンドを読み込んで,シナリオの修 正を行う. 図 6.3 に示したアーキテクチャにおけるメタレイヤの制御の下,対 話によるエージェントのシナリオの修正は,図 5.7 のように実行される. リハーサル指向テストにおける修正は,人間がエージェントに話しか けることによって開始される.話しかけられたエージェントは,一旦 Execution Layer の動作を停止し,Meta Layer で人間との対話を開始す る.対話の開始時に,エージェントは人間に対してシナリオとシナリ オの実行状況を提示する.それを基に,人間はエージェントに対して 修正の指示を行う.図 5.7 は,人間がエージェントに対して行う最初の 指示から,シナリオが修正されるまでをシーケンス図で示したもので ある.以下,図 5.7 に沿って詳しく説明する. 1. Dialog analyzer が人間からの指示を受け取る.この指示は,テキ スト入力や音声認識の結果として得られる. 2. Dialog analyzer は指示内容を解析し,対話プロトコルにしたがっ ているか,対話プロトコルにおけるどの指示に該当するかを判断 する.指示内容は Scenario analyzer に渡される. 3. Scenario analyzer は,Dialog analyzer から渡された指示内容と,シ ナリオの情報を用いて,シナリオ修正コマンドを生成する. 4. Scenario analyzer は,人間に提示する必要のあるシナリオの情報, 例えば,修正する状態を変更したときにはその状態からの状態遷 移関数などを Dialog analyzer に渡す. 5. Dialog analyzer は,次の質問内容を,対話プロトコルを用いて生 成する.このとき,Scenario analyzer から渡されたシナリオの情 報があれば,それも人間に提示する. 6. テキストや画像,音声合成などのインタフェースを用いて,人間 に質問や情報の提示を行う. 7. 以上を何度か繰り返した後,修正に必要な対話が終了したと人間 が判断すると,終了のメッセージが Dialog analyzer に送られる. 66 Figure 5.7: シナリオ修正時のシーケンス 67 8. 終了メッセージを受け取った Dialog analyzer は,指示の終了を Scenario analyzer に伝える. 9. Scenario analyzer は,終了コマンドを生成する. 10. Scenario analyzer は,これまでのプロセスで生成されたシナリオ 修正コマンドの列を Scenario modifier に送る. 11. Scenario modifier は,Scenario analyzer から送られたシナリオ修 正コマンドを,Scenario interpreter のもつシナリオに対して実行 する. 以上のようなプロセスによって,リハーサル指向テストにおける修 正が行われる.修正を終了すると,エージェントは修正されたシナリ オに従って動作を再開する.人間は引き続きエージェントの動作を監 視し,問題点を発見した場合,同様のプロセスを再度行う.このような 問題点の発見と修正を繰り返すことにより,エージェントのシナリオを 洗練していく. 5.5 例題 本節では,避難シミュレーションを例として,リハーサル指向テストの 実行例を示す.シミュレーションの設定は以下の通り.部屋の中に十数 のエージェントがいる.避難開始の合図とともに,各エージェントは避 難を開始する.すべてのエージェントが出口から部屋の外へ脱出した らシミュレーションは終了する.利用者は,このシミュレーションを観 察して,すべてのエージェントが脱出できるかどうか確認する. 他のエージェントが出口へと向かっている中で,ある一体のエージェ ントが動かないでいる状況を仮定する.まず,利用者は図 5.8 のような 可視化されたシミュレーションを観察して,何が起こっているのかを理 解する.ここでは,エージェントは壁のある方向を向いて動かなくなっ ており,利用者はそのことを発見する.そこで利用者は,エージェント が何をしようとしているか理解するため,エージェントに何をやって いるのか尋ねる.するとエージェントは返答として実行中のシナリオ を表示し, 「現在このシナリオの状態 searching で待機しています. 」 と発言する.実行中のシナリオは図 5.9 に示した.この場合,シナリオ は現在状態 searching を実行中であり,エージェントは他のエージェ 68 Figure 5.8: 避難シミュレーションのスクリーンショット ントあるいは出口を探していることが分かる.こういったシナリオの 情報およびエージェントが壁の方向を向いているという可視化された 情報から,エージェントが他のエージェントや出口を見つけることが できないために動くことができないということを,利用者は気づくこ とができる. 次に,利用者は上記で発見した問題の修正を行う.この問題を解決 するには,状態 searching において何も見つけることができない場 Figure 5.9: 修正前のシナリオ 69 Figure 5.10: 修正後のシナリオ 合に,エージェントに周囲を見回させると良い.そこで,利用者とエー ジェントは以下のような対話によりシナリオを修正する.対話開始時 には,対話プロトコルは図 5.5 中の Modifying a state にある.利 用者はエージェントが何も見つけられない場合の行動を追加するため, 「数秒間何も見かけなかった場合のアクションを追加してください. 」と 発言する.すると,エージェントは「数秒間何も見かけなかった場合, どのような行動をとれば良いですか. 」と利用者に尋ね,対話プロトコ ルを状態 Adding an action へと遷移させる.続いて利用者は「振 り返ってください. 」と発言し,それを受け取ったエージェントは対話 プロトコルにしたがって「遷移先の状態を指示してください. 」と返す. 利用者は,エージェントに振り返りながら他のエージェントや出口を探 させるため, 「状態 searching に遷移してください. 」と発言する.こ のようにして修正されたシナリオを図 5.10 に示す.新しい状態遷移が 状態 searching に追加されている. 本節の例題で示したように,利用者は可視化されたシミュレーショ ンとエージェントからのシナリオの情報を利用して,問題点の発見と 修正を行う.修正の際には,対話プロトコルにしたがった対話により, エージェントはシナリオを修正するために必要な情報を利用者から聞 き出すことができる. 70 5.6 応用例 本稿では,参加型シミュレーションによって作成されたエージェントの シナリオを修正する目的で,リハーサル指向テストを提案した.しか し,我々は,リハーサル指向テストは他にも様々な目的に用いることが できると考えている. リハーサル指向テストを,ロボットの制御に応用することも考えら れる.ロボットをエージェントシステムとして動作させ,スピーカやマ イクなど,人間と対話を行うために必要なインタフェースを取り付け る.さらに,本稿で述べるような機能を加えることで,ロボットに対し てリハーサル指向テストを行うことが可能となる.これにより,例え ば, 「『新聞を取って来て』と言われたら,新聞受けに行って・ ・ ・」とい う指示を行うことで,ロボットの動作を拡張することができる.さら に,新聞受けに新聞が無かった場合,ロボットはどう振る舞えばよいか 分からなくなってしまう.そこで, 「新聞受けに無い場合は・ ・ ・」という ように,ロボットの動作を修正することも可能となる. また,リハーサル指向テストでは,シミュレーション内で動作中の エージェントに話しかけることで,そのときのシナリオの状態を含む, シミュレーションの状況を知ることができる.このことを利用して,シ ミュレーションの中で興味深い事象が発生した場合に,そのときの状 況を分析するためのツールとして用いることが考えられる.このため には,ひとつのエージェントだけでなく,複数のエージェントを対象と してリハーサルを行う必要がある.また,それぞれのエージェントの シナリオ実行状況を個別に提示するだけでなく,他のエージェントやシ ミュレーション環境とのインタラクションを含むシナリオの実行履歴 を示す必要もある. 5.7 議論 リハーサル指向テストは,マルチエージェントシステムの開発におけ るプロセスのひとつである.マルチエージェントシステムの開発ツー ルや方法論については,これまで様々な研究がなされている. 例えば,Gaia[Wooldridge 00] では,エージェント指向のシステムの 分析,設計手法を提案している.Gaia は,多様なプログラミング言語 やアーキテクチャの上で動作するエージェントを用いた,大規模なマ 71 ルチエージェントシステムの開発を目的としており,システム開発者 が高いレベルでエージェントの役割を記述するためのモデルを提案し ている.その開発プロセスは,システムの分析,設計,実装と,段階的 に進行する.一方,リハーサル指向テストが対象としているのは,シ ミュレーションで人間を模倣した振る舞いをするエージェントである. このようなエージェントの開発においては,エージェントの振る舞いを 事前に規定することが不可能であるため,仕様を記述することができ ない.リハーサル指向テストは,このような状況を想定しているため, モデルの動作を確認しながら漸次的に完成させていくというアプロー チをとっている.つまり,可視化された環境を用いて動作の確認を行 い,問題があれば即時修正を行うという手法により,モデルの変更に かかるコストを低減している. また,マルチエージェントシステムを開発するためのツールキット として,ZEUS[Nwana 99] が開発されている.ZEUS では,エージェン トの動作を確認,修正するために,GUI を持ったツール群を用意して いる.これにより,エージェント集合の形成する組織とその振る舞いを 観察したり,メッセージ送受信などエージェント内部の処理を追跡した り,エージェントの配置やモデルを修正したりといったことが視覚的に 可能となっている.こういったツール群が,エージェントシステム開発 者の,システム全体の動作に対する理解を支援している.一方,リハー サル指向テストで修正を行うのは,参加型シミュレーションの被験者 やサービスエージェントの利用者といった,エージェントが模倣の対象 とする人物である.これら修正の実施者は計算機の専門家であるとは 限らない.このような利用者にとって,複雑なシステム全体の動作を 理解するのは困難である.また,一人の利用者が同時に修正するのは, その利用者を模倣して動作する一体のエージェントのみである.そこ で,リハーサル指向テストでは,一体のエージェントの動作のみに注 目し,さらにモデルの記述には振る舞いの理解が容易であるシナリオ 記述言語 Q を用いた.第2節で述べたように,シナリオとエージェン ト内部モデルが分離されており,内部モデルの実装は計算機の専門家 によって行われるため,利用者は状態遷移機械モデルで記述したシナ リオのみに集中することができる.加えて,利用者とエージェントと の対話形式で修正を行うことで,エージェント側から利用者に指示を 仰ぎ,必要な情報を集めるというインタフェースを採用した. このようにリハーサル指向テストでは,仕様をあらかじめ定めるこ とのできないエージェントの振る舞いを,計算機の非専門家である利 72 用者が修正することを想定しており,一般的なソフトウェア開発とは性 質が異なる.このため,エージェントの動作確認と修正を同時に行うこ とのできる技術を導入し,さらに,インタフェースやモデルについて は,計算機の非専門家であっても容易に修正を行えるものを採用した. 73 Chapter 6 ネットワークゲームに基づく参加 型シミュレーションのためのアー キテクチャ 6.1 はじめに 交通や避難など,人間の行動により生み出される社会現象の再現,予 測の目的で,マルチエージェントシミュレーションが注目されている. マルチエージェントシミュレーションでは,ひとりの人間を一体のソフ トウェアエージェントとして表現し,社会の中での個々の行動を再現す ることにより,創発される社会現象を観察するものである. マルチエージェントシミュレーションを実施するためには,個々の人 間の環境とのインタラクションや他者とのコミュニケーションをモデル 化する必要がある.モデル化を行う手法として,参加型シミュレーショ ンが研究されている [Gilbert 02, Torii 06, Colella 98, Murakami 05b].参 加型シミュレーションでは,マルチエージェントシミュレーションに被 験者の操作するキャラクターを参加させ,その行動ログや被験者への インタビューから行動モデルを得る.そして,得られたモデルをシミュ レーションに反映させる.このプロセスを繰り返すことで,エージェン トの行動モデルを改善していく. 参加型シミュレーションを行うためのプラットフォームには,様々 な機能が要求される.まず,マルチエージェントシミュレーションを行 うためには,それぞれのエージェントの振る舞い,他者とのコミュニ 75 ケーション,環境とのインタラクション,および,環境の変化を再現す ることが求められる.さらに,被験者を参加させるために,シミュレー ション中のキャラクターを人間が操作し,他者や環境とのインタラク ションを行う機能が必要である.また,被験者に対してシミュレーショ ンの状態を逐一伝えるための出力機能も必要となる.これらの要件を 満たしたプラットフォームの開発は容易ではなく,したがって参加型シ ミュレーションの実施には大きなコストが伴う. 我々は,参加型シミュレーションと類似するアプリケーションとし て,ネットワークゲームに注目した.ネットワークゲームでは,ネット ワークで共有された世界に多くの人間が参加することができ,その中 で,テキストチャットやボイスチャット,ジェスチャーなどにより多様 なインタラクションを行うことができる.これらを利用することで,非 言語コミュニケーションを含むモデル化が実現できる.また,多くの場 合,ネットワークゲームは三次元グラフィックスによる可視化機能を備 えており,参加者にシミュレーションの状況を視覚的に伝えることがで きる. 本章では,ネットワークゲームを利用した参加型シミュレーション プラットフォームについて,その設計を示す.この設計において達成す べき課題として,以下のふたつが挙げられる. エージェントの振る舞いの外部定義. 参加型シミュレーションを実施 する場合,エージェントの振る舞いは実施者により定義され,変 更される.そのため,エージェントの振る舞いをプラットフォー ムの外部で定義し,プラットフォームに手を加えることなく,か つ,人間による操作を十分に再現するように変更できる仕組みが 必要である. 汎用的なプラットフォームの実現. 本研究では,社会シミュレーショ ンに関して特定の応用を想定せず,様々な領域に関して,ネット ワークゲームを用いた参加型シミュレーションの実施手法の確立 を目指す.したがって,シミュレーション環境やエージェントの 行動を,応用に応じて変更できるような拡張性が求められる. これらの課題を達成するため,本研究では,ネットワークゲームと シナリオ処理系の結合を行う.シナリオ処理系は,エージェントの振る 舞いを記述したシナリオを解釈し,エージェントに対して振る舞いを 76 依頼するものである.両者を結合することにより,ネットワークゲーム 上でマルチエージェントシミュレーションが可能となる. 以下,本章を次のように構成する.まず第 6.2 節では,研究の背景, つまり,関連研究と基盤技術について説明する.第 6.3 節では,ネット ワークゲームとシナリオ処理系の結合についての詳細な実装を述べ,第 6.4 節では参加型シミュレーションのための制御機能としてメタレベル 制御について説明する.第 6.5 節で開発したプラットフォームによる参 加型モデリングの例を示し,第 6.6 節では実現可能な参加型シミュレー ションについて例示する. 6.2 背景 6.2.1 関連研究 参加型シミュレーションに用いられるプラットフォームの既存研究とし て,FreeWalk と CORMAS を挙げて説明する. FreeWalk は,3 次元仮想空間内に,人間の操作するキャラクターと エージェントが共存し,社会的なインタラクションを行うことができ るプラットフォームである [Nakanishi 04a].参加者は GUI を通して仮 想空間内のキャラクターを操作することができる.FreeWalk の第一の 目的は,人間とエージェントとの間のコミュニケーションや協調を実現 することであった.そのため,FreeWalk では人間とエージェントとの 間の社会的なインタラクションの機能は充実しているものの,環境に 関するシミュレーションは詳細に行っていない.より現実世界に近い 経験を参加者にさせるためには,環境との相互作用のあるシミュレー ションを実現する必要がある. CORMAS[Bousquet 98] は,自然資源を利用する個人,あるいは集 団間の協調過程のシミュレーションを目的としたシステムである.自然 環境の変動と,自然環境を観察して動作するエージェントを定義でき る.CORMAS では,セルラオートマトンにより環境のシミュレーショ ンを行うことにより,人間と自然環境の間の相互作用を取り入れるこ とが可能である.しかし,環境の変動の様子は 2 次元の格子状の地図や グラフに抽象化されて表示されるため,人間のユーザが実世界と同じ 感覚で行動する事が難しい. 77 Figure 6.1: A Screenshot of gumonji 6.2.2 シナリオ記述言語 Q 本研究では,ネットワークゲームをシナリオ処理系により拡張する.シ ナリオ処理系として代表的なものに,Q がある.Q はマルチエージェン トシステムのためのシナリオ記述言語として開発され,エージェント と他のエージェントを含む外界とのインタラクションを定義すること ができる [Ishida 02b] ため,複雑な社会的インタラクションを記述する のに適している [Murakami 03, Nakanishi 03]. 6.2.3 ネットワークゲーム gumonji ネットワークゲームの例として,gumonji1 を挙げる.本章においては, 第5節の参加型シミュレーション実施例に gumonji を用いた.図 6.1 に gumonji の仮想空間のスクリーンショットを示す.gumonji では, 仮想空間内に動物や植物が存在し,物理法則にしたがって大気や水が 循環している.利用者は,仮想空間内のキャラクター(アバター)を操 作することでシミュレーションに参加し,アバターのアクション機能に よりシミュレーション内で活動する.他のアバターとの間では,チャッ 1 “gumonji” はコミュニティエンジン株式会社の製品です. 78 トやジェスチャーなどによる多様なインタラクションができる事に加え て,生物や地形などの環境に働きかけることも可能である.アバター が環境に与えた影響は,時間の経過と共に広範囲に伝播し,その変化 の様子は 3 次元仮想空間上に表示される. gumonji では,すべての利用者が自身の計算機にシミュレーショ ン環境を持っており,P2P ネットワークを用いることで,利用者は複数 のシミュレーション環境を自由に移動することができる. gumonji はアバターが互いにコミュニケーションをとるネットワー クゲームであるため,自律エージェントを動作させる機能は持ってい ない.参加型シミュレーションを実現するためには,エージェントに対 して様々なインタラクションを自律的に行わせるための機能が必要で ある. 6.3 ネットワークゲームとシナリオ処理系の結合 6.3.1 ネットワークゲームの利用 参加型シミュレーションの基盤としてネットワークゲームを用いるこ とには,次のような利点がある.従来の参加型シミュレーションでは, 少数の被験者を一ヶ所に集め,領域の専門家によるインタビューを交 えてシミュレーションを進行させることにより意志決定過程の分析を 行っていた [Torii 06].この方法は,少数のステイクホルダーの意思決 定を詳細に分析する場合に有効である.しかしながら,例えば都市交 通など,多数の人間をエージェントとしてモデル化する必要がある場 合,被験者を集めて参加型シミュレーションを行うことはコストが大 きい.ネットワークゲームを用いることで,被験者はインターネット を通して参加することができるため,場所の制約を受けることがない. また,ネットワークゲームは数千,数万といった単位のユーザが持続的 に参加することも多く,そのために頑健なシステムが構築されている. このような特徴により,ネットワークゲームを用いることで,大規模な シミュレーションを行い,多数の参加者からのデータを同時に集める ことが容易となる. 79 Figure 6.2: ネットワークゲームとマルチエージェントシステムによる 参加型シミュレーション 6.3.2 設計 参加型シミュレーションの実現のため,ネットワークゲームをマルチ エージェントシステムと統合することにより拡張した.図 6.2 に概要を 示す.図の右側がネットワークゲームを示し,図の左側がマルチエー ジェントシステムを示している.ネットワークゲームでは,GUI を通し てアバターを操作することができる.本研究で示すアーキテクチャで は,アバターを制御する人間に対応させて,エージェントを制御する 行動モデルをシミュレータの外部に配置する.このことにより,行動モ デルとシミュレータが分離され,行動モデルの修正が容易となる.こ のように,外部に配置した行動モデルがシミュレータ上のエージェン トを制御するため,エージェントインタフェースが必要となる. エージェントインタフェースの設計にあたり,本研究の目的と照ら し合わせ,次のふたつの要件を考慮する必要がある.ひとつ目は,エー ジェントにアバターと同様の動作をさせるための機能の実現である.本 研究で対象とする参加型シミュレーションでは,エージェントはアバ ターの動作を模倣するものである.エージェントのシナリオにおいて, その記述に用いるキューやアクションなどの語彙は,シミュレーション の対象となる領域の専門家とプラットフォーム開発者との協議によって 決定される [Ishida 02b].これらの語彙は,エージェントとアバターが 同様の振る舞いを見せるように実装されなければならない.また,語 彙の追加が発生した場合に,プラットフォームを大幅に修正すること 80 は好ましくない.これに対して本研究では,アバターの操作に対応し て呼び出されるシミュレーションエンジンの機能ひとつひとつを最小 単位として用い,それらの組み合わせによりシナリオの語彙を実現す るというアプローチをとった.これにより,語彙の追加に対しても,組 み合わせる機能を記述することで実現することが可能となる.ふたつ 目の要件は,接続するネットワークゲームの追加や変更を容易にする ことである.別の目的をもって既に構築されたネットワークゲームに ついて,実施するシミュレーションに応じてその環境を変更すること は容易ではない.これに対して,接続するネットワークゲームを追加, 変更することができれば,より汎用的なプラットフォームが実現でき る.そこで本研究では,ネットワークゲームとシナリオ処理系との間 の通信を,文字列で表現されたメッセージに変換する手法を採る.文 字列メッセージは多くのプログラミング言語で扱うことができるため, 複数のネットワークゲームとシナリオ処理系を接続した場合でも,シ ナリオ処理系はすべてのネットワークゲームとの通信を統一的に扱う ことが可能となる. 6.3.3 アーキテクチャ 前述の設計に基づき,シナリオ記述言語とネットワークゲームを接続 するためのアーキテクチャを示す. 図 6.3 に,ネットワークゲームとシナリオ処理系とを結合したアー キテクチャを示す.図中において,ネットワークゲームをシミュレー ションサーバとクライアントに分けて表現した.また,色の付いた四 角形が結合のために必要となる要素であり,これとシナリオリーダを 併せたものがエージェントインタフェースとなる. シミュレーションサーバには,シミュレーションエンジン,ユーザ API,シナリオトランスレータ,および,エージェントコネクタが含ま れる.エージェントコネクタは,シナリオ処理系からキュー/アクショ ンの実行依頼メッセージを受信すると,それをデコードし,シナリオ トランスレータへ実行依頼を行う.また,キュー/アクションの実行結 果をメッセージへエンコードし,シナリオ処理系へ送信する.シナリ オトランスレータは,キュー/アクションの実行依頼をシミュレーショ ンエンジンの持つ関数群へ変換し,シミュレータ上で実行する.この ようにシミュレーションエンジンが既に提供している関数群を用いる ことで,シミュレーションエンジンを変更することなくエージェントの 81 䝅䝭䝳䝺䞊䝅䝵䞁䝃䞊䝞 䝅䝘䝸䜸 䝖䝷䞁䝇䝺䞊䝍 䜻䝳䞊䞉䜰䜽䝅䝵䞁 ᐇ⾜౫㢗 䝅䝭䝳䝺䞊䝍ᶵ⬟ 䛾ᐇ⾜ ᐇ⾜⤖ᯝ 䝅䝭䝳䝺䞊䝍ᶵ⬟ 䛾ᐇ⾜ 䝅䝭䝳䝺䞊䝅䝵䞁 䜶䞁䝆䞁 䝴䞊䝄API ᐇ⾜⤖ᯝ 䜶䞊䝆䜵䞁䝖 䝁䝛䜽䝍 ᐇ⾜౫㢗 䝯䝑䝉䞊䝆 䝴䞊䝄᧯స ᐇ⾜䝯䝑䝉䞊䝆 ᐇ⾜⤖ᯝ 䝯䝑䝉䞊䝆 䝅䝘䝸䜸ฎ⌮⣔ 䝅䝘䝸䜸 䝁䝛䜽䝍 䜻䝳䞊䞉䜰䜽䝅䝵䞁 ᐇ⾜౫㢗䠈 ᐇ⾜≧ែ䛾ྲྀᚓ 䜽䝷䜲䜰䞁䝖 䝴䞊䝄 䜲䞁䝍䝣䜵䞊䝇 䜻䝳䞊䞉䜰䜽䝅䝵䞁 ᐇ⾜≧ែ 䝅䝘䝸䜸䜲䞁䝍䝥䝸䝍 䜻䝳䞊/䜰䜽䝅䝵䞁 䛾ᐇ⾜౫㢗 䝅䝘䝸䜸 䜻䝳䞊/䜰䜽䝅䝵䞁 䝝䞁䝗䝷 䝸䞊䝎 ᐇ⾜⤖ᯝ 䝕䞊䝍 ไᚚ ⎔ቃ ሗ 䜰䝞䝍䞊䛾 ᧯స ⎔ቃ䛾 ⾲♧ 䝅䝘䝸䜸 䝴䞊䝄 Figure 6.3: ネットワークゲームとシナリオ処理系の結合 シナリオ制御が実現できる.加えて,ユーザ API とシナリオトランス レータとが同じ関数を用いることで,アバターとエージェントに対し て同じ制御機能を実現できる. シナリオ処理系には,シナリオリーダ,シナリオコネクタ,キュー/ アクションハンドラが含まれる.シナリオコネクタは,キュー/アクショ ンハンドラから実行依頼を受け取ると,それをメッセージに変換して シミュレーションサーバに送信する.また,実行中のキューやアクショ ンの情報を保持し,実行結果メッセージを受け取ると,それにしたがっ てキュー/アクションの実行状態を更新する.キュー/アクションハンド ラは,それぞれのキューとアクションに対応した処理を行う要素であ る.まず,シナリオリーダからの依頼にしたがって実行依頼をシナリオ 82 コネクタに送り,実行結果が返信されるまで待機する.実行結果を受 け取ると,シナリオリーダに結果を返る.このように,シミュレーショ ンサーバとシナリオ処理系との間の通信は,メッセージに変換して行 われる.これは,一度メッセージに変換することで,TCP/IP などによ る汎用的な通信機能を用いることができるためである.多くのシステ ムでサポートされている通信機能を用いることで,様々なシミュレー ションとの接続が容易となる. 以上のように,シナリオ記述の語彙をシミュレーションエンジンの 関数に変換するシナリオトランスレータと,語彙の実行依頼と結果を 文字列メッセージを用いて通信を行うエージェントコネクタおよびシ ナリオコネクタにより,6.3.2 項で示した要件を満たすアーキテクチャ を実現した. 6.3.4 実行フロー キュー・アクションの実行フローを,図 6.4 に示す.例えば,“(?hearmessage :message"Hello!":id $id)” というキューがエージェントに対し て依頼された場合,そのエージェントは “Hello!” という文が聞こえて くるのを待ち,聞こえたらその文を発したエージェントの ID を取得す る.このキューは以下のように実行される. シナリオインタプリタはシナリオを解釈し,キューの実行依頼をシ ナリオコネクタに対して行う.シナリオコネクタは実行依頼を文字列 に変換し,エージェントコネクタ送信する.エージェントコネクタは, 受け取ったメッセージをデコードし,シナリオトランスレータに送る. シナリオトランスレータは,キューの実行依頼をシミュレーションエ ンジンの関数群へ変換する.“hear” の例では,キュー “(?hear-message :message "Hello!" :id $id)” は “Hello!” という単語を検索する関数に変 換する.この関数は,単語が発見されると,その単語を発したエージェ ントの ID を返す.キューの実行結果は,まずシナリオトランスレータ が関数の戻り値として受け取り,エージェントコネクタへと送られる. エージェントコネクタは,それを文字列形式にエンコードし,シナリ オコネクタへ送信する.シナリオコネクタはそのメッセージを受け取 ると,実行結果をデコードし,シナリオインタプリタへと送る.この ようなプロセスを経て,エージェントはキューの実行結果としてエー ジェント ID を獲得することができる.ここで得られた情報は,続くア クションなどで使用することができる. 83 䝅䝘䝸䜸 䜲䞁䝍䝥䝸䝍 䝅䝘䝸䜸 䝁䝛䜽䝍 䜶䞊䝆䜵䞁䝖 䝁䝛䜽䝍 䝅䝘䝸䜸 䝖䝷䞁䝇䝺䞊䝍 䝅䝭䝳䝺䞊䝅䝵䞁 䜶䞁䝆䞁 䜻䝳䞊䞉䜰䜽䝅䝵䞁ᐇ⾜౫㢗 ᐇ⾜౫㢗䜢䝯䝑䝉䞊䝆䛻ኚ 䝯䝑䝉䞊䝆㏦ಙ 䝯䝑䝉䞊䝆䜢䝕䝁䞊䝗 ᐇ⾜౫㢗 䝅䝭䝳䝺䞊䝍ᶵ⬟䛾ᐇ⾜ ᐇ⾜⤖ᯝ ᐇ⾜⤖ᯝ ᐇ⾜⤖ᯝ䜢䝯䝑䝉䞊䝆䛻ኚ 䝯䝑䝉䞊䝆 ㏦ಙ 䝯䝑䝉䞊䝆䛾䝕䝁䞊䝗 䜻䝳䞊䞉䜰䜽䝅䝵䞁䛾ᐇ⾜⤖ᯝ Figure 6.4: キュー・アクションの実行フロー 6.4 メタレベル制御 本章では,参加型シミュレーションプラットフォームとして,ネット ワークゲームとシナリオ処理系を結合するアーキテクチャを示した.こ のようなマルチエージェントシステムを用いた参加型シミュレーション に必要な機能を実現するための制御機構として,第4章で示したメタ レベル制御アーキテクチャがある. 本章で示したアーキテクチャでは,メタレベル制御アーキテクチャ で基盤として用いたものと同様のシナリオ制御系を用いている.した がって,図 6.3 で示したアーキテクチャに対しても,メタレベル制御 アーキテクチャを導入することが可能である. 84 Table 6.1: gumonji/Q のキューとアクション 移動 !walk, !approach, !turn メッセージの送受信 !speak, !send, ?hear-message, ?hear-from, ?receive-message, ?receive-from 感情とジェスチャー !express, !perform, !play-note 生物に命名 !name, !denominate アイテムの操作 !attach, !equip, !get-item-id, !put, !merge, !overlay, !divide, !price, !takeout, !store, !pickup, !bury, !plant, !incubate, !write, !read, !delete, !chemical, ?is-equip 地面に対する操作 !observe, !dig, !raise, !flatten, !smooth, !harden 水に対する操作 !scoop, !spill 動植物に対する操作 !look, !rotate, !harvest, !fell, !hunt 待機・停止 !stop, ?wait 観測 ?see(対象の属性を指定して ID を得る) 6.5 参加型シミュレーションの実施 6.5.1 gumonji/Q 本章で示したアーキテクチャに従い,第 6.2 節で示したネットワーク ゲーム gumonji と,シナリオ記述言語 Q を結合し,参加型シミュレー ションを実施した. gumonji では,アバターの操作について,それぞれ対応する関数を 呼び出している.そこで,各関数に対応するキューおよびアクションを 基本機能として定義した.定義したキューとアクションを表1に示す. 表1において,メッセージには 1 対多と 1 対 1 のものがあるため,それ ぞれに対応する送信・受信機能を定義した.また,各種オブジェクトに 対する操作は,?see により ID を取得し,その ID をアクションのパラ メータに指定することで行う.gumonji の観測機能はシミュレーショ ン上のすべての情報を取得し,ユーザに提示する際に画面内にあるも のだけ表示することで,ユーザが実際に観測する情報を限定している. このような取得情報の限定をエージェントに対して行うため,キュー のパラメータとして視界などを与えることで,エージェントの能力を 85 Figure 6.5: 農業経営者の行動モデル 制限した.例えば,(?see :dist 10) とすることで,距離 10 の範 囲内の情報をエージェントに与える. 6.5.2 農業経営シミュレーションの実施 参加型シミュレーションの例題として,5人の農場経営者と 16 の農場 を用いたシミュレーションを,gumonji/Q により実施した.それぞれ の農場経営者は,16 のうちいくつかの農場を所有するものとする.そ れぞれの農業経営者は,参加者あるいは Q シナリオによって制御され, 農場の耕作,売買,貸借によってより多くの利益を得ることを目的とす る.シミュレーションの1ステップは,農場の売買,貸借,破棄を行う 意思決定フェーズと,作物の成長と収穫が行われる経過観測フェーズか ら成る.参加者は,経過観測フェーズの結果を受けて,意思決定フェー ズで農場の管理を行い,これを繰り替えして利益の最大化を目指す. 86 Figure 6.6: 例題の実行画面 図 6.5 は,意思決定フェーズの売買,貸借に関する一般的な農業経 営者の行動モデルを記述したシナリオである.このようなシナリオに 基づいて,エージェントは他のエージェントや参加者とインタラクショ ンを行う.また,図 6.5 のシナリオでは,農場の状態の観測や農地の放 棄・貸借といった,意思決定に関する語彙が用いられている.これらは 表1の語彙には含まれていないが,農業経営者のシナリオに必要とな るため,対応するキュー・アクションを別に定義した.このように,参 加型シミュレーション実施者は,必要に応じてキュー・アクションを定 義し,語彙を拡張することができる. 図 6.6 のように,経過観測フェーズでは,エージェントが農場を耕 し,種を植えている.これらのエージェントの行動は,表 1 で示した キューとアクションを用いて記述している.また,農場経営者にはそれ ぞれ異なった色が割り当てられており,種や植物は同じ色で表示され る.このように,参加者は,他の農場経営者や農場の状態を視覚的に観 察することができる.意思決定フェーズでは,このように視覚的に得 られた情報を基に交渉を行う.例えば,現在耕作している農場での植物 87 の成長が良くない場合,その農場の耕作を止めるか,他人に売ったり 貸したりするという判断ができる.他の農場経営者がその農場の様子 を見ていた場合,申し出を断ることも可能である.参加型シミュレー ションによるモデル化においては,このような参加者の行動を観察し, それに基づいてエージェントシナリオの改善を行っていく. 6.6 実現可能な参加型シミュレーション 6.6.1 他のシミュレータとの連携 本章で示したアーキテクチャでは,シナリオ処理系は,ネットワーク ゲームとの結合を保ったまま,他のシステムに接続することができる. これと,メタレベル制御によるシミュレータへのアクセス機能を利用 すれば,複数のシミュレータを連携して動作させること可能である. 例として,交通シミュレーションを考える.交通シミュレーション では,エージェントの行動は,出発地から目的地までの経路を計画する 交通行動と,道路内でのアクセル,ブレーキといった運転行動に分け られる.このうち,運転行動については,gumonji や FreeWalk といっ た,三次元仮想空間上で直感的な操作ができるシミュレータが適して いる.一方で,交通行動については,道路をネットワークとして表現す る必要があるため,これらのシミュレータで再現するのは困難である. こういった場合,交通行動シミュレータを別途用意し,メタレベル制 御で情報を共有することで,ふたつのシミュレーションを連携させる ことができる.すなわち,交通行動シミュレータが各エージェントの 経路を決定し,シナリオを生成する.そして,メタレベル制御により, そのシナリオを運転行動シミュレータのエージェントに割り当てる.さ らに,運転行動シミュレータの結果はメタレベル制御により交通行動 シミュレータにフィードバックされ,次の日の経路選択に用いられる. 以上を繰り返すことで,日々変化していく交通のシミュレーションが可 能となる. 6.6.2 オープンな参加型シミュレーション ネットワークゲームの持つ持続性とメタレベル制御を利用することで, オープンな参加型シミュレーションが実現できる. 88 例えば,交通シミュレーションにおいて,運転者の運手行動モデル を獲得するため,参加型シミュレーションを行うとする.このとき,大 勢の被験者を長時間拘束するという方法は,コストが大きい.そこで, インターネットを通じで誰でも参加ができるよう,交通シミュレーショ ンをオープン参加型とし,そのログデータから運転行動モデルを獲得 するといった手法が考えられる.ネットワークゲームを基盤として用い ることで,サーバ側で交通シミュレーションを継続的に実行し,クライ アントを通してシミュレーションに参加することが可能になる.また, メタレベル制御機能により,参加者が操作する車両を,参加者が操作し ている間はクライアントからの依頼によって動作させ,操作していな い間はシナリオ処理系からの依頼によって動作させるといった,制御 の切り替えを行うこともできる.このように,自由な参加,退出を認め ることによって,多くの参加者から行動ログを獲得することができる. 6.6.3 実世界でのコミュニケーションを含むシミュレーシ ョン 本章で示したアーキテクチャを用いることで,仮想世界で行われるシ ミュレーションに,現実世界で行われるコミュニケーションを取り入れ ることができる. 例えば,戦争シミュレーションゲームを考える.コンピュータゲー ムに参加型シミュレーションを適用することで,エージェントの振る 舞いがより知的なものになると期待できる.ゲームには多数のプレイ ヤーが参加し,それぞれのプレイヤーは国を率いて他の国を攻め落と すことを目的とする.このようなゲームでは,ゲームで提供される外 交などの操作とは別に,あらかじめ他者と協力関係を結んだり,他人 を誘ってゲームに参加させたりといった,ゲームの外でのコミュニケー ションが発生する.こういったコミュニケーションにより,プレイヤー はより有利にゲームを進めることができる. このように,参加型シミュレーションでは,仮想空間外でのコミュ ニケーションにより,他者の行動に影響を与えることができる.これは ゲームの機能として組み込まれてはいないが,ゲームに参加するプレ イヤーをエージェントに模倣させることを考えた場合,エージェント とプレイヤーを対等に扱うという点で,エージェントにもとらせるべ き行動である.シナリオ処理系では,シナリオコネクタ同士を通信さ せることにより,シミュレータを介さない通信が実現できる.加えて, 89 メタレベル制御によるエージェントの作成,シナリオの切り替えの機 能により,こういった仮想空間外での行動をエージェントにとらせるこ とが可能となる. 以上の様に,本章で示したアーキテクチャを用いることで,様々な 形式の参加型シミュレーションが実現できる.これは,第 3 節で挙げた ようなネットワークゲームの特徴と,シナリオ記述言語の汎用性によ るものである.これにより,シミュレーション実施におけるコスト削減 が期待できる.また,本章で提示したアーキテクチャを用いて結合す ることにより,参加型シミュレーションに必要となるネットワークゲー ムとシナリオ処理系との結合が容易に実現できる. 本研究では,シミュレーションに用いるエージェントシナリオの改 善に参加型シミュレーションを用いた.一方で,シミュレーションに アバターを参加させることで,様々な応用が考えられる.例えば,交 通制御などの施策に対して人間がどのように反応するかを観察したり, 災害のシミュレーションに参加させることで避難訓練に用いたり,ある いはエージェントの振る舞いを変更することで参加者がどのように戦 略や戦術を変更するかを観察したりといったことが考えられる.これ らの応用に対しても,本章で示したアーキテクチャにより,シミュレー ション実施の支援が可能である. 90 Chapter 7 おわりに 本研究の目的は,人間を含んだ社会現象の再現のための,マルチエー ジェントシミュレーションの開発基盤を確立することである.マルチ エージェントシミュレーションを行うためには,ひとりひとりの人間の 行動を再現する必要がある.本研究では,そのための手法として,参加 型シミュレーションを採用する.参加型シミュレーションでは,シミュ レーションの中に人間の操作するキャラクターを参加させることで,そ のログデータや参加者へのインタビューから,人間の行動モデルを獲 得することができる. 我々は,参加型シミュレーションに基づくマルチエージェントシミュ レーション開発を実現するためのアーキテクチャを,シナリオ記述言語 に基づいて実現した.本研究では,シミュレーション開発のプロセスを 参加型シミュレーションの実施,エージェントモデルの獲得,エージェ ントモデルの精錬という3つのプロセスで構成し,そのために必要と なるシミュレーションプラットフォームのアーキテクチャを示した. 本研究による成果は以下の3つである. 1. シミュレーション制御のためのメタレベルアーキテクチャ 参加型シミュレーションを大規模環境下で行うには,実行時のシ ミュレーション状況やエージェントの行動シナリオを監視し,そ れにもとづいた制御を行う必要が生じる.この制御を実現するた め,シナリオ処理系をメタレベルで制御するというアプローチを とった.本研究で達成した目標は以下の2点である. • メタシナリオ記述言語の開発 91 シミュレーションの状況を拡張状態遷移機械の状態として, 制御を拡張状態遷移機械の遷移として表現することで,シ ミュレーションの制御を記述するための言語を提案した. • メタレベルアーキテクチャの考案 シナリオインタプリタをメタレベルで制御することで,メタ シナリオにもとづいた柔軟な制御を可能とするメタレベル アーキテクチャを考案した. 2. リハーサル指向テストのためのエージェントアーキテクチャ 本研究では,シナリオの拡張や修正を行う手法として,リハーサ ル指向テストを提案した.特に,エージェントの動作を人間との 対話によって修正するというリハーサル指向テストのステップに ついて注目し,詳細な機能定義と対話プロトコルの設計を行った. この対話プロトコルの設計にあたっては,修正開始時のコンテキ ストを用いて,簡潔な対話を目指した.対話によるシナリオの動 的な修正を実現するため,以下の目標を達成した. • 修正機能の定義 リハーサル指向テストのための修正機能を定義した.シナリ オが状態遷移機械モデルで定義されている場合,修正機能は 状態の追加と削除,状態遷移の追加,状態遷移の修正,およ び,状態遷移の削除となる. • 対話プロトコルの設計 シナリオの修正を実施するにあたり,エージェントはシナリ オの修正に必要な情報を,対話プロトコルに基づいてユーザ に訪ねることで収集する.加えて,シミュレーションのコン テキストを用いることで,より簡潔な対話を実現した. • メタレイヤを用いたアーキテクチャの提案 対話プロトコルに基づいた対話から,エージェントがシミュ レーション実行中に自身のシナリオを修正できるよう,メタ レイヤを備えたエージェントアーキテクチャを示した.メタ レイヤでは,シナリオの解析や修正といった,エージェント 自身の振る舞いに関する処理を行う. 3. ネットワークゲームのシナリオ制御アーキテクチャ 参加型シミュレーション環境の構築のため,ネットワークゲーム 92 を利用するというアプローチをとった.ネットワークゲームとシ ナリオ処理系を結合した参加型シミュレーションのためのアーキ テクチャについて詳述した.このアーキテクチャにより,ネット ワークゲームを基にした参加型シミュレーションプラットフォー ムが実現できる.主な貢献は以下の2点である. • エージェントのシナリオ制御 プラットフォーム本体に手を入れることなく,エージェント のシナリオ記述を変更することで,エージェントの振る舞い を変更しながらシミュレーションを繰り返すことができる. • 様々なネットワークゲームとの接続 本稿で示した接続手法では,ネットワークゲームとシナリオ 処理系との通信を,一度メッセージに変換して行っている. このため,多くの既存システムとの接続が可能である.この ことにより,応用に合わせた様々なプラットフォームとの接 続が実現できる. また,本論文では,提案したアーキテクチャに基づいて参加型シミュ レーションプラットフォームを実装し,具体例を用いて参加型シミュレー ションが実施できることを示した.さらに,アーキテクチャについて, 大規模環境にも適用可能なスケーラビリティを持つことを示した. 93 Bibliography [Abbink 09] Abbink, E. J. W., Mobach, D. G. A., Fioole, P. J., Kroon, L. G., Van Der Heijden, E. H. T., and Wijngaards, N. J. E.: Actor-Agent Application For Train Driver Rescheduling, in Aamas ’09: Proceedings Of The 8th International Conference On Autonomous Agents And Multiagent Systems, pp. 513–520, Richland, Sc (2009), International Foundation For Autonomous Agents And Multiagent Systems [Balmer 04a] Balmer, M., Cetin, N., Nagel, K., and Raney, B.: Towards Truly Agent-Based Traffic and Mobility Simulations., in 3rd International Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS 2004), pp. 60–67 (2004) [Balmer 04b] Balmer, M. and Rieser, M.: Generating Daily Activity Chains from Origin-Destination Matrices, in Transportation Research Board 84th Annual Meeting (2004) [Bousquet 98] Bousquet, F., Bakam, I., Proton, H., and Page, C. L.: Cormas: Common-Pool Resources and Multi-agent Systems, in IEA/AIE ’98: Proceedings of the 11th International Conference on Industrial and Engineering Applications of Artificial In telligence and Expert Systems, pp. 826–837 (1998) [Charypar 03] Charypar, D. and Nagel, K.: Generating Complete All-Day Activity Plans with Genetic Algorithms, in presented at the 10th International Conference on Travel Behaviour Research (2003) [Claes 08] Claes, R. and Holvoet, T.: Multi-Model Traffic Microsimulations, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1113–1123, Winter Simulation Conference (2008) 95 [Colella 98] Colella, V., Borovoy, R., and Resnick, M.: Participatory simulations: using computational objects to learn about dynamic systems, in CHI ’98: CHI 98 conference summary on Human factors in computing systems, pp. 9–10 (1998) [Da Silva 08] Da Silva, P. S. and De Melo, A. C. V.: Reusing Models In Multi-Agent Simulation With Software Components, in Aamas ’08: Proceedings Of The 7th International Joint Conference On Autonomous Agents And Multiagent Systems, pp. 1137–1144, Richland, Sc (2008), International Foundation For Autonomous Agents And Multiagent Systems [Drogoul 02] Drogoul, A., Vanbergue, D., and Meurisse, T.: Multi-agent Based Simulation: Where Are the Agents?, in Multi-Agent-Based Simulation, Third International Workshop, MABS 2002, pp. 1–15 (2002) [Drogoul 03] Drogoul, A., Vanbergue, D., and Meurisse, T.: Multi-agent Based Simulation: Where Are the Agents?, Vol. 2581/2003 of Lecture Notes in Computer Science, Springer Berlin / Heidelberg (2003) [Fishwick 08] Fishwick, P. A., Henderson, J., Fresh, E., Futterknecht, F., and Hamilton, B. D.: Simulating Culture: An Experiment Using A MultiUser Virtual Environment, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 786–794, Winter Simulation Conference (2008) [Gilbert 02] Gilbert, N., Maltby, S., and Asakawa, T.: Participatory simulations for developing scenarios in environmental resource management, Third workshop on agent-based simulation, pp. 67–72 (2002) [Guyot 05] Guyot, P., Drogoul, A., and Lemaitre, C.: Using emergence in participatory simulations to design multi-agent systems, in Proceedings of The Fourth International Joint Conference on Autonomous Agents and Multi-Agent Systems (AAMAS) (2005) [Hahn 08] Hahn, C.: A Domain Specific Modeling Language For Multiagent Systems, in Aamas ’08: Proceedings Of The 7th International Joint 96 Conference On Autonomous Agents And Multiagent Systems, pp. 233– 240, Richland, Sc (2008), International Foundation For Autonomous Agents And Multiagent Systems [Hetu 08] Hetu, S. N. and Tan, G.: Mmohils: A Simpler Approach To Valid Agents In Human Simulation Studies, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 909–913, Winter Simulation Conference (2008) [Hindriks 09] Hindriks, K. V., Van Der Hoek, W., and Van Riemsdijk, M. B.: Agent Programming With Temporally Extended Goals, in Aamas ’09: Proceedings Of The 8th International Conference On Autonomous Agents And Multiagent Systems, pp. 137–144, Richland, Sc (2009), International Foundation For Autonomous Agents And Multiagent Systems [Ishida 11] Ishida, T.: Q: A scenario description language for interactive agents, COMPUTER, Vol. 35, No. 11, pp. 42–47 (2002-11) [Ishida 02a] Ishida, T.: Q: A Scenario Description Language for Interactive Agents, IEEE Computer, Vol. 35, No. 11, pp. 42–47 (2002) [Ishida 02b] Ishida, T.: Q: A Scenario Description Language for Interactive Agents, Computer, Vol. 35, No. 11, pp. 42–47 (2002) [Ishida 05] Ishida, T., Gasser, L., and Nakashima, H. eds.: Massively MultiAgent Systems I, Lecture Notes in Artificial Intelligence, 3446, SpringerVerlag (2005) [Ishida 07a] Ishida, T., Nakajima, Y., Murakami, Y., and Nakanishi, H.: Augmented Experiment: Participatory Design with Multiagent Simulation, in International Joint Conference on Artificial Intelligence (IJCAI07) (2007) [Ishida 07b] Ishida, T. and Yamane, S.: Introduction to Scenario Description language Q, in International Conference on Informatics Research for Development of Knowledge Society Infrastructure (ICKS-07), IEEE Computer Society (2007) 97 [Johnson 09] Johnson, R. T., Lampe, T. A., and Seichter, S.: Calibration Of An Agent-Based Simulation Model Depicting A Refugee Camp Scenario, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1778–1786, Winter Simulation Conference (2009) [Murakami 03] Murakami, Y., Ishida, T., Kawasoe, T., and Hishiyama, R.: Scenario description for multi-agent simulation, in AAMAS ’03: Proceedings of the second international joint conference on Autonomous agents and multiagent systems, pp. 369–376 (2003) [Murakami 05a] Murakami, Y., Sugimoto, Y., and Ishida, T.: Modeling Human Behavior for Virtual Training Systems, in The Twentieth National Conference on Artificial Intelligence (AAAI-05) (2005) [Murakami 05b] Murakami, Y., Sugimoto, Y., and Ishida, T.: Modeling Human Behavior for Virtual Training Systems, in Proceedings of the 20th National Conference on Artificial Intelligence (AAAI-05), pp. 127–132 (2005) [Nakanishi 03] Nakanishi, H., Nakazawa, S., Ishida, T., Takanashi, K., and Isbister, K.: Can software agents influence human relations?: balance theory in agent-mediated communities, in AAMAS ’03: Proceedings of the second international joint conference on Autonomous agents and multiagent systems, pp. 717–724 (2003) [Nakanishi 04a] Nakanishi, H. and Ishida, T.: FreeWalk/Q: social interaction platform in virtual space, in VRST ’04: Proceedings of the ACM symposium on Virtual reality software and technology, pp. 97–104 (2004) [Nakanishi 04b] Nakanishi, H. and Ishida, T.: FreeWalk/Q: Social Interaction Platform in Virtual Space, in ACM Symposium on Virtual Reality Software and Technology (VRST2004), pp. 97–104 (2004) [Nguyen 09] Nguyen, C. D., Perini, A., Tonella, P., Miles, S., Harman, M., and Luck, M.: Evolutionary Testing Of Autonomous Software Agents, in Aamas ’09: Proceedings Of The 8th International Conference On Autonomous Agents And Multiagent Systems, pp. 521–528, Richland, Sc (2009), International Foundation For Autonomous Agents And Multiagent Systems 98 [Nick 09] Nick, T., Mehdi, D., and John-Jules, M.: Roles And Norms For Programming Agent Organizations, in Aamas ’09: Proceedings Of The 8th International Conference On Autonomous Agents And Multiagent Systems, pp. 121–128, Richland, Sc (2009), International Foundation For Autonomous Agents And Multiagent Systems [Nwana 99] Nwana, H. S., Ndumu, D. T., Lee, L. C., and Collis, J. C.: ZEUS: a toolkit and approach for building distributed multi-agent systems, in Etzioni, O., Müller, J. P., and Bradshaw, J. M. eds., Proceedings of the Third International Conference on Autonomous Agents (Agents’99), pp. 360–361 (1999) [Pawlaszczyk 09] Pawlaszczyk, D. and Strassburger, S.: Scalability In Distributed Simulations Of Agent-Based Models, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1189–1200, Winter Simulation Conference (2009) [Perron 08] Perron, J., Hogan, J., Moulin, B., Berger, J., and BÉLanger, M.: A Hybrid Approach Based On Multi-Agent Geosimulation And Reinforcement Learning To Solve A Uav Patrolling Problem, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1259– 1267, Winter Simulation Conference (2008) [Peter 09] Peter, N. and Wojciech, J.: Code Patterns For Agent-Oriented Programming, in Aamas ’09: Proceedings Of The 8th International Conference On Autonomous Agents And Multiagent Systems, pp. 105–112, Richland, Sc (2009), International Foundation For Autonomous Agents And Multiagent Systems [Ricci 08] Ricci, A., Piunti, M., Acay, L. D., Bordini, R. H., HÜBner, J. F., and Dastani, M.: Integrating Heterogeneous Agent Programming Platforms Within Artifact-Based Environments, in Aamas ’08: Proceedings Of The 7th International Joint Conference On Autonomous Agents And Multiagent Systems, pp. 225–232, Richland, Sc (2008), International Foundation For Autonomous Agents And Multiagent Systems [Taghaddos 08] Taghaddos, H., Abourizk, S. M., Mohamed, Y., and Ourdev, I.: Distributed Agent-Based Simulation Of Construction Projects 99 With Hla, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 2413–2420, Winter Simulation Conference (2008) [Thengvall 09] Thengvall, B. and Glover, F.: A Framework For The Optimization And Analysis Of Agent-Based Models, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1737–1744, Winter Simulation Conference (2009) [Torii 06] Torii, D., Ishida, T., and Bousquet, F.: Modeling Agents and Interactions in Agricultural Economics, in Proceedings of the 5th International Joint Conference on Autonomous Agents and Multiagent Systems (AAMAS-06), pp. 81–88 (2006) [Tumer 07] Tumer, K. and Agogino, A.: Distributed Agent-Based Air Traffic Flow Management, in Aamas ’07: Proceedings Of The 6th International Joint Conference On Autonomous Agents And Multiagent Systems, pp. 1–8, New York, Ny, Usa (2007), Acm [Wang 08] Wang, Y., Lees, M., Cai, W., Zhou, S., and Low, M. Y. H.: Cluster Based Partitioning For Agent-Based Crowd Simulations, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 1047– 1058, Winter Simulation Conference (2008) [Wooldridge 97] Wooldridge, M.: Agent-Based Software Engineering, IEEE Proc. Software Eng, Vol. 144(1), pp. 26–37 (1997) [Wooldridge 00] Wooldridge, M., Jennings, N. R., and Kinny, D.: The Gaia Methodology for Agent-Oriented Analysis and Design, Autonomous Agents and Multi-Agent Systems, Vol. 3, No. 3, pp. 285–312 (2000) [Xiong 08] Xiong, Y., Hybinette, M., and Kraemer, E.: Transparent And Adaptive Computation-Block Caching For Agent-Based Simulation On A Pdes Core, in Wsc ’08: Proceedings Of The 40th Conference On Winter Simulation, pp. 854–862, Winter Simulation Conference (2008) [Yamamoto 01] Yamamoto, G. and Tai, H.: Performance Evaluation of an Agent Server Capable of Hosting Large Numbers of Agents, in International Conference on Autonomous Agents (Agents-01), pp. 363–369 (2001) 100 [Yamane 06] Yamane, S. and Ishida, T.: Meta-level Control Architecture for Massively Multiagent Simulations, in Winter Simulation Conference (WSC-06) (2006) 101 Publications Major Publications Journal 1. 山根 昇平,澤田 祥一,服部 宏充, 石田 亨.ネットワークゲーム に基づく参加型シミュレーション環境の構築.ヒューマンインタ フェース学会論文誌「コミュニケーション支援 IV」特集号,Vol. 13, No. 3, 2011.(採録済) 2. 山根 昇平, 石田 亨. 大規模マルチエージェントシステムのための メタレベル制御機構. 情報処理学会論文誌「マルチエージェント の理論と応用」特集号, Vol. 47, No. 5, 2006. 3. 中島 悠, 椎名宏徳, 山根昇平, 八槇博史, 石田 亨. 大規模マルチエー ジェントシミュレーションにおけるプロトコル記述と実行基盤. 電 子情報通信学会論文誌, Vol. J89-D, No.10, pp. 2229-2236, 2006. International Conference 1. Shohei Yamane, Shoichi Sawada, Hiromitsu Hattori, Marika Odagaki, Kengo Nakajima and Toru Ishida. Participatory Simulation Environment gumonji/Q: A Network Game Empowered by Agents. International Conference on Principles of Practice in Multi-Agent Systems (PRIMA-09), Nagoya, Japan, Dec. 13-16, 2009. 2. Shohei Yamane and Toru Ishida. An Agent Modeling Method Based on Scenario Rehearsal for Multiagent Simulation. Pacific Rim Inter- 103 national Conference on Multi-Agents (PRIMA-07), November 21-23, 2007. 3. Yuu Nakajima, Hironori Shiina, Shohei Yamane, Hirofumi Yamaki and Toru Ishida. Disaster Evacuation Guide Using a Massively Multiagent Server and GPS Mobile Phones. IEEE/IPSJ Symposium on Applications and the Internet (SAINT-07), 2007. 4. Toru Ishida and Shohei Yamane. Introduction to Scenario Description language Q. International Conference on Informatics Research for Development of Knowledge Society Infrastructure (ICKS-07), IEEE Computer Society, January 2007. 5. Shohei Yamane and Toru Ishida. Meta-level Control Architecture for Massively Multiagent Simulations. Winter Simulation Conference (WSC-06), pp. 889-896, 2006. 6. Yuu Nakajima, Hironori Shiina, Shohei Yamane, Hirofumi Yamaki and Toru Ishida. Caribbean/Q: A Massively Multi-Agent Platform with Scenario Description, International Conference on Semantics, Knowledge and Grid (SKG-06), 2006. Other Publications Demo and Poster in International Conference 1. Yuu Nakajima, Shohei Yamane, Hiromitsu Hattori, Toru Ishida. Evacuation Guide System based on Massively Multiagent System. International Conference on Autonomous Agents and Multi-agent Systems(AAMAS-08), demo session, pp.1653-1654, May 12-16, 2008. Workshop 1. Shohei Yamane, Toru Ishida. ”Meta-level Control Architecture for Massively Multiagent Systems”, Joint Workshop on Massively Multi- 104 Agent Systems and Challenges in the Coordination of Large Scale Multi-agent Systems, 2006. 2. Yuu Nakajima, Hironori Shiina, Shohei Yamane, Hirofumi Yamaki, Toru Ishida, ”Protocol Description and Platform in Massively Multiagent Simulation”, First International Workshop on Agent Technology for Disaster Management (ATDM), Hakodate, Japan, 8th May 2006. 3. 中島悠, 椎名宏徳, 山根昇平, 八槇 博史, 石田 亨. マルチエージェン トシステムを用いた避難誘導の拡張実験. 合同エージェントワー クショップ&シンポジウム 2006(JAWS-06), 2006. 4. 山根 昇平, 石田 亨. 大規模マルチエージェントシステムのための メタレベル制御機構. 合同エージェントワークショップ&シンポ ジウム 2005(JAWS-2005), 2005. 5. 中島 悠,椎名 宏徳,山根 昇平,山本 晃成,石田 亨, ”大規模マ ルチエージェントシミュレーションのためのプラットフォーム構 築” 合同エージェントワークショップ&シンポジウム 2004(JAWS2004), pp. 59-65, 2004. Convention 1. 山根 昇平, 石田 亨. マルチエージェントシステムのためのシナリ オリハーサル. 第 21 会人工知能学会全国大会, 1C3-1, 2007. Award 1. Best Multimedia Paper Award of International Conference on Principles of Practice in Multi-Agent Systems (PRIMA-09). Shohei Yamane, Shoichi Sawada, Hiromitsu Hattori, Marika Odagaki, Kengo Nakajima and Toru Ishida. Participatory Simulation Environment gumonji/Q: A Network Game Empowered by Agents, 2009. 2. 第 23 回 電気通信普及財団賞 テレコムシステム技術学生賞. 電気 通信普及財団. 2008 年 3 月 17 日 Disaster Evacuation Guide Using a Massively Multiagent Server and GPS Mobile Phones. (SAINT-07). 105