(57)【要約】【課題】  不整合なエージェントの処理を短時間で検出する不整合処理検出装置、不整合処理検出プログラム、及び不整合処理検出方法の提供。【解決手段】  監視部3は、エージェント制御部11によるシミュレーション、若しくはエージェントシミュレータ100の処理履歴を記憶した記憶部7を監視し、不整合処理検出ルールセット4に合致するエージェントを検出した場合、検出されたエージェントの状態、および検出時のエージェントシミュレータ100内の状態を事例記憶部5に蓄積する。【選択図】      図1
2009151634.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境内の初期状態を与える初期状態生成部と、
エージェントの動作の処理を制御する制御ルールが格納された第1の格納部と、
前記仮想環境内の状態を前記制御ルールに与えて生成された前記エージェントの内部状態を生成する内部状態生成部と、
前記内部状態生成部で生成された前記エージェントの内部状態を記憶する第１の記憶部とを備えるシミュレータ装置が構築する仮想環境内での仮想的な行動主体であるエージェントを動作させる処理としては不整合な処理を検出する不整合処理検出装置であって、
前記シミュレータ装置の処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納した第2の格納部と、
前記シミュレータ装置の前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視する監視部と、
前記監視部が前記不整合な処理を検出した場合、前記不整合な処理がなされた前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶する第２の記憶部を具備した事を特徴とする不整合処理検出装置。
【請求項２】
前記エージェントは、仮想人格として信念、欲求、意図を前記内部状態として前記第１の記憶部に保持することを特徴とする請求項1記載の不整合処理検出装置。
【請求項３】
前記検出ルールは、前記内部状態に基づいて規定されており、前記監視部は前記エージェントが該検出ルール内に該当する内部状態を保持した際に不整合な処理と見なすことを特徴とする請求項２記載の不整合処理検出装置。
【請求項４】
前記エージェントの前記内部状態を表示する第１の表示手段と、
当該内部状態が開発者の想定していない状態の組み合わせである場合に当該内部状態を検出ルールのひとつとして選択する第1の選択手段と、
選択された前記検出ルールを前記第２のルールセットに記憶する手段をさらに備えたことを特徴とする請求項１記載の不整合処理検出装置。
【請求項５】
前記第２の記憶部に蓄積された前記不整合と見なされる処理を蓄積し、
前記不整合処理が起こる確率を算出する算出手段をさらに備えたことを特徴とする請求項１記載の不整合処理検出装置。
【請求項６】
前記算出部で算出された前記不整合処理が起こる確率を表示する第２の表示手段をさらに備えたことを特徴とする請求項５記載の不整合処理検出装置。    
【請求項７】
仮想環境内の初期状態を生成する機能と、
エージェントの動作の処理を制御する制御ルールを格納する機能と、
前記仮想環境内の状態を前記制御ルールに与えて前記エージェントの内部状態を生成する機能と、
生成された前記エージェントの内部状態を記憶する機能とを備えるシミュレータが構築する前記仮想環境内での仮想的な行動主体である前記エージェントを動作処理する時の不整合な処理を検出するプログラムであって、
前記シミュレータの処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納する機能と、
前記シミュレータ装置の前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視する機能と、
前記検出ルールに該当する不整合な前記エージェントの制御処理を検出した場合、前記不整合な処理がなされた前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶する機能とをコンピュータに実現させる事を特徴とする不整合処理検出プログラム。
【請求項８】
仮想環境内の初期状態を与えるステップと、
エージェントの動作の処理を制御する制御ルールが格納するステップと、
前記仮想環境内の状態を前記制御ルールに与えて生成された前記エージェントの内部状態を生成するステップと、
生成された前記エージェントの内部状態を記憶するステップを備えるシミュレータが構築する前記仮想環境内での仮想的な行動主体である前記エージェントを動作処理する時の不整合な処理を検出する方法であって、
前記シミュレータの処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納するステップと、
前記シミュレータの前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視するステップと、
記検出ルールに該当する不整合な前記エージェントの制御処理を検出した場合、前記不整合な処理がなされた前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶するステップとを具備した事を特徴とする不整合処理検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルールベースのシミュレータにおける特にエージェントの不整合な処理を検出する不整合処理検出装置、不整合処理検出プログラム、および不整合処理検出方法に関する。
【背景技術】
【０００２】
システムの処理を模擬し、システム開発、設計支援を行うためのシミュレータが存在する。それらのシミュレータの中には社会システムを模擬する、エージェントシミュレータなどが含まれる。
【０００３】
エージェントとは、自律性を持つ行動主体を実現するソフトウェアである。複数のエージェントの協力で動作を行うシステムを特にマルチエージェントシミュレータという。
【０００４】
エージェントシミュレータにおいては、システム動作をモデル化するために、ルールベースが用いられることが多い。各ルール（制御ルール）は独立と考えられ、「if」条件から、「then」アクション「else」アクションを表した形式の記述が多く用いられる。各ルールは宣言的に表記され、独立に評価、処理される。各エージェントはそれら制御ルールに基づいた動作を行い、それが相互作用し複雑な系のシミュレーションが可能となる。
【０００５】
ルールベースを用いたシミュレータの場合、システムを模擬するために適切なルールセットを作成する必要があるが、それらルールがどのように発火するかをあらかじめ予想することが非常に困難である。
【０００６】
ルールベースのシステム開発において開発者がルールを構築する作業が最も重要であり、かつ作業時間を必要している。そのため開発者をサポートするデバッグ技術がある。開発者がルールベースのシステムを採用したプログラムの実行中に生ずる選択条件に基づいてブレークポイントを設定し、プログラムがブレークポイントに到達したときに開発者がシステムの状態を検査しルールを変更することができるデバッグ方法である（例えば特許文献1）。
【０００７】
しかし、これらの方法ではプログラムを繰り返し動作させ、不整合な動作が起きブレークポイントに到達する度に、開発者がデバッグを行い、その修正結果を評価しなければならず、ルールの構築に非常に時間がかかるという問題がある。特に、エージェントの数が多いルールベースのシミュレータシステムを作成する際には更に多大なデバッグ時間が必要になってしまう。
【特許文献１】特開平５−151025号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、エージェントシミュレータの実行結果において生じた不整合な処理を容易に検出することができる不整合動作検出装置、方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために請求項１の発明は、仮想環境内の初期状態を与える初期状態生成部と、エージェントの動作の処理を制御する制御ルールが格納された第1の格納部と、前記仮想環境内の状態を前記制御ルールに与えて生成された前記エージェントの内部状態を生成する内部状態生成部と、前記内部状態生成部で生成された前記エージェントの内部状態を記憶する第１の記憶部とを備えるシミュレータ装置が構築する仮想環境内での仮想的な行動主体であるエージェントを動作させる処理としては不整合な処理を検出する不整合処理検出装置であって、前記シミュレータ装置の処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納した第2の格納部と、前記シミュレータ装置の前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視する監視部と、前記監視部が前記不整合な処理を検出した場合、前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶する第２の記憶部を具備した事を特徴とする不整合処理検出装置を提供する。
【００１０】
又請求項７の発明は仮想環境内の初期状態を生成する機能と、エージェントの動作の処理を制御する制御ルールを格納する機能と、前記仮想環境内の状態を前記制御ルールに与えて前記エージェントの内部状態を生成する機能と、生成された前記エージェントの内部状態を記憶する機能とを備えるシミュレータが構築する前記仮想環境内での仮想的な行動主体である前記エージェントを動作処理する時の不整合な処理を検出するプログラムであって、前記シミュレータの処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納する機能と、前記シミュレータ装置の前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視する機能と、前記検出ルールに該当する不整合な前記エージェントの制御処理を検出した場合、前記不整合な処理がなされた前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶する機能とをコンピュータに実現させる事を特徴とする不整合処理検出プログラムを提供する。
【００１１】
又請求項８の発明は仮想環境内の初期状態を与えるステップと、エージェントの動作の処理を制御する制御ルールが格納するステップと、前記仮想環境内の状態を前記制御ルールに与えて生成された前記エージェントの内部状態を生成するステップと、生成された前記エージェントの内部状態を記憶するステップを備えるシミュレータが構築する前記仮想環境内での仮想的な行動主体である前記エージェントを動作処理する時の不整合な処理を検出する方法であって、前記シミュレータの処理としては不整合と見なされる前記エージェントの制御処理を検出する検出ルールを格納するステップと、前記シミュレータの前記エージェントの処理のうち前記検出ルールに該当する不整合な前記エージェントの制御処理を監視するステップと、記検出ルールに該当する不整合な前記エージェントの制御処理を検出した場合、前記不整合な処理がなされた前記エージェントの内部状態を不整合なエージェントの制御処理がされた事例として記憶するステップとを具備した事を特徴とする不整合処理検出方法を提供する。
【発明の効果】
【００１２】
本発明によれば、マルチエージェントシミュレータであっても、そのシミュレーション結果から不整合な処理を短時間で検出及び蓄積できるようにしたので、開発者の不整合処理検出作業時間を短縮可能なエージェント第２の実施形態、エージェント不整合処理検出プログラム、およびエージェント不整合処理検出方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら発明の実施の形態を詳細に説明する。ここで、互いに同一の部分には同一の符号を付して、重複説明は省略する。
【００１４】
（第１の実施形態）
図1は、本発明の第１の実施形態に係るエージェントシミュレータ及び、不整合処理検出部のブロック図を示したものである。
【００１５】
図1に示すように、第１の実施形態に係るエージェントシミュレータ装置は、エージェントシミュレータ100としての主な構成としてシミュレータ制御部1、エージェント制御ルールセット2、エージェント制御部11、およびシミュレーションの履歴（ログ）を蓄積する記憶部7を持つ。
【００１６】
シミュレータ制御部1は仮想環境内で複数のエージェントソフトウエアを処理し、動作のシミュレーションを行う上で、どれ位の時間、どのような環境で行うか等のシミュレーションの全体の流れを制御する。エージェント制御ルールセット2内には、エージェントの個々の処理を行うルール群が格納されている。エージェントは、エージェント制御ルールセット2内にあらかじめ規定されたルールに従ってエージェント制御部11によって制御される。まずシミュレータ制御部1は初期状態生成部6にエージェント制御部11に与える初期状態を生成させる。初期状態とは、環境情報、及びエージェント状態などの集合である。これら初期状態は完全な乱数から生成してもよいし、開発者が作成した初期状態の一部をシステムが自動的に変更してもよい。与えられた初期状態及びエージェント制御ルールセット2に基づいて、エージェント制御部11はエージェントを処理し、動作をシミュレートする。シミュレータ制御部1は、予め設定した回数、または時間だけシミュレーションを行う。それらシミュレーション内の環境情報やエージェントの内部状態を含めたログは、記憶部7に記憶される。シミュレータ内のエージェントは、エージェント制御ルールセット2に規定されたルールに基づいてエージェント制御部11によって制御される。
【００１７】
さらに、第１の実施形態では、エージェントシミュレータ100内に不整合な処理があったかどうかを自動的に検出するための、不整合処理検出ルールセット4、監視部3、事例記憶部5を含む不整合動作検出部110を備える。この不整合動作検出部200は、エージェントシミュレータ100と同時（並列）に動作してもよいし、エージェントシミュレータ100のシミュレーション動作が終了してから、記憶部7に保存されたシミュレーションの内部状態や環境情報等の時系列データを利用して不整合動作の検出をおこなってもよい。
【００１８】
監視部3は、エージェント制御部11によるシミュレーション、若しくはエージェントシミュレータ100の動作履歴を記憶した記憶部7を監視し、不整合処理検出ルールセット4に合致するエージェントを検出した場合、検出されたエージェントの状態、および検出時のエージェントシミュレータ100内の状態を事例記憶部5に蓄積する。蓄積されるエージェントシミュレータ内の状態として、検出時のシミュレータ内時間より少し前の状態を記録することで、後で不整合処理の回避をチェックするときに、不整合処理が発生した時点よりも前からチェックを行えるようにしてもよい。
【００１９】
図1において、エージェント制御部11はさらに、シミュレーションの仮想環境情報を表示するための環境表示UI220、エージェントの内部状態を表示するための状態表示UI210、不整合処理選択UI230およびシミュレーションの実行を制御するための制御UI200を備えることが好ましい。ここでUIはユーザインターフェースを表す。それぞれのUIは、実際にシミュレートされている情報、事例記憶部5に蓄積された情報、記憶部7に記憶された情報のいずれを参照してもよい。
【００２０】
第１の実施形態では、個々の行動主体であるエージェントが、内部状態にBelief（信念）、Desire（願望）、Intention（意図）という、仮想人格をもったBDIモデルを採用した。Belief（信念）は、エージェント自体及び、周囲の環境の状態などエージェントが認識している情報を表す。Desireは、Beliefに基づいて、エージェントが今行いたいと思っている願望（行動候補）を表す。Intentionは、生成されたDesireの中から実際に今行うと決めた意図を表す。
【００２１】
図2は、第１の実施形態に係るエージェントシミュレータで採用したＢＤＩモデルでエージェントの内部状態を生成する処理を説明するためのフローチャートである。
【００２２】
シミュレータ制御部1から、初期状態生成部6にエージェントシミュレータ内に与える初期状態の生成を行うように指示を行う（ST30）。その結果生成された初期状態からエージェント制御部11はエージェント制御ルールセット2に基づき、エージェント毎に内部状態を生成する。まず、初期状態からエージェントが環境情報として知覚するBeliefを生成する(ST31)。Beliefの組から、Desireを生成する(ST32)。Desireは、リストとして保持されその中のDesireからひとつをIntentionとして選択する。現在、当該エージェントがIntentionを保持しているか否かを判断し(ST33)、当該エージェントがIntentionを保持していないときには、生成されたDesireの中から、Intention として選択するものを選ぶ(ST36)。選択したIntention を実行するためのコマンドを出力し、エージェントを動作させるよう処理する(ST37)。エージェントが動作を行うと、仮想環境内の環境情報が変化する(ST38)。シミュレータ制御部1から、シミュレーションの停止信号があるか否かを判断し(ST39)、停止信号が無い時には、変化した環境情報から新たにBeliefおよびDesireを生成する(ST31〜ST32)。すでにIntentionを保持しているときには、今あるIntentionを変更するかどうかを判断し(ST34)、変更が必要ない場合には、そのままシミュレーションを続行し環境情報を変化させる（ST38）。また、変更が必要であると判断した時には、新たなDesireをIntentionとして選択する（ST35）。再び、選択されたIntentionを実行するような処理を行うコマンドを出力する（ST37）。以上の動作を繰り返し、シミュレータ制御部１からシミュレーションの停止信号があった場合（ST39）には、シミュレーションを停止する（ST40）。以上が、第１の実施形態に係るエージェントが内部状態を生成するステップを示したものである。複数のエージェントをシミュレータ内で処理するときには、それぞれのエージェント毎に内部状態を生成する。
【００２３】
次に、ＢＤＩモデルを採用した第１の実施形態に係るエージェントシミュレータでどのような処理が行われているかの具体的な態様を図3乃至図4を参照しつつ詳細に説明する。第１の実施形態では、仮想環境として野外環境において発生した山火事を、エージェントとして行動する村にいる人型のエージェントUI達が水場から水を汲み消火するという設定を想定したマルチエージェントシミュレーションである。
【００２４】
図3は、環境表示UI220、制御UI200の一例である。環境表示UI220は、野外環境、およびその中で動作するシミュレータ内のエージェントを具現化した人型のエージェントUI203や火等の環境情報を位置情報に則して表示する。また、制御UI200は、シミュレーションを一時停止するための制御ボタン201、今までシミュレートした任意の時点にさかのぼるためのタイムスライダ202を備える。制御ボタン201には、シミュレートをより速い速度で行うボタンなどが付加されていてもよい。制御UI200を通じて命令される開発者からの指示に応じて記憶部7から情報を読み出す。エージェントの内部状態、特に、BeliefからDesireを生成する際の生成ルールは、エージェント制御ルールセット2内に格納されており、そのルールに従ってシミュレートされる。
【００２５】
図4は、与えられた環境情報からエージェントが認識するBeliefを表す模式図である。Beliefとは、与えられた環境情報の中でエージェントが認識し内部状態として保持した情報である。それらのBeliefに対応するDesireを生成するためのルールは、エージェント制御ルールセット2内に格納されている。
【００２６】
各エージェントや火等のオブジェクトの位置情報はいくつかのグリッドに分割され、エージェントがどのグリッドにどの様な状態で存在しているかを認識し、Beliefとして各エージェントは保持している。例えば、図3に示す様に、横軸をｘ軸、縦軸をｙ軸とし、グリッド位置(x,y)と表現するとき。(3,3)にいるエージェントは、(2,3)にエージェントが4人居て、(6,2)に水場があり、(9,6)に強さ3の火があるという情報をBeliefとして認識している。
【００２７】
図5は、エージェントが保持しているBeliefからどの様にDesireが生成されるかの一例を示したものである。BDIモデルでは、与えられた環境情報から知覚するBeliefに対してあらかじめ設定した制御ルールを元にDesireを生成する。また、その場その時の行動候補であるDesireはその時のBeliefによってルールが発火したものが生成される。BDIモデルでは複数のDesireを一定期間保持し、その中から1つをIntentionとして選択する。変化する様々な状況に対応してどのDesireをIntentionとして選択するかを変化させることで各エージェントを、適切に処理し、動作させることができる。
【００２８】
例えば、図に示したように、“グリッド(x1,y1)に火があるというBelief”、及び“水の入ったバケツを持っている”というBeliefの両方をエージェントが保持している場合、エージェント制御ルールセット2に規定された制御ルールから“グリッド(x1,y1)の火を消したい”というDesireが生成される。また、同様に、“グリッド(x2,y2)に人がいる”というBeliefおよび“火の強さがｎ以上である”というBeliefの両方をエージェントが保持しているとき、“グリッド(x2,y2)の人を呼びに行きたい”というDesireが生成される。また、“水の入ったバケツを持っていない”というBelief、“グリッド(x1,y1)に火がある”というBelief、及び“グリッド(x2,y2)に水場がある”というBeliefをエージェントが保持しているとき、“グリッド(x2,y2)の水を汲みたい”というDesireが生成される。
【００２９】
以上のようにして、それぞれのエージェントはBeliefからDesireを生成する。
【００３０】
次に、エージェントは生成された複数のDesireから1つのDesireを選択し、そのDesireをIntentionとして実際に行動する。エージェントはIntentionとして選択されたDesireを解決するように動作する。選択はランダムに行ってもよいし、先述のDesireに付加された重みを用いて、最も重みの高いDesireを選択してもよい。重み付けの方法として、例えば、火の強さや、エージェントの現在位置から火までの距離などの環境情報を用いて、エージェントが対応するDesireをどれだけ望んでいるかの重みを計算することもできる。
【００３１】
例えば、図5に示されたグリッド(x1,y1)の火を消したい、というDesireをIntentionとして選択した場合、エージェントは、実際にグリッド(x1,y1)に移動しバケツの中の水を用いて火を消すという動作を行う。
【００３２】
Desireの生成、およびIntentionの選択は、一定時間毎、もしくはBeliefの変更に伴って行われる。あるIntentionを実行している間は、他のIntentionに切り替わらないように設定してもよいし、そのIntentionの備える重みよりもより高い重みをもつDesireが生成された場合は、そのDesireにIntentionを切り替えるように設定してもよい。
【００３３】
次に、本発明に係るシミュレーションにおいて不整合な処理を検出する方法の具体的な態様を、図面を参照しつつ詳細に説明する。ルールベースのBDIモデルを利用したシミュレーションにおいて、不整合なエージェント処理が行わないような適切なエージェント制御ルールセット2を作成する必要がある。不整合な処理事例を容易に検出する事で、適切な制御ルールを作成する支援をすることが可能である。
【００３４】
図6及び図7を参照し不整合な処理検出ルールセット4内でエージェントが不整合な処理を行ったと判断するルールを制定する方法の一例を詳細に説明する。
【００３５】
図6は、エージェントの不整合処理検出ルールセット4内の不整合処理検出ルールを制定するステップを示した図である。まず、シミュレータ制御部1にシミュレーションを開始する命令をする。初期状態生成部6でエージェントシミュレータ内に与える初期状態を生成し（ST1）、シミュレータを実際に動作させる。エージェント制御部11は、エージェント制御ルールセット2に規定されたルールに従ってエージェントを制御する。環境表示UI220、制御UI200等でエージェントを監視し、不整合と見なす処理が実行されていないかを監視する（ST2）。不整合処理を確認すると（ST3）、シミュレータを一時停止させる（ST4）。これらのシミュレータの動作制御は、制御UI200等を使用してもよい。そして、不整合処理を行ったエージェントをクリックなどで選択することにより、状態表示UI210を開く（ST5）。エージェントは、内部にBelief、Desire、Intentionという内部状態を保持してエージェントおり、状態表示UI210にエージェントの内部状態が表示される。それらの内部状態の組を不整合な処理と見なすルールを設定し、不整合処理検出ルールセット4内に保持させる（ST6）。検出時の環境情報でシミュレーションを続行するか否かを選択し、続行する場合は再びシミュレータを動作させ（ST2）、初期状態を変更する場合には、初期状態を再び生成させ（ST1）シミュレータを動作させる。シミュレーションの結果不整合な処理が検出されなかった場合または開発者が不整合処理を十分検出したと判断した場合（ST8）、シミュレーションを終了する。
【００３６】
図7は、エージェントの不整合処理検出ルールセット4を設定する方法の（ST6）の一例を示した図である。ST3で不整合処理として開発者が確認した特定のエージェントは、前述の状態表示UI210でその内部状態が表示される。(a)(b)はそれぞれ異なるケースで不整合処理の設定を行っている。
【００３７】
（a）(b)共に上図は、環境表示UI220上に表示されている、不整合な処理と見なされた特定のエージェントをポイント又はクリックした際に表示される状態表示UI210の一例である。不整合処理選択UI230は、状態表示UI210に表示されたそれぞれの内部状態に対して、選択を行うチェックボックス及び不整合処理検出ルール設定ボタンを設けている。開発者が不整合だと認識する内部状態に対応したチェックボックスにチェックし、不整合処理検出ルール設定ボタンを押すことで、不整合処理検出ルールとして設定される。
【００３８】
また、（a）(b)共に下図は上図の状態表示UI210チェックされた内部状態の組が不整合処理検出ルールとして不整合処理検出ルールセット4内に設定される内容を示した図である。
【００３９】
図7(a)の状態表示UI210に示すように、水の入ったバケツを持っているというBeliefを持ち、かつ人を呼びに行きたいというDesireをエージェントが持つ、というエージェントの内部状態の組み合わせが生成されている。この場合、エージェントが水の入ったバケツを持っているというBeliefを保持した時に、バケツを用いて消火活動を行いたいというDesireを生成する処理を行って欲しい、と本来開発者が想定している場合、不整合な処理がされたといえる。開発者は、それらの不整合な内部状態に対応する不整合処理選択UI230のチェックボックスにチェックした後に、不整合処理検出ルール設定ボタンを押すことによってチェックした組み合わせの内部状態を持つエージェントの出現を不整合処理とみなす、不整合処理検出ルールセット4を設定することができる。
【００４０】
また図7の状態表示UI210(b)に示すように、設定している野外環境で、環境の端のグリッド(10, 10)から水を汲むという動作は効率の面で不適切なので、そのようなIntentionをエージェントが持ったら、不整合処理と考えられる。それらの不整合な内部状態に対応する不整合処理選択UI230のチェックボックスにチェックした後に、不整合処理検出ルール設定ボタンを押すことによって、チェックした組み合わせの内部状態を持つエージェントを不整合な処理によって動作していると監視部3が見なすための不整合処理検出ルールセット4を設定することができる。
【００４１】
これらの内部状態をエージェントが保持した場合、そのエージェントは不整合な処理によって動作していると監視部3に見なされる。
【００４２】
チェックボックスで指定されたエージェントの状態を不整合処理ルールに設定する場合、特定のグリッドに関するBeliefのみを対象とするか、グリッドの位置にかかわらずある種類のBelief全体を対象とするかを選択することができる。また、不整合処理と見なすエージェントの内部状態はBelief - Desire - Intention全ての組み合わせである必要はない。Desire -Intentionの組み合わせや、Belief、Desire、Intentionのうちいずれか一つであっても構わない。
【００４３】
選択は不整合処理ルール設定ボタンを押したときにダイアログで開発者に問い合わせてもいいし、グリッド位置に関する設定を含めるかどうかのチェックボックスを、状態表示UI210の各エージェント状態の横に設置しても、表示されたエージェント状態のグリッドに関する記述部分をクリックすることでその情報を含めるか否かが切り替わるようなUIを備えていてもよい。
【００４４】
また、状態表示UI210以外のUIから、直接不整合処理ルールを設定可能なUIを備えていてもよい。
【００４５】
状態表示UI210において表示されたエージェントの内部状態のうち、開発者が想定していない状態の組み合わせを設定することで、シミュレータ中で発生する不整合処理を検出し、不整合処理検出ルールを設定することができる。
【００４６】
次に、生成された不整合処理検出ルールセット4から事例記憶部5が不整合処理事例の蓄積を行うステップを、図8を参照しつつ詳細に説明する。
【００４７】
図8は、監視部3が不整合処理検出ルールセット4を元に、エージェントの不整合処理の事例記憶部5への蓄積を行うステップを表したものである。
【００４８】
シミュレータ制御部1が初期状態生成部6にエージェント制御部11に与える初期状態を生成するよう命令を送る（ST11）。その後、シミュレータ制御部1がエージェント制御部11にシミュレートの開始を指示し、シミュレートが開始される（ST12）。監視部3は、実際に動作しているシミュレータ内のエージェント群、若しくは記憶部7に記憶されたシミュレータの履歴の監視を行い、不整合処理検出ルールセット4内のルールに合致するエージェントが存在した場合（ST13）、不整合処理事例として事例記憶部5に蓄積を行う（ST14）。一度不整合処理を起こしたエージェントに対しては、今後、もしくはその後一定時間、不整合処理の収集対象とならないというようにしてもよい。あらかじめ開発者が設定した、シミュレート環境内の設定時間分だけシミュレーションを行った後（ST15）、シミュレータ制御部1はシミュレータを停止する。あらかじめ開発者が設定した初期状態設定回数分すでに初期状態設定およびその初期状態からの不整合処理収集を行った場合は終了し、そうでない場合は再び初期状態の生成を行う（ST16）。規定しただけ、シミュレートした場合には、シミュレーションを停止する。
【００４９】
図9は、第１の実施形態に係る不整合処理選択UI230の一例を示した図である。
【００５０】
不整合処理選択UI230には事例記憶部5に蓄積された不整合処理がリスト表示される。具体的には、それぞれの不整合処理に対して、その処理が発生した環境表示UI220のスナップショット、不整合処理をおこしたエージェントの情報、具体的にはそのIDや位置に関する情報、および不整合処理検出ルールセット4に合致したエージェントの内部状態が表示される。それぞれの不整合処理に対して、不整合処理回避割合を算出する際の対象とするか否かを設定するためのチェックボックスを備える。開発者は不整合処理選択UI230を用いて、収集された不整合とされる処理のうち、実際に修正する必要がある事例を選択することができる。
【００５１】
図9の例の場合、エージェントNo.21の事例は、エージェントがバケツを持ったまま人を呼ぼうとしているが、火の位置が水場から遠く、かつ呼びに行く人のいる場所と火の位置が十分近いため、人を呼んだ後に消火を行っても動作としては不自然でないと開発者は考え、チェックされていない。
【００５２】
開発者は、不整合処理選択UI230によって不整合処理を選択した後、その不整合処理を回避するべく、エージェント制御ルールセット2の修正を行う。この例の場合、人を呼びに行くDesireを導出するルールに、バケツを持っていて、呼びに行く人のいる場所と火の距離が遠い場合は、そのDesireを算出しないようエージェント制御ルールセット2を修正する。開発者がエージェント制御ルールセット2を編集するための図示しない制御ルール編集UIを備えてもよい。
【００５３】
不整合処理を確認するために、不整合処理選択UI230で選択された不整合処理が起きた際の環境表示UI220、制御UI200に移行するためのUIを備えていてもよい。また、ルールの修正を支援するために、不整合処理選択UI230で選択された不整合処理を発生させたエージェント制御ルールセット2内のルール群を表示するためのUIを備えていてもよい。
【００５４】
また、不整合処理選択UI230で選択した内部状態をもったエージェントを排除する、またはそのエージェントの内部状態をクリアする等の処理を行い、シミュレータの実稼働時に不整合処理を行うエージェントを抑制する機能をエージェント制御部11に設定してもよい。それにより、エージェント制御ルールセット2を修正せずに不整合処理を行うエージェントを抑制することが可能である。
【００５５】
エージェントの内部状態をクリアするとは、不整合処理ルールに適合するBelief、Desire、Intentionをクリアすることを意味する。Intentionをクリアする場合は、対応するDesireも同時にクリアされる。特定のDesireやIntentionをクリアすることで、クリアされたDesireの次に重みが高いDesireがIntentionとして選ばれる。また、Beliefをクリアすることにより、生成されるDesireが変化する。
【００５６】
また、事例記憶部5に蓄積された不整合処理事例から再び不整合処理検出ルールセット4を作成する機能を設けてもよい。
【００５７】
第１の実施形態にエージェントシミュレータ及び、不整合処理検出部では、シミュレーション結果から不整合な処理を短時間で検出及び蓄積できるようにしたので、開発者の不整合処理検出作業時間を短縮することが可能である。
【００５８】
本実施の形態にかかるエージェントシミュレータ及び、不整合処理検出部で実行されるプログラムは、上述した各機能を含むモジュール構成となっている。プログラムはインストール可能な形式又は実行可能な形式のファイルでCD-ROM、フロッピー（Ｒ）ディスク、CD−R、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供しても、ROM等に予め組み込んで提供してもよい。
【００５９】
また、エージェントシミュレータ及び、不整合処理検出部がコンピュータ上に一体に構成されてもよい。
【００６０】
（第２の実施形態）
図１０は第２の実施形態に係るに係るエージェントシミュレータ及び、不整合処理検出部のブロック図を示したものである。
【００６１】
図10は修正したエージェント制御ルールセット2による不整合処理の発生割合を算出する構成の一例を示した機能ブロック図である。主な構成として、複数のエージェント制御ルールセット2及び、当該エージェント制御ルールセット2に対応する不整合な処理事例を蓄積する複数の事例記憶部5を有する。
【００６２】
割合算出部300では、規定した分だけシミュレートされ、不整合処理事例の事例記憶部5への蓄積が十分なされたと判断した後に、シミュレートを行った回数および、発生した不整合処理のカウントを用いて、それぞれのエージェント制御ルールセット2で不整合処理が発生した割合を割合算出部300で算出し、その算出結果を割合表示UI240を用いて開発者に対する表示を行う。
【００６３】
図11は、複数の制御ルールで不整合な処理が発生する割合を算出するフローを示した図である。
【００６４】
まず、動作させる制御ルールを選択する（ST20）。その後、初期状態生成部6でシミュレータ内のエージェントを含めた環境情報の初期状態を生成させる（ST21）。その後、シミュレーションを開始する（ST22）。監視部3は、不整合処理検出ルールセット4内に規定された不整合処理検出ルールに合致する不整合と見なされるエージェントのシミュレータ内の処理が検出されると（ST23）、不整合処理として事例記憶部5に蓄積する（ST24）。あらかじめ設定した時間だけ同じ初期状態でシミュレートする（ST25）。次に設定回数だけ初期状態を生成してシミュレートしたか判断し、もし回数が満ちていないならば、もう一度初期状態を生成させる（ST27）。あらかじめ設定しただけシミュレーションを行ったと判断した後、その外に、まだシミュレーションを行っていない制御ルールがあるかどうかを判断する。他に、まだシミュレーションを行っていない制御ルールがある場合、他の制御ルールをもちいてシミュレーション及び不整合処理の検出・蓄積動作を繰り返す（ST28）。シミュレートすべき制御ルールすべてでシミュレーションが行われたと判断した後、ST24で蓄積した不整合処理事例の数を、制御ルール毎に算出し、不整合処理が行われる割合を算出する（ST29）。
【００６５】
エージェント制御ルールの修正および不整合処理回避割合の確認を繰り返すことで、制御ルールを変更に伴う不整合動作の発生割合をそれぞれ評価する事が可能となる。それらの評価結果を元に開発者は、不整合処理を起こす確率の少ないエージェント制御ルールセット2を作成することができる。
【００６６】
ST24では、不整合処理であると検出された状態での仮想環境内の環境情報や、不整合処理と検出されたエージェントの内部状態を貯蓄してもよい。また、不整合処理が行われたことのみをカウントして事例記憶部5に貯蓄し、その不整合処理の回数を元に割合算出部300は不整合処理発生割合を算出してもてもよい。第２の実施形態に係る、エージェントシミュレータ及び、不整合処理検出部では、作成された複数のエージェント制御ルールセット2の評価を行う機構となっておいる。前述の通り、ルールベースのシステムでは、ルールがどの様に発火するのか予想し辛く、制御ルールを修正する事で、他の不整合処理が発生する確率が上がってしまう可能性もある。その為、修正したルールを評価するために、複数の制御ルールに基づいてシミュレーションを行い、不整合処理検出ルールセットにその結果によって制御ルールの妥当性を評価する。その際に、作成された複数のエージェント制御ルールセット2ごとに不整合処理が起こる確率を算出することで評価する。
【図面の簡単な説明】
【００６７】
【図１】本発明の第１の実施形態のブロック図
【図２】ＢＤＩモデルでエージェントの内部状態を生成する処理を示すフローチャート。
【図３】シミュレータ環境表示、制御UIの一例を示した図。
【図４】エージェントが認識してBeliefとして保持している環境の状態を表す模式図。
【図５】エージェント状態表示UIの一例を示した図。
【図６】不整合処理検出ルールを規定する動作を示すフローチャート。
【図７】不整合処理検出ルールセットの一例を示した図。
【図８】事例記憶部が不整合処理事例の蓄積を行う動作を示すフローチャート。
【図９】不整合処理選択UIの一例を示した図。
【図１０】本発明の第２の実施形態のブロック図。
【図１１】不整合処理発生割合の算出を行う動作を示すフローチャート。
【符号の説明】
【００６８】
1  シミュレータ制御部
2  エージェント制御ルールセット
3  監視部
4  不整合処理検出ルールセット
5  事例記憶部
6  初期状態生成部
7  記憶部
11  エージェント制御部
100  エージェントシミュレータ
110  不整合処理検出部
200  制御UI
201  制御ボタン
202  タイムスライダ
203  エージェントUI
210  状態表示UI
220  環境表示UI
230  不整合処理選択UI
240  割合表示UI
300  割合算出部
【図１】
2009151634.tif 000003
【図２】
2009151634.tif 000004
【図３】
2009151634.tif 000005
【図４】
2009151634.tif 000006
【図５】
2009151634.tif 000007
【図６】
2009151634.tif 000008
【図７】
2009151634.tif 000009
【図８】
2009151634.tif 000010
【図９】
2009151634.tif 000011
【図１０】
2009151634.tif 000012
【図１１】
2009151634.tif 000013