(57)【要約】  【課題】  近傍の定義と抽出を容易にするマルチエージェントシミュレーション作成プログラム、マルチエージェントシミュレーション作成装置、マルチエージェントシミュレーション作成方法を提供する。  【解決手段】  マルチエージェントシミュレーションを作成するマルチエージェントシミュレーション作成プログラムであって、近傍クラスの定義の雛形である近傍雛形クラス、または予め定義された近傍クラスを提供し、近傍クラスの定義を支援する近傍定義ステップＳ１１，Ｓ１２，Ｓ１３と、エージェントクラスの定義の雛形であるエージェント雛形クラスを提供し、エージェントクラスの定義を支援するエージェント定義ステップＳ２１と、モデルクラスの定義の雛形であるモデル雛形クラスを提供し、モデルクラスの定義を支援するモデル定義ステップＳ３１とをコンピュータに実行させる。  【選択図】  図２
2006331157.tif 000002
【特許請求の範囲】
【請求項１】
複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法をコンピュータに実行させるマルチエージェントシミュレーション作成プログラムであって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップと、
をコンピュータに実行させるマルチエージェントシミュレーション作成プログラム。
【請求項２】
請求項１に記載のマルチエージェントシミュレーション作成プログラムにおいて、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理ステップをコンピュータに実行させることを特徴とするマルチエージェントシミュレーション作成プログラム。
【請求項３】
請求項１に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするマルチエージェントシミュレーション作成プログラム。
【請求項４】
請求項２に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されていることを特徴とするマルチエージェントシミュレーション作成プログラム。
【請求項５】
請求項１乃至請求項４のいずれかに記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェントクラスは、属性として座標を持つことを特徴とするマルチエージェントシミュレーション作成プログラム。
【請求項６】
請求項５に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするマルチエージェントシミュレーション作成プログラム。
【請求項７】
複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成装置であって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義部と、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義部と、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義部と、
を備えてなるマルチエージェントシミュレーション作成装置。
【請求項８】
請求項７に記載のマルチエージェントシミュレーション作成装置において、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理部を備えることを特徴とするマルチエージェントシミュレーション作成装置。
【請求項９】
複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法であって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップと、
を実行するマルチエージェントシミュレーション作成方法。
【請求項１０】
請求項９に記載のマルチエージェントシミュレーション作成方法において、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理ステップを実行することを特徴とするマルチエージェントシミュレーション作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションのプログラム作成を行うマルチエージェントシミュレーション作成プログラム、マルチエージェントシミュレーション作成装置、マルチエージェントシミュレーション作成方法に関するものである。
【背景技術】
【０００２】
近年、経済学をはじめとする社会科学分野において様々な社会現象をシミュレートするために、マルチエージェントシミュレーションが用いられるようになった。マルチエージェントシミュレーションとは、エージェント同士が相互作用を繰り返し、これにより引き起こされるマクロな現象をシミュレートするものである。例えば、狭い建物内に配置した複数の人間を表すエージェントを定義し、緊急時の人間の避難状況をシミュレートする場合や、交差点内に配置した複数の車を表すエージェントを定義し、渋滞発生と緩和をシミュレートする場合などがある。
【０００３】
マルチエージェントシミュレーションのプログラムの作成において、エージェントや環境をどう定義すれば良いか、複数のエージェントをどう行動させれば良いか、最終的なエージェントや環境の変化をどう出力すれば良いか、など、マルチエージェントシミュレーション独自のアルゴリズムに関する知識がユーザに要求される。
【０００４】
このようなユーザの負担を軽減するための従来のマルチエージェントシミュレーションの作成ツールとして、ライブラリを用いるツールとＧＵＩ（Graphical User Interface）を用いるツールがある。
【０００５】
ライブラリを用いるツールは、マルチエージェントシミュレーションの作成に必要な関数やクラスをまとめたライブラリを提供するものである。ユーザは、提供されたライブラリを利用してプログラムを実装することにより、プログラム作成の時間を短縮できる。
【０００６】
一方、ＧＵＩを用いるツールは、ＧＵＩを用いることにより、初心者でもモデル構築を行うことができる。このツールでは、どのようなエージェントをどのような空間に配置するかを表すモデルの初期状態の定義と、ステップ毎のエージェントの行動ルールや環境の変化のルールを記述するだけで、シミュレーションのモデル構築が完了する。また、このツールには典型的な行動ルールのための関数が用意されていることから、ユーザは容易にエージェントの行動ルールを定義できる。
【０００７】
なお、本発明の関連ある従来技術として、例えば、下記に示す特許文献１が知られている。このマルチエージェント・シミュレーションシステムは、複数のエージェントの動作が互いに矛盾する場合に、動作間の矛盾を引き起こしたプログラムを容易に検出可能にするものである。
【特許文献１】特開平５−２３３０５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述したライブラリを利用する場合、ライブラリで提供された関数やクラスをどう組み合わせればシミュレーションを作成できるか、など、ライブラリについての知識と経験がユーザに要求される。特に、社会科学の分野の研究者など、プログラミングの専門家でない研究者がシミュレーションを行う場合、ライブラリの知識を習得するための時間が必要となることから、結果的にシミュレーションの作成の時間を短縮することは難しくなる。
【０００９】
また、マルチエージェントシミュレーションにおいて、エージェントが他のエージェントと相互作用する際に、全エージェントの中から近傍のエージェントである近傍エージェントを抽出し、相互作用の対象とするモデルが多い。つまり、あるエージェントは、近くのエージェントから強く影響を受け、遠くのエージェントからあまり影響を受けない。従来のツールにおいて、空間を定義するためのライブラリは多数提供されているが、近傍エージェントの抽出や処理のための関数は提供されないことが多く、ユーザが近傍エージェントの抽出や処理のための関数のコーディングを行う必要があった。
【００１０】
また、近傍のエージェントの抽出や処理のための関数が提供されている場合でも、近傍の定義は固定であった。例えば、２次元空間上の上下左右の距離が所定の範囲内であるものを近傍とする、といった定義である。ここで、空間の軸に対応する属性値はユーザにより定義可能であるが、空間の次元数は２次元と限定されており、他の属性値を組み合わせて３次元にするなどの定義はできない。また、上下左右の距離の範囲はユーザにより定義可能であるが、全ての軸の範囲が１つの変数で表されており、軸毎に異なる範囲を定義することはできない。そこで、属性値を組み合わせて空間を３次元にする場合や、軸毎に異なる範囲を持つ近傍を定義する場合には、ユーザが近傍エージェントの抽出や処理のための関数のコーディングを行う必要があった。
【００１１】
ここで、従来のマルチエージェントシミュレーション作成装置によるモデル構築について説明する。
【００１２】
図１４は、従来のマルチエージェントシミュレーション作成装置の構成の一例を示すブロック図である。このマルチエージェントシミュレーション作成装置は、ライブラリとして、モデル構築部１０１、シミュレーション制御部２を備える。モデル構築部１０１は、空間定義部１１１、エージェント定義部１１２、モデル定義部１１３を備える。モデル構築部１０１は、ユーザの指示に従ってマルチエージェントシミュレーションのモデルを構築し、シミュレーション制御部２は、このモデルを用いてマルチエージェントシミュレーションの実行を行う。
【００１３】
図１５は、従来のマルチエージェントシミュレーション作成装置におけるモデル構築の動作の一例を示すフローチャートである。まず、空間定義部１１１は、ユーザによる空間の種類の選択と、空間の大きさの指定に従って、空間を定義する（Ｓ２１１）。次に、エージェント定義部１１２は、ユーザによるエージェントの属性と行動ルールの記述に従って、エージェントを定義する（Ｓ２１２）。次に、モデル定義部１１３は、ユーザによるエージェントの生成の記述と１ステップ分の計算の記述に従って、モデルを定義し（Ｓ２１３）、このフローを終了する。
【００１４】
処理Ｓ２１２の行動ルールの記述において、エージェント定義部１１２は、ユーザの指示に従って、近傍エージェントの抽出や処理を行う関数を選択し、この関数が用いる空間として空間定義部１１１で決定された空間を選択し、これらの関数を用いて近傍エージェントとの相互作用を記述する。
【００１５】
また、ツールにより提供された近傍エージェントの抽出の関数は固定であることから、この関数で近傍エージェントを抽出しきれない場合、更に、近傍エージェントを再抽出する処理を実装しなければならない。
【００１６】
図１６は、従来のマルチエージェントシミュレーション作成装置においてユーザが記述すべき近傍エージェント再抽出処理の動作の一例を示すフローチャートである。まず、全てのエージェントについて抽出の判定を行ったか否かの判断を行う（Ｓ２２１）。全てのエージェントについて抽出の判定を行った場合（Ｓ２２１，Ｙ）、このフローを終了する。一方、抽出の判定を行っていないエージェントがある場合（Ｓ２２１，Ｎ）、判断を行っていないエージェントから１つを選択する（Ｓ２２２）。次に、選択されたエージェントについて抽出の条件を全て満たすか否かの判断を行う（Ｓ２２３）。全ての条件を満たす場合（Ｓ２２３，Ｙ）、近傍エージェントとして抽出し、近傍エージェントに対する処理を行い（Ｓ２２４）、処理Ｓ２２１へ戻る。一方、いずれかの条件を満たさない場合（Ｓ２２３，Ｎ）、処理Ｓ２２１へ戻る。
【００１７】
また、ツールにより提供された近傍エージェントの抽出の関数を用いることができない場合も、全てのエージェントについて全ての近傍の条件を調べるような処理を、ユーザが実装しなければならない。
【００１８】
本発明は上述した問題点を解決するためになされたものであり、近傍の定義と判定を容易にするマルチエージェントシミュレーション作成プログラム、マルチエージェントシミュレーション作成装置、マルチエージェントシミュレーション作成方法を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上述した課題を解決するため、本発明は、複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法をコンピュータに実行させるマルチエージェントシミュレーション作成プログラムであって、あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップとをコンピュータに実行させるものである。
【００２０】
また、本発明に係るマルチエージェントシミュレーション作成プログラムにおいて、更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理ステップをコンピュータに実行させることを特徴とするものである。
【００２１】
また、本発明に係るマルチエージェントシミュレーション作成プログラムにおいて、前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするものである。
【００２２】
また、本発明に係るマルチエージェントシミュレーション作成プログラムにおいて、前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されることを特徴とするものである。
【００２３】
また、本発明に係るマルチエージェントシミュレーション作成プログラムにおいて、前記エージェントクラスは、属性として座標を持つことを特徴とするものである。
【００２４】
また、本発明に係るマルチエージェントシミュレーション作成プログラムにおいて、前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするものである。
【００２５】
また、本発明は、複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成装置であって、あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義部と、エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義部と、前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義部とを備えたものである。
【００２６】
また、本発明に係るマルチエージェントシミュレーション作成装置において、更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理部を備えることを特徴とするものである。
【００２７】
また、本発明に係るマルチエージェントシミュレーション作成装置において、前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするものである。
【００２８】
また、本発明に係るマルチエージェントシミュレーション作成装置において、前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されることを特徴とするものである。
【００２９】
また、本発明に係るマルチエージェントシミュレーション作成装置において、前記エージェントクラスは、属性として座標を持つことを特徴とするものである。
【００３０】
また、本発明に係るマルチエージェントシミュレーション作成装置において、前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするものである。
【００３１】
また、本発明は、複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法であって、あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップとを実行するものである。
【００３２】
また、本発明に係るマルチエージェントシミュレーション作成方法において、更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理ステップを実行することを特徴とするものである。
【００３３】
また、本発明に係るマルチエージェントシミュレーション作成方法において、前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするものである。
【００３４】
また、本発明に係るマルチエージェントシミュレーション作成方法において、前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されることを特徴とするものである。
【００３５】
また、本発明に係るマルチエージェントシミュレーション作成方法において、前記エージェントクラスは、属性として座標を持つことを特徴とするものである。
【００３６】
また、本発明に係るマルチエージェントシミュレーション作成方法において、前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするものである。
【発明の効果】
【００３７】
本発明によれば、種類の異なる属性値を軸とする空間において近傍を定義することにより、近傍の定義や抽出が容易になる。また、近傍のサイズと近傍判定関数を含む近傍クラスを用いて近傍エージェントの抽出を行うことにより、近傍の定義を変更する場合でも近傍クラスを変更するだけで良く、近傍エージェントの抽出の関数を書き換える必要はない。
【発明を実施するための最良の形態】
【００３８】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００３９】
本実施の形態においては、オブジェクト指向言語とそのライブラリを用いてマルチエージェントシミュレーションのプログラム作成を行うマルチエージェントシミュレーション作成装置について説明する。
【００４０】
まず、本発明に係るマルチエージェントシミュレーション作成装置の構成について説明する。
【００４１】
図１は、本発明に係るマルチエージェントシミュレーション作成装置の構成の一例を示すブロック図である。図１において、図１４と同一符号は図１４に示された対象と同一又は相当物を示しており、ここでの説明を省略する。図１４と比較すると図１は、モデル構築部１０１の代わりにモデル構築部１を備える。また、モデル構築部１０１と比較するとモデル構築部１は、エージェント定義部１１２の代わりにエージェント定義部１２を備え、モデル定義部１１３の代わりにモデル定義部１３を備え、新たに近傍定義部１４、エージェント管理部１５を備え、空間定義部１１１を必要としない。
【００４２】
エージェントの属性と行動ルールを実装するための雛形となるエージェント雛形クラスをエージェント定義部１２が提供することにより、ユーザはエージェント雛形クラスを継承してエージェントクラスの実装を容易に行うことができる。また、オブジェクトの生成や１ステップ分の計算を実装するためのモデルクラスの雛形となるモデル雛形クラスをモデル定義部１３が提供することにより、ユーザはモデル雛形クラスを継承してモデルクラスを容易に実装することができる。
【００４３】
また、近傍のサイズを表す変数や近傍を判定するための近傍判定関数を実装するための雛形となる近傍雛形クラスを近傍定義部１４が提供することにより、ユーザは近傍雛形クラスを継承して近傍クラスの実装を容易に行うことができる。更に、近傍定義部１４は、予め近傍雛形クラスを継承して典型的な近傍の条件が実装された近傍クラスを提供することにより、ユーザは近傍クラスを選択するだけで典型的な近傍の条件を用いることができる。エージェント管理部１５は、近傍エージェントの抽出や抽出された近傍エージェントの処理を行う近傍エージェント処理関数を提供することにより、ユーザはエージェント雛形クラスを継承して実装するエージェントクラスにおいて、エージェントの行動ルールを容易に定義できる。
【００４４】
次に、本発明に係るマルチエージェントシミュレーション作成装置におけるモデル構築の動作について説明する。
【００４５】
図２は、本発明に係るマルチエージェントシミュレーション作成装置におけるモデル構築の動作の一例を示すフローチャートである。まず、近傍定義部１４は、ユーザの指示に従って、ユーザ定義の近傍クラスを定義するか否かの判断を行う（Ｓ１１）。ユーザ定義の近傍クラスを定義しない場合（Ｓ１１，Ｎ）、処理Ｓ１３へ移行する。一方、ユーザ定義の近傍クラスを定義する場合（Ｓ１１，Ｙ）、近傍定義部１４は、近傍雛形クラスに基づいて、近傍のサイズと、ある座標が中心座標の近傍であることを判定する近傍判定関数をユーザに実装させることにより、ユーザ定義の近傍クラスを定義し（Ｓ１２）、処理Ｓ１３へ移行する。近傍定義部１４は、定義済みの近傍クラスからユーザに選択させることにより、モデルに使用する近傍クラスを決定する（Ｓ１３）。
【００４６】
次に、エージェント定義部１２は、エージェント雛形クラスに基づいて、エージェントの属性と行動ルールをユーザに実装させることにより、エージェントクラスを定義する（Ｓ２１）。次に、エージェント管理部１５は、エージェント管理クラスをユーザに提示する（Ｓ２２）。
【００４７】
次に、モデル定義部１３は、モデル雛形クラスに基づいて、オブジェクトの生成と、１ステップ分の計算についてユーザに実装させることにより、モデルクラスを定義し（Ｓ３１）、このフローを終了する。ここで、オブジェクトの生成は、エージェントクラスやエージェント管理クラスについて行われる。
【００４８】
モデル構築の処理Ｓ２１におけるエージェント定義部１２は、エージェント管理部１５を通して処理Ｓ１３で決定された近傍クラスを用いて近傍の判定を行う。例えば、エージェント管理部１５により提供された近傍エージェント処理関数が、ユーザに選択された近傍クラスを用いて近傍の判定を行うことにより近傍エージェントを抽出し、抽出した近傍エージェントの処理を行うことにより、近傍エージェントを用いた行動ルールを実装することができる。
【００４９】
従って、従来の近傍エージェント処理関数で近傍エージェントが抽出しきれないような場合であっても、本発明によれば、ユーザは図１６に示したようなエージェントの再抽出の処理を実装することなく、近傍クラスの定義のみを行えばよい。同様に、従来の近傍エージェント処理関数に含まれていた近傍の定義と異なる近傍の定義が必要となる場合であっても、本発明によれば、近傍エージェント処理関数を実装し直すことなく、処理Ｓ１３において近傍クラスの定義のみを行えばよい。
【００５０】
次に、本発明に係るマルチエージェントシミュレーション作成装置により作成されたマルチエージェントシミュレーションの例であるシナリオ１、シナリオ２について説明する。
【００５１】
まず、シナリオ１について説明する。シナリオ１は、市町村の合併について、市民が他人の影響を受けて意見を変える様をシミュレートするモデルである。
【００５２】
ここで、シナリオ１のモデル構築について説明する。モデル構築の処理Ｓ１２において、ユーザは、近傍雛形クラスを継承し、ユーザ定義の近傍クラスである近傍定義情報を定義する。また、モデル構築の処理Ｓ２１において、ユーザは、エージェント雛形クラスを継承したエージェントクラスである市民を定義する。また、モデル構築の処理Ｓ３１において、ユーザは、モデル雛形クラスを継承したモデルクラスであるモデルを定義する。このモデルにおいて、ユーザは、エージェント管理オブジェクトである市役所を生成する。
【００５３】
ここで、エージェントクラスである市民の定義について説明する。図３は、本発明に係るシナリオ１の市民の定義の一例を示す図である。この図では、クラスの定義として、属性と操作を表す。
【００５４】
まず、ユーザは、市民の属性を定義する。ここで、ユーザは、市民の独自の属性として、住所、年齢、市町村合併に対する意見を定義する。住所は［ｘ，ｙ］で表され、意見は「賛成」、「反対」、「どちらでもない」のいずれかの値を取る。更に、エージェントクラスの共通の属性である座標として、上述した住所と年齢を設定する。すると、第１軸を住所のｘ座標、第２軸を住所のｙ座標、第３軸を年齢とする空間が自動的に定義され、市民はこの空間に配置されることになる。従来のモデル構築では、処理Ｓ２１１のようにユーザが予め空間を定義する必要があった。
【００５５】
次に、ユーザは、市民のステップ毎の行動ルールを実装する。行動ルールとして、市民は、市町村合併に対する世論の動向を知るために、全ての市民を管理するエージェント管理クラスである市役所に問い合わせる機能が実装される。更に、市役所から返された近傍市民の意見の調査結果に従って意見を変更する機能が実装される。調査結果において、賛成が最も多い場合、市民は自分の意見を賛成に変更し、反対が最も多い場合、市民は自分の意見を反対に変更する。賛成でも反対でもない近傍市民が最も多い場合、市民は意見を変更しない。
【００５６】
次に、ユーザ定義の近傍クラスである近傍定義情報の定義について説明する。図４は、本発明に係るシナリオ１の近傍定義情報の定義の一例を示す図である。シナリオ１における近傍市民は近所の同年代の市民であり、ユーザはこの近傍市民を抽出するための近傍定義情報を定義する。まず、ユーザは、近傍定義情報の属性である近傍のサイズとして、住所を表すｘｙ平面上の半径ｒと、年齢差の最大値ｄを設定する。次に、ユーザは、近傍定義情報の操作として、近傍判定関数を定義する。この近傍判定関数は、対象とする市民の住所がｘｙ平面上で自分の住所を中心とした半径ｒの円内の住所を持ち、かつ自分との年齢差がｄ以下である場合、対象とする市民が自分の近傍市民であると判定する。図５は、本発明に係るシナリオ１のマルチエージェントシミュレーションにおける近傍の範囲を示す図である。この場合、空間は住所と年齢からなる３次元空間であり、近傍の範囲は図のように対象となる市民を中心とした円柱形で表される。
【００５７】
ここで、平面上で自分を中心とした半径ｒの円内を近傍とする近傍定義情報は、よく使われることから、予め近傍クラスとして用意されていても良い。
【００５８】
次に、エージェント管理クラスである市役所の属性と機能について説明する。図６は、本発明に係るシナリオ１とシナリオ２のマルチエージェントシミュレーションにおける市役所の属性と機能の一例を示す図である。市役所は、属性として全市民を登録したリストを持ち、問い合わせてきた市民に対する近傍市民を全市民から抽出する機能、近傍市民の意見を集計する機能、調査した近傍市民の意見の中で最も多い意見を調査する機能を持つ。また、市役所による近傍市民の抽出において、上述した近傍の定義が用いられる。
【００５９】
次に、モデルクラスであるモデルの定義について説明する。図７は、本発明に係るシナリオ１のマルチエージェントシミュレーションにおけるモデルの定義の一例を示す図である。モデルは、属性において、エージェント管理を行うものとして市役所を指定する。また、モデルは、初期化として、全市民を生成する機能が実装され、１ステップ分の計算として、各市民に行動させる機能が実装される。
【００６０】
図８は、本発明に係るシナリオ１のマルチエージェントシミュレーションにおける１市民の１ステップの動作を示すシーケンス図である。まず、ある市民ｃは、市役所に対して自分の住所と年齢からなる座標を渡し、近傍市民の意見の問い合わせを行う（Ｔ１１）。次に、市役所は、市民ｃの他の市民ｃｉ（ｉは１から市民数までの整数）を選択し、近傍定義情報に対して市民ｃｉが市民ｃの近傍であるか否かの問い合わせを行う（Ｔ１２）。次に、近傍定義情報は、市民ｃｉが市民ｃの近傍であるか否かの判定を行い（Ｔ１３）、判定結果を市役所へ渡す（Ｔ１４）。市役所は、ｉを１から市民数まで変えながら、処理Ｔ１２〜Ｔ１４を繰り返す（Ｔ１５）。ｉが市民数になると、市役所は、近傍と判定された市民ｃｉである近傍市民を抽出し、近傍市民の意見を集計し（Ｔ２１）、近傍市民の意見で最も多い意見を調査し（Ｔ２２）、市民ｃに調査結果を渡す（Ｔ２３）。次に、市民ｃは、調査結果が賛成である場合、自分の意見を賛成に変更し、調査結果が反対である場合、自分の意見を反対に変更し、調査結果がどちらでもない場合、自分の意見を変更せず（Ｔ２４）、このシーケンスを終了する。
【００６１】
ここで、比較のため、従来のマルチエージェントシミュレーション作成装置により作成されたモデルについて説明する。従来のマルチエージェントシミュレーション作成装置に、近傍定義部１４とエージェント管理部１５は存在しないことから、近傍クラスである近傍定義情報とエージェント管理クラスである市役所は存在しない。従って、市民において、近傍市民の抽出と近傍市民の処理が実装される。
【００６２】
図９は、従来のシナリオ１のマルチエージェントシミュレーションにおける１市民の１ステップの動作を示すフローチャートである。まず、ある市民ｃは、他の市民ｃｉを選択し（Ｓ１１０）、市民ｃと市民ｃｉの住所から距離を算出する（Ｓ１１１）。次に、市民ｃは、距離が半径ｒ以内であり、かつ自分と市民ｃｉの年齢差が最大値ｄ以下であるか否かの判定を行う（Ｓ１１２）、両方の条件を満たした場合（Ｓ１１２，Ｙ）、市民ｃｉを近傍市民とし、意見を調べ、意見毎に集計し（Ｓ１１３）、処理Ｓ１２１へ移行する。一方、両方の条件を満たさない場合（Ｓ１１２，Ｎ）、処理Ｓ１２１へ移行する。
【００６３】
次に、全ての市民ｃｉについて近傍市民の判定を終了したか否かの判断を行う（Ｓ１２１）。全ての市民ｃｉについて終了していない場合（Ｓ１２１，Ｎ）、次の市民ｃｉを選択するために、処理Ｓ１１０へ戻る。全ての市民ｃｉについて終了した場合（Ｓ１２１，Ｙ）、集計結果により近傍市民に最も多い意見が「どちらでもない」であるか否かの判断を行う（Ｓ１２２）。「どちらでもない」である場合（Ｓ１２２，Ｙ）、このフローを終了する。一方、「どちらでもない」でない場合（Ｓ１２２，Ｎ）、市民ｃの意見を集計結果の意見に変更し（Ｓ１２３）、このフローを終了する。
【００６４】
上述した従来のマルチエージェントシミュレーションにおいて、予め用意された近傍の定義をユーザが変更する場合には、上述した市民の行動ルールの全てを実装し直すことになる。
【００６５】
例えば、２次元空間上の自分の上下左右斜め方向の距離の最大値ｒセルを近傍と定義した近傍抽出関数を使って、シナリオ１の近傍市民を抽出する場合について説明する。図１０は、従来のシナリオ１のマルチエージェントシミュレーションにおける近傍抽出関数の動作を示す図である。この図は、住所を表すｘｙ平面であり、対象となる市民の住所を中心として５×５セルの範囲を示している。ここで、距離の最大値ｒを２セル、年齢差の最大値を３とする。用意された近傍抽出関数は、ｘｙ平面内で自分から半径２セルの円内の市民を抽出するために、自分と他の市民の距離を調べ、範囲外の市民を除く。この近傍抽出関数による抽出の他に、残った市民の年齢を調べ、範囲外の市民を除くことが必要となる。つまり、従来の近傍抽出関数による近傍市民の抽出の後に、年齢差による再抽出の処理をユーザが実装する必要がある。図１０では、距離が範囲内となった市民を○で表し、年齢を○内の数字で表し、更に、年齢差が範囲外となった市民に×をつけている。最終的に、×のついていない市民が近傍市民として抽出される。
【００６６】
なお、本実施の形態においては、市役所が近傍市民の意見の調査を行っているが、市民に調査の関数を実装することにより、市民が調査を行っても良い。この場合でも、調査の関数の入力を近傍定義情報とすることにより、近傍の定義を変えても調査の関数を実装し直す必要はなく、１つの調査の関数で様々な近傍の定義に対応することができる。
【００６７】
次に、シナリオ２について説明する。シナリオ２は、シナリオ１と同じ市民の属性に、今までの投票回数を追加し、同年代で政治に対する関心度の近い市民の影響を受けて、市民の意見が変化する様をシミュレートするモデルである。ここで、投票回数が近い市民を、政治に対する関心度が近い市民とする。
【００６８】
ここで、シナリオ２のモデル構築について説明する。モデル構築の処理Ｓ２１において、ユーザは、シナリオ１の市民の属性に更に投票回数を追加し、座標として年齢と投票回数を設定する。図１１は、本発明に係るシナリオ２のマルチエージェントシミュレーションにおける市民の定義の一例を示す図である。すると、第１軸を年齢、第２軸を投票回数とする２次元空間が自動的に定義される。このように、市民の属性である座標を変更することにより、自動的に空間が再定義される。
【００６９】
また、モデル構築の処理Ｓ１２において、ユーザは、近傍定義情報を定義する。図１２は、本発明に係るシナリオ２のマルチエージェントシミュレーションにおける近傍定義情報の定義の一例を示す図である。シナリオ２における近傍市民は、同年代で政治に対する関心度の近い市民であり、ユーザはこの近傍市民を抽出するための近傍定義情報を設定する。まず、ユーザは、近傍定義情報におけるサイズとして、年齢差の最大値ａと投票回数の差の最大値ｂを設定する。次に、ユーザは、近傍定義情報における近傍判定関数として、自分と対象となる市民との年齢差がａ以下、かつ自分と対象となる市民との投票回数の差がｂ以下の場合、対象となる市民を近傍市民と判定する関数を実装する。図１３は、本発明に係るシナリオ２の近傍の範囲を示す図である。この場合の、空間は年齢と投票回数からなる２次元空間であり、近傍の範囲は図のように対象となる市民を中心とした長方形で表される。
【００７０】
このように、モデル構築の処理Ｓ２１においては、シナリオ１の市民を元にシナリオ２の市民を容易に定義することができる。また、モデル構築の処理Ｓ３１においては、シナリオ１のモデルの定義をそのまま用いる。このように、近傍市民の抽出に近傍定義情報を用いることにより、シナリオを変更する場合であっても、近傍定義情報の変更だけで抽出の方法も変更することができる。
【００７１】
これに対して、従来のマルチエージェントシミュレーション作成装置でシナリオ１とシナリオ２を構築しようとすると、シナリオ毎に空間の定義と近傍の定義が異なることからシナリオ毎に近傍市民の抽出と処理を実装する必要があった。
【００７２】
更に、マルチエージェントシミュレーション作成装置を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、マルチエージェントシミュレーション作成プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、マルチエージェントシミュレーション作成装置を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【００７３】
なお、近傍定義ステップとは、実施の形態における処理Ｓ１１，Ｓ１２，Ｓ１３に対応する。また、エージェント定義ステップとは、実施の形態における処理Ｓ２１に対応する。また、エージェント管理ステップとは、実施の形態における処理Ｓ２２に対応する。また、モデル定義ステップとは、実施の形態における処理Ｓ３１に対応する。
【００７４】
（付記１）  複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法をコンピュータに実行させるマルチエージェントシミュレーション作成プログラムであって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップと、
をコンピュータに実行させるマルチエージェントシミュレーション作成プログラム。
（付記２）  付記１に記載のマルチエージェントシミュレーション作成プログラムにおいて、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおいてエージェントの行動ルールの定義を支援するエージェント管理ステップをコンピュータに実行させることを特徴とするマルチエージェントシミュレーション作成プログラム。
（付記３）  付記１に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするマルチエージェントシミュレーション作成プログラム。
（付記４）  付記２に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されることを特徴とするマルチエージェントシミュレーション作成プログラム。
（付記５）  付記１乃至付記４のいずれかに記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記エージェントクラスは、属性として座標を持つことを特徴とするマルチエージェントシミュレーション作成プログラム。
（付記６）  付記５に記載のマルチエージェントシミュレーション作成プログラムにおいて、
前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするマルチエージェントシミュレーション作成プログラム。
（付記７）  複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成装置であって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義部と、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義部と、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義部と、
を備えてなるマルチエージェントシミュレーション作成装置。
（付記８）  付記７に記載のマルチエージェントシミュレーション作成装置において、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおいてエージェントの行動ルールの定義を支援するエージェント管理部を備えることを特徴とするマルチエージェントシミュレーション作成装置。
（付記９）  付記７に記載のマルチエージェントシミュレーション作成装置において、
前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするマルチエージェントシミュレーション作成装置。
（付記１０）  付記８に記載のマルチエージェントシミュレーション作成装置において、
前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするマルチエージェントシミュレーション作成装置。
（付記１１）  付記７乃至付記１０のいずれかに記載のマルチエージェントシミュレーション作成装置において、
前記エージェントクラスは、属性として座標を持つことを特徴とするマルチエージェントシミュレーション作成装置。
（付記１２）  付記１１に記載のマルチエージェントシミュレーション作成装置において、
前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするマルチエージェントシミュレーション作成装置。
（付記１３）  複数のエージェントの相互作用をシミュレートするマルチエージェントシミュレーションをオブジェクト指向言語で作成するマルチエージェントシミュレーション作成方法であって、
あるエージェントの近傍のエージェントを抽出するための近傍クラスの定義の雛形である近傍雛形クラス、または予め前記近傍雛形クラスを継承して定義された近傍クラスを提供することにより、前記近傍クラスの定義を支援する近傍定義ステップと、
エージェントを表すエージェントクラスの定義の雛形であるエージェント雛形クラスを提供することにより、前記エージェント雛形クラスを継承したエージェントクラスの定義を支援するエージェント定義ステップと、
前記マルチエージェントシミュレーションのモデルを表すモデルクラスの定義の雛形であるモデル雛形クラスを提供することにより、前記モデル雛形クラスを継承したモデルクラスの定義を支援するモデル定義ステップと、
を実行するマルチエージェントシミュレーション作成方法。
（付記１４）  付記１３に記載のマルチエージェントシミュレーション作成方法において、
更に、エージェントクラスを管理するためのエージェント管理クラスを提供することにより、前記エージェントクラスにおけるエージェントの行動ルールの定義を支援するエージェント管理ステップを実行することを特徴とするマルチエージェントシミュレーション作成方法。
（付記１５）  付記１３に記載のマルチエージェントシミュレーション作成方法において、
前記エージェントクラスは、前記近傍クラスを用いて、自分の近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように定義されることを特徴とするマルチエージェントシミュレーション作成方法。
（付記１６）  付記１４に記載のマルチエージェントシミュレーション作成方法において、
前記エージェント管理クラスは、前記近傍クラスを用いて、所定のエージェントの近傍のエージェントを抽出し、前記近傍のエージェントに関する処理を行うように予め定義されることを特徴とするマルチエージェントシミュレーション作成方法。
（付記１７）  付記１３乃至付記１６のいずれかに記載のマルチエージェントシミュレーション作成方法において、
前記エージェントクラスは、属性として座標を持つことを特徴とするマルチエージェントシミュレーション作成方法。
（付記１８）  付記１７に記載のマルチエージェントシミュレーション作成方法において、
前記近傍クラスは、前記座標における近傍のサイズを表す変数と、前記座標においてあるエージェントが他のエージェントの近傍であるか否かを判定する関数を含むことを特徴とするマルチエージェントシミュレーション作成方法。
【図面の簡単な説明】
【００７５】
【図１】本発明に係るマルチエージェントシミュレーション作成装置の構成の一例を示すブロック図である。
【図２】本発明に係るマルチエージェントシミュレーション作成装置におけるモデル構築の動作の一例を示すフローチャートである。
【図３】本発明に係るシナリオ１のマルチエージェントシミュレーションにおける市民の定義の一例を示す図である。
【図４】本発明に係るシナリオ１のマルチエージェントシミュレーションにおける近傍定義情報の定義の一例を示す図である。
【図５】本発明に係るシナリオ２のマルチエージェントシミュレーションにおける近傍の範囲を示す図である。
【図６】本発明に係るシナリオ１とシナリオ２のマルチエージェントシミュレーションにおける市役所の属性と機能の一例を示す図である。
【図７】本発明に係るシナリオ１のマルチエージェントシミュレーションにおけるモデルの定義の一例を示す図である。
【図８】本発明に係るシナリオ１のマルチエージェントシミュレーションにおける１市民の１ステップの動作を示すシーケンス図である。
【図９】従来のシナリオ１のマルチエージェントシミュレーションにおける１市民の１ステップの動作を示すフローチャートである。
【図１０】従来のシナリオ１のマルチエージェントシミュレーションにおける近傍抽出関数の動作を示す図である。
【図１１】本発明に係るシナリオ２のマルチエージェントシミュレーションにおける市民の定義の一例を示す図である。
【図１２】本発明に係るシナリオ２のマルチエージェントシミュレーションにおける近傍定義情報の定義の一例を示す図である。
【図１３】本発明に係るシナリオ２のマルチエージェントシミュレーションにおける近傍の範囲を示す図である。
【図１４】従来のマルチエージェントシミュレーション作成装置の構成の一例を示すブロック図である。
【図１５】従来のマルチエージェントシミュレーション作成装置におけるモデル構築の動作の一例を示すフローチャートである。
【図１６】従来のマルチエージェントシミュレーション作成装置においてユーザが記述すべき近傍エージェント再抽出処理の動作の一例を示すフローチャートである。
【符号の説明】
【００７６】
１  モデル構築部、２  シミュレーション制御部、１２  エージェント定義部、１３  モデル定義部、１４  近傍定義部、１５  エージェント管理部。
【図１】
2006331157.tif 000003
【図２】
2006331157.tif 000004
【図３】
2006331157.tif 000005
【図４】
2006331157.tif 000006
【図５】
2006331157.tif 000007
【図６】
2006331157.tif 000008
【図７】
2006331157.tif 000009
【図８】
2006331157.tif 000010
【図９】
2006331157.tif 000011
【図１０】
2006331157.tif 000012
【図１１】
2006331157.tif 000013
【図１２】
2006331157.tif 000014
【図１３】
2006331157.tif 000015
【図１４】
2006331157.tif 000016
【図１５】
2006331157.tif 000017
【図１６】
2006331157.tif 000018