(57)【要約】【課題】不要な仮説のシミュレーション結果を簡単に削除することができるとともに、削除後のメモリ領域を効率的に再利用することができるようにする。【解決手段】仮説評価処理部９が、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部１のリングバッファ２に格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファ２をリセットする。【選択図】図１
2014119794.tif 000002
【特許請求の範囲】
【請求項１】
モンテカルロシミュレーションによって、想定される将来状況を仮説として予測する予測シミュレーション装置において、
シミュレーション開始時刻からシミュレーション終了時刻に至るまでの各々のシミュレーション時刻に対応する仮説のシミュレーション結果を格納するリングバッファが複数配列されているシミュレーション結果格納部と、
シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファに格納するとともに、上記仮説のシミュレーションによって新たな仮説が派生すれば、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファに格納する仮説予測処理部と、
あるシミュレーション時刻に観測情報が与えられると、上記シミュレーション結果格納部のリングバッファに格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と上記観測情報を比較して、シミュレーション結果が上記観測情報と一致していない仮説を特定し、上記仮説のシミュレーション結果を格納しているリングバッファをリセットする仮説評価処理部と
を備えていることを特徴とする予測シミュレーション装置。
【請求項２】
シミュレーション結果格納部におけるリングバッファの中で、仮説のシミュレーション結果が格納されていない未使用のリングバッファを示す未使用リングバッファ情報を格納する未使用リングバッファ情報格納部を備え、
仮説予測処理部は、仮説のシミュレーションによって新たな仮説が派生すると、未使用リングバッファ情報格納部に格納されている未使用リングバッファ情報を参照して未使用のリングバッファを特定し、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファに格納する
ことを特徴とする請求項１記載の予測シミュレーション装置。
【請求項３】
仮説予測処理部は、新たな仮説のシミュレーション結果を未使用のリングバッファに格納すると、上記リングバッファが使用中であることを示すように、未使用リングバッファ情報格納部により格納されている未使用リングバッファ情報を更新し、
仮説評価処理部は、観測情報と一致していない仮説のシミュレーション結果を格納しているリングバッファをリセットすると、上記リングバッファが未使用であることを示すように、上記未使用リングバッファ情報格納部により格納されている未使用リングバッファ情報を更新する
ことを特徴とする請求項２記載の予測シミュレーション装置。
【請求項４】
未使用リングバッファ情報格納部は、未使用のリングバッファを示す未使用リングバッファ情報として、未使用のリングバッファのＩＤを格納するものであって、未使用のリングバッファのＩＤを格納する記憶要素が複数連結されているスタックで構成されていることを特徴とする請求項３記載の予測シミュレーション装置。
【請求項５】
未使用リングバッファ情報格納部は、後入れ先出し方式のスタックで構成されていることを特徴とする請求項４記載の予測シミュレーション装置。
【請求項６】
仮説評価処理部は、観測情報が与えられたシミュレーション時刻において、仮説のシミュレーション結果が複数のリングバッファに格納されている場合、複数のリングバッファに格納されている仮説のシミュレーション結果と上記観測情報の比較処理を並列に実行することを特徴とする請求項５記載の予測シミュレーション装置。
【請求項７】
シミュレーション結果格納部における各々のリングバッファは、各々のシミュレーション時刻に対応するシミュレーション結果を格納する複数の記憶素子から構成されており、上記複数の記憶要素は、互いに連結されて、先頭の記憶要素と末尾の記憶要素が連結されていることを特徴とする請求項１から請求項６のうちのいずれか１項記載の予測シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、モンテカルロシミュレーションによって、想定される将来状況を仮説として予測する予測シミュレーション装置に関するものである。
【背景技術】
【０００２】
以下の非特許文献１には、Ｏｐｔｉｍｉｓｔｉｃ法を用いる分散シミュレーションシステム（予測シミュレーション装置）が開示され、また、分散シミュレーションシステムの標準アーキテクチャ規約であるＩＥＥＥ−１５１６  ＨＬＡ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）のプログラミングインタフェース規約が開示されている。
ここで、図７はＨＬＡによる分散シミュレーションシステムアーキテクチャを示す構成図である。
ＨＬＡでは、シミュレーションシステムの全体がフェデレーション１０１と呼ばれ、分散実行される模擬処理などのプログラムがフェデレート１０２と呼ばれる。
シミュレーションの実行中に行われるフェデレーション１０１の実行制御や、複数のフェデレート１０２の間のデータ交換などの共通機能が、ＲＴＩ（Ｒｕｎ−Ｔｉｍｅ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）１０３と呼ばれる分散シミュレーション基盤により提供される。
【０００３】
図８はＨＬＡにおけるＯｐｔｉｍｉｓｔｉｃ法によるフェデレートのシミュレーション時刻進行の一例を示す説明図である。
フェデレート１０２（フェデレート（１）、フェデレート（２））は、シミュレーション時刻で模擬処理を実行するが、その際に、将来のシミュレーション時刻の模擬を行うことも可能である。
ここで、将来のシミュレーション時刻での模擬は、未だ確定しておらず、取消される可能性がある模擬であることから、「仮説」と呼ぶことにする。
【０００４】
図８の例では、フェデレート（１）は、シミュレーション時刻ｔ０において、シミュレーション時刻ｔ０より将来の時刻の仮説を実行し、その結果として、シミュレーション時刻ｔｘのイベントｅｖ（ｔｘ）をフェデレート（２）に送信している。
Ｏｐｔｉｍｉｓｔｉｃ法に基づいて時刻が管理されるフェデレーション１０１において、フェデレート１０２が、自分のシミュレーション時刻よりも将来の時刻のイベントを任意のタイミングで受信できることが特徴である。
そのため、フェデレート（２）は、シミュレーション時刻ｔ０において、将来イベントであるｅｖ（ｔｘ）を受信して、イベントｅｖ（ｔｘ）に基づくシミュレーション時刻ｔｘの仮説を実行することができる。
【０００５】
次に、図９は図８のフェデレート１０２（フェデレート（１）、フェデレート（２））が時刻進行して、シミュレーション時刻ｔｘに進んだ際の処理を示す説明図である。
フェデレート（２）は、図８に示すように、シミュレーション時刻ｔ０において、シミュレーション時刻ｔｘの仮説を実行しているため、シミュレーション時刻ｔｘに進んだ際には、図９に示す処理フローにしたがって、シミュレーション時刻ｔｘの仮説の評価を行う。
その仮説が誤っている場合には、その仮説の取消を実行した後に、シミュレーション時刻ｔｘの模擬を実行する。
【０００６】
図１０は仮説が誤っているために仮設が取消された場合のイベント取消の一例を示す説明図である。
フェデレート（２）のシミュレーション時刻ｔｘにおいて、以前のシミュレーション時刻ｔ０で実行したシミュレーション時刻ｔｘの仮説が誤っていたことが判明して仮説の取消が行われた結果、その仮説に基づいてフェデレート（１）に送信されていたイベントｅｖ（ｔｙ）についても取消が行われる。
イベントｅｖ（ｔｙ）の取消は、イベント送信先であるフェデレート（１）に対して通知され、フェデレート（１）では、イベントｅｖ（ｔｙ）に基づいてシミュレーション時刻ｔ０で実行していた仮説の取消処理が行われる。
なお、フェデレート１０２のシミュレーション時刻の進行制御と、イベントの通信処理は、ＲＴＩ１０３が管理する。
【０００７】
以上のように、Ｏｐｔｉｍｉｓｔｉｃ法では、シミュレーションにおける現在時刻より将来の時刻の模擬を仮説として実行し、さらに、仮説によって発生した将来イベントの送信と受信によって仮説の実行を進めていくことが可能である。
また、将来イベントについては、仮説が誤っていれば、取り消しを行うことが可能であるため、相反するような複数のイベントを同時に送信することで、相反するようなシミュレーションを同時に実行することも可能である。
この特徴を利用すると、例えば、確率的なイベントを複数派生させることによって、モンテカルロシミュレーションにおける複数のモンテカルロ試行を同時に実行させることが可能である。
このように、Ｏｐｔｉｍｉｓｔｉｃ法によって、モンテカルロ試行を同時に実行制御する分散シミュレーションシステムの例として、以下の非特許文献２に開示されている分散シミュレーションシステムが挙げられる。
【０００８】
非特許文献２では、ＨＬＡに類似しているシステム構成において、実時間における現在時刻より未来の状況をＯｐｔｉｍｉｓｔｉｃ法によって予測的にシミュレーション実行するためのシミュレーション実行基盤について開示している。
非特許文献２の５．１節によれば、将来予測された複数のシミュレーションは、多数のＤｅｃｉｓｉｏｎ  Ｐｏｉｎｔによってグラフ構造化されたＦｕｔｕｒｅｓ  Ｇｒａｐｈとして表され、Ｄｅｃｉｓｉｏｎ  Ｐｏｉｎｔによって枝分かれされた１つのパスが、１回のモンテカルロ試行において実行されるシミュレーションに対応している。
【０００９】
図１１は非特許文献２に開示されているＦｕｔｕｒｅｓ  Ｇｒａｐｈの一例を示す説明図である。
各時刻（縦線）において、黒丸で示されているのが、その時刻におけるイベントを示しており、その時刻において、イベントを処理した結果が次以降の時刻のイベントとして出力されることを矢印線で示している。
１つのイベント処理から複数の矢印線が出力されているものは、そのイベント処理において、排他的な複数のＤｅｃｉｓｉｏｎが出力されていることを示しており、このイベント処理が、シミュレーションが枝分かれするＤｅｃｉｓｉｏｎ  Ｐｏｉｎｔである。なお、時刻線上におけるイベントの置かれた位置は、そのイベントを正規化した際の相対的なイベント間の違いを示している。
【００１０】
図１１では、時刻ｔ０から時刻ｔｘまでの論理時間進行において、各時刻で１つ以上のＤｅｃｉｓｉｏｎ  Ｐｏｉｎｔが存在し、時刻が進むにしたがってシミュレーションが枝分かれしている様子を示している。
最終的に、時刻ｔｘにおける各シミュレーションの結果であるイベントが正規化され、正規化された結果の分布から将来についての確率的な見積りが行われる。
【００１１】
図１２は非特許文献２に開示されているシミュレーション実行基盤が図１１のＦｕｔｕｒｅｓ  ＧｒａｐｈをＯｐｔｉｍｉｓｔｉｃ法によってモンテカルロシミュレーションを実行する例を示す説明図である。
Ｏｐｔｉｍｉｓｔｉｃ法では、非特許文献１の内容で説明した通り、将来時刻のイベントを受け取ることで、仮説として将来時刻のシミュレーションを実行することができ、また、イベントの取り消しによって、仮説のシミュレーションを実行し直すことが可能である。
非特許文献２に開示されているシミュレーション実行基盤は、Ｏｐｔｉｍｉｓｔｉｃ法の仕組みを利用し、１つのモンテカルロ試行に対応するシミュレーションを１つの仮説として実行し、予測したい将来時刻までのシミュレーションを実行し終えると、便宜的にイベントの取り消しを実施して、別のモンテカルロ試行に対応するシミュレーションを実行できる時刻まで時間を巻き戻し、別のモンテカルロ試行に対応するシミュレーションを実行するようにしている。
【００１２】
図１２の例では、まず、モンテカルロ試行の１回目において、時刻ｔ０からシミュレーション（１）を実行し、時刻を進めるにしたがってＤｅｃｉｓｉｏｎ  Ｐｏｉｎｔによって別のイベントが枝分かれするが、その枝分かれしたイベントの処理は保留して時刻ｔｘまでシミュレーション（１）を実行する。
次に、モンテカルロ試行の２回目においては、シミュレーション（１）で、別のシミュレーションが最初に分岐した時点において、シミュレーション（１）を実行するために使用したイベントを便宜的に取り消す処理を行う。ただし、このイベントの取り消しは、便宜的なものであり、イベントから派生して実行されたシミュレーションの全てが取り消されるわけではなく、シミュレーション結果は全て保存されている。
【００１３】
イベントの便宜的な取り消しに基づき、非特許文献２に開示されている分散シミュレーション基盤が、シミュレーション（１）で保留したシミュレーションを実行可能な時刻である時刻ｔ１まで時刻を巻き戻し、実行可能なイベントに基づいて時刻ｔ１からシミュレーション（２）を時刻ｔｘまで実行する。
モンテカルロ試行の３回目では、モンテカルロ試行の２回目と同様に、シミュレーション（１）及びシミュレーション（２）で保留されたシミュレーションを実行可能な時刻である時刻ｔ２まで時刻を巻き戻し、時刻ｔ２からシミュレーション（３）を実行する。なお、シミュレーションの実行中に、他のモンテカルロ試行のシミュレーション結果とイベントが同じになる場合は、シミュレーションをマージすることにより、余分なシミュレーションの分岐を抑制する。
【００１４】
以上のように、非特許文献２の方式では、Ｏｐｔｉｍｉｓｔｉｃ法を利用してモンテカルロシミュレーションを実行することにより、各モンテカルロ試行において、巻き戻される時刻までのシミュレーションと等しいイベントのシミュレーションについて、それぞれ実行回数が１回のみとなり、同じ結果になることが分かっているイベント処理を省略することができるため、モンテカルロシミュレーションを高速に実行することが可能になる。
【００１５】
Ｏｐｔｉｍｉｓｔｉｃ法を用いて、非特許文献２で例示したようなモンテカルロシミュレーションを行うには、時刻及び仮説毎のシミュレーション結果をメモリ領域に保存する必要があり、そのためのデータ構造は、図１１に示すように、シミュレーションの開始時点を根、Ｄｅｃｉｓｉｏｎ  Ｐｏｉｎｔを節として枝分かれしたツリーデータ構造によって実現するのが自然である。
特に、非特許文献２で例示したように、特に制約の無いモンテカルロシミュレーションを行う場合には、このようなツリーデータ構造を用いても特に問題はない。
しかし、例えば、実世界に設置されたセンサシステムから得られる観測情報に基づいて、将来予測をモンテカルロシミュレーションによって実行するような用途においては、時々刻々と入力される観測情報によってシミュレーション内容を評価して、場合によってはシミュレーションをやり直す必要があるため、ツリーデータ構造では、アクセス効率に課題がある。
【００１６】
図１３は観測情報に基づいて将来予測を行うモンテカルロシミュレーションシステム（予測シミュレーション装置）の概要を示す説明図である。図１３は非特許文献２のＦｉｇｕｒｅ  ４を分かり易く変更したものである。
図において、予測フェーズは、モンテカルロシミュレーションを実行する処理であり、ｊ個のモンテカルロ試行に対応する仮説Ｘｐを将来時刻であるｔｉ＋１まで実行する。
この状態において、現在時刻ｔｉで観測情報Ｘｍが入力されると、予測フェーズに切り替わって評価フェーズが開始され、時刻ｔｉのｊ個の仮説Ｘｐと観測情報Ｘｍの比較評価が行われる。
評価フェーズでは、ｊ個の仮説Ｘｐはｋ個（ｋ＜ｊ）の評価結果Ｘｅに絞り込まれ、評価フェーズの処理が完了すると、残った評価結果Ｘｅを基づいて予測フェーズの処理が開始される。
【００１７】
このように、図１３に示すモンテカルロシミュレーションシステムでは、観測情報Ｘｍの入力によって、評価フェーズと予測フェーズの処理の切り替えと、仮説Ｘｐと観測情報Ｘｍの比較評価による絞り込みが行われることにより、センサシステムから離散的に入力される観測情報Ｘｍを動的にモンテカルロシミュレーションに反映し、観測情報Ｘｍと矛盾するために考慮する必要のないモンテカルロ試行を排除することができる。これにより、シミュレーションの高速化や、有限であるメモリ資源の効率的な利用が実現される。
図１４及び図１５は図１３に示すモンテカルロシミュレーションシステムにおいて、時刻及び仮説毎のシミュレーション結果をツリーデータ構造で管理した場合の処理概要を例示する説明図である。
【００１８】
図１４は予測フェーズ処理によってモンテカルロシミュレーションが１６個の仮説Ｘｐ１〜Ｘｐ１６を時刻ｔ４まで実行しており、現在時刻ｔ２で観測情報Ｘｍが入力されている状況を示している。
観測情報Ｘｍは、時刻ｔ２における仮説Ｘｐ５〜Ｘｐ８と完全に一致している。
図１５は図１４の状況の次に評価フェーズが実行された状況を示している。図１５の状況では、時刻ｔ２の観測情報Ｘｍによって仮説Ｘｐ１〜Ｘｐ１６の評価が行われたことにより、観測情報Ｘｍと一致する仮説Ｘｐ５〜Ｘｐ８が評価結果Ｘｅ１〜Ｘｅ４として残り、その他の仮説は排除されている。
そのため、ツリーデータ構造として管理されていた時刻及び仮説毎のシミュレーション結果については、図１５の●で示されたデータと実線で示されたデータ間の関連付けが残され、それ以外の▲で示されたデータと破線で示されたデータ間の関連付けが削除される。
【００１９】
この場合、ツリーデータ構造に対して削除処理を行うが、削除されたメモリ領域を再利用する上で、次のような課題がある。
第一の課題として、このツリーデータ構造から、仮説単位でシミュレーション結果をまとめて削除することができず効率的でないという課題がある。これは、木の節によって枝分かれしている部分は別の仮説の派生元となっているため、仮説のＩＤのみをキー情報として削除すると、残したい仮説のシミュレーション結果まで削除してしまうからである。例えば、図１５の状況で仮説Ｘｐ１を削除すると、残したい仮説Ｘｐ５〜Ｘｐ８も全て削除されてしまうからである。
このため、観測情報Ｘｍの時刻までは、木の節／葉を辿りながら削除するものを探索する必要があるという課題である。
【００２０】
第二の課題として、ツリーデータ構造において削除したデータ及びデータ間の関連付けの効率的な再利用が難しいという課題がある。これは、評価フェーズが完了した後に予測フェーズが実行され、さらに、将来の時刻まで仮説のシミュレーションが進み、ツリーデータ構造に新たにシミュレーション結果を格納する際に、評価フェーズで削除されたメモリ領域を再利用する場合の課題である。
ツリーデータ構造に対する削除処理は、排除する仮説に応じて行なわれるため、時刻間のデータ間の関連付けもそのまま削除される。そのため、削除されたメモリ領域を再利用する際は、データ間の関連付けを保ったまま再利用（例えば、図１５の状態であれば、削除された時刻ｔ0のデータを時刻ｔ5の評価結果Ｘｅ1（Ｘｐ5）として再利用することにより、削除された時刻ｔ1のデータが時刻ｔ6のデータとして再利用される）することができれば効率的であるが、データ間の関連付けは単純なリスト構造ではなく、削除された仮説の派生状況に応じた部分的なツリー関係をもった構造となるため、そのまま再利用することができないという課題がある。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】IEEE 1516.1-2000 - Standard for Modeling and Simulation High Level Architecture(HLA) - Federate Interface Specification
【非特許文献２】Jeffrey S. Steinman, et al., “Simulating Parallel Overlapping Universes in the Fifth Dimension with HyperWarpSpeed Implemented in the WarpIV Kernel”, 2008 Spring Simulation Interoperability Workshop, 08S-SIW-025
【発明の概要】
【発明が解決しようとする課題】
【００２２】
従来の予測シミュレーション装置は以上のように構成されているので、観測情報Ｘｍとシミュレーション結果が一致しない仮説のシミュレーション結果を削除する際、ツリーデータ構造から、仮説単位でシミュレーション結果をまとめて削除することができず、観測情報Ｘｍの時刻までは、木の節／葉を辿りながら削除対象を探索する必要がある。このため、仮説のシミュレーション結果を削除する際の手間が多くなる課題があった。
また、メモリ領域から仮説のシミュレーション結果を削除しても、削除されたメモリ領域を効率的に再利用することができない課題があった。
【００２３】
この発明は上記のような課題を解決するためになされたもので、誤っている仮説のシミュレーション結果を簡単に削除することができるとともに、削除後のメモリ領域を効率的に再利用することができる予測シミュレーション装置を得ることを目的とする。
【課題を解決するための手段】
【００２４】
この発明に係る予測シミュレーション装置は、シミュレーション開始時刻からシミュレーション終了時刻に至るまでの各々のシミュレーション時刻に対応する仮説のシミュレーション結果を格納するリングバッファが複数配列されているシミュレーション結果格納部と、シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファに格納するとともに、その仮説のシミュレーションによって新たな仮説が派生すれば、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファに格納する仮説予測処理部と、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部のリングバッファに格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファをリセットする仮説評価処理部とを備えるようにしたものである。
【発明の効果】
【００２５】
この発明によれば、仮説予測処理部が、シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファに格納するとともに、その仮説のシミュレーションによって新たな仮説が派生すれば、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファに格納する一方、仮説評価処理部が、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部のリングバッファに格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファをリセットするように構成したので、誤っている仮説のシミュレーション結果を簡単に削除することができるとともに、削除後のメモリ領域を効率的に再利用することができる効果がある。
【図面の簡単な説明】
【００２６】
【図１】この発明の実施の形態１による予測シミュレーション装置を示す構成図である。
【図２】１つの仮説Ｘｐ１について、シミュレーション開始時刻ｔ０から１時刻分ｔ１のシミュレーションを実行して、仮説Ｘｐ１のシミュレーション結果Ｘｐ１（ｔ１）を格納した状況を示す説明図である。
【図３】仮説Ｘｐ１のシミュレーション結果Ｘｐ１（ｔ２）と、新たな仮説Ｘｐ２のシミュレーション結果Ｘｐ２（ｔ２）を格納した状況を示す説明図である。
【図４】シミュレーション時刻ｔ２で観測情報Ｘｍが与えられたことで評価処理が実行されて、その観測情報Ｘｍとシミュレーション時刻ｔ２における各仮説Ｘｐ１，Ｘｐ２，Ｘｐ３のシミュレーション結果の比較評価が行われる状況を示す説明図である。
【図５】仮説Ｘｐ２のシミュレーション結果Ｘｐ１（ｔ０）〜Ｘｐ２（ｔ３）が削除された状況を示す説明図である。
【図６】図５の処理状況に引き続き予測処理が実行されて、シミュレーション時刻ｔ４で仮説Ｘｐ１から新たな仮説Ｘｐ４が派生している状況を示す説明図である。
【図７】ＨＬＡによる分散シミュレーションシステムアーキテクチャを示す構成図である。
【図８】ＨＬＡにおけるＯｐｔｉｍｉｓｔｉｃ法によるフェデレートのシミュレーション時刻進行の一例を示す説明図である。
【図９】図８のフェデレート１０２（フェデレート（１）、フェデレート（２））が時刻進行して、シミュレーション時刻ｔｘに進んだ際の処理を示す説明図である。
【図１０】仮説が誤っているために仮設が取消された場合のイベント取消の一例を示す説明図である。
【図１１】非特許文献２に開示されているＦｕｔｕｒｅｓ  Ｇｒａｐｈの一例を示す説明図である。
【図１２】非特許文献２に開示されているシミュレーション実行基盤が図１１のＦｕｔｕｒｅｓ  ＧｒａｐｈをＯｐｔｉｍｉｓｔｉｃ法によってモンテカルロシミュレーションを実行する例を示す説明図である。
【図１３】観測情報に基づいて将来予測を行うモンテカルロシミュレーションシステム（予測シミュレーション装置）の概要を示す説明図である。
【図１４】図１３に示すモンテカルロシミュレーションシステムにおいて、時刻及び仮説毎のシミュレーション結果をツリーデータ構造で管理した場合の処理概要を例示する説明図である。
【図１５】図１３に示すモンテカルロシミュレーションシステムにおいて、時刻及び仮説毎のシミュレーション結果をツリーデータ構造で管理した場合の処理概要を例示する説明図である。
【発明を実施するための形態】
【００２７】
実施の形態１．
この実施の形態１では、モンテカルロシミュレーションによって、想定される将来状況を仮説として予測する予測シミュレーション装置について説明する。
図１はこの発明の実施の形態１による予測シミュレーション装置を示す構成図である。
図１において、シミュレーション結果格納部１はシミュレーション開始時刻からシミュレーション終了時刻に至るまでの各々のシミュレーション時刻に対応する仮説のシミュレーション結果を格納するリングバッファ２が複数配列されているメモリ領域である。
シミュレーション結果格納部１における各々のリングバッファ２は、各々のシミュレーション時刻に対応するシミュレーション結果を格納する複数の記憶素子３から構成されており、複数の記憶要素３は、互いに連結されて、先頭の記憶要素３と末尾の記憶要素３が連結されている。
【００２８】
なお、各々のリングバッファ２における記憶要素３は、２次元の格子状リスト構造をなしており、各々の記憶要素３の横方向のリンクは、ある一つの仮説におけるシミュレーション時刻推移に対応する関連付けであり、左から右方向に向かって１時刻ずつ進むに従って次の記憶要素３が連結され、最後の記憶要素３と最初の記憶要素３が連結されている。この横方向のリンクを仮説リング４と称する。
また、各々の記憶要素３の縦方向のリンクは、同じ時刻における仮説間のリンクを示しており、隣り合う要素間の関係は、同じシミュレーション時刻における異なる仮説のシミュレーション結果の関係を示すものであり、この縦方向のリンクを時刻リスト５と称する。
時刻リスト５の要素数は、設定値である最大仮説数Ｈｍａｘである。時刻リスト５の各記憶要素３へのアクセスは、線形探索によって行うものとする。
【００２９】
未使用リングバッファ情報格納部６はシミュレーション結果格納部１におけるリングバッファ２の中で、仮説のシミュレーション結果が格納されていない未使用のリングバッファ２を示す未使用リングバッファ情報を格納しているメモリ領域である。
具体的には、未使用リングバッファ情報格納部６は、未使用のリングバッファ２を示す未使用リングバッファ情報として、未使用のリングバッファ２のＩＤを格納するものであって、未使用のリングバッファ２のＩＤを格納する記憶要素７が複数連結されている後入れ先出し（ＬＩＦＯ：Ｌａｓｔ  Ｉｎ−Ｆｉｒｓｔ  Ｏｕｔ）方式のスタックで構成されている。
【００３０】
仮説予測処理部８は例えばＣＰＵを実装している半導体集積回路、ワンチップマイコン、あるいは、コンピュータの中央処理装置などから構成されており、シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファ２に格納するとともに、その仮説のシミュレーションによって新たな仮説が派生すれば、未使用リングバッファ情報格納部６に格納されている未使用リングバッファ情報を参照して未使用のリングバッファ２を特定し（未使用のリングバッファ２の中で、最も新しく、未使用の状態になったリングバッファ２）、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファ２に格納する処理を実施する。
なお、仮説予測処理部８は、新たな仮説のシミュレーション結果を未使用のリングバッファ２に格納すると、そのリングバッファ２が使用中であることを示すように、未使用リングバッファ情報格納部６により格納されている未使用リングバッファ情報を更新する。即ち、未使用リングバッファ情報格納部６の記憶要素７に格納されている当該リングバッファ２のＩＤを消去する。
【００３１】
仮説評価処理部９は例えばＣＰＵを実装している半導体集積回路、ワンチップマイコン、あるいは、コンピュータの中央処理装置などから構成されており、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部１のリングバッファ２に格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファ２をリセットする処理を実施する。
なお、仮説評価処理部９は、観測情報と一致していない仮説のシミュレーション結果を格納しているリングバッファ２をリセットすると、そのリングバッファ２が未使用であることを示すように、未使用リングバッファ情報格納部６により格納されている未使用リングバッファ情報を更新する。即ち、未使用リングバッファ情報格納部６の記憶要素７の中で、未使用のリングバッファ２のＩＤを格納していない記憶要素７に対して、リセットしたリングバッファ２のＩＤを登録する。
【００３２】
次に動作について説明する。
シミュレーション結果格納部１における各々のリングバッファ２は、１つの仮説と対応付けられており、シミュレーション開始時刻からシミュレーション終了時刻に至るまでの各々のシミュレーション時刻のシミュレーション結果（対応関係がある仮説のシミュレーション結果）を格納するが、各々のリングバッファ２における記憶要素３の数は、設定値である予測したい最大時刻Ｔｍａｘを被除数、同じく設定値である離散時刻シミュレーションによって仮説をシミュレーションする際の時刻周期Δｔ（シミュレーション時刻の間隔）を除数とするときの商に相当する。
なお、シミュレーション時刻であるアクセス時刻がｔであるとき、アクセス対象の記憶要素３を示すインデックス値Ｉは、下記の式（１）で計算を行うものとする。
Ｉ＝ｍｏｄ｛ｔ／（Ｔｍａｘ／Δｔ）｝                        （１）
式（１）において、ｍｏｄは、剰余を求める関数を表している。
ただし、この実施の形態１では、１つの記憶要素３に対して、重畳アクセスが発生しない十分な要素数があるものとする。
【００３３】
仮説予測処理部８は、シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファ２に格納する。
以下、仮説予測処理部８による予測処理を具体的に説明する。
図２は１つの仮説Ｘｐ１について、シミュレーション開始時刻ｔ０から１時刻分ｔ１のシミュレーションを実行して、仮説Ｘｐ１のシミュレーション結果Ｘｐ１（ｔ１）を格納した状況を示す説明図である。
図２の左上には、ツリーを用いて、仮説Ｘｐ１の処理状況を示している。
【００３４】
仮説予測処理部８は、シミュレーション開始時刻ｔ０において、１つの仮説Ｘｐ１のシミュレーションを開始するに際して、未使用リングバッファ情報格納部６に格納されている未使用リングバッファ情報を参照して未使用のリングバッファ２を特定する。
即ち、未使用リングバッファ情報格納部６の記憶要素７から未使用のリングバッファ２のＩＤを参照することで、未使用のリングバッファ２を特定するが、未使用リングバッファ情報格納部６は、ＬＩＦＯ方式のリングバッファで構成されているので、複数の記憶要素７の中で、最も新しくＩＤが登録された記憶要素７からＩＤを読み出して、そのＩＤを有するリングバッファ２を未使用のリングバッファ２として特定する。
未使用リングバッファ情報格納部６がＬＩＦＯ方式のスタックで構成されている理由については実施の形態２で説明する。ここでは、説明の便宜上、図２において、１番上のリングバッファ２を未使用のリングバッファ２として特定するものとする。
【００３５】
仮説予測処理部８は、未使用のリングバッファ２を特定すると、そのリングバッファ２を仮説Ｘｐ１に対応するリングバッファとして使用する。
即ち、仮説予測処理部８は、仮説Ｘｐ１について、シミュレーション開始時刻ｔ０及びシミュレーション時刻ｔ１のシミュレーションを実行すると、当該リングバッファ２の記憶要素７のうち、シミュレーション開始時刻ｔ０に対応する記憶要素７に対して、シミュレーション開始時刻ｔ０のシミュレーション結果Ｘｐ１（ｔ０）を格納し、シミュレーション時刻ｔ１に対応する記憶要素７に対して、シミュレーション時刻ｔ１のシミュレーション結果Ｘｐ１（ｔ１）を格納する。
なお、仮説予測処理部８は、１番上のリングバッファ２を未使用のリングバッファ２として特定すると、そのリングバッファ２が使用中であることを示すように、未使用リングバッファ情報格納部６の記憶要素７に格納されている当該リングバッファ２のＩＤを消去する。
【００３６】
次に、仮説予測処理部８は、仮説Ｘｐ１について、シミュレーション時刻ｔ２のシミュレーションを実行し、シミュレーション時刻ｔ２のシミュレーション結果Ｘｐ１（ｔ２）をシミュレーション時刻ｔ２に対応する記憶要素７に格納するが、ここでは、説明便宜上、仮説Ｘｐ１のシミュレーションによって新たな仮説Ｘｐ２が派生するものとする。
図３は仮説Ｘｐ１のシミュレーション結果Ｘｐ１（ｔ２）と、新たな仮説Ｘｐ２のシミュレーション結果Ｘｐ２（ｔ２）を格納した状況を示す説明図である。
【００３７】
仮説予測処理部８は、シミュレーション時刻ｔ２において、新たな仮説Ｘｐ２が派生すると、未使用リングバッファ情報格納部６に格納されている未使用リングバッファ情報を参照して未使用のリングバッファ２を特定する。ここでは、説明の便宜上、図２において、上から２番目のリングバッファ２を未使用のリングバッファ２として特定するものとする。
仮説予測処理部８は、未使用のリングバッファ２を特定すると、そのリングバッファ２を新たな仮説Ｘｐ２に対応するリングバッファとして使用する。
即ち、仮説予測処理部８は、仮説Ｘｐ２について、シミュレーション時刻ｔ２のシミュレーションを実行し、シミュレーション時刻ｔ２のシミュレーション結果Ｘｐ２（ｔ２）をシミュレーション時刻ｔ２に対応する記憶要素７（上から２番目のリングバッファ２において、左から３番目の記憶要素７）に格納する。
【００３８】
また、仮説予測処理部８は、仮説Ｘｐ２の派生元である仮説Ｘｐ１のシミュレーション結果Ｘｐ１（ｔ０），Ｘｐ１（ｔ１）を、仮説Ｘｐ２に対応するリングバッファ２にコピーする。
即ち、仮説Ｘｐ１のシミュレーション開始時刻ｔ０のシミュレーション結果Ｘｐ１（ｔ０）を、仮説Ｘｐ２に対応するリングバッファ２のシミュレーション開始時刻ｔ０に対応する記憶要素７に格納し、仮説Ｘｐ１のシミュレーション時刻ｔ１のシミュレーション結果Ｘｐ１（ｔ１）を、仮説Ｘｐ２に対応するリングバッファ２のシミュレーション時刻ｔ１に対応する記憶要素７に格納する。
なお、仮説予測処理部８は、上から２番目のリングバッファ２を未使用のリングバッファ２として特定すると、そのリングバッファ２が使用中であることを示すように、未使用リングバッファ情報格納部６の記憶要素７に格納されている当該リングバッファ２のＩＤを消去する。
【００３９】
仮説評価処理部９は、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部１のリングバッファ２に格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファ２をリセットする。
以下、仮説評価処理部９による評価処理を具体的に説明する。
【００４０】
図４はシミュレーション時刻ｔ２で観測情報Ｘｍが与えられたことで評価処理が実行されて、その観測情報Ｘｍとシミュレーション時刻ｔ２における各仮説Ｘｐ１，Ｘｐ２，Ｘｐ３のシミュレーション結果の比較評価が行われる状況を示す説明図である。
ただし、図４の例では、仮説Ｘｐ３は、シミュレーション時刻ｔ３で仮説Ｘｐ１から派生したものであるため、シミュレーション時刻ｔ２の仮説Ｘｐ３のシミュレーション結果については、派生元の仮説である仮説Ｘｐ１のシミュレーション時刻ｔ２のシミュレーション結果Ｘｐ１（ｔ２）がコピーされたものである。
【００４１】
仮説評価処理部９は、図４に示すように、シミュレーション時刻ｔ２に観測情報Ｘｍが与えられると、シミュレーション結果格納部１における各リングバッファ２の記憶要素３のうち、シミュレーション時刻ｔ２の時刻リスト５に含まれる記憶要素３を特定し、その記憶要素３からシミュレーション時刻ｔ２における各仮説Ｘｐ１，Ｘｐ２，Ｘｐ３のシミュレーション結果Ｘｐ１（ｔ２），Ｘｐ２（ｔ２），Ｘｐ１（ｔ２）の読み出しを行う。
そして、仮説評価処理部９は、観測情報Ｘｍとシミュレーション時刻ｔ２における各仮説Ｘｐ１，Ｘｐ２，Ｘｐ３のシミュレーション結果Ｘｐ１（ｔ２），Ｘｐ２（ｔ２），Ｘｐ１（ｔ２）とを比較する。
【００４２】
ここでは、説明の便宜上、観測情報Ｘｍと仮説Ｘｐ１，Ｘｐ３のシミュレーション結果Ｘｐ１（ｔ２），Ｘｐ１（ｔ２）が一致するが、観測情報Ｘｍと仮説Ｘｐ２のシミュレーション結果Ｘｐ２（ｔ２）が一致しないものとする。
なお、仮説Ｘｐ３は、上述したように、シミュレーション時刻ｔ３で仮説Ｘｐ１から派生したものであるが、シミュレーション時刻ｔ２の仮説Ｘｐ３のシミュレーション結果として、派生元の仮説である仮説Ｘｐ１のシミュレーション時刻ｔ２のシミュレーション結果Ｘｐ１（ｔ２）がコピーされているので、シミュレーション時刻ｔ２で与えられた観測情報Ｘｍと、仮説Ｘｐ３のシミュレーション結果Ｘｐ１（ｔ２）とを比較評価することができる。
【００４３】
仮説評価処理部９は、観測情報Ｘｍと仮説Ｘｐ２のシミュレーション結果Ｘｐ２（ｔ２）が一致していないため、仮説Ｘｐ２のシミュレーション結果Ｘｐ１（ｔ０）〜Ｘｐ２（ｔ３）の削除処理を実施する。
図５は仮説Ｘｐ２のシミュレーション結果Ｘｐ１（ｔ０）〜Ｘｐ２（ｔ３）が削除された状況を示す説明図である。
仮説評価処理部９による仮説Ｘｐ２のシミュレーション結果Ｘｐ１（ｔ０）〜Ｘｐ２（ｔ３）の削除処理は、図５に示すように、仮説Ｘｐ２に対応するリングバッファ２（上から２番目のリングバッファ２）の記憶要素３の記憶内容をリセットすることを意味する。
【００４４】
仮説評価処理部９は、仮説Ｘｐ２のシミュレーション結果Ｘｐ１（ｔ０）〜Ｘｐ２（ｔ３）を格納しているリングバッファ２をリセットすると、そのリングバッファ２が未使用であることを示すように、未使用リングバッファ情報格納部６により格納されている未使用リングバッファ情報を更新する。
即ち、仮説評価処理部９は、未使用リングバッファ情報格納部６の記憶要素７の中で、未使用のリングバッファ２のＩＤを格納していない記憶要素７に対して、リセットしたリングバッファ２のＩＤを登録する。
これにより、次の観測情報Ｘｍが入力されても、仮説Ｘｐ２のシミュレーション結果が観測情報Ｘｍの比較評価の対象にならなくなる。
また、新たな仮説が派生したとき、仮説Ｘｐ２に対応するリングバッファ２（上から２番目のリングバッファ２）を新たな仮説に対応するリングバッファ２として再利用することが可能になる。
【００４５】
以上で明らかなように、この実施の形態１によれば、仮説予測処理部８が、シミュレーション時刻毎に、仮説のシミュレーションを実行して、そのシミュレーション結果を当該仮説に対応するリングバッファ２に格納するとともに、その仮説のシミュレーションによって新たな仮説が派生すれば、当該シミュレーション時刻における新たな仮説のシミュレーション結果と、当該シミュレーション時刻より１時刻前までの各シミュレーション時刻における派生元の仮説のシミュレーション結果とを未使用のリングバッファ２に格納する一方、仮説評価処理部９が、あるシミュレーション時刻に観測情報が与えられると、シミュレーション結果格納部１のリングバッファ２に格納されている上記シミュレーション時刻における各仮説のシミュレーション結果と観測情報を比較して、シミュレーション結果が観測情報と一致していない仮説を特定し、その仮説のシミュレーション結果を格納しているリングバッファ２をリセットするように構成したので、誤っている仮説のシミュレーション結果を簡単に削除することができるとともに、削除後のメモリ領域を効率的に再利用することができる効果を奏する。
【００４６】
即ち、この実施の形態１によれば、格子状リスト構造であるシミュレーション結果格納部１と未使用リングバッファ情報格納部６を利用することにより、下記に示すように、仮説のシミュレーション結果を効率的に利用することができる。
まず、初期状態で仮説の生成を行う際や、新たな仮説の派生が行われた際に、未使用リングバッファ情報格納部６を参照する１回の手続きで、仮説のシミュレーション結果を格納することが可能なリングバッファ２を特定することができる。
また、仮説の派生が行われた際に、派生元の仮説のシミュレーション結果を、派生した仮説に対応するリングバッファ２の記憶要素３にコピーするようにしているので、その仮説が派生した時刻より前の時刻に入力された観測情報であっても、１回の参照手続きで、派生した仮説との比較評価を行うことができる。
【００４７】
仮説を破棄する際は、破棄する仮説に対応するリングバッファ２の記憶要素３の記憶内容をリセットすることで、破棄する仮説のシミュレーション結果が比較評価の対象から除外され、また、破棄する仮説に対応するリングバッファ２が未使用のリングバッファであるように、未使用リングバッファ情報格納部６により格納されている未使用リングバッファ情報を更新しているので、破棄する仮説に対応するリングバッファ２を効率的に再利用することができる。
なお、シミュレーション結果格納部１がリングバッファ２で構成されているため、観測情報の時刻より古いシミュレーション時刻のシミュレーション結果については、特に削除処理を行うことなく、そのシミュレーション結果を格納していた記憶要素３を再利用することが可能である。
【００４８】
実施の形態２．
この実施の形態２では、仮説評価処理部８が、観測情報Ｘｍが与えられたシミュレーション時刻において、仮説のシミュレーション結果が複数のリングバッファ２に格納されている場合、複数のリングバッファ２に格納されている仮説のシミュレーション結果と観測情報Ｘｍの比較評価を並列に実行する予測シミュレーション装置について説明する。
【００４９】
図６は図５の処理状況に引き続き予測処理が実行されて、シミュレーション時刻ｔ４で仮説Ｘｐ１から新たな仮説Ｘｐ４が派生している状況を示す説明図である。
仮説評価処理部８は、シミュレーション時刻ｔ４において、仮説Ｘｐ１から新たな仮説Ｘｐ４が派生すると、未使用リングバッファ情報格納部６に格納されている未使用リングバッファ情報を参照して未使用のリングバッファ２を特定する。
ここで、未使用リングバッファ情報格納部６は、ＬＩＦＯ方式のスタックで構成されているので、仮説評価処理部９における直前の評価処理で削除された仮説Ｘｐ２に対応するリングバッファ２（上から２番目のリングバッファ２）が、未使用のリングバッファ２として特定される。
【００５０】
仮説評価処理部８は、未使用のリングバッファ２を特定すると、そのリングバッファ２を新たな仮説Ｘｐ４に対応するリングバッファとして使用するが、直前の評価処理で削除された仮説Ｘｐ２に対応するリングバッファ２が、未使用のリングバッファ２として特定されることで、各々の記憶要素３の縦方向のリンクである時刻リスト５において、仮説Ｘｐ２の削除に伴って未使用の状態になった記憶要素３が使用状態に戻り、時刻リスト５の先頭からシミュレーション結果を格納している記憶要素３が連続して並ぶ形になり易くなる。
【００５１】
時刻リスト５は、仮説評価処理部８が観測情報Ｘｍと各仮説のシミュレーション結果を比較評価する際に参照される。
ここで、仮説評価処理部８が、例えば、複数のプロセッサから構成されており、複数のプロセッサが、時刻リスト５を参照して、比較評価を並列に処理する場合を想定する。
時刻リスト５の先頭からシミュレーション結果を格納している記憶要素３が連続的に並んでおらず、シミュレーション結果を格納している記憶要素３が飛び飛びである場合、複数のプロセッサの処理負荷が均等になるように、時刻リスト５における各々の記憶要素３を割り当てることは困難である。
即ち、シミュレーション結果を格納している記憶要素３と、シミュレーション結果を格納していない記憶要素３とが不規則に混在しているため、時刻リスト５の先頭の記憶要素３から１つずつ取り出して、その記憶要素３を順番に複数のプロセッサに割り当てることができず、複数のプロセッサの処理負荷が均等になるように記憶要素３を割り当てることは困難である。
【００５２】
複数のプロセッサの処理負荷にばらつきが生じていると、予測シミュレーション装置の処理時間が、最も処理負荷が高いプロセッサの処理時間によって決まり、並列に処理を実行するメリットが低下する（処理負荷が低いプロセッサは、先に処理が終了して、待機状態になるため、並列処理の効率が低下する）。
しかし、この実施の形態２では、未使用リングバッファ情報格納部６が、ＬＩＦＯ方式のリングバッファで構成されており、時刻リスト５の先頭からシミュレーション結果を格納している記憶要素３が連続して並ぶ形になり易くなるため、時刻リスト５の先頭の記憶要素３から１つずつ取り出して、その記憶要素３を順番に複数のプロセッサに割り当てることで、複数のプロセッサの処理負荷の均等化を図ることができるようになる。
これにより、複数のプロセッサによる並列処理の効率を高めて、予測シミュレーション装置の処理時間を短縮することができる効果を奏する。
【００５３】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００５４】
１  シミュレーション結果格納部、２  リングバッファ、３  記憶要素、４  仮説リング、５  時刻リスト、６  未使用リングバッファ情報格納部、７  記憶要素、８  仮説予測処理部、９  仮説評価処理部、１０１  フェデレーション、１０２  フェデレート、１０３  ＲＴＩ。
【図１】
2014119794.tif 000003
【図２】
2014119794.tif 000004
【図３】
2014119794.tif 000005
【図４】
2014119794.tif 000006
【図５】
2014119794.tif 000007
【図６】
2014119794.tif 000008
【図７】
2014119794.tif 000009
【図８】
2014119794.tif 000010
【図９】
2014119794.tif 000011
【図１０】
2014119794.tif 000012
【図１１】
2014119794.tif 000013
【図１２】
2014119794.tif 000014
【図１３】
2014119794.tif 000015
【図１４】
2014119794.tif 000016
【図１５】
2014119794.tif 000017