(57)【要約】【課題】ＨＬＡ規約の範囲内において、論理時刻と実時刻の同期を確実に行うことのできる分散シミュレーションシステムを得る。【解決手段】時刻モニタ手段１２２は、ＲＴＩ１３０より各フェデレート（１）１１０−１〜フェデレート（ｎ）１１０−ｎの論理時刻を取得すると共に実時刻を取得し、論理時刻の遅れを検出する。フェデレート強制時刻進行手段１２３は、遅れを検出したフェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをＲＴＩ１３０に通知することで、ＲＴＩ１３０の時刻同期処理において、特定されたフェデレートが進めた時刻にＴＡＲによる時刻進行を要求した状態を引き起こすためのＭＯＭインタラクションを送信する。【選択図】図４
2014186475.tif 000002
【特許請求の範囲】
【請求項１】
ＨＬＡに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、
ＲＴＩより各フェデレートの論理時刻を取得すると共に、前記実時刻を取得し、前記各フェデレートの前記論理時刻の進捗状況を監視することで前記実時刻の進行に対する前記論理時刻の遅れを検出し、当該論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、
前記論理時刻の遅れを検出したフェデレートを特定した場合に、当該フェデレートの論理時刻を強制的に進め、当該進めた時刻と前記特定されたフェデレートとを前記ＲＴＩに通知することで、当該ＲＴＩの時刻同期処理において、前記特定されたフェデレートが前記進めた時刻にＴＡＲによる時刻進行を要求した状態を引き起こすためのＭＯＭインタラクションを送信するフェデレート強制時刻進行手段とを備えたことを特徴とする分散シミュレーションシステム。
【請求項２】
強制的な時刻進行の制御対象となるフェデレートを時刻統制フェデレートのみとすることを特徴とする請求項１記載の分散シミュレーションシステム。
【請求項３】
時刻統制フェデレートを対象として強制的な時刻進行の制御を行った後、時刻制約フェデレートを対象として強制的な時刻進行の制御を行うことを特徴とする請求項１記載の分散シミュレーションシステム。
【請求項４】
前記フェデレート強制時刻進行手段が強制的な時刻進行の制御を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、当該不整合を起こす有効時刻付きメッセージ送信要求を検出し、前記不整合を解消するために有効時刻無しメッセージ送信に変更する不整合メッセージ検出・解消手段を備えたことを特徴とする請求項１から請求項３のうちのいずれか１項記載の分散シミュレーションシステム。
【請求項５】
前記不整合メッセージ検出・解消手段は、有効時刻無しメッセージ送信に切り替えた際に、本来付与されていた有効時刻と、不整合が発生したことを示す不整合発生情報とを警告情報として、ＵｓｅｒＳｕｐｐｌｉｅｄＴａｇに格納して送信要求することを特徴とする請求項４記載の分散シミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＬＡに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムに関する。
【背景技術】
【０００２】
ＨＬＡ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）は、ＩＥＥＥによって標準化された分散シミュレーションシステムのソフトウェアアーキテクチャである。このようなＨＬＡ規約に基づいたシミュレーションシステムとしては例えば非特許文献１に記載されている。このようなシミュレーションシステムでは、あるフェデレーションの一機能として作成されたフェデレートを、変更することなく別のフェデレーションで利用することが可能となり、フェデレートの再利用によるシステム構築コストの低減化や、異なる目的のために作成されたフェデレート同士の相互接続性の向上を実現することができる。
【０００３】
非特許文献１には、ＲＴＩ（Ｒｕｎ  Ｔｉｍｅ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）がフェデレーションとフェデレートを実行制御するための機能が定義されている。その機能の一つに、多数のフェデレートの実行進捗を論理的なシミュレーション時刻（論理時刻と呼ぶ。）によって時刻同期を行いつつ制御する、Ｔｉｍｅ  Ｍａｎａｇｅｍｅｎｔ機能がある。Ｔｉｍｅ  Ｍａｎａｇｅｍｅｎｔ機能による時刻進行の一例を図１に示す。図１は、２つのフェデレートがＲＴＩによって時刻同期によって実行管理されている例である。図において、まずフェデレート１における時刻ｔｉの処理について説明する。フェデレート１は、時刻ｔｉにおける模擬処理を実行し、その処理結果として発生した時刻ｔｉ＋１がＴｉｍｅ  Ｓｔａｍｐ（有効時刻）に設定されたデータ交換メッセージｍｓｇ１をフェデレート２に送信する。データ交換メッセージの送信は、ＲＴＩの機能であるＵｐｄａｔｅ  Ａｔｔｒｉｂｕｔｅ  Ｖａｌｕｅｓ（ＵＡＶ）の呼び出しによって、ＲＴＩに委託される。フェデレート１は、ｔｉ時刻における模擬処理およびデータ交換メッセージ送信処理が完了すると、ＲＴＩに対し、次時刻である時刻ｔｉ＋１への時刻進行要求を、ＲＴＩの機能であるＴｉｍｅ  Ａｄｖａｎｃｅ  Ｒｅｑｕｅｓｔ（ＴＡＲ）の呼び出しによって通知する。
【０００４】
次に、フェデレート２の時刻ｔｉにおける処理について説明する。フェデレート２も時刻ｔｉの模擬処理を実行し、その結果として発生した時刻ｔｉ＋１が有効時刻に設定されたデータ交換メッセージｍｓｇ２をＵＡＶ呼び出しによってＲＴＩに委託し、次時刻である時刻ｔｉ＋１への時刻進行要求を、ＴＡＲ呼び出しによってＲＴＩに通知する。
【０００５】
フェデレート１とフェデレート２がそれぞれ次時刻である時刻ｔｉ＋１への時刻進行要求を通知すると、ＲＴＩは、まず時刻ｔｉ＋１が有効時刻に設定されたデータ交換メッセージｍｓｇ１およびｍｓｇ２をフェデレート２およびフェデレート１に、フェデレートに対するコールバック機能であるＲｅｆｌｅｃｔ  Ａｔｔｒｉｂｕｔｅ  Ｖａｌｕｅｓ（ＲＡＶ）呼び出しによって受信させる。次に、フェデレーション中の全てのフェデレートが時刻ｔｉ＋１以上へ進行要求しているため、シミュレーション全体でのデータの整合性を確保できる最も遅い論理時刻が時刻ｔｉ＋１であることを計算し、フェデレート１とフェデレート２に対し、フェデレートに対するコールバック機能であるＴｉｍｅ  Ａｄｖａｎｃｅ  Ｇｒａｎｔ（ＴＡＧ）呼び出しによって時刻ｔｉ＋１への進行許可を通知する。ここまでの処理によって、フェデレート１およびフェデレート２の時刻同期が完了し、フェデレート１およびフェデレート２は、時刻進行許可された時刻ｔｉ＋１の模擬処理を実行する。
【０００６】
なお、フェデレートがＴＡＲを呼び出してＴＡＧを待つ間の状態をＴｉｍｅ  Ａｄｖａｎｃｉｎｇ状態と呼び、ＴＡＧを受けてＴＡＲを出すまでの間の状態をＴｉｍｅ  Ｇｒａｎｔｅｄ状態と呼ぶ。以上の処理を各フェデレートが時刻進行する都度繰り返すことにより、フェデレーション全体の時刻進行が制御される。
【０００７】
なお、図１の処理における時刻は全て論理時刻であり、現実世界における時刻（実時刻と呼ぶ。）と全く無関係に処理される時刻である。論理時刻は、コンピュータプログラムであるフェデレートにおいて模擬処理やデータ交換メッセージ通信の順番を決定するために利用される数値情報であり、複数のフェデレートが並列に模擬処理の実行やデータ交換メッセージ通信を行う場合に、シミュレーション中の全ての模擬処理とデータ交換メッセージ通信が論理時刻によって整列化され順番に処理することを保証するために使用される。論理時刻を用いることにより、多数のフェデレートを多数のコンピュータで並列処理を行いシミュレーションを高速化した場合でも、シミュレーションの再現性を保証することができる。
【０００８】
ＨＬＡの論理時刻制御では、フェデレートの論理時刻に対する影響について、Ｔｉｍｅ  Ｒｅｇｕｌａｔｉｎｇ（時刻統制）と、Ｔｉｍｅ  Ｃｏｎｓｔｒａｉｎｅｄ（時刻制約）の２種類に分類しており、フェデレートは時刻統制と時刻制約の有り無し及びその組み合わせにおいて４種類に分けられる。時刻統制フェデレートとは、他の時刻制約フェデレートの論理時刻進行に影響を与えるフェデレートである。フェデレーションにおける全ての時刻統制フェデレートの現在時刻にＬｏｏｋａｈｅａｄ値（このフェデレートが、現在時刻から将来に渡って有効時刻付きのデータ交換メッセージ等を送信しないことを保証する時間）を加算した値の最小値が、他の時刻制約フェデレートが進むことのできる論理時刻の基準として用いられる。図１に示した例では、フェデレート１およびフェデレート２は、時刻統制かつ時刻制約であり、自身の現在時刻およびＬｏｏｋａｈｅａｄ値が、他のフェデレートの進むことのできる時刻を制約する例である。なお、ある時刻制約フェデレートに対し、そのフェデレートが進むことができる論理時刻の基準値を、Ｇｒａｔｅｓｔ  Ａｖａｉｌａｂｌｅ  Ｌｏｇｉｃａｌ  Ｔｉｍｅ（ＧＡＬＴ）と呼ぶ。
【０００９】
論理時刻によるシミュレーションの実行制御は実時刻と無関係に行われるが、例えば人間の意思決定や運動能力を訓練するような目的のシミュレーションでは、論理時刻進行と実時刻進行が同期している必要がある。ＨＬＡに基づくシミュレーションシステムで、論理時刻進行と実時刻進行を同期させる一般的な方法として、ペーサーフェデレートと呼ばれるフェデレートを用いる方法がある。ペーサーフェデレートは、実時刻に合わせて時刻進行要求をＲＴＩに要求するフェデレートである。
【００１０】
図２にペーサーフェデレートによる時刻進行の一例を示す。図２は、図１のフェデレーションにペーサーフェデレートを付与した構成における時刻進行の例を示している。図２において、ペーサーフェデレートは、前時刻ｔｉにおけるＴＡＲ呼び出し時点を開始時点とし、同期したい時間間隔（図２の場合は、時刻ｔｉ＋１から時刻ｔｉを引いた差分）Δｔ分の実時間タイマを開始する。なお、ペーサーフェデレートが実時間タイマを実行中に、時刻ｔｉへの時刻進行許可通知としてＴＡＧ呼び出しを受けるが、図２では省略する。そして、Δｔ分の実時間タイマが終了した時点で時刻ｔｉ＋１への時刻進行要求をＴＡＲ呼び出しによってＲＴＩに要求する。この時点で、フェデレート１およびフェデレート２の時刻ｔｉ＋１への時刻進行要求と、ＲＡＶ呼び出しが完了していれば、ＲＴＩは即座に全フェデレートに対して時刻ｔｉ＋１への時刻進行許可をＴＡＧ呼び出しによって通知する。
このことにより、実時刻ｔｉ＋１と同期する形で、各フェデレートの論理時刻ｔｉ＋１への時刻進行が行われる。以上の処理を各フェデレートが時刻進行する都度繰り返すことにより、フェデレーション全体の時刻進行が、実時刻と同期した形で制御される。
【００１１】
ペーサーフェデレートによる論理時刻と実時刻の同期処理は、ペーサーフェデレートがある時刻への時刻進行要求を行った時点で、他のフェデレートの当該時刻への時刻進行要求と、ＲＡＶ呼び出しが完了していることにより、成り立つ処理である。もし、ペーサーフェデレートがある時刻への時刻進行要求を行った時点で、他のフェデレートの当該時刻への時刻進行要求等が完了していなければ、論理時刻進行は実時刻進行に遅れて行われ、論理時刻と実時刻の同期に失敗するという第一の課題がある。図３に、その例を示す。図３は、フェデレート２の時刻ｔｉにおける模擬処理に時間がかかり、ペーサーフェデレートが時刻ｔｉ＋１への時刻進行要求を要求した時点でも、未だフェデレート２が時刻ｔｉ＋１への時刻進行要求を行えていない状況である。この状況では、実時刻ｔｉ＋１より遅れた形で、各フェデレートの論理時刻ｔｉ＋１への時刻進行が行われることになる。
【００１２】
このような第一の課題を解決するために、例えば特許文献１に示すような分散シミュレーションシステムがあった。この分散シミュレーションシステムは、フェデレートに相当するシミュレータが実時刻の進行に遅れそうになると、全体の実行制御を担当するシミュレーションマネージャが、実時刻の進行に遅れそうになっているシミュレータの時刻を強制的に進めることにより、論理時刻進行が実時刻進行に遅れることを防ぐものであり、このような構成により、論理時刻と実時刻の同期を行うようにしたものであった。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０００−１６３３９２号公報
【非特許文献】
【００１４】
【非特許文献１】IEEE 1516.1-2010 - Standard for Modeling and Simulation High Level Architecture（HLA）- Federate Interface Specification.
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上記の特許文献１に示されたシミュレーションマネージャは、内部的にＨＬＡのＲＴＩの機能を有しており、フェデレートであるシミュレータはＲＴＩと同様の機能を利用することができる。しかしながら、強制的に論理時刻を進行させる強制時刻進行メッセージや、データ送受信の不整合に対するメッセージ破棄や警告メッセージの付加については、ＨＬＡ規約においてＲＴＩの機能として定められておらず、特許文献１のシミュレーションマネージャにおいて独自に拡張された機能である。従って、非特許文献１等に定められたＨＬＡ規約に準拠したフェデレーションおよびフェデレートでは、特許文献１のシミュレーションマネージャ１が具備する、第一の課題を解決するための機能を利用することができないという問題があった。
【００１６】
ＨＬＡ規約は、フェデレートの再利用によるシステム構築コストの低減化や、異なる目的のために作成されたフェデレート同士の相互接続性の向上を実現するための規約であるため、例えば防衛・防災のために様々なシミュレータを利用する国家機関等では、シミュレータ開発運用にかかる総コストを低減化するために、準拠することを義務づけたり推奨することが一般的に行われているため、ＨＬＡ規約の範囲内で第一の課題を解決することのできる分散シミュレーションシステムを実現することが第二の課題として残されていた。
【００１７】
この発明は上記のような課題を解決するためになされたもので、ＨＬＡ規約の範囲内において、論理時刻と実時刻の同期を確実に行うことのできる分散シミュレーションシステムを得ることを目的とする。
【課題を解決するための手段】
【００１８】
この発明に係る分散シミュレーションシステムは、ＨＬＡに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、ＲＴＩより各フェデレートの論理時刻を取得すると共に、実時刻を取得し、各フェデレートの論理時刻の進捗状況を監視することで実時刻の進行に対する論理時刻の遅れを検出し、論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをＲＴＩに通知することで、ＲＴＩの時刻同期処理において、特定されたフェデレートが進めた時刻にＴＡＲによる時刻進行を要求した状態を引き起こすためのＭＯＭインタラクションを送信するフェデレート強制時刻進行手段とを備えたものである。
【発明の効果】
【００１９】
この発明の分散シミュレーションシステムは、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをＲＴＩに通知するようにしたので、ＨＬＡ規約の範囲内において、論理時刻と実時刻の同期を確実に行うことができる。
【図面の簡単な説明】
【００２０】
【図１】２つのフェデレートがＲＴＩによって時刻同期によって実行管理されている例を示す説明図である。
【図２】ペーサーフェデレートによる時刻進行の一例を示す説明図である。
【図３】ペーサーフェデレートがある時刻への時刻進行要求を行った時点で、他のフェデレートのその時刻への時刻進行要求等が完了していない場合の一例を示す説明図である。
【図４】この発明の実施の形態１による分散シミュレーションシステムを示す構成図である。
【図５】この発明の実施の形態１による分散シミュレーションシステムの実時刻条件設定手段に格納される判定条件の一例を示す説明図である。
【図６】この発明の実施の形態１による分散シミュレーションシステムのＲＴＩインタフェース手段の初期化処理を示すフローチャートである。
【図７】この発明の実施の形態１による分散シミュレーションシステムの時刻モニタ手段の処理を示すフローチャートである。
【図８】この発明の実施の形態１による分散シミュレーションシステムの実時刻同期制御フェデレート以外の全ての時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を全て完了している状況を示す説明図である。
【図９】この発明の実施の形態１による分散シミュレーションシステムのいずれかの時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了していない状況を示す説明図である。
【図１０】この発明の実施の形態１による分散シミュレーションシステムの強制的な時刻進行の前半の処理を示すフローチャートである。
【図１１】この発明の実施の形態１による分散シミュレーションシステムの強制的な時刻進行の後半の処理を示すフローチャートである。
【図１２】この発明の実施の形態１による分散シミュレーションシステムのフェデレート強制時刻進行手段による強制的な時刻統制フェデレートの時刻進行要求の処理を示すフローチャートである。
【図１３】この発明の実施の形態２による分散シミュレーションシステムの時刻モニタ手段の処理を示すフローチャートである。
【図１４】この発明の実施の形態２による分散シミュレーションシステムの時刻制約フェデレートの強制時刻進行制御を示すフローチャートである。
【図１５】この発明の実施の形態３による分散シミュレーションシステムを示す構成図である。
【図１６】この発明の実施の形態３による分散シミュレーションシステムの不整合メッセージ検出・解消手段の処理を示すフローチャートである。
【発明を実施するための形態】
【００２１】
実施の形態１．
図４は、この発明の実施の形態１による分散シミュレーションシステムを示す構成図である。
図４に示す分散シミュレーションシステムは、ＨＬＡに準拠したシステム全体を示しており、フェデレーション１００とＲＴＩ１３０で構成され、フェデレーション１００には、複数のフェデレート（１）１１０−１〜フェデレート（ｎ）１１０−ｎと一つの実時刻同期制御フェデレート１２０が含まれている。
【００２２】
ＨＬＡでは、シミュレーションシステム全体をフェデレーションと呼び、分散実行される模擬処理などのプログラムをフェデレートと呼ぶ。そして、シミュレーションの実行中に行われる、フェデレーション全体の実行制御や、フェデレート間のデータ交換などの共通機能を、分散シミュレーション基盤であるＲＴＩが提供する。
【００２３】
図４に示すフェデレート（１）１１０−１〜フェデレート（ｎ）１１０−ｎは、システムを構成する個々のシミュレータ等のサブシステムを示し、フェデレート処理部１１１とフェデレートＲＴＩインタフェース部１１２を備えている。なお、フェデレート（１）１１０−１〜フェデレート（ｎ）１１０−ｎについてはそれぞれ共通であるため、以下、単にフェデレート１１０として説明する。フェデレート１１０は、フェデレート処理部１１１とフェデレートＲＴＩインタフェース部１１２を備えている。フェデレート処理部１１１はフェデレート固有の機能を有する処理部であり、フェデレートＲＴＩインタフェース部１１２は、フェデレート１１０におけるＲＴＩ１３０とのインタフェース機能を実現する処理部である。
【００２４】
実時刻同期制御フェデレート１２０は、ＲＴＩ１３０によって実行制御されるフェデレーション１００において、実時刻同期処理の制御を行うフェデレートであり、実時刻条件設定手段１２１、時刻モニタ手段１２２、フェデレート強制時刻進行手段１２３、ＲＴＩインタフェース手段１２４を備えている。実時刻条件設定手段１２１は、実時刻と論理時刻の関係から、フェデレート強制時刻進行手段１２３がフェデレートを強制的に時刻進行させるか否かを決定するために参照される、利用者が設定した判定条件を格納する手段である。時刻モニタ手段１２２は、ＲＴＩインタフェース手段１２４を介してＲＴＩ１３０より実時刻同期制御フェデレート１２０が属するフェデレーション１００の各フェデレートの論理時刻を取得し、また、実時刻同期制御フェデレート１２０が動作する計算機環境のＯＳから実時刻を取得する手段である。フェデレート強制時刻進行手段１２３は、時刻モニタ手段１２２で得た実時刻と各フェデレートの論理時刻と、実時刻条件設定手段１２１から得た判定条件を基に、実時刻同期制御フェデレート１２０が属するフェデレーション１００の各フェデレートの論理時刻を強制的に進行させる手段である。ＲＴＩインタフェース手段１２４は、実時刻同期制御フェデレート１２０がＲＴＩ１３０と連携し、時刻モニタ手段１２２とフェデレート強制時刻進行手段１２３に対してＲＴＩ１３０の機能呼び出しやコールバック呼び出しを受け取るためのインタフェースである。
【００２５】
また、ＲＴＩ１３０は、フェデレーション１００および複数のフェデレート（１）１１０−１〜フェデレート（ｎ）１１０−ｎ、実時刻同期制御フェデレート１２０に対する共通機能を提供する基盤ソフトウェアであり、ＲＴＩ１３０が保持しなければならない機能仕様やフェデレートＲＴＩインタフェース部１１２およびＲＴＩインタフェース手段１２４の機能仕様は、例えば非特許文献１等に規定されている。
【００２６】
図５は、実時刻条件設定手段１２１に格納される、利用者が設定した判定条件の一例である。図５において、「周期」には、シミュレーション開始時点における時刻０から周期的に論理１００ミリ秒ずつ進行させることが設定される。「進行制約時間」には、シミュレーション開始時点もしくは前回のＲＴＩ１３０に対する論理時刻進行要求の呼び出し時点から、次の論理時刻進行要求の呼び出しを行うまで待つ制約時間が設定される。図１の例では、周期１００ミリ秒に対し、ＲＴＩ１３０の処理のオーバヘッド分を差し引いた、やや短い９５ミリ秒が設定されている。「強制進行時間」には、論理時刻の進行が実時刻の進行に追いつかない場合に、シミュレーション開始時点もしくは前回のＲＴＩ１３０に対する論理時刻進行要求の呼び出し時点から、強制的な時刻進行処理が完了するまでの強制進行時間が設定される。図３の例では、周期１００ミリ秒に対し、強制時刻進行に要するＲＴＩ１３０のオーバヘッド分を加味した、やや長い１０５ミリ秒が設定されている。
【００２７】
次に実施の形態１の分散シミュレーションシステムの動作について説明する。実施の形態１では、時刻統制フェデレートのみを対象とした強制論理時刻進行制御の形態を示す。実施の形態１は、一部の時刻制約フェデレートの論理時刻進行が実時刻に同期せずに遅れることを許容する形態である。実施の形態１において、時刻制約フェデレートを強制論理時刻進行制御の対象外としたのは、時刻制約フェデレートが他のフェデレートの時刻進行に影響を与えないため、時刻同期の基本的な処理プロセスを最初に説明するためである。時刻制約フェデレートを含めた強制論理時刻進行制御の形態については、実施の形態２で説明する。
【００２８】
なお、実時刻同期制御フェデレート１２０がＲＴＩ１３０から他のフェデレートの各種情報を取得するために、ＨＬＡ規約に定められたＭａｎａｇｅｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ（ＭＯＭ）機能に規定されたフェデレーションおよびフェデレートの状況監視機能を組み合せて利用し、また、次時刻進行要求にはＴＡＲを用いるものとする。ＨＬＡ規約では、ＴＡＲの以外の次時刻進行要求方法として、Ｎｅｘｔ  Ｍｅｓｓａｇｅ  Ｒｅｑｕｅｓｔ（ＮＭＲ）、Ｔｉｍｅ  Ａｄｖａｎｃｅ  Ｒｅｑｕｅｓｔ  Ａｖａｉｌａｂｌｅ（ＴＡＲＡ）、Ｎｅｘｔ  Ｍｅｓｓａｇｅ  Ｒｅｑｕｅｓｔ  Ａｖａｉｌａｂｌｅ（ＮＭＲＡ）、Ｆｌｕｓｈ  Ｑｕｅｕｅ  Ｒｅｑｕｅｓｔ（ＦＱＲ）という方法が利用できるが、これらの方法を利用する場合、次のような制約や問題が生じるため、実時刻同期制御フェデレート１２０は、ＴＡＲのみを利用する。
【００２９】
・ＮＭＲ、ＮＭＲＡ、ＦＱＲを用いて次時刻進行を要求する場合
ＴＡＧによってＲＴＩ１３０から通知される進行許可時刻が、実時刻同期制御フェデレート１２０が受け取るデータ交換メッセージの有効時刻の最小値とＧＡＬＴのうち、より小さい方の時刻であるＬｅａｓｔ  Ｉｎｃｏｍｉｎｇ  Ｔｉｍｅ  Ｓｔａｍｐ（ＬＩＴＳ）に基づき計算される。従って、実時刻同期制御フェデレート１２０が有効時刻付きのデータ交換メッセージを受信するような場合、進みたい時刻（すなわち実時刻と同期した時刻）に進めなくなる可能性が生じるという問題がある。
【００３０】
・ＴＡＲＡを用いて次時刻進行を要求する場合
ＴＡＧによってＲＴＩ１３０から通知される進行許可時刻の判定がＧＡＬＴ以下（ＴＡＲの場合ＧＡＬＴ未満）となるため、実時刻同期制御フェデレート１２０が進みたい時刻（すなわち実時刻と同期した時刻）でも、他のフェデレートは未だその時刻の模擬処理を行っている可能性があり、厳密な意味で実時刻と同期できないという問題がある。
【００３１】
図６は、実時刻同期制御フェデレート１２０の初期化処理における、ＲＴＩインタフェース手段１２４の初期化処理の処理フローである。図６の処理フローでは、まずＲＴＩ１３０に対し、フェデレーション１００への参加要求が行われ、次に、ＲＴＩ１３０に対する下記（１）〜（３）の呼び出しが行われる。なお、（２）〜（４）の呼び出し順序は、必ずしもこの順番でなくとも構わない。
【００３２】
（１）フェデレーションに参加する（ステップＳＴ１）。
（２）ＲＴＩ１３０に対し、実時刻同期制御フェデレート１２０が、論理時刻制約かつ論理時刻統制であることを通知する（ステップＳＴ２）。なお、論理時刻統制を通知する際に、引数としてＬｏｏｋａｈｅａｄ値を設定する必要があるが、実時刻条件設定手段１２１から得た判定条件の周期値を設定する。図５の判定条件の場合、１００ミリ秒が設定される。
（３）ＲＴＩ１３０に対し、次のＭａｎａｇｅｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ（ＭＯＭ）オブジェクトクラスの購読を通知する（ステップＳＴ３）。
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｉｏｎ
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ
【００３３】
（４）ＲＴＩ１３０に対し、次のＭＯＭインタラクションクラスの公開を通知する（ステップＳＴ４）。
・ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｔｉｍｅＡｄｖａｎｃｅＲｅｑｕｅｓｔ
（５）フェデレーションに参加する全てのフェデレートのＩＤが取得できるまで、ＲＴＩ１３０より次のＭＯＭアトリビュート値を参照し、フェデレーション参加中のフェデレートのＩＤを取得する処理を繰り返す（ステップＳＴ５、ステップＳＴ６）。
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｉｏｎクラスのＨＬＡｆｅｄｅｒａｔｅｓＩｎＦｅｄｅｒａｔｉｏｎアトリビュート
（６）（５）の処理が完了したら、取得した全フェデレートのＩＤを時刻モニタ手段１２２など、ＲＴＩインタフェース手段１２４に接続された他の機能へ通知する（ステップＳＴ７）。
【００３４】
（７）次時刻を次式（１）により算出する（ステップＳＴ８）。例えば、初期時刻が０の場合で、図５の判定条件の場合、１００ミリ秒が設定される。
次時刻＝初期時刻＋周期                （式１）
（８）ＲＴＩ１３０に対し、次時刻への進行要求をＴＡＲにより通知する（ステップＳＴ９）。
【００３５】
次に、図７は、時刻モニタ手段１２２において、ＲＴＩインタフェース手段１２４の初期化処理が完了した時点から開始され、シミュレーションが終了するまで周期的に繰返し実行される処理フローである。図７の処理フローでは、次の（１）〜（５）の処理を周期的に繰り返す。
（１）実時刻条件設定手段１２１より取得した判定条件の進行制約時間に設定された時間分待つ（ステップＳＴ１１）。図５の判定条件の場合、９５ミリ秒待つ。
（２）実時刻同期制御フェデレート１２０自身のＧＡＬＴ値を、ＲＴＩインタフェース手段１２４を介してＲＴＩ１３０より取得する（ステップＳＴ１２）。
（３）次時刻を次式（２）により算出する（ステップＳＴ１３）。例えば、現在時刻が１００ミリ秒の場合で、図５の判定条件の場合、２００ミリ秒が設定される。
次時刻＝現在時刻＋周期              （式２）
（４）以下の判定式（３）が真の場合、（５）の処理を行う。式（２）が偽の場合、丸数字１以降の処理（図１０および図１１の処理）を実行する（ステップＳＴ１４）。
取得したＧＡＬＴ値＞次時刻          （式３）
（５）ＲＴＩ１３０に対し、ＲＴＩインタフェース手段１２４を介して次時刻への進行要求をＴＡＲにより通知する（ステップＳＴ１５）。
【００３６】
上記の式（３）について説明する。式（３）の右辺の次時刻は、実時刻同期制御フェデレート１２０がこの時刻へ進むことにより実時刻と同期し、フェデレーション１００全体の時刻となる時刻値である。式（１）が真の場合、実時刻同期制御フェデレート１２０のＧＡＬＴが次時刻より先に進んでいる、すなわち実時刻同期制御フェデレート１２０以外の全ての時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を全て完了していることを表す。その際の状況の例を、図８に示す。図８の状況の場合、実時刻同期制御フェデレート１２０がＴＡＲによる次時刻への進行要求を行うと、すぐにＴＡＧ通知が行われ次時刻への進行許可を得ることができる。以上の処理を行うのに必要な実時間は、図５の判定条件の場合、（１）の処理における９５ミリ秒の待ち時間と、ＧＡＬＴ値の参照や時刻進行要求といったＲＴＩ１３０の処理時間の合計となり、周期として設定された１００ミリ秒に近い時間となる。以上の処理により、実時間と同期が行われる。
【００３７】
一方、式（３）が偽の場合、実時刻同期制御フェデレート１２０のＧＡＬＴが次時刻以下である、すなわち実時刻同期制御フェデレート１２０以外のいずれかの時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了していないことを表す。その際の状況の例を、図９に示す。図９の状況の場合、実時刻同期制御フェデレート１２０がＴＡＲによる次時刻への進行要求を行っても、時刻統制フェデレート２が時刻進行を行わない限り、ＴＡＧ通知による次時刻への進行許可を得ることができない。そのため、このような状況で、ただちに実時間と同期するためには、時刻統制フェデレートの強制的な時刻進行を行う必要がある。この、強制的な時刻進行の処理フローを、図７の丸数字１以降の処理として、図１０および図１１に示す。
【００３８】
図１０は、強制的な時刻進行の前半の処理フローである。この処理フローでは、Ｔｉｍｅ  Ｇｒａｎｔｅｄ状態にある時刻統制フェデレートを対象に強制時刻進行を行う。図１０の処理フローでは、実時刻同期制御フェデレート１２０以外の参加中の全フェデレートを１つずつ処理するループ処理において、次の（１）〜（６）の処理を行う。
【００３９】
（１）時刻モニタ手段１２２が内部に保有する再確認フェデレートキュー（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ形式のリスト構造）をクリアする（ステップＳＴ２１）。
（２）対象となるフェデレートのＩＤを利用して次のＭＯＭアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する（ステップＳＴ２２）。
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅクラスの次のアトリビュート
−ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート
（値として、真または偽が格納）
−ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート
（値として、ＴｉｍｅＡｄｖａｎｃｉｎｇ状態かＴｉｍｅＧｒａｎｔｅｄ状態かが格納）
−ＨＬＡｌｏｇｉｃａｌＴｉｍｅアトリビュート
（値として、現在時刻が格納）
−ＨＬＡｌｏｏｋａｈｅａｄアトリビュート
（値として、Ｌｏｏｋａｈｅａｄ値が格納）
【００４０】
（３）ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート値が偽の場合、当該フェデレートは時刻統制フェデレートでは無いため何も行わず、次のループ処理を行う。ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート値が真の場合（４）の処理を行う（ステップＳＴ２３）。
（４）次の判定式（４）が偽の場合、当該フェデレートは既に次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了しているため何も行わず、次のループ処理を行う。式（４）が真の場合（５）の処理を行う（ステップＳＴ２４）。
（ＨＬＡｌｏｇｉｃａｌＴｉｍｅアトリビュート値＋ＨＬＡｌｏｏｋａｈｅａｄアトリビュート値）＜次時刻                （式４）
（５）ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート値がＴｉｍｅＧｒａｎｔｅｄ状態を示す場合、（６）の処理を行う。もしそうではなく、ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート値がＴｉｍｅＡｄｖａｎｃｉｎｇ状態を示す場合、当該フェデレートは時刻進行を行うことができないため、時刻モニタ手段１２２が内部に保有する再確認フェデレートキューに当該フェデレートのＩＤを格納し、次のループ処理を行う（ステップＳＴ２５、ステップＳＴ２６）。
（６）次式（５）によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段１２３に通知し、当該フェデレートの時刻を強制的に進行させる（ステップＳＴ２６）。なお、式（６）の右辺の最後の項のＥｐｓｉｌｏｎは、ＨＬＡ規約にて定められた論理時刻値の最小値である。
強制進行時刻＝次時刻−ＨＬＡｌｏｏｋａｈｅａｄアトリビュート値＋Ｅｐｓｉｌｏｎ
（式５）
【００４１】
次に図１１は、図１０の処理が完了した後に実行される、強制的な時刻進行の後半の処理フローである。この処理フローでは、図１０の処理フローでＴｉｍｅ  Ａｄｖａｎｃｉｎｇ状態であった時刻統制フェデレートの状態および時刻値を再確認し、必要であれば強制時刻進行を行う。図１１の処理フローでは、再確認フェデレートキューに登録されたフェデレートを１つずつ取り出し処理するループ処理において、次の（１）〜（５）の処理を行う。
【００４２】
（１）対象となるフェデレートのＩＤを利用して次のＭＯＭアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する（ステップＳＴ３１）。
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅクラスの次のアトリビュート
−ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート
（値として、ＴｉｍｅＡｄｖａｎｃｉｎｇ状態かＴｉｍｅＧｒａｎｔｅｄ状態かが格納）
−ＨＬＡｌｏｇｉｃａｌＴｉｍｅアトリビュート
（値として、現在時刻が格納）
−ＨＬＡｌｏｏｋａｈｅａｄアトリビュート
（値として、Ｌｏｏｋａｈｅａｄ値が格納）
−ＨＬＡＧＡＬＴアトリビュート
（値として、ＧＡＬＴ値が格納）
【００４３】
（２）判定式（５）を評価し、式（５）が真の場合、実時刻同期制御フェデレート１２０の次時刻未満の時刻に時刻進行許可を得たということであり、強制時刻進行を行うか否かを判断するため（３）の処理を行う。式（５）が偽の場合、（５）の処理を行う（ステップＳＴ３２）。
（３）判定式（４）を評価し、式（４）が偽の場合、当該フェデレートは実時刻同期制御フェデレート１２０の時刻進行に影響を与えないため何も行わず、次のループ処理を行う。式（４）が真の場合、（４）の処理を行う（ステップＳＴ３３）。
（４）式（６）によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段１２３に通知し、当該フェデレートの時刻を強制的に進行させ、次のループ処理を行う（ステップＳＴ３４）。
（５）次の判定式（６）が真の場合（ステップＳＴ３５）、当該フェデレートのＧＡＬＴが進んでいないために当該フェデレートがＴｉｍｅＡｄｖａｎｃｉｎｇ状態であると判断し、当該フェデレートのＧＡＬＴが更新された後に再度（１）の処理をやり直すため、再確認フェデレートキューに当該フェデレートを再登録し（ステップＳＴ３６）、次のループ処理を行う。式（６）が偽の場合（ステップＳＴ３５）、実時刻同期制御フェデレート１２０が当該フェデレートのＧＡＬＴを決定していると判断し、何もせず次のループ処理を行う。
ＨＬＡＧＡＬＴアトリビュート値＜次時刻        （式６）
【００４４】
図１２は、フェデレート強制時刻進行手段１２３による、強制的な時刻統制フェデレートの時刻進行要求の処理フローである。図１２の処理フローでは、次の（１）の処理を行う。
（１）対象となるフェデレートのＩＤを利用して次のＭＯＭインタラクションをＲＴＩに対して送信する。
ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｔｉｍｅＡｄｖａｎｃｅＲｅｑｕｅｓｔ
【００４５】
上記図１２の処理フロー（１）で発行するＭＯＭインタラクションは、指定されたフェデレートの指定された時刻への時刻進行をＲＴＩ１３０に通知するもので、このインタラクションをＲＴＩ１３０が受信すると、ＲＴＩ１３０の時刻同期処理において、指定されたフェデレートが指定された時刻にＴＡＲによる時刻進行を要求した状態が強制的に引き起こされる。なお、指定されたフェデレートの指定された時刻への時刻進行をＲＴＩ１３０に通知するＭＯＭインタラクションには、他に次のものがあるが、これらの方法を利用する場合、次のような制約や問題が生じるため、実時刻同期制御フェデレート１２０は、上記（１）で発行するＭＯＭインタラクションのみを利用する。
【００４６】
・ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｔｉｍｅＡｄｖａｎｃｅＲｅｑｕｅｓｔＡｖａｉｌａｂｌｅ
指定されたフェデレートが、ある要求時刻にＴＡＲＡによる時刻進行要求を行った状態を引き起こすものである。ＴＡＲＡを用いて、ある要求時刻へ時刻進行要求を行った場合、そのフェデレートはＧＡＬＴが要求時刻以上となった場合にＴＡＧによる時刻進行許可を受け取ることができるため、時刻を進行する上でＧＡＬＴと同時刻の有効時刻付きデータ交換メッセージが前時刻の模擬処理で処理されるのか、次時刻の模擬処理で処理されるのかが、ＲＴＩ１３０の処理状況等により変わってしまい、厳密な時刻同期が行えないという問題が生じる。
【００４７】
・ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｎｅｘｔＭｅｓｓａｇｅＲｅｑｕｅｓｔ
・ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｎｅｘｔＭｅｓｓａｇｅＲｅｑｕｅｓｔＡｖａｉｌａｂｌｅ
・ＨＬＡｉｎｔｅｒａｃｔｉｏｎＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅ．ＨＬＡｓｅｒｖｉｃｅ．ＨＬＡｆｌｕｓｈＱｕｅｕｅＲｅｑｕｅｓｔ
それぞれ、指定されたフェデレートが、ある要求時刻にＮＭＲ、ＮＭＲＡ、ＦＱＲによる時刻進行要求を行った状態を引き起こすものである。これらの機能によって時刻進行要求を行った場合、そのフェデレートの次時刻は、必ずしも要求時刻になるとは限らない。そのため、強制的に時刻進行に適さないという問題がある。
【００４８】
以上説明したように、実施の形態１の分散シミュレーションシステムによれば、ＨＬＡに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、ＲＴＩより各フェデレートの論理時刻を取得すると共に、実時刻を取得し、各フェデレートの論理時刻の進捗状況を監視することで実時刻の進行に対する論理時刻の遅れを検出し、論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをＲＴＩに通知することで、ＲＴＩの時刻同期処理において、特定されたフェデレートが進めた時刻にＴＡＲによる時刻進行を要求した状態を引き起こすためのＭＯＭインタラクションを送信するフェデレート強制時刻進行手段とを備えたので、ＨＬＡ規約の範囲内において、論理時刻と実時刻の同期を確実に行うことができる。
【００４９】
また、実施の形態１の分散シミュレーションシステムによれば、強制的な時刻進行の制御対象となるフェデレートを時刻統制フェデレートのみとしたため、シミュレーション全体の論理時刻進行に影響を与えない時刻制約フェデレートの遅れを許容することができる。
【００５０】
実施の形態２．
実施の形態２では、時刻統制フェデレート、時刻制約フェデレート、時刻統制・制約フェデレートを対象とした論理時刻実行制御の形態を示す。実施の形態２は、論理時刻に基づいた模擬処理を行うフェデレート全てについて、論理時刻と実時刻を同期する形態である。
【００５１】
実施の形態２の分散シミュレーションシステムにおける図面上の構成は実施の形態１における図４と同様であるため、図４の構成を用いて説明する。また、実施の形態２では、実施の形態１における図７のステップＳＴ１５処理後の処理フローが実施の形態１と異なるため、その差分について説明する。
【００５２】
図１３は、実施の形態１における図７に相当する、時刻モニタ手段１２２において、ＲＴＩインタフェース手段１２４の初期化処理が完了した時点から開始され、シミュレーションが終了するまで周期的に繰返し実行される処理フローである。図１３の処理フローでは、図７の（１）〜（５）の処理を行った後、（６）として次の処理を行う。
【００５３】
（６）時刻制約フェデレートの現在時刻を確認し、実時間に遅れていれば強制時刻進行制御を行う（ステップＳＴ１６）。
【００５４】
図１４に、上記図１３の（６）の処理フローを示す。図１４の処理フローでは、実時刻同期制御フェデレート１２０以外の参加中の全フェデレートを１つずつ処理するループ処理において、次の（１）〜（６）の処理を行う。
（１）対象となるフェデレートのＩＤを利用して次のＭＯＭアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する（ステップＳＴ４１）。
・ＨＬＡｏｂｊｅｃｔＲｏｏｔ．ＨＬＡｍａｎａｇｅｒ．ＨＬＡｆｅｄｅｒａｔｅクラスの次のアトリビュート
−ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート
（値として、真または偽が格納）
−ＨＬＡｔｉｍｅＣｏｎｓｔｒａｉｎｅｄアトリビュート
（値として、真または偽が格納）
−ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート
（値として、ＴｉｍｅＡｄｖａｎｃｉｎｇ状態かＴｉｍｅＧｒａｎｔｅｄ状態かが格納）
−ＨＬＡｌｏｇｉｃａｌＴｉｍｅアトリビュート
（値として、現在時刻が格納）
【００５５】
（２）ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート値が真の場合、当該フェデレートは時刻統制フェデレートであるため何も行わず、次のループ処理を行う。ＨＬＡｔｉｍｅＲｅｇｕｌａｔｉｎｇアトリビュート値が偽の場合、（３）の処理を行う（ステップＳＴ４２）。
（３）ＨＬＡｔｉｍｅＣｏｎｓｔｒａｉｎｅｄアトリビュート値が偽の場合、当該フェデレートは時刻制約フェデレートでは無いため何も行わず、次のループ処理を行う。ＨＬＡｔｉｍｅＣｏｎｓｔｒａｉｎｅｄアトリビュート値が真の場合、（４）の処理を行う（ステップＳＴ４３）。
（４）ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート値がＴｉｍｅＧｒａｎｔｅｄ状態を示す場合、（５）の処理を行う。もしそうではなく、ＨＬＡｔｉｍｅＭａｎａｇｅｒＳｔａｔｅアトリビュート値がＴｉｍｅＡｄｖａｎｃｉｎｇ状態を示す場合、当該フェデレートは次時刻より更に先の時刻へ進もうとしていることになるため何も行わず、次のループ処理を行う（ステップＳＴ４４）。
（５）次の判定式（７）が偽の場合、当該フェデレートは既に次時刻まで時刻進行しているため何も行わず、次のループ処理を行う。式（７）が真の場合、（６）の処理を行う（ステップＳＴ４５）。
ＨＬＡｌｏｇｉｃａｌＴｉｍｅアトリビュート値＜次時刻      （式７）
（６）次式（８）によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段１２３に通知し、当該フェデレートの時刻を強制的に進行させる。
強制進行時刻＝次時刻                                      （式８）
【００５６】
以上説明したように、実施の形態２の分散シミュレーションシステムによれば、時刻統制フェデレートを対象として強制的な時刻進行の制御を行った後、時刻制約フェデレートを対象として強制的な時刻進行の制御を行うようにしたので、実時刻に対して遅れている時刻制約フェデレートの強制的な時刻進行を行うことで、全てのフェデレートについて遅れを解消することができる。
【００５７】
実施の形態３．
実施の形態３では、実施の形態１および実施の形態２で説明した、強制時刻進行制御によって生じる可能性のある時刻付きデータ交換メッセージの不整合を解消する例を示す形態である。
【００５８】
図１５は、実施の形態３におけるシミュレーションシステムの構成図を示す。図示の分散シミュレーションシステムにおいて、フェデレート（１）１１０ａ−１〜フェデレート（ｎ）１１０ａ−ｎがそれぞれ不整合メッセージ検出・解消手段１１３を備えている以外は図４に示した実施の形態１と同様の構成であるため、対応する部分に同一符号を付してその説明を省略する。また、実施の形態３においても、フェデレート（１）１１０ａ−１〜フェデレート（ｎ）１１０ａ−ｎは同一構成であるため、単にフェデレート１１０ａとして説明する。
【００５９】
不整合メッセージ検出・解消手段１１３は、一般的な時刻統制フェデレートに付加されることで、実時刻同期制御フェデレート１２０がこの時刻統制フェデレートに対して行った強制時刻進行によって発生した不整合メッセージを検出し解消するための手段である。すなわち、不整合メッセージ検出・解消手段１１３は、実時刻同期制御フェデレート１２０による強制的な時刻進行を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、不整合を起こす有効時刻付きメッセージ送信要求を検出し、不整合を解消するために有効時刻無しメッセージ送信に変更するよう構成されている。なお、不整合メッセージ検出・解消手段１１３は、この一般的なフェデレート１１０ａが保有するフェデレートＲＴＩインタフェース部１１２のみと連携し、フェデレート固有のフェデレート処理部１１１とは独立した構成である。
【００６０】
次に、実施の形態３の動作について説明する。図１６は、フェデレート１１０ａが有効時刻付きデータ交換メッセージをＲＴＩ１３０に対して送信要求を行った際に、不整合メッセージ検出・解消手段１１３がそのデータ交換メッセージの不整合を検出し、不整合を解消するためのデータ交換メッセージ送信処理を行う処理フローを示す。図１６の処理フローは、フェデレート１１０ａにおいて次の（Ａ）および（Ｂ）の条件が双方とも成立している場合に実行される。
【００６１】
（Ａ）フェデレート１１０ａが時刻統制フェデレートである。
（Ｂ）フェデレート１１０ａのフェデレート処理部１１１が、フェデレートＲＴＩインタフェース部１１２に対して、有効時刻付きメッセージ送信（オブジェクトインスタンスのアトリビュート値およびインタラクションによるデータ交換メッセージ、およびオブジェクトインスタンス削除メッセージ）を要求し、その際にＥｘｃｅｐｔｉｏｎ（例外）が発生する。
【００６２】
図１６に示す不整合メッセージ検出・解消手段１１３の処理フローでは、次の（１）〜（５）の処理を行う。
（１）フェデレートＲＴＩインタフェース部１１２に要求されたメッセージ送信要求および発生した例外を受信する（ステップＳＴ５１）。
（２）発生した例外が「不正な有効時刻」である場合、（３）の処理を行う。発生した例外が「不正な有効時刻」でない場合、不整合メッセージによる例外ではないと判断し、処理フローを終了する（ステップＳＴ５２）。
（３）フェデレートＲＴＩインタフェース部１１２を介して、ＲＴＩ１３０より自フェデレートの現在時刻およびＬｏｏｋａｈｅａｄ値を取得する（ステップＳＴ５３）。
（４）次の判定式（９）が真の場合、メッセージの有効時刻が、当該フェデレートが強制的に時刻進行された結果不整合を起こしているものと判定し、（５）の処理を行う。式（９）が偽の場合、フェデレート処理部１１１におけるプログラムミス等の別の理由によって例外が発生したものと判定し、処理フローを終了する（ステップＳＴ５４）。
（現在時刻＋Ｌｏｏｋａｈｅａｄ値）＞メッセージの有効時刻        （式９）
【００６３】
（５）当該メッセージの不整合を解消し、メッセージを送信するために、次の処理を行う（ステップＳＴ５５）。
・メッセージを受信したフェデレートが、このメッセージに元々付与されていた有効時刻と、不整合を起こしたことを知ることができるよう、フェデレートＲＴＩインタフェース部１１２のメッセージ送信要求のオプション引数であるＵｓｅｒＳｕｐｐｌｉｅｄＴａｇに、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
・当該メッセージおよび警告情報を格納したＵｓｅｒＳｕｐｐｌｉｅｄＴａｇについて、有効時刻無しメッセージ送信要求をフェデレートＲＴＩインタフェース部１１２に対して要求する。
【００６４】
ここで、上記の（５）の処理についてさらに説明する。
まず、警告情報を格納するＵｓｅｒＳｕｐｐｌｉｅｄＴａｇについては、ＨＬＡ規約においてＲＴＩ１３０に対するメッセージ送信要求およびＲＴＩ１３０からのメッセージ受信通知に使われる機能（ＵＡＶおよびＲＡＶなど）のオプションとして定義されたデータ領域である。このデータ領域は、例えばメッセージ送信を要求した際の実時刻を格納するために利用されているが、本実施の形態ではその利用方式を拡張し、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
【００６５】
次に、有効時刻無しメッセージ送信要求については、ＨＬＡ規約では、有効時刻付きメッセージ送受信と有効時刻無しメッセージ送受信とを混在して使用することが可能である。有効時刻無しメッセージ送受信は、フェデレートの論理時間における現在時刻やＬｏｏｋａｈｅａｄ値と無関係に、即時的に実行される。そのため、不整合メッセージを検出した際に、そのメッセージを有効時刻無しメッセージとして送信し直すことにより、送信側および受信側のフェデレートの時刻進行状況に関わらず、当該メッセージの送受信を行うことが可能となる。ただし、論理時刻に基づいて模擬処理を行っているフェデレートは、有効時刻無しメッセージを受信した場合、そのメッセージの内容をどの時刻において処理すれば良いか判断することができない。そこで本実施の形態では、ＵｓｅｒＳｕｐｐｌｉｅｄＴａｇに警告情報として元々付与されていた有効時刻を格納し、受信側のフェデレートに通知することにより、受信したフェデレートがどの時刻にそのメッセージを処理すれば良いか判断するための基本データを与える。
【００６６】
以上説明したように、実施の形態３の分散シミュレーションシステムによれば、フェデレート強制時刻進行手段が強制的な時刻進行を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、不整合を起こす有効時刻付きメッセージ送信要求を検出し、不整合を解消するために有効時刻無しメッセージ送信に変更する不整合メッセージ検出・解消手段を備えたので、強制時刻進行制御によって生じる時刻付きデータ交換メッセージの不整合を解消することができる。
【００６７】
また、実施の形態３の分散シミュレーションシステムは、不整合メッセージ検出・解消手段は、有効時刻無しメッセージ送信に切り替えた際に、本来付与されていた有効時刻と、不整合が発生したことを示す不整合発生情報とを警告情報として、ＵｓｅｒＳｕｐｐｌｉｅｄＴａｇに格納して送信要求するようにしたので、ＨＬＡのオプション機能を利用し、有効時刻無しメッセージを受信したフェデレートが、不整合解消のための基本データとして利用することができる。
【００６８】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００６９】
１００  フェデレーション、１１０−１〜１１０−ｎ，１１０ａ−１〜１１０ａ−ｎ  フェデレート、１１１  フェデレート処理部、１１２  フェデレートＲＴＩインタフェース部、１１３  不整合メッセージ検出・解消手段、１２０  実時刻同期制御フェデレート、１２１  実時刻条件設定手段、１２２  時刻モニタ手段、１２３  フェデレート強制時刻進行手段、１２４  ＲＴＩインタフェース手段、１３０  ＲＴＩ。
【図１】
2014186475.tif 000003
【図２】
2014186475.tif 000004
【図３】
2014186475.tif 000005
【図４】
2014186475.tif 000006
【図５】
2014186475.tif 000007
【図６】
2014186475.tif 000008
【図７】
2014186475.tif 000009
【図８】
2014186475.tif 000010
【図９】
2014186475.tif 000011
【図１０】
2014186475.tif 000012
【図１１】
2014186475.tif 000013
【図１２】
2014186475.tif 000014
【図１３】
2014186475.tif 000015
【図１４】
2014186475.tif 000016
【図１５】
2014186475.tif 000017
【図１６】
2014186475.tif 000018