これ以降、本願の発明を実施するための形態について述べる。以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
まず、図1〜図5を用いて、エージェントベースシミュレーションの概要を説明する。エージェントベースシミュレーションは、多数のエージェント(あるいはアクターと呼ばれることもある)と呼ばれる動作主体がネットワークを構成しており、エージェント間でメッセージと呼ばれるデータを送受信しながら協調動作することでシミュレーションを行うものである。
図1は、エージェントベースシミュレーションにおける、多数のエージェントによって構成されたネットワークを模式的に表した図である。図1で、丸印は個々のエージェントを表しており、矢印はあるエージェントから別のエージェントに向けてメッセージの送信が行われることを表している。エージェントベースシミュレーションにおいては、上記の微視的な構成要素をエージェントとしてモデル化し、微視的な構成要素間の相互関係をメッセージとしてモデル化することで、対象とする世界をシミュレーションする。ここで、あるエージェントから別のエージェントにメッセージが直接交換するとき2つのエージェントは互いに隣に位置すると呼ぶ。また、2つのエージェントがネットワーク上どれだけ離れているか、すなわち、2つのエージェント間でメッセージを交換するために互いに隣に位置するエージェントを何回経由する必要があるか、をホップ数と呼ぶ。
図2(a)および図2(b)は、エージェントベースシミュレーションにおける、エージェント、およびエージェント間で送受信されるメッセージの典型的な構成例を示す図である。図2(a)は、エージェントの構成例を示す図である。図2(a)に示したエージェントAGENTは、エージェントの振る舞いプログラムPROGと内部状態STATEとを格納している記憶領域AGENT_STOREと、エージェントプログラム解釈・実行部EXECと、メッセージ受信部RCVと、メッセージ送信部SEND、およびこれらを制御して強調動作させるエージェント制御部AGNT_CTRLと、から構成される。また、エージェントAGENTには、エージェントベースシミュレーションを構成する個々のエージェントを一意に識別可能なエージェント識別子AGENT_IDが割り振られている。エージェント識別子AGENT_IDは、メッセージの送信元・受信先の特定、シミュレーション中のログ記録などのために用いられ、典型的には、シミュレーション開始時にシミュレーションシステムにより割り当てられ、シミュレーション終了まで不変である。図2(b)は、エージェント間で送受信されるメッセージMESの構成例を示す図である。メッセージMESは、メッセージを一意に識別可能な識別子MES_IDが割り当てられており、送信元エージェント識別子MES_FROM_IDと、受信先エージェント識別子MES_TO_IDと、メッセージデータMES_DATAと、で構成される。
図3は、エージェントの動作を示すアクティビティ図である。エージェントAGENTは、メッセージ受信部RCVを通じてメッセージを受信すると、エージェントプログラム解釈・実行部EXECにおいて、エージェントの振る舞いプログラムPROGにしたがって、エージェントの内部状態STATEの更新処理を行う(ステップ100、110)。この過程で必要であれば、エージェントAGENTは、メッセージの送信元エージェント識別子MES_FROM_ID、メッセージデータMES_DATA、およびメッセージ受信時点での内部状態STATEを参照する。
さらに、各エージェントは、上記の内部状態の更新処理の結果、内部状態が、エージェント振る舞いプログラムによって定まる条件に達すると、他のエージェントに対してメッセージの送信処理を行う(ステップ120、130)。なお、ここで述べた内部状態の更新処理、メッセージの送信の条件、およびメッセージデータの具体的な内容は、シミュレーションしようとしている現象によって異なる。典型的には、シミュレーションを行うユーザーがその具体的な内容をエージェント振舞いプログラムとして記述して、あらかじめシミュレーションシステムならびに計算機に提示した状態でシミュレーションを開始する。あるいは、典型的なエージェント振る舞いプログラムがシミュレーションシステム上でユーザーに提供されており、ユーザーは、エージェント振る舞いプログラムの動作を調整するパラメータのみを設定して、シミュレーションを開始する場合もある。
以上のように、エージェントベースシミュレーションでは、対象とする現象を構成する微視的な構成要素をエージェントとしてモデル化し、微視的な構成要素間の相互作用をメッセージとしてモデル化することで、複雑な現象のシミュレーションを実行する。
上述のように、一般的なエージェントベースシミュレーションでは、各エージェントは、他のエージェントからのメッセージを受信して内部状態を更新する。しかしながら、上述の典型的なエージェントベースシミュレーションでは、いつ、どのような順序でメッセージが送られて、いつ、どのような順序で内部状態の更新処理が行われるのかがはっきりしない。そこで、非特許文献1では、エージェントベースシミュレーションの特殊な形態として、エージェントの内部状態およびメッセージ、に時刻という特別な情報を付加することで、メッセージの到着順および内部状態の更新処理の順番を保障する離散イベントシミュレーション(Discrete Event Simulation)と呼ばれるシミュレーション方式を提案している。
図4(a)および図4(b)は、離散イベントシミュレーションにおける、エージェントおよびメッセージMESの典型的な構成例を示す図である。図4(a)に示した離散イベントシミュレーションにおけるエージェントAGENTは、図2(a)に示した典型的なエージェントベースシミュレーションにおけるエージェントにおいて、内部状態STATEが、離散イベントシミュレーションのエージェントの内部時刻A_TIMEと、離散イベントシミュレーションのエージェントの内部状態A_STATEと、に細分化したものである。また、図4(b)に示した離散イベントシミュレーションにおけるメッセージは、図2(b)に示した典型的なエージェントベースシミュレーションにおけるメッセージにおいて、メッセージデータMES_DATAが、メッセージ時刻MES_TIMEと、離散イベントシミュレーションにおけるメッセージデータMES_ADATAと、に細分化したものである。
図5は、離散イベントシミュレーションにおけるエージェントの動作を示すアクティビティ図である。離散イベントシミュレーションにおける各エージェントは、シミュレーション開始時に次に自エージェントがメッセージを送信する時刻をシミュレーションシステムに申告して、その時刻まで待機する(ステップ210)。
もし、申告した時刻までに、他のエージェントが、自エージェント宛てのメッセージを送信しなかった場合には、各エージェントは内部時刻をその時刻まで進めてメッセージを送信する(ステップ220、230)。その後、各エージェントはエージェント振る舞いプログラムにしたがって内部状態を更新した後、再び次のメッセージ送信時刻をシミュレーションシステムに申告して待機する(ステップ250、210)。
もし、待機中、次のメッセージ送信時刻より前に、他のエージェントより自エージェント宛のメッセージを受信した場合には(ステップ260)、各エージェントは、内部時刻をメッセージに付されている時刻に更新した後(ステップ220)、エージェント振る舞いプログラムにしたがって内部状態を更新し(ステップ250)、さらに、新たな内部状態にもとづいて次のメッセージ送信時刻を決定しなおして、シミュレーションシステムに申告する(ステップ210)。
以上のように、非特許文献1における離散イベントシミュレーションでは、一般的なエージェントベースシミュレーションにおけるエージェントの内部状態およびメッセージデータに時刻を付加することで、各エージェントにおける、メッセージの到着順および内部状態の更新処理の順番を保つことができ、より複雑なシミュレーションを精密に行うことが可能となる。
なお、離散イベントシミュレーションは、一般のエージェントベースシミュレーションにおいて、エージェントの内部状態およびメッセージデータの中に、時刻という特別な情報を必ず持つようにし、また内部状態の更新の仕方に時刻に基づく一定の制限をつけたものである。したがって、離散イベントシミュレーションは、エージェントベースシミュレーションの特別な形態であって、エージェントベースシミュレーション一般についての議論は、全て、離散イベントシミュレーションにもそのまま適用可能である。
次に、エージェント集団の特徴的な振る舞い(巨視的なイベント)について説明する。巨視的なイベントは、以下の三つの特徴的な性質を備えている。
巨視的なイベントの第一の特徴的な性質は、それが、エージェントベースシミュレーションのネットワーク上で互いに近くに位置する(ホップ数が比較的小さい)多数のエージェントによって構成されていることである。巨視的なイベントは、前述のように、多数の微視的なエージェントの集団の特徴的な振る舞いのことであるが、ユーザーがある巨視的なイベントに注目するのは、とくに、ネットワーク上のある特定の場所で、他の場所とは違った現象が起こっている場合である。たとえば、前述の交通流シミュレーションにおける「渋滞」という巨視的なイベントは、ある特定の地点付近における自動車の集団的な振る舞いのことである。したがって、巨視的なイベントを自動的に認識・抽出は、エージェントのネットワーク上で互いに距離が近いエージェントの集合を抽出する必要がある。
巨視的なイベントの第二の特徴的な性質は、ある巨視的なイベント、すなわち、エージェント集団の特徴的な振る舞いが、ユーザーの興味を惹くのは、その巨視的なイベントが起こる場合と起こらない場合とがある場合である、ということである。例えば、前述の交通流シミュレーションにおいて、ユーザーが「渋滞」という巨視的なイベントに注目するのは、渋滞が起こったり起こらなかったりするからであって、自動車の数が極端に少なく渋滞が全く起こらない世界、あるいは逆に常に渋滞が発生しており決して解消することがないような世界、では渋滞という現象は人々の興味をひくことはない。したがって、巨視的なイベントを自動的に認識・抽出は、単一のシナリオのシミュレーション結果にのみ注目して、個々の微視的なエージェントの振る舞いを詳細に調べるのではなく、複数のシナリオの元で複数回シミュレーションを行い、その結果同士を比較する必要がある。
巨視的なイベントの第三の特徴的な性質は、巨視的なイベント、すなわち、エージェント集団の特徴的な振る舞いは、それを構成する個々の微視的なエージェントの振る舞いに注目すると、多くの異なる状態をとりえる、ということである。例えば、前述の交通流シミュレーションにおいて、ある場所で「渋滞」という巨視的なイベントが発生しているといったとき、渋滞を構成している自動車は常時入れ替わり続けている。また、渋滞中では自動車は前進と停止とを繰り返しているが、単一の渋滞であっても、その渋滞を構成している個々の自動車によって、前進と停止の入れ替わりのパターンは大きく異なっている。すなわち、「渋滞」という単一の巨視的なイベントは、個々の微視的な自動車の振る舞いに注目すると全く異なる多くの状態の総称であることがわかる。これは、多くの原子で構成される結晶の統計力学的な描像において、結晶が基底状態にあるというのが全ての原子がエネルギー基底状態にあるという唯一の状態を指しているのに対して、結晶が励起状態にあるというは、例えば結晶を構成する多数の原子のうちの一定の割合が励起状態にあることを指しており、個々の原子が基底・励起状態に注目すると、非常に多数の状態の総称となっている、という事実に比肩される。
以上で述べた、巨視的なイベントについての三つの性質を考慮すると、複数のシナリオの元で複数回のシミュレーションを行い、各シナリオ間で対応するエージェントの挙動を比較し、挙動のばらつきが大きいエージェントがネットワーク上で互いに近くに位置している場所を探すことで、ユーザーの興味をひく可能性がある未知の巨視的なイベントを自動的に認識・抽出することが可能となる。
図6および図7は、以上で述べた、本実施例における巨視的なイベントの自動的な認識・抽出方法の概念をより具体的に説明する図である。前述の巨視的なイベントに関する第二の特徴で述べたように、巨視的なイベントを自動的に認識・抽出は、複数のシナリオの元で複数回シミュレーションを行い、その結果同士を比較するという操作が必要である。そこで、まず、M個のシナリオのもとでシミュレーションを実行する。
図6は、M個のシナリオのもとでシミュレーションを実行したときの、各シナリオでの時刻tにおけるエージェントの状態を、エージェントのネットワーク上に示したものである。次に、全てのエージェントについて、別のシナリオにおける対応するエージェント(エージェント間のネットワーク上で同一位置にあるエージェント)同士を比較しそのエージェントの挙動がシナリオ間でどの程度ばらついているか、を指標化する。前述の、巨視的なイベントに関する第一、および、第三の特徴を考えると、このエージェント挙動のシナリオ間ばらつきが大きなエージェントが、エージェントネットワーク上で近くに集まっている場所では、ユーザーの興味を惹くような巨視的なイベントが発生している可能性が高い。
図7では、エージェント間のネットワーク上に、エージェント挙動のシナリオ間ばらつきの大きさを、その等高線と共に図示することで、エージェント挙動のシナリオ間ばらつきが大きなエージェントがネットワーク上の近い位置に集中している場所、すなわち、ユーザーの興味を惹くような巨視的なイベントが発生している可能性が高い場所を示している。
図8は、本実施例における巨視的なイベントの自動的な認識・抽出処理の具体的な手順を示した図である。全体の処理は、与えられた複数シナリオシミュレーションの実行(ステップ310)、および、そのシミュレーション結果を用いての巨視的なイベントの自動認識・抽出(ステップ320〜340)、の2つの処理からなる。
複数シナリオシミュレーションは、ユーザーが与えた、あるいは与えられた日条件からシミュレーションシステムが乱数等を用いて生成した複数のシナリオのもとで、エージェントベースとシミュレーションを行う処理である。これは、例えば、既存のエージェントベーストシミュレーターを用いて、シナリオの数だけ複数回シミュレーションを実行することで実現可能である。
図9は、N個のエージェントで構成されるエージェントベーストシミュレーションを、M個のシナリオのもとで複数シナリオシミュレーション実行した結果データを模式的に表す図である。N×M個のエージェントそれぞれについてエージェントの挙動のデータが得られる。ここで、エージェントの挙動とは、エージェントの内部状態の遷移の履歴、エージェント送信した全メッセージの履歴(メッセージの送信時刻、宛先エージェント、メッセージ内容)、および、エージェント受信した全メッセージの履歴(メッセージの受信時刻、送信元エージェント、メッセージ内容)、を意味している。
複数シナリオシミュレーションの完了後、シミュレーション結果を用いて、巨視的なイベントの自動認識・抽出処理を行う(ステップ320、330、340)。巨視的なイベントの自動認識・抽出処理は、時刻tをある値に固定した上で、その時刻における巨視的なイベントの検出する、という処理を、シミュレーションの全時刻にわたって繰り返し実行することで行う。
与えられた時刻における巨視的なイベントの検出の処理は、全てのエージェントについて、その時刻における該エージェントの挙動が各シナリオでどれぐらい異なっているか、そのばらつきの大きさ、すなわち、エージェント挙動のシナリオ間ばらつき、を算出する第一の処理(ステップ320)と、エージェント挙動のシナリオ間ばらつきから、エージェント間のネットワーク構造に起因する分を差し引くことで、該エージェントの巨視的イベント特徴量、を算出する第二の処理(ステップ330)、および、巨視的イベント特徴量が大きいエージェントがエージェント間のネットワーク上で互いに近く(ホップ数が小さい)に固まって存在している特異的な場所を探索する第三の処理(ステップ340)、の3つの処理で構成される。
もし、そのような特異的な場所が存在すれば、時刻tにおけるその場所において、何らかの巨視的なイベントが発生している可能性があることになる。注目時刻tをシミュレーションの全時刻にわたって変化させながら、以上の3つの処理を繰り返し行うことで、そのシミュレーションにおける全ての巨視的なイベントを自動的に認識・抽出することが可能となる。以下、この3つの処理について詳細に説明する。
第一の処理(ステップ320)、すなわち、エージェント挙動のシナリオ間ばらつきの算出処理における「エージェントの挙動」とは、シミュレーション開始時刻から注目時刻tまでにおける、当該エージェントの内部状態の遷移、および、当該エージェントが送受信した全てのメッセージの履歴、のことである。エージェント挙動のシナリオ間ばらつき、すなわち、エージェントの挙動が各シナリオでどれぐらい異なっているか、を算出する処理は、具体的には、各シナリオにおける、当該エージェントの時刻tまでの内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴、を比較し、そのばらつきの大きさという単一の指標を何らかの手段で指標化する処理を指している。
図10は、第一の処理(ステップ320)における入出力データを示している。第一の処理の特徴は、複数シナリオシミュレーションによって得られたN×M個のエージェントの挙動のデータを、M個のシナリオにおける同一の(対応する)エージェントを単位として処理することである。具体的には、M個のシナリオにおけるエージェント1の時刻t以前の挙動、すなわち、シミュレーション開始時刻から時刻tまでにおける、エージェント1の内部状態の遷移の履歴、および、エージェントが送受信した全てのメッセージの履歴、を比較して、時刻tにおけるエージェント1のシナリオ間ばらつき、という単一の指標を算出する処理を、N個のエージェントそれぞれについて行う。
エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴のうち、どれを重視して相違度を指標化するのかは、巨視的なイベント認識・抽出処理の性能(認識精度)に関わるパラメータであり任意性がある。したがって、実施の形態としては、例えば、各シナリオにおける、エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、エージェント挙動のシナリオ間ばらつき、という単一の指標を算出する具体的な処理内容をユーザー、すなわち、エージェントモデルの作成者、に記述してもらい、巨視的なイベントの認識・抽出処理途中でユーザーが記述した処理を呼び出す、という形態もありえる。エージェントモデルの作成者は、エージェントの内部状態ややり取りされるメッセージの具体的な内容を知っているため、効率的、かつ、イベント認識・抽出処理の性能が高い、エージェント挙動のシナリオ間ばらつきの算出法を記述できる可能性がある。
しかしながら、全てのシナリオにおける当該エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、直接、エージェント挙動のシナリオ間ばらつきという単一の指標を算出する処理を記述することは、ユーザーにとって負担が大きい。そこで、ユーザーは、任意に与えられた2つのシナリオにおいて、時刻tにおける注目エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、該2つのシナリオにおけるエージェント挙動のシナリオ間の類似度を算出する処理のみを記述し、そこから、エージェント挙動のシナリオ間ばらつきを算出する方法もありえる。この場合、エージェント挙動のシナリオ間ばらつきを、例えば、全てのシナリオの2つ組の組み合わせについてエージェント挙動のシナリオ間の類似度を算出し、全てのシナリオをノードとし、シナリオ間の類似度を重みとするエッジでつないだネットワークの直径、あるいは、該ネットワークの重み付き最小全域木(スパニング木)のエッジの重みの総計、とすることが考えられる。
あるいは、ユーザーは、任意に与えられた2つのシナリオにおいて、時刻tにおける注目エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、該2つのシナリオにおける該エージェントの挙動が類似しているか否かの2値のみを返す処理を記述し、そこから、エージェント挙動のシナリオ間ばらつきを算出する方法もありえる。この場合、エージェント挙動のシナリオ間ばらつきとして、全てのシナリオをシナリオ同士が類似しているか否かによっていくつかのグループ(同値類)に分類したときのグループの数、とすることが考えられる。なお、後記の本願の発明の実施例2においては、この2つのシナリオにおける時刻tにおけるあるエージェントの挙動が類似しているか否かの2値のみを返す処理の中身をユーザーに記述してもらうことなく、自動的に行う実施の形態の例を記す。
次に、第二の処理(ステップ330)、すなわち、エージェントの巨視的イベント特徴量を算出する処理について説明する。エージェントベーストシミュレーションでは、前述のようにエージェントはネットワークを構成して互いにメッセージを送受信しあう。通常、エージェント間のネットワークは一様ではなく、多くのエージェントと高頻度でメッセージの送受信を行っているエージェント(ハブ・エージェント)や、少数のエージェントとのみ低頻度でメッセージの送受信を行っているエージェントも存在する。したがって、全てのシナリオにおける注目エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、個々のエージェントの挙動のシナリオ間ばらつきを指標化すると、多くのエージェントと高頻度でメッセージの送受信を行っているエージェントと、少数のエージェントとのみ低頻度でメッセージの送受信を行っているエージェントと、で、平均的なエージェント挙動のシナリオ間ばらつきが異なる。
ところで、後で詳述する第三の処理(ステップ340)、すなわち、巨視的なイベントの認識・抽出は、シナリオ間で挙動のばらつきが大きいエージェントがネットワーク上で近く範囲に特異的に集中している場所を探すことで行う。この処理をうまく行うには、第三の処理に先だって、あらかじめ、エージェント挙動のシナリオ間ばらつきから、ネットワーク構造に起因する分を差し引いて、エージェントの挙動のばらつきの平均的な値が、ネットワーク上で均一になるようにしておく必要がある。このため、本実施の形態1では、第二の処理の処理として、エージェント挙動のシナリオ間ばらつきから、エージェント間のネットワーク構造に起因する分を差し引くことで、該エージェントの巨視的イベント特徴量、を算出する処理を行っている。ただし、エージェントモデルや、ネットワーク構造によっては、この第二の処理を省略して、第一の処理で算出したエージェント挙動のシナリオ間ばらつきを、そのまま該エージェントの巨視的イベント特徴量、とすることも可能である。
エージェント挙動のシナリオ間ばらつきのうちエージェント間のネットワーク構造に起因する分がどの程度であるかは、エージェント挙動のシナリオ間ばらつきの算出法に依存している。したがって、エージェント挙動のシナリオ間ばらつきの算出法の記述者が、そのエージェント挙動のシナリオ間ばらつきの指標において、エージェント間のネットワーク構造に起因する分がどの程度であるかを、同時に記述する、という実施形態が考えられる。しかしながら、エージェント挙動のシナリオ間ばらつき、のうち、エージェント間のネットワーク構造に起因する分がどの程度であるかを記述することは、記述者にとって負担が大きい。後記の実施例3において、エージェント挙動のシナリオ間ばらつき、のうち、エージェント間のネットワーク構造に起因する分がどの程度であるか、を自動的に算出する実施の形態の例を記す。
エージェント挙動のシナリオ間ばらつき、のうち、エージェント間のネットワーク構造に起因する分が算出できれば、それを、前記の第一の処理で算出したエージェント挙動のシナリオ間ばらつきから差し引くことで、エージェントの巨視的イベント特徴量を得ることができる。
次に、第三の処理(ステップ340)、すなわち、巨視的イベント特徴量が大きいエージェントがエージェント間のネットワーク上で互いに近く(ホップ数が小さい)に固まって存在している特異的な場所を探索することで、未知の巨視的イベントを自動的に認識・抽出する第三の処理、について説明する。この第三の処理は、ユーザーが人手で処理する方法と、機械が自動的に行う方法とが考えられる。
図11は、第三の処理をユーザーが人手で行う場合の、ユーザーへの情報提示の方法の例である。エージェントのネットワークを画面あるいは何らかの情報表示装置の上に表示し、それぞれのエージェントの上に巨視的イベント特徴量を表示するといった手段によって、ユーザーが、巨視的イベント特徴量が大きなエージェントが集中している場所を発見できるようにする。ここで、エージェントのネットワークを画面あるいは何らかの情報表示装置の上に表示する手段としては、エージェントのネットワークを、近い(互いにホップ数が小さい)エージェントが近くに配置されるように、1次元、あるいは、2次元、あるいは3次元の空間に埋め込んで表示することが考えられる。これは、非特許文献2によって開示されている力学的モデルによるグラフ描画アルゴリズムなどの公知の手段によって達成できる。また、描画したエージェント間のネットワーク上に、巨視的イベント特徴量を表示するには、図11(a)に示したように、それぞれのエージェントを表す印の色の差異や濃淡で表す、あるいは、個々のエージェントが識別できないほどエージェント数が多い場合には、図11(b)で示したように、巨視的イベント特徴量の等高線を描く、などの手段が考えられる。等高線を描く場合には、各エージェントの巨視的イベント特徴量をいくつかのレベルに分類し、エージェント間のネットワーク上に、巨視的イベント特徴量が同一レベルに属するエージェントを結ぶ線を重ねて描画することで、巨視的イベント特徴量が大きいエージェントがエージェント間のネットワーク上で互いに近くに固まって存在している特異的な場所をユーザーが見出すことが容易になる。
第三の処理(ステップ340)を自動的に行う場合には、例えば、全エージェントについて、巨視的イベント特徴量の集中度、すなわち、巨視的イベント特徴量が大きなエージェントが注目エージェントの周りにどの程度集中しているかを表す指標、を算出し、巨視的イベント特徴量の集中度が高いエージェントを抽出することで行う。
エージェントiの巨視的イベント特徴量の集中度M(i)は、例えば、図12に示したような式で計算することができる。ここで、D(i,j)は、エージェントiとエージェントjとのネットワーク上の距離(ホップ数)を表す。βは0以上1未満の実数のパラメータであり、シミュレーション対象のエージェントモデルによってその最適値は異なるが、多くの場合、β=1/3〜1/2程度にするのがよい。その後の巨視的イベント特徴量の集中度が高いエージェントを抽出する処理は、あらかじめ特定の閾値を決めて設定しておいて集中度が閾値を越えるエージェントを抽出する、あるいは、巨視的イベント特徴量の集中度M(i)の上位数パーセントをとる、などの手段が考えられる。
なお、以上で述べた処理手順においては、全体の処理を、複数のシナリオのもとでエージェントベーストシミュレーションの実行、および、そのシミュレーション結果を用いての本願の発明の実施例1における本質的な処理である巨視的なイベントの自動認識・抽出、の2つの処理に分けて実行している。しかしながら、後半の巨視的なイベントの自動認識・抽出処理においては、最初に注目時刻tを定めて、その時刻以前のエージェント挙動のシナリオ間相違度のみを用いて巨視的なイベントの自動認識・抽出を行っていることを考慮すると、複数のシナリオのもとでのシミュレーションを実行している途中で、それまでにシミュレーションが終了した時刻tまでについて、巨視的なイベントの自動認識・抽出処理を並行して実行することも可能である。
図13は、本実施例におけるシミュレーション方式および情報処理システムについて、その構成例を示す図である。図13に示した情報処理システムは、1つまたは複数の計算ノードCALC_NODEと、ユーザーと情報処理システムとのインタフェースとなるコントロール端末TERMと、を通信スイッチCOM_SWで結合した構成となっている。各計算ノードCALC_NODEは、中央演算処理装置CPUと、一時記憶装置RAMと、記憶装置STORと、通信デバイスCOM_DEVと、を有する。計算ノードCALC_NODEは、例えばサーバ装置である。
中央演算処理装置CPUは、あらかじめ定められた手順にしたがって、一時記憶装置RAMおよび記憶装置STORからデータを取り出して演算処理を行う。またこの際に、各計算ノードCALC_NODEは、他の計算ノードCALC_NODEから送られたデータを通信デバイスCOM_DEVで受信し、演算処理に用いる。各計算ノードCALC_NODEは、演算処理した結果を、一時記憶装置RAMまたは記憶装置STORに格納、あるいは、通信デバイスCOM_DEVを通じて他の計算ノード宛てに送信する。ユーザーから情報処理システムへのデータ入力、あるいは、情報処理システムの処理結果のユーザーへの提示は、コントロール端末TERMを通じて行われる。図13に示した情報処理システムでは、このようにして複数の計算ノードで並列的に演算処理を実行することが可能である。なお、図13に示した情報処理システムの構成は、一例として示したにすぎず、たとえば、記憶装置STORや、一時記憶装置RAMを、計算ノードCALC_NODEにそれぞれに配置するのではなく、多数の計算ノードCALC_NODEで記憶装置STORや、一時記憶装置RAMを共用する構成、あるいは、各計算ノードCALC_NODEに複数の中央演算処理装置CPUを配置する構成等、様々なバリエーションが考えられる。
図14は、本実施例の巨視的なイベントの自動認識・抽出を実行するシミュレーション方式および情報処理システムMER_SYSTEMの全体構成を示す図である。図14に示したマルチシナリオシミュレーションシステムMER_SYSTEMは、複数シナリオシミュレーションを実行する複数シミュレーションシステムMSと、巨視的なイベントの自動認識・抽出を行う巨視的イベント認識・抽出部MERと、を有している。
複数シミュレーションシステムMSは、入力として与えられた1個または複数のシミュレーション条件から、複数のシミュレーションシナリオを生成する複数シミュレーションシナリオ生成部MS_GENと、複数のシナリオの下で実際にシミュレーションを実行する複数シナリオシミュレータMS_COREと、を有する。ただし、入力として十分な数のシミュレーション条件が与えられる場合には、複数シミュレーションシナリオ生成部MS_GENを省略して、直接、入力された複数のシミュレーション条件の下でシミュレーションを実行してもよい。複数シナリオシミュレータMS_COREが出力したシミュレーション実行結果は記憶装置MS_STOREに記憶される。
巨視的イベント認識・抽出部MERは、MS_STOREに記憶されている複数シナリオのシミュレーション結果から、エージェント挙動のシナリオ間ばらつきを算出するエージェント挙動のシナリオ間ばらつき算出部BVCと、エージェント挙動のシナリオ間ばらつきからネットワーク依存分を差し引くことでエージェントの巨視的イベント特徴量を算出するエージェントの巨視的イベント特徴量算出部BVCと、エージェントの巨視的イベント特徴量がネットワーク上で集中している場所を探索する巨視的イベント特徴量の集中箇所探索部MESと、を有する。
また、エージェントの巨視的イベント特徴量算出部BVCは、入力として与えられたエージェント間のネットワーク構造、および、記憶装置MS_STOREに記憶されている複数シナリオシミュレーション結果から、エージェント挙動の
シナリオ間ばらつきのネットワーク依存分を算出するエージェント挙動のシナリオ間ばらつきのネットワーク依存分の算出部BVNCと、エージェントの巨視的イベント特徴量算出部BVCで算出したエージェントの巨視的イベント特徴量から、エージェント挙動のシナリオ間ばらつきのネットワーク依存分を差し引く処理を行う差し引き処理部SUBと、を有する。ただし、前述したように、差し引き処理SUBで行われる処理は、単純な減算のみならず、エージェント挙動のシナリオ間ばらつきのα乗から、ネットワーク構造に起因する分のα乗を減算して、そのα乗根をとる、などといった処理である実施の形態もある。
また、巨視的イベント特徴量の集中箇所探索部MESは、システムで自動的に実行する実施の形態の他に、前述したようにユーザーによる人手で行う実施の形態もありえる。また、巨視的イベント特徴量の集中箇所探索部MESによって見出されたユーザーの興味を惹く可能性がある巨視的なイベントの候補は、図11で示したような手段によって、コントロール端末TERMを通じてユーザーに提示される。
以上のように、本実施例では、エージェントベーストシミュレーションの結果得られる微視的なエージェントの振る舞いの時系列から、ユーザーにとって未知の注目すべきエージェント集団の特徴的な振る舞い(巨視的なイベント)を認識および抽出する手段を提供することが可能となる。
実施例2では、前述の実施例1で示した巨視的なイベントの認識・抽出のための第一の処理、すなわち、エージェント挙動のシナリオ間ばらつきを算出する処理について、その具体的な実施の形態の例を示す。
前述のように、巨視的なイベントの認識・抽出のための第一の処理、すなわち、エージェント挙動のシナリオ間ばらつきを算出する処理は、注目エージェントの時刻tまでの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴を、全てのシナリオ間で比較し、そのばらつきの大きさを何らかの手段で指標化する処理を指している。このとき、どのようにエージェントの挙動のシナリオ間での比較しエージェント挙動のシナリオ間ばらつきという単一の指標を算出するかは、巨視的なイベントの認識・抽出処理全体の性能に大きく影響する。一般に、最適な指標化の方法は、エージェントモデルの内容に依存しているため、ユーザー、すなわち、エージェントモデルの内容の記述者がエージェント挙動のシナリオ間ばらつきの算出方法を記述することが望ましいが、これはユーザーの負担が大きい。したがって、エージェントモデルの内容に関わらず、エージェント挙動のシナリオ間ばらつきを自動的に算出する汎用的な方法が必要となる。
指標化の具体的な処理方法として、任意に与えられた2つのシナリオにおいて、時刻tにおける注目エージェントの挙動、すなわち、内部状態の遷移および当該エージェントが送受信した全てのメッセージの履歴から、該2つのシナリオにおける該エージェントの挙動が類似しているか否かの2値のみを返す処理、を用いて、全てのシナリオをシナリオ同士が類似しているか否かによっていくつかのグループ(同値類)に分類し、分類したグループの数をエージェント挙動のシナリオ間ばらつきとする、という形態がある。本実施の形態2では、この2つのシナリオにおける時刻tにおけるあるエージェントの挙動が類似しているか否かの2値のみを返す処理の中身をユーザーに記述してもらうことなく、自動的に行う実施の形態の例を記す。
ところで、エージェント挙動のシナリオ間ばらつきを自動的に算出する、すなわち、エージェントモデルの具体的な内容に依存せずに、エージェント挙動のシナリオ間ばらつきを算出することは、本質的に困難な作業である。なぜなら、エージェントの挙動、すなわち、エージェントの内部状態、あるいは、エージェント間で送受信されるメッセージ、の中身はエージェントモデルの記述者がモデルに応じて自由に設定にするものであるため、エージェントモデルの記述内容を知らない限り、そもそも、シナリオ間で、エージェントの挙動、すなわち、エージェント内部状態、および、エージェント間で送受信されるメッセージの履歴、を比較すること自体が不可能であるため、である。可能なのは、エージェントの内部状態、と、エージェント間で送受信されたメッセージを、意味のないビット列だと見なして、シナリオ間でビット単位の比較する、といった形態のみである。
しかしながら、エージェントの内部状態、および、エージェント間で送受信されたメッセージ、を無意味なビット列と見なしてエージェント挙動のシナリオ間ばらつきを算出する方法では、エージェント挙動のばらつきの精度が悪く、巨視的なイベントの認識・抽出処理全体の性能が低下することが容易に想像できる。
そこで、実施例2では、エージェント挙動のばらつきとして、注目エージェントが受信したメッセージの数と、メッセージの送信元エージェント、および、メッセージの送信時刻、に着目する。前述のように、エージェントベーストシミュレーションでは、ユーザーは、メッセージを受信したときにどのようにエージェントの内部状態を更新し、また、他エージェントに対していつどのようなメッセージを送信するか、をエージェントモデルとして記述し、実際のエージェント内部状態の更新処理の起動、あるいは、エージェント間でのメッセージの配送は、シミュレータが行う。したがって、あるエージェントが受信したメッセージの数、メッセージの送信元エージェント、および、メッセージの送信時刻は、エージェントモデルの具体的な内容に関わらず、シミュレーションシステムが常に利用可能な情報である。
図15は、受信したメッセージの数と、メッセージの送信元エージェント、および、メッセージの送信時刻に着目して、異なるシナリオにおいてエージェントの挙動が類似しているか否かを判定する処理について、その処理内容を概念的に説明する模式図である。図15は、A、B、C、および、Dという4つのエージェントで構成されるエージェントベーストシミュレーションを、シナリオ1、シナリオ2、および、シナリオ3の3つのシナリオで複数シナリオシミュレーションした例を示している。
全てのシナリオにおいて、エージェントAは、エージェントB、エージェントC、エージェントDの3つのエージェントから、それぞれ、時刻t1、t2、t3にメッセージを受信するものとする。このとき、それぞれのシナリオでは、シミュレーション条件が異なるために、t1、t2、t3の時刻は異なっている。ここで、シナリオ1、シナリオ2では、t1<t2という関係が成立するのに対し、シナリオ3では、t1とt2の前後関係が逆転して、t2<t1となっていたとする。このとき、2つのシナリオにおいて、全ての受信メッセージの送信元の順序が同一であるときにはエージェント挙動は類似している、逆に、受信メッセージの送信元の順序が一つでも異なっている場合にはエージェント挙動は類似していない、と判定する。
図15の例であれば、エージェントAは、シナリオ1およびシナリオ2においては、最初にエージェントBからのメッセージを受信するのに対して、シナリオ3では最初にエージェントCからのメッセージを受信する。この場合、シナリオ1とシナリオ2におけるエージェントAの挙動は類似しているのに対して、シナリオ1とシナリオ3、および、シナリオ2とシナリオ3、におけるエージェントAの挙動は類似していない、と判定される。したがって、エージェントAに着目すると、全シナリオは、シナリオ1とシナリオ2で構成されるグループと、シナリオ3で構成されるグループ、の2つのグループに分割されることになる。したがって、エージェントAのシナリオ間の挙動のばらつきの大きさは2となる。
図16は、シナリオ間でのエージェントの挙動のばらつきが時間的に変化する様子の例を示す図である。図16では、シナリオ1からシナリオ5までの計5つのシナリオを複数シナリオシミュレーションした場合に、エージェントAについて、各シナリオにおいてエージェントAが受信したメッセージの時間的な順序と、エージェントAのシナリオ間の挙動のばらつきの大きさの変化を示している。図の右側には、シナリオ1からシナリオ5までのそれぞれのシナリオにおける、受信メッセージが、メッセージの送信元エージェント(from)、および、メッセージの送信時刻(time)と、ともに図示されている。図16では、上から下に向かって時刻が進んでおり、それぞれのシナリオにおける受信メッセージは、受信時刻(time)を基準に上から下に並んでいる。5つ全てのシナリオにおいて、エージェントAが最初に受信するメッセージはエージェントBが送信したものである。
したがって、最初は、5つ全てのシナリオが類似している、すなわち、エージェントの挙動のばらつきの大きさは1である。ところが、2番目に受信するメッセージは、シナリオ1からシナリオ3ではエージェントCが送信したもの、シナリオ4およびシナリオ5ではエージェントDが送信したもの、である。したがって、エージェントAの挙動は、シナリオ1からシナリオ3までのグループと、シナリオ4およびシナリオ5のグループと、の2つの類似グループに分類され、エージェントAの挙動のばらつきの大きさは2となる。その後も同様にして、エージェントAのシナリオ間ばらつきの大きさは、図の右側に示した各シナリオにおけるメッセージの受信順にもとづいて増加する。
この判定法における、シナリオの類似判定処理は、受信したメッセージの送信時刻(受信時刻)そのものではなく、受信メッセージの送信元エージェントの順序にのみ注目することが特徴である。これは、前述したように、エージェントベーストシミュレーションでは、各エージェントはメッセージを受信するたびに、エージェント処理を起動して内部状態を更新する。したがって、メッセージの送信元エージェントが同じであれば、エージェント処理の起動の順序は変わらないため、2つのシナリオにおけるエージェントの挙動は類似していると考えられるためである。
図17は、与えられた2つのシナリオにおいてエージェントの挙動が類似しているか否かを判定する処理の手順を示した図である。本処理は、注目するエージェント、注目時刻t、および、類似関係を判定する2つのシナリオ、を入力されて、時刻tにおけるエージェントの挙動が2つのシナリオにおいて類似しているか否かの判定結果を2値を出力する。判定は、注目時刻t以前にエージェントが受信した全てのメッセージの数と送信元の順序が同じかを調べることで行う。
具体的には、まず、2つのシナリオそれぞれにおいて、注目時刻t以前にエージェントが受信したメッセージの数を比較する(ステップ410)。メッセージの数が同じでなければ、類似していないと判定する(ステップ420)。受信したメッセージの数が同じ場合、受信したメッセージ全てを送信時刻の順に整列して比較したときに(ステップ430、440)、メッセージの送信元エージェントが全てのメッセージについて同じであれば類似している(ステップ460)、1つでもメッセージの送信元エージェントが異なっていれば類似していない(ステップ450)、と判定する。
なお、エージェントが受信したメッセージの数と、メッセージの送信元エージェント、および、メッセージの送信時刻、に着目するかわりに、エージェントが送信したメッセージの数と、メッセージの受信先エージェント、および、メッセージの送信時刻、に着目して同様の処理を行うことも可能である。また、エージェントベーストシミュレーションでは、エージェントがメッセージを受信したときにエージェントの内部状態の更新処理が起動されることを考えると、受信メッセージの数および、メッセージの送信時刻の代わりに、エージェント内部状態更新処理の起動回数および起動時刻、を用いる実施の形態も可能である。
以上のように、実施例2では、巨視的なイベントの認識・抽出のための第一の処理、すなわち、エージェント挙動のシナリオ間ばらつきを算出する処理を、エージェントモデルの内容に関わらず自動的に算出することが可能となる。