(57)【要約】【課題】本発明は、シミュレーションの総実行時間をより短縮することができるシミュレーション実行方法を提供する。【解決手段】シミュレータは、試行対象としている模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録済であるか否かを確認する（Ｓ１６）。このときに、シミュレータは、試行対象としている模擬要素と同一の模擬要素についての単位模擬結果がデータベースに登録済であることを確認した場合に、登録されている単位模擬結果をデータベースから抽出し（Ｓ１７）、その単位模擬結果を出力する（Ｓ１４）。他方、シミュレータは、試行対象としている模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録されていないことを確認した場合に、その模擬要素について試行演算を実行する（Ｓ１８）。【選択図】図６
2010145895.tif 000002
【特許請求の範囲】
【請求項１】
計算機による演算処理によって実行され、モンテカルロ法を用いて、複数のユニットが登場するシナリオについて複数回試行演算を実行するためのシミュレーション実行方法であって、
初回に、前記シナリオについて一通りの試行演算を実行して、複数のユニットのそれぞれに関する模擬要素について単位模擬結果を取得する第１のステップと、
２回目以降に、前記シナリオに含まれる所定の模擬要素のうち前回までに試行演算を実行した同一内容でかつ同一条件の模擬要素については取得済の単位模擬結果を再利用し、前記所定の模擬要素のうち前回までに試行演算を実行した模擬要素と内容及び条件の少なくともいずれか一方が異なる模擬要素については新たに試行演算を実行してその単位模擬結果を取得する第２のステップと
を含むことを特徴とするシミュレーション実行方法。
【請求項２】
前記所定の模擬要素は、確率的要素による不変の模擬要素であり、ユニットが自身の周囲状況を把握するための探知処理に関する模擬要素である
ことを特徴とする請求項１記載のシミュレーション実行方法。
【請求項３】
前記第１及び第２のステップは、試行対象のユニットに関する模擬要素の試行演算に用いた入力値と当該試行対象のユニットの状態値との組からなる検索キーを作成して、その作成した検索キーと、当該模擬要素の試行演算について取得した単位模擬結果とを互いに関連付けてデータベースに登録し、
前記第２のステップは、
前記検索キーを作成して、その作成した前記検索キーを用いて前記データベースを参照することにより、試行対象のユニットに関する模擬要素についての単位模擬結果を取得済であるか否かについて判断し、
当該単位模擬結果を取得済である場合には、当該単位模擬結果を前記データベースから抽出して、その抽出した当該単位模擬結果を再利用する
ことを特徴とする請求項２記載のシミュレーション実行方法。
【請求項４】
前記第１及び第２のステップは、試行対象のユニットの前記探知処理に関する模擬要素について試行演算を実行時に、当該試行対象のユニットの周囲に位置する全てのユニットに関する情報を一括したものと当該試行対象のユニットの状態値との組からなる一括処理用検索キーを作成して、その作成した前記一括処理用検索キーと当該模擬要素について取得した単位模擬結果とを互いに関連付けて前記データベースに登録し、
前記第２のステップは、
試行対象のユニットの前記探知処理に関する模擬要素について試行演算を実行する際に、前記一括処理用検索キーを作成し、作成した前記一括処理用検索キーを用いて前記データベースを参照することにより、当該模擬要素についての単位模擬結果を取得済であるか否かについて判断し、
当該単位模擬結果を取得済である場合には、当該単位模擬結果を前記データベースから抽出して、その抽出した当該単位模擬結果を再利用する
ことを特徴とする請求項３記載のシミュレーション実行方法。
【請求項５】
前記第１及び第２のステップは、
試行対象のユニットの前記探知処理に関する模擬要素について試行演算を実行時に、当該試行対象のユニットの周囲に位置する個々のユニットに関する情報と当該試行対象のユニットの状態値との組からなる個別処理用検索キーを作成して、
その作成した個別処理用検索キーと、当該模擬要素における当該個々のユニットに関して取得した単位模擬結果とを互いに関連付けて前記データベースに登録し、
前記第２のステップは、
試行対象のユニットの前記探知処理に関する模擬要素について試行演算を実行する際に、作成した前記一括処理用検索キーに関連付けられた単位模擬結果が前記データベースに登録されていない場合には、前記個別処理用検索キーを作成して、その作成した前記個別処理用検索キーを用いて前記データベースを参照することにより、当該模擬要素における当該他のユニットに関する単位模擬結果を取得済であるか否かについて判断し、
当該模擬要素における当該他のユニットに関する単位模擬結果を取得済である場合には、前記データベースから当該模擬要素における当該他のユニットに関する単位模擬結果を抽出して、その抽出した当該単位模擬結果を再利用する
ことを特徴とする請求項４記載のシミュレーション実行方法。
【請求項６】
取得した単位模擬結果の再利用回数を計数し、シミュレーション全体の試行回数に応じて、計数した再利用回数が所定値以下の単位模擬結果を前記データベースから削除可能とする第３のステップ
をさらに含むことを特徴とする請求項３から請求項５までのいずれか１項に記載のシミュレーション実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、計算機による演算処理により実行可能であり、モンテカルロ法を用いたシミュレーション実行方法に関する。
【背景技術】
【０００２】
計算機シミュレーションにおいて、その演算の中に確率的要素がある場合には、一般的に、モンテカルロシミュレーションが用いられる。このモンテカルロシミュレーションでは、初期値は同一の値にして、適当な回数、同一のロジックに基づくシミュレーションを実行することにより、把握したい事象の発生を統計的に求めることが可能となる。
【０００３】
また、モンテカルロシミュレーションでは、初期値及びシミュレーションのロジックが同一でも、そのロジックの中に確率的要素が含まれるので、対象とするアプリケーションやシナリオにもよるが、実行するシミュレーション毎に、その結果が異なるのが一般的である。特に、ユニットが多数登場する実世界の大規模シミュレーションでは、ユニット同士が互いに複雑に影響を及ぼし合うために、全体の系の挙動を把握するのは困難である。このため、モンテカルロシミュレーションには、計算機（コンピュータ等）を用いるのが一般的である。また、モンテカルロシミュレーションは、この統計的な傾向が掴めるまで実行する必要がある。
【０００４】
このような一般的な計算機シミュレーションでは、ユニットの数、パラメータ数、確率的要素の数、及びシナリオの複雑さ等に、シミュレーションの実行回数が依存するため、相当数実行する必要がある。このため、１回のシミュレーションに長時間を要するような大規模シミュレーションでは、時間的制約から、十分な演算回数のモンテカルロシミュレーションを実行することができず、統計的に算出されるシミュレーション結果の品質が低下してしまうといった課題がある。
【０００５】
これに対して、従来のシミュレーション実行方法では、１回目のシミュレーションで判明した不要な模擬要素についての演算を、２回目のシミュレーションから省くことにより、試行対象の模擬要素の個数を減少させて、演算処理の高速化を図っている（例えば、特許文献１参照）。
【０００６】
ここで、本明細書において、「ユニット」とは、移動物体（例えば、人や車や航空機や船舶等）、及び移動しない物体（例えば、砲台やミサイルサイロ等）をいう。また、本明細書において、「模擬要素」とは、シミュレーション中の部分的な試行演算（模擬：シミュレート）の単位であり、ユニットの行動に関するものの場合、例えば、個々のユニットのシミュレーション（運動処理、探知処理及び通信処理等）に相当するものをいう。
【０００７】
さらに、本明細書において、「単位模擬結果」とは、模擬要素についての演算結果（ログ）を示す。また、本明細書において、「同一内容の模擬要素」とは、試行対象のユニットの模擬要素の処理内容が一致する模擬要素をいう。さらに、本明細書において、「同一条件の模擬要素」とは、任意の時点における任意のユニットに関する模擬要素への入力値と当該ユニットの状態値との組が一致する模擬要素をいう。従って、「同一内容でかつ同一条件の模擬要素」であれば、単位模擬結果が一致する。
【０００８】
【特許文献１】特開２００７−７８２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記のような従来のシミュレーション実行方法では、模擬要素の開始時刻を基準に省略される模擬要素が決定される。このため、不確定な模擬要素の後に行われる不変の模擬要素については、その不変の模擬要素の開始時刻が不確定な模擬要素の影響により変動することになる。
【００１０】
例えば、上記のような従来のシミュレーション実行方法では、２つのユニットが会合した際に、会合時点のそれらのユニットに関する模擬要素については、省略可能となる。しかし、会合時の対処が終了した後のユニットに関する模擬要素については、会合時点におけるユニット相互が及ぼす影響によって、確率的要素が盛り込まれるため、省略することはできない。従って、上記のような従来の計算機シミュレーションでは、シミュレーションの総実行時間の短縮化を十分に図ることができなかった。
【００１１】
この発明は、上記のような課題を解決するためになされたものであり、シミュレーションの総実行時間をより短縮することができるシミュレーション実行方法を得ることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係るシミュレーション実行方法は、計算機による演算処理によって実行され、モンテカルロ法を用いて、複数のユニットが登場するシナリオについて複数回試行演算を実行するためのものであって、初回に、シナリオについて一通りの試行演算を実行して、複数のユニットのそれぞれに関する模擬要素について単位模擬結果を取得する第１のステップと、２回目以降に、シナリオに含まれる所定の模擬要素のうち前回までに試行演算を実行した同一内容でかつ同一条件の模擬要素については取得済の単位模擬結果を再利用し、所定の模擬要素のうち前回までに試行演算を実行した模擬要素と内容及び条件の少なくともいずれか一方が異なる模擬要素については新たに試行演算を実行してその単位模擬結果を取得する第２のステップとを含むものである。
【発明の効果】
【００１３】
この発明のシミュレーション実行方法によれば、所定の模擬要素のうち前回までに実行方法した同一内容でかつ同一条件の模擬要素については単位模擬結果を再利用するので、２回目以降の試行演算の対象となる模擬要素が減少することにより、シミュレーションの総実行時間をより短縮することができる。
【発明を実施するための最良の形態】
【００１４】
以下、この発明を実施するための最良の形態について、図面を参照して説明する。
実施の形態１．
図１は、この発明の実施の形態１によるシミュレーションの一例としてのウォーゲームシミュレーションを説明するための説明図である。図１において、この例のシミュレーションでは、航空機や艦船等のユニットが複数登場し、これらのユニットが互いに複雑に影響を及ぼし合いながら、所定のシナリオに沿ってシミュレーションが進行するというものである。また、このシミュレーションは、単数又は複数のコンピュータ等からなるシミュレータ（図示せず）によって実行される。
【００１５】
次に、図２は、図１のウォーゲームシミュレーションについてのタイムステップ方式による実行例を説明するための説明図である。図２に示すようなタイムステップ方式では、図１のウォーゲームシミュレーションに登場する複数のユニットに関する模擬要素について、シミュレータが微小の論理時間幅（Δｔ）ずつ模擬時刻を進めることによって試行演算を行う。つまり、シミュレータは、予め設定された模擬時刻になると、複数のユニットのそれぞれに関するΔｔの時間分の模擬要素について、試行演算を実行する。
【００１６】
ここで、シミュレータは、任意の試行対象のユニットに関する模擬要素（当該Δｔ分）について試行演算を実行する際に、その前の時点で所得した他のユニット（試行対象のユニットの周囲に位置するユニット）に関する模擬要素の単位模擬結果を入力値として使用する。なお、シミュレーション空間は三次元空間であり、ユニットの位置は三次元座標（ｘ，ｙ，ｚ）により表される。
【００１７】
具体的に、シミュレータは、予め設定された模擬時刻になると、シナリオにおける試行対象のユニットに関するイベントを発動（発火）する。そして、シミュレータは、そのイベントの試行対象のユニットに関する模擬要素について、図３に示すように、その入力値（ｘ０，ｙ０，ｚ０）と、試行対象のユニットの内部状態値（ｘ１，ｙ１，ｚ１）とに応じて、試行演算を実行する。これにより、シミュレータは、単位模擬結果（ｘ２，ｙ２，ｚ２）を出力する。これと同様に、この際に取得した単位模擬結果も、他のユニットに関する模擬要素についての試行演算の入力値として使用する。
【００１８】
また、シミュレータは、シナリオに含まれる全イベントについて、試行演算を実行し、シミュレーションを繰り返し実行することによって、統計的な結果を取得する。ここで、図４は、シミュレーション結果の一例を示すグラフである。図４では、試行対象のユニットのｘ−ｙの遷移についてのみ示す。この図４に示すように、シミュレータがシミュレーションを繰り返すことによって、終了状態におけるユニットの位置の範囲が判明する。なお、図４では、シミュレーションにおいて同じ結果に至った回数の多さに応じて、折れ線グラフの線が太くなっている。
【００１９】
さらに、シミュレータは、初回のシミュレーション（第１のステップ）において、シナリオに含まれる模擬要素について、（時系列順に）一通りの試行演算を実行する。また、シミュレータは、初回のシミュレーションにおいて、取得した単位模擬結果について、その単位模擬結果を取得する際に用いた入力値と状態値との組を検索キーとして、データベースを構築する。即ち、シミュレータは、取得した単位模擬結果を、入力値及び状態値の組に関連付けてデータベースに登録する。なお、シミュレータは、単位模擬結果のデータベースを記憶するための記憶部（記憶領域：図示せず）を有している。
【００２０】
さらに、シミュレータは、２回目以降のシミュレーション（第２のステップ）において、試行対象のイベント及びユニットに関する模擬要素に確率的要素が含まれているか否か（所定の模擬要素に該当するか否か）について判断する。そして、シミュレータは、その模擬要素に確率的要素が含まれてない場合、即ち模擬要素が確率的要素により不変である場合には、試行対象のイベントの入力値と、試行対象のユニットの内部状態値とを検索キーとして、試行対象の模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果が登録されているか否かについてデータベースを検索（同定）する。
【００２１】
そして、シミュレータは、試行対象の模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録されていれば、その単位模擬結果をデータベースから抽出して、その抽出した単位模擬結果を再利用する。他方、シミュレータは、試行対象の模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録されていなければ、その模擬要素について、新たに試行演算を実行する。即ち、シミュレータは、前回までに実行した模擬要素と内容及び条件の少なくともいずれか一方が異なる模擬要素について、新たに試行演算を実行する。また、シミュレータは、新たに取得した単位模擬結果を、検索キーに関連付けてデータベースに登録する。
【００２２】
ここで、図５は、単位模擬結果の再利用率と模擬時刻との関係を示すグラフである。図５では、２回目以降のモンテカルロシミュレーションにおける単位模擬結果の再利用率の時間変化を示す。図５に示すように、初期状態の付近（図５の左側）の文字時刻では、再利用率が高くなっており、模擬時刻の経過に伴って、再利用率が低下する。また、図５に示す各曲線に示すように、モンテカルロシミュレーションにおける単位模擬結果の再利用率は、現時点のシミュレーションの試行回数（前回までに蓄積された単位模擬結果の個数）や、そのシミュレーションにおいて発動するイベント等に応じて異なっている。
【００２３】
次に、シミュレータによる模擬要素についての試行演算の実行動作について説明する。図６は、シミュレータによる模擬要素についての試行演算の実行動作を示すフローチャートである。図６において、まず、シミュレータは、試行対象のユニットについて模擬（シミュレート）するためにイベントを発動（発火）する（ステップＳ１１）。このイベントとは、タイムステップ方式のモンテカルロシミュレーションにおいて、模擬時刻が、所定の起動時刻となった時に相当する。
【００２４】
そして、シミュレータは、試行対象としているイベント及びユニットに関する模擬要素が確率的要素を含んでいるか否かについて確認する（ステップＳ１２）。このときに、試行対象としているイベント及びユニットに関する模擬要素が確率的要素を含む場合には、シミュレータは、その模擬要素について試行演算を実行し（ステップＳ１３）、その単位模擬結果を出力する（ステップＳ１４）。そして、シミュレータは、同様の動作を繰り返す。
【００２５】
これに対して、試行対象としているイベント及びユニットに関する模擬要素が確率的要素を含んでいない場合には、シミュレータは、模擬要素への入力値と当該模擬要素の状態値とを検索キーとして、データベースに対して検索を実行する（ステップＳ１５）。
【００２６】
そして、シミュレータは、試行対象としている模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録済であるか否かを確認する（ステップＳ１６）。このときに、シミュレータは、試行対象としている模擬要素と同一の模擬要素についての単位模擬結果がデータベースに登録済であることを確認した場合に、登録されている単位模擬結果をデータベースから抽出し（ステップＳ１７）、その単位模擬結果を出力する（ステップＳ１４）。従って、シミュレータは、抽出した単位模擬結果を再利用する。そして、シミュレータは、同様の動作を繰り返す。
【００２７】
他方、シミュレータは、試行対象としている模擬要素と同一内容でかつ同一条件の模擬要素についての単位模擬結果がデータベースに登録されていないことを確認した場合に、その模擬要素について試行演算を実行する（ステップＳ１８）。この後、シミュレータは、取得した単位模擬結果とその試行演算を実行する前段階で使用した検索キーとを互いに関連付けてデータベースに登録して（ステップＳ１９）、その取得した単位模擬結果を出力する（ステップＳ１４）。そして、シミュレータは、同様の動作を繰り返す。
【００２８】
上記のようなシミュレーション実行方法では、確率的要素により不変な模擬要素のうち前回までに実行方法した内容と同一の模擬要素について単位模擬結果を再利用する。これにより、２回目以降の試行演算の対象となる模擬要素が減少することにより、シミュレーションの総実行時間をより短縮することができる。
【００２９】
また、特許文献１に示すような従来のシミュレーション実行方法とは異なり、再利用する単位模擬結果を判別する際に模擬要素の同一性を判別の基準としており、確率的要素により変動する模擬要素の後に行われる不変の模擬要素についても再利用することができる。
【００３０】
実施の形態２．
実施の形態１では、図２に示すように、１つのユニットの模擬要素が１つのフェーズによって構成されており、特に細分化されていなかった。このため、実施の形態１のものの場合、ユニットの模擬要素の中に少しでも確率的要素が含まれていれば、この模擬要素の単位模擬結果について、再利用することができなくなる。
【００３１】
ここで、ユニットの試行演算（模擬）の対象となる行動は、そのユニットが周囲の状況を認識するための「探知処理」と、そのユニットが探知処理の結果に基づいて次の行動を取るための「運動処理」の２つのフェーズに大別することができる。そこで、実施の形態２では、図７に示すように、１つのユニットの模擬要素が「探知処理」と「運動処理」との２つのフェーズに細分化されている。つまり、実施の形態２では、ユニットの模擬の粒度（処理単位）が、実施の形態１のものに比べて小さくなっている。
【００３２】
一般的に、ユニットの探知処理の計算量は、周囲のユニット等の数に比例するため、運動処理よりも計算量が多くなる。また、このユニットの探知処理は、ユニット自身のセンシング範囲に、当該周囲のユニット等が含まれるか否かの距離計算及び大小判定が主な処理内容である。このため、探知処理には、確率的要素が殆ど含まれていない。他方、運動処理は、これらの探知結果に基づいて行動及び動作を決定する部分であるため、確率的要素を含む場合が多い。
【００３３】
次に、ユニットの探知処理の概要について説明する。図８は、ウォーゲームシミュレーションにおけるユニットの探知処理の一例を説明するための説明図である。図８（ａ）は、ウォーゲームシミュレーションの一場面を示し、図８（ｂ）は、ユニットの探知処理の一連の動作を示す。図８において、艦船１の探知処理では、シミュレータは、はじめに、例えば航空機１０に対して、両ユニット間の距離（図８（ａ）の矢示Ａ）を計算する（ステップＳ２１）。
【００３４】
そして、シミュレータは、艦船１及び航空機１０間の距離値に基づいて、艦船１が搭載するセンサの覆域内外判定、即ち航空機１０が艦船１のセンサ覆域Ｂ内に位置するかを判定する（ステップＳ２２）。また、シミュレータは、航空機１０が艦船１の防衛対象空域Ｃ内に侵入しているか否か（上空侵犯しているか否か）の空域判定も行う（ステップＳ２３）。なお、この空域は、複雑な形状をしている場合が多い。
【００３５】
さらに、シミュレータは、試行対象のマップに応じて、陸地や山や地球の球体等の地形Ｄを考慮した見通し計算も行う（ステップＳ２４）。そして、シミュレータは、航空機１０以外の艦船１の周囲全てのユニットに対しても、距離計算、センサ覆域内外判定、空域判定及び見通し計算（ステップＳ２１〜２４）を行い、艦船１が対処するユニット（以下、対処ユニット）を選定する（ステップＳ２６）。なお、シナリオによっては、シミュレータは、艦船１が対処ユニットを選定する前に、艦船１の周囲全てのユニットに対して、艦船１の射程範囲内に位置するかどうかを確認するための射程範囲内外判定を行う（ステップＳ２５）。
【００３６】
そして、シミュレータは、これらの結果（ステップＳ２１〜２６）に基づいて、艦船１の運動処理に関する模擬要素について試行演算を行う。また、シミュレータは、艦船１以外の全ユニットの探知処理に関する模擬要素についても、同様の探知処理を実行する。このように、シミュレータは、全ユニットの探知処理に関する模擬要素について試行処理を実行することとなり、基本的にその試行処理に要する計算量は、ｎをユニット数とすれば、ｎの二乗の計算オーダーＯ（ｎ２）となる。このため、シミュレーションの規模に応じて、探知処理の計算量は大きくなることとなる。他の処理については、実施の形態１と同様である。
【００３７】
上記のようなシミュレーション実行方法では、ユニットの行動についての模擬要素を、確率的要素が含まれる部分と含まれない部分を切り分けている。これにより、ユニットの模擬の粒度が実施の形態１のものよりも小さくなり、再利用可能な単位模擬結果の範囲を拡大することができる。従って、実施の形態２のシミュレーション実行方法では、ユニットの探知処理から確率的要素による変動成分が分離され、シミュレーション全体における処理負担が比較的大きいユニットの探知処理についての単位模擬結果が基本的に再利用可能となることにより、シミュレーションの総実行時間を更に短縮することができる。
【００３８】
なお、探知処理に確率的要素が含まれる場合でも、探知処理における距離計算を行う部分については確率的要素が含まれない。これにより、探知処理についての模擬要素を、距離計算を行う部分を切り分けるように細分化することもできる。
【００３９】
また、実施の形態２では、ユニットの行動を探知処理と運動処理との２つのフェーズに分けた。しかしながら、この例に限定するものではなく、ユニットの行動を３つ以上のフェーズに細分化してもよい。
【００４０】
実施の形態３．
実施の形態１では、入力値（ｘ０，ｙ０，ｚ０）及び状態値（ｘ１，ｙ１，ｚ１）の組を検索キーとした。これに対して、実施の形態３では、シミュレータがハッシュ関数を用いて入力値及び状態値からハッシュ値を求めて、そのハッシュ値を検索キーとする。
【００４１】
図９は、この発明の実施の形態３によるデータベースの一例を説明するための説明図である。図９において、実施の形態３のシミュレータは、模擬要素について試行処理を行って単位模擬結果を取得した後、模擬要素についての試行処理に用いた入力値及び状態値について、予め記憶しているハッシュ関数ｆ（１次ハッシュ関数）を用いてハッシュ値（１次ハッシュ値）を算出する。そして、シミュレータは、算出したハッシュ値を検索キーとし、その検索キーを単位模擬結果と関連付けてデータベースに登録する。
【００４２】
また、シミュレータは、模擬要素についてデータベースを検索する場合、その模擬要素の試行処理に用いるための入力値及び状態値について、ハッシュ関数ｆを用いてハッシュ値を取得する。そして、シミュレータは、このハッシュ値による検索キーに基づいて、データベースを検索し、試行対象の模擬要素と同一の模擬要素についての単位模擬結果を取得済であるか否かを確認（即ち検索）する。これとともに、シミュレータは、同一の模擬要素についての単位模擬結果を取得済である場合に、その模擬要素をデータベースから抽出して再利用する。他の処理については、実施の形態１又は実施の形態２と同様である。
【００４３】
上記のようなシミュレーション実行方法では、模擬要素の試行処理に用いるための入力値及び状態値にハッシュ関数ｆを用いてハッシュ値を取得し、そのハッシュ値を検索キーとして用いる。このハッシュ検索によって、データベースの単位模擬結果の格納領域への直接検索が可能となることにより、実施の形態１，２のものに比べて検索速度を向上させることができ、シミュレーションの総実行時間を更に短縮することができる。従って、単位模擬結果を効果的に再利用することができる。
【００４４】
ここで、図９に示す例では、ハッシュ関数ｆの性質によっては、異なる単位模擬結果が同一のハッシュ値（ｉ）になる場合があり、データベースの同一の検索キーに複数の単位模擬結果が格納されてしまうこと（以下、コンフリクト）がある。このようなコンフリクトが発生した場合には、シミュレータは、順番にデータベースのリストを辿ることとなるため、コンフリクトとなる単位模擬結果が多いと、単位模擬結果についての検索時間の増加要因となる。
【００４５】
これに対して、実施の形態３の他の例では、図１０に示すように、シミュレータは、１次ハッシュ値に対して、２次ハッシュ関数ｇを用いて、再度のハッシュ関数処理を実行して、２次ハッシュ値を取得する。そして、シミュレータは、１次ハッシュ値と２次ハッシュ値とを検索キーとして、単位模擬結果に関連付けてデータベースに登録する。このように、２次ハッシュ関数ｇを導入することによって、異なる単位模擬結果が同一の検索キーとなる確率が低下するため、コンフリクトの発生確率を低下させることができる。
【００４６】
次に、実施の形態３のシミュレーション実行方法を用いた場合の効果について図面を参照して説明する。ここでは、対象とする問題やシナリオやモンテカルロ試行回数等に応じて、効果の度合いが異なるため、抽象的なレベルで説明する。
【００４７】
まず、２回目の試行において、１回目の摸擬結果に対してδ％の摸擬要素が同一であり、シミュレーション実行時間をδ％削減できたとする。次に、３回目の試行では、１回目と２回目の摸擬結果を再利用できるため、２回目に比べて再利用できる単位模擬結果は２倍になる。但し、１回目と２回目との摸擬要素のδ％の重複部分は差し引く必要がある。この考え方に基づいて導出した式が、下記の（１）式及び（２）式である。
【００４８】
【数１】
2010145895.tif 000003
但し、ｎは試行回数である。また、ｘｎは前回までの試行（ｘｎ-１）の全ての単位摸擬結果のうち再利用可能な単位模擬結果の比率である。さらに、ｘ１は、初回の試行であるため０となる。また、Ｔｎはｎ番目の試行時の実行時間を示す。さらに、αはデータベースから該当する単位摸擬結果を検索するためのコストである。
【００４９】
ここで、（２）式におけるαは、データベースのデータ量が増加したとしても、ハッシュ値を検索キーとして用いていること、及び試行回数の増加に伴って単位模擬結果の再利用可能個数が増加することにより、基本的に増加しないこととなる。
【００５０】
以上の（１）式及び（２）式により、Ｎ回試行するモンテカルロシミュレーションの総実行時間は、次の（３）式に示すようになる。
【数２】
2010145895.tif 000004
【００５１】
このような（１）式〜（３）式の考え方に基づいて、δ＝１，２，５，１０％とした場合のモンテカルロシミュレーションの総実行時間を見積もったもの（理論特性）が図１１であり、従来方式に対する高速化の効果を示したものが図１２である。なお、ここでは単位摸擬結果を再利用しない試行１回目での実行時間は１００としており、αは無視できるものとした。
【００５２】
また、図１１では、単位模擬結果を再利用しない場合の従来のシミュレーション実行方法における測定結果を実線で示す。さらに、図１１，１２では、再利用率δが１％の場合の理論特性を点線で示し、再利用率δが２％の場合の理論特性を破線で示し、再利用率δが５％の場合の理論特性を一点鎖線で示し、再利用率δが１０％の場合の理論特性を二点鎖線で示す。
【００５３】
従って、実施の形態３のシミュレーション実行方法では、図１１に示すように、再利用率δが１％の場合であっても、従来のシミュレーション実行方法に比べて、実行時間が短縮されていることがわかる。
【００５４】
また、図１２に示すように、再利用率δが１％の場合であっても、従来のシミュレーション実行方法に比べて、試行回数が１００回のときには約１．６倍の高速化を図ることができ、試行回数が１０００回のときには約１０倍の高速化を図ることができることがわかる。
【００５５】
実施の形態４．
次に、実施の形態４では、実施の形態２におけるユニットの探知処理に関して、データベースを用いる例について説明する。図１３は、この発明の実施の形態４によるユニットの探知処理の一例を説明するための説明図である。まず、図１３（ａ）は、先の図８（ｂ）に示すような試行対象のユニットの探知処理において、試行対象のユニットがその周囲に位置する全てのユニットから対処ユニット（又は対処ユニット群）を選定するまでの一連の模擬要素を一括し、その一括した一連の模擬要素についての単位模擬結果をデータベースに登録する例である。
【００５６】
この例においては、シミュレータは、試行対象のユニットの探知処理に関する模擬要素について試行演算を実行した後に、模擬要素についての単位模擬結果を試行演算によって取得した際に、試行対象のユニットの周囲全てのユニットの入力値（試行対象のユニットの周囲全てのユニットに関する情報）と、試行対象のユニットの状態値との組から、一括処理用検索キーを作成する。そして、シミュレータは、その作成した一括処理用検索キーと、取得した単位模擬結果とを互いに関連付けてデータベースに登録する。
【００５７】
また、シミュレータは、試行対象のユニットの探知処理に関する模擬要素について試行演算を実行する際に、そのときの入力値及び状態値から括処理用検索キーを作成する。そして、シミュレータは、作成した一括処理用検索キーを用いてデータベースを参照することにより、模擬要素についての単位模擬結果を取得済であるか否かについて判断する。
【００５８】
このときに、その単位模擬結果を取得済である場合には、シミュレータは、単位模擬結果をデータベースから抽出して、その抽出した当該単位模擬結果を再利用する。従って、シミュレータは、一括処理用検索キーを用いてデータベースを参照することによって、試行対象のユニットの探知処理における対処ユニットを選定するまでの一連の模擬要素を一括して再利用可能となる。
【００５９】
次に、図１３（ｂ）は、先の図８（ｂ）に示すような試行対象のユニットの探知処理において、図１３（ａ）に示す例を適用できない場合の他の例を示す。ここで、図１３（ａ）に示す例では、試行対象のユニットの周囲の複数のユニットのうち１つのユニットでも前回までの模擬要素と異なっている場合には、適用することができない（入力値が異なっていれば一括検索不可）。
【００６０】
そこで、図１３（ｂ）に示す例では、シミュレータは、試行対象のユニットの探知処理において、その周囲に位置する複数のユニットのそれぞれについて距離計算、センサ覆域内外判定、空域判定及び見通し計算（図８（ｂ）におけるステップＳ２１〜２４：以下、個別探知処理）を行った際の個々の単位模擬結果をデータベースに登録する。
【００６１】
この場合、シミュレータは、試行対象のユニットの探知処理に関する模擬要素について試行演算を実行した後に、個別探知処理の対象のユニットの入力値（個々のユニットに関する情報）と、試行対象のユニットの状態値とから、個別処理用検索キーを作成する。そして、シミュレータは、その個別処理用検索キーと、模擬要素における個別探知処理の対象のユニットに関して取得した単位模擬結果とを互いに関連付けてデータベースに登録する。
【００６２】
また、シミュレータは、試行対象のユニットの探知処理に関する模擬要素について試行演算を実行する際に、そのときの入力値及び状態値から個別理用検索キーを作成する。そして、シミュレータは、作成した個別処理用検索キーを用いてデータベースを参照することにより、模擬要素における個別探知処理の対象のユニットに関して取得した単位模擬結果を取得済であるか否かについて判断する。このときに、その単位模擬結果を取得済である場合には、シミュレータは、単位模擬結果をデータベースから抽出して、その抽出した当該単位模擬結果を再利用する。
【００６３】
ここで、図１３（ａ）に示す例と、図１３（ｂ）に示す例とは、互いに重複して適用することも、シナリオ等の条件に応じて使い分けることもできる。なお、これらの例を互いに重複して適用する場合には、シミュレータは、まず、一括処理用検索キーを用いてデータベースを参照し、単位模擬結果を既に取得していれば、その単位模擬結果を抽出して再利用する。
【００６４】
これに対して、一括処理用検索キーに関連付けられた単位模擬結果がデータベースに登録されていなければ、シミュレータは、個別探知処理の対象のユニット（個々のユニット）の入力値に関する個別処理用検索キーを用いて、データベースを参照する。そして、その個別処理用検索キーに関連付けられた単位模擬結果がデータベースに登録済であれば、シミュレータは、その単位模擬結果をデータベースから抽出して再利用する。他の処理は、実施の形態１〜３と同様であり、実施の形態４の一括処理用検索キー及び個別処理用検索キーを、実施の形態３のようなハッシュ値を用いた検索キーとすることもできる。
【００６５】
上記のようなシミュレーション実行方法では、試行対象のユニットの探知処理における対処ユニットを選定するまでの模擬要素についての単位模擬結果を一括してデータベースに登録し、試行対象のユニットの探知処理における単位模擬結果を一括して再利用可能となる。これにより、試行対象のユニットの探知処理に関して再利用されるデータのボリュームを増加させることができ、シミュレーションの総実行時間を更に短縮することができる。
【００６６】
また、シミュレータは、一括処理用検索キーに関連付けられた単位模擬結果がデータベースに登録されていなければ、個別処理用検索キーを用いて、データベースを参照する。そして、その個別処理用検索キーに関連付けられた単位模擬結果をデータベースから抽出して再利用する。これにより、試行対象のユニットの探知処理における単位模擬結果を一括して再利用できない場合に、個別探知処理の対象のユニット単位で、単位模擬結果を再利用することができる。
【００６７】
実施の形態５．
実施の形態１〜４のシミュレーション実行方法では、取得した単位模擬結果をデータベースに登録するのみであった。このため、これらのシミュレーション実行方法の場合、データベースのデータ量が膨張する。これに対して、実施の形態５のシミュレーション実行方法では、単位模擬結果の再利用回数に応じて、構築しているデータベースから不要な単位模擬結果を削除する（第３のステップ：削除処理）。
【００６８】
図１４は、この発明の実施の形態５による単位模擬結果の削除処理の一例を説明するための説明図である。図１４において、実施の形態５のシミュレータは、シミュレーションの試行回数Ｍと取得した単位模擬結果の再利用回数Ｋとをそれぞれ計数する。そして、シミュレータは、計数した単位模擬結果の再利用回数Ｋを、単位模擬結果及び検索キーに関連付けてデータベースに登録（追記）する。また、シミュレータは、単位模擬結果の再利用回数Ｋに応じて、その単位模擬結果について、データベースから削除可能とする。他の処理は実施の形態１〜４と同様である。
【００６９】
ここで、シミュレータが単位模擬結果をデータベースから削除する場合の一例について説明する。この例では、シミュレータは、単位模擬結果の再利用回数Ｋが例えば０回である場合に、その単位模擬結果を削除可能とする。シミュレータは、事前に取得済の単位模擬結果と同一のハッシュ値の単位模擬結果を新たに取得した際に、事前に取得済の単位模擬結果の再利用回数Ｋを確認する。そして、シミュレータは、事前に取得済の単位模擬結果の再利用回数Ｋが０である場合に、その新たに取得した単位模擬結果（新規データ）で事前に取得済の単位模擬結果を上書き消去する。
【００７０】
次に、シミュレータが単位模擬結果を削除する場合の他の例について説明する。シミュレータは、モンテカルロシミュレーションにおける現在の試行回数値（Ｍ）を利用して、次の（４）式を満たせば、新たに取得した単位模擬結果（新規データ）で事前に取得済の単位模擬結果を上書き消去する。
Ｋ＜ｄ×Ｍ  ・・・・（４）式
但し、ｄは、閾値係数であり０＜ｄ＜１の適当な数である。なお、この閾値係数ｄの値をデータベースのサイズを調整することを目的に、動的（固定値）及び静的（変数）に設定してもよい。
【００７１】
上記のようなシミュレーション実行方法では、単位模擬結果の再利用回数をその単位模擬結果に関連付けてデータベースに登録し、再利用回数に応じて単位模擬結果をデータベースから削除可能とする。これにより、データベースにおけるデータ量の膨張を抑制することができる。これとともに、先の実施の形態３のハッシュ検索を適用した場合に、そのハッシュ検索のコンフリクトによるオーバーヘッドを低減させることができ、検索処理の高速化を図ることができる。
【００７２】
なお、実施の形態５では、新たに取得した単位模擬結果で事前に取得済の単位模擬結果を上書き消去した。しかしながら、この例に限定するものではなく、事前に取得済の単位模擬結果を積極的に削除するための削除処理を実行してもよい。この場合、例えば、シミュレーションの試行回数が所定回（例えば１００回等）となった際に、その回のシミュレーションの試行開始時又は試行終了時に削除処理を実行し、再利用回数Ｋが所定値以下の単位模擬結果をデータベースから一括して削除してもよい。
【００７３】
また、実施の形態１〜５では、ウォーゲームシミュレーションの例について説明したが、この発明のシミュレーション実行方法は、道路交通シミュレーションにも適用することができる。
【図面の簡単な説明】
【００７４】
【図１】この発明の実施の形態１によるシミュレーションの一例としてのウォーゲームシミュレーションを説明するための説明図である。
【図２】図１のウォーゲームシミュレーションについてのタイムステップ方式による実行例を説明するための説明図である。
【図３】図２の模擬要素についての試行処理を説明するための説明図である。
【図４】シミュレーション結果の一例を示すグラフである。
【図５】単位模擬結果の再利用率と模擬時刻との関係を示すグラフである。
【図６】シミュレータによる模擬要素についての試行処理の実行動作を示すフローチャートである。
【図７】この発明の実施の形態２による模擬要素についての試行処理を説明するための説明図である。
【図８】ウォーゲームシミュレーションにおけるユニットの探知処理の一例を説明するための説明図である。
【図９】この発明の実施の形態３によるデータベースの一例を説明するための説明図である。
【図１０】この発明の実施の形態３によるデータベースの他の例を説明するための説明図である。
【図１１】この発明の実施の形態３によるシミュレーション実行方法を用いた場合の効果を説明するためのグラフである。
【図１２】この発明の実施の形態３によるシミュレーション実行方法を用いた場合の効果を説明するためのグラフである。
【図１３】この発明の実施の形態４によるユニットの探知処理の一例を説明するための説明図である。
【図１４】この発明の実施の形態５による単位模擬結果の削除処理の一例を説明するための説明図である。
【符号の説明】
【００７５】
１  艦船（ユニット）、１０  航空機（ユニット）。
【図１】
2010145895.tif 000005
【図２】
2010145895.tif 000006
【図３】
2010145895.tif 000007
【図４】
2010145895.tif 000008
【図５】
2010145895.tif 000009
【図６】
2010145895.tif 000010
【図７】
2010145895.tif 000011
【図８】
2010145895.tif 000012
【図９】
2010145895.tif 000013
【図１０】
2010145895.tif 000014
【図１１】
2010145895.tif 000015
【図１２】
2010145895.tif 000016
【図１３】
2010145895.tif 000017
【図１４】
2010145895.tif 000018