JP6091278B2 - 分散シミュレーションシステム - Google Patents
分散シミュレーションシステム Download PDFInfo
- Publication number
- JP6091278B2 JP6091278B2 JP2013060172A JP2013060172A JP6091278B2 JP 6091278 B2 JP6091278 B2 JP 6091278B2 JP 2013060172 A JP2013060172 A JP 2013060172A JP 2013060172 A JP2013060172 A JP 2013060172A JP 6091278 B2 JP6091278 B2 JP 6091278B2
- Authority
- JP
- Japan
- Prior art keywords
- time
- federation
- logical
- rti
- forced
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000004088 simulation Methods 0.000 title claims description 81
- 238000012545 processing Methods 0.000 claims description 83
- 238000000034 method Methods 0.000 claims description 54
- 230000008569 process Effects 0.000 claims description 49
- 230000005540 biological transmission Effects 0.000 claims description 29
- 230000001360 synchronised effect Effects 0.000 claims description 20
- 238000012544 monitoring process Methods 0.000 claims description 12
- 230000003993 interaction Effects 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 7
- 102100026827 Protein associated with UVRAG as autophagy enhancer Human genes 0.000 description 12
- 101710102978 Protein associated with UVRAG as autophagy enhancer Proteins 0.000 description 12
- 230000003111 delayed effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000011514 reflex Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
本発明は、HLAに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムに関する。
HLA(High Level Architecture)は、IEEEによって標準化された分散シミュレーションシステムのソフトウェアアーキテクチャである。このようなHLA規約に基づいたシミュレーションシステムとしては例えば非特許文献1に記載されている。このようなシミュレーションシステムでは、あるフェデレーションの一機能として作成されたフェデレートを、変更することなく別のフェデレーションで利用することが可能となり、フェデレートの再利用によるシステム構築コストの低減化や、異なる目的のために作成されたフェデレート同士の相互接続性の向上を実現することができる。
非特許文献1には、RTI(Run Time Infrastructure)がフェデレーションとフェデレートを実行制御するための機能が定義されている。その機能の一つに、多数のフェデレートの実行進捗を論理的なシミュレーション時刻(論理時刻と呼ぶ。)によって時刻同期を行いつつ制御する、Time Management機能がある。Time Management機能による時刻進行の一例を図1に示す。図1は、2つのフェデレートがRTIによって時刻同期によって実行管理されている例である。図において、まずフェデレート1における時刻tiの処理について説明する。フェデレート1は、時刻tiにおける模擬処理を実行し、その処理結果として発生した時刻ti+1がTime Stamp(有効時刻)に設定されたデータ交換メッセージmsg1をフェデレート2に送信する。データ交換メッセージの送信は、RTIの機能であるUpdate Attribute Values(UAV)の呼び出しによって、RTIに委託される。フェデレート1は、ti時刻における模擬処理およびデータ交換メッセージ送信処理が完了すると、RTIに対し、次時刻である時刻ti+1への時刻進行要求を、RTIの機能であるTime Advance Request(TAR)の呼び出しによって通知する。
次に、フェデレート2の時刻tiにおける処理について説明する。フェデレート2も時刻tiの模擬処理を実行し、その結果として発生した時刻ti+1が有効時刻に設定されたデータ交換メッセージmsg2をUAV呼び出しによってRTIに委託し、次時刻である時刻ti+1への時刻進行要求を、TAR呼び出しによってRTIに通知する。
フェデレート1とフェデレート2がそれぞれ次時刻である時刻ti+1への時刻進行要求を通知すると、RTIは、まず時刻ti+1が有効時刻に設定されたデータ交換メッセージmsg1およびmsg2をフェデレート2およびフェデレート1に、フェデレートに対するコールバック機能であるReflect Attribute Values(RAV)呼び出しによって受信させる。次に、フェデレーション中の全てのフェデレートが時刻ti+1以上へ進行要求しているため、シミュレーション全体でのデータの整合性を確保できる最も遅い論理時刻が時刻ti+1であることを計算し、フェデレート1とフェデレート2に対し、フェデレートに対するコールバック機能であるTime Advance Grant(TAG)呼び出しによって時刻ti+1への進行許可を通知する。ここまでの処理によって、フェデレート1およびフェデレート2の時刻同期が完了し、フェデレート1およびフェデレート2は、時刻進行許可された時刻ti+1の模擬処理を実行する。
なお、フェデレートがTARを呼び出してTAGを待つ間の状態をTime Advancing状態と呼び、TAGを受けてTARを出すまでの間の状態をTime Granted状態と呼ぶ。以上の処理を各フェデレートが時刻進行する都度繰り返すことにより、フェデレーション全体の時刻進行が制御される。
なお、図1の処理における時刻は全て論理時刻であり、現実世界における時刻(実時刻と呼ぶ。)と全く無関係に処理される時刻である。論理時刻は、コンピュータプログラムであるフェデレートにおいて模擬処理やデータ交換メッセージ通信の順番を決定するために利用される数値情報であり、複数のフェデレートが並列に模擬処理の実行やデータ交換メッセージ通信を行う場合に、シミュレーション中の全ての模擬処理とデータ交換メッセージ通信が論理時刻によって整列化され順番に処理することを保証するために使用される。論理時刻を用いることにより、多数のフェデレートを多数のコンピュータで並列処理を行いシミュレーションを高速化した場合でも、シミュレーションの再現性を保証することができる。
HLAの論理時刻制御では、フェデレートの論理時刻に対する影響について、Time Regulating(時刻統制)と、Time Constrained(時刻制約)の2種類に分類しており、フェデレートは時刻統制と時刻制約の有り無し及びその組み合わせにおいて4種類に分けられる。時刻統制フェデレートとは、他の時刻制約フェデレートの論理時刻進行に影響を与えるフェデレートである。フェデレーションにおける全ての時刻統制フェデレートの現在時刻にLookahead値(このフェデレートが、現在時刻から将来に渡って有効時刻付きのデータ交換メッセージ等を送信しないことを保証する時間)を加算した値の最小値が、他の時刻制約フェデレートが進むことのできる論理時刻の基準として用いられる。図1に示した例では、フェデレート1およびフェデレート2は、時刻統制かつ時刻制約であり、自身の現在時刻およびLookahead値が、他のフェデレートの進むことのできる時刻を制約する例である。なお、ある時刻制約フェデレートに対し、そのフェデレートが進むことができる論理時刻の基準値を、Gratest Available Logical Time(GALT)と呼ぶ。
論理時刻によるシミュレーションの実行制御は実時刻と無関係に行われるが、例えば人間の意思決定や運動能力を訓練するような目的のシミュレーションでは、論理時刻進行と実時刻進行が同期している必要がある。HLAに基づくシミュレーションシステムで、論理時刻進行と実時刻進行を同期させる一般的な方法として、ペーサーフェデレートと呼ばれるフェデレートを用いる方法がある。ペーサーフェデレートは、実時刻に合わせて時刻進行要求をRTIに要求するフェデレートである。
図2にペーサーフェデレートによる時刻進行の一例を示す。図2は、図1のフェデレーションにペーサーフェデレートを付与した構成における時刻進行の例を示している。図2において、ペーサーフェデレートは、前時刻tiにおけるTAR呼び出し時点を開始時点とし、同期したい時間間隔(図2の場合は、時刻ti+1から時刻tiを引いた差分)Δt分の実時間タイマを開始する。なお、ペーサーフェデレートが実時間タイマを実行中に、時刻tiへの時刻進行許可通知としてTAG呼び出しを受けるが、図2では省略する。そして、Δt分の実時間タイマが終了した時点で時刻ti+1への時刻進行要求をTAR呼び出しによってRTIに要求する。この時点で、フェデレート1およびフェデレート2の時刻ti+1への時刻進行要求と、RAV呼び出しが完了していれば、RTIは即座に全フェデレートに対して時刻ti+1への時刻進行許可をTAG呼び出しによって通知する。
このことにより、実時刻ti+1と同期する形で、各フェデレートの論理時刻ti+1への時刻進行が行われる。以上の処理を各フェデレートが時刻進行する都度繰り返すことにより、フェデレーション全体の時刻進行が、実時刻と同期した形で制御される。
このことにより、実時刻ti+1と同期する形で、各フェデレートの論理時刻ti+1への時刻進行が行われる。以上の処理を各フェデレートが時刻進行する都度繰り返すことにより、フェデレーション全体の時刻進行が、実時刻と同期した形で制御される。
ペーサーフェデレートによる論理時刻と実時刻の同期処理は、ペーサーフェデレートがある時刻への時刻進行要求を行った時点で、他のフェデレートの当該時刻への時刻進行要求と、RAV呼び出しが完了していることにより、成り立つ処理である。もし、ペーサーフェデレートがある時刻への時刻進行要求を行った時点で、他のフェデレートの当該時刻への時刻進行要求等が完了していなければ、論理時刻進行は実時刻進行に遅れて行われ、論理時刻と実時刻の同期に失敗するという第一の課題がある。図3に、その例を示す。図3は、フェデレート2の時刻tiにおける模擬処理に時間がかかり、ペーサーフェデレートが時刻ti+1への時刻進行要求を要求した時点でも、未だフェデレート2が時刻ti+1への時刻進行要求を行えていない状況である。この状況では、実時刻ti+1より遅れた形で、各フェデレートの論理時刻ti+1への時刻進行が行われることになる。
このような第一の課題を解決するために、例えば特許文献1に示すような分散シミュレーションシステムがあった。この分散シミュレーションシステムは、フェデレートに相当するシミュレータが実時刻の進行に遅れそうになると、全体の実行制御を担当するシミュレーションマネージャが、実時刻の進行に遅れそうになっているシミュレータの時刻を強制的に進めることにより、論理時刻進行が実時刻進行に遅れることを防ぐものであり、このような構成により、論理時刻と実時刻の同期を行うようにしたものであった。
IEEE 1516.1-2010 - Standard for Modeling and Simulation High Level Architecture(HLA)- Federate Interface Specification.
上記の特許文献1に示されたシミュレーションマネージャは、内部的にHLAのRTIの機能を有しており、フェデレートであるシミュレータはRTIと同様の機能を利用することができる。しかしながら、強制的に論理時刻を進行させる強制時刻進行メッセージや、データ送受信の不整合に対するメッセージ破棄や警告メッセージの付加については、HLA規約においてRTIの機能として定められておらず、特許文献1のシミュレーションマネージャにおいて独自に拡張された機能である。従って、非特許文献1等に定められたHLA規約に準拠したフェデレーションおよびフェデレートでは、特許文献1のシミュレーションマネージャ1が具備する、第一の課題を解決するための機能を利用することができないという問題があった。
HLA規約は、フェデレートの再利用によるシステム構築コストの低減化や、異なる目的のために作成されたフェデレート同士の相互接続性の向上を実現するための規約であるため、例えば防衛・防災のために様々なシミュレータを利用する国家機関等では、シミュレータ開発運用にかかる総コストを低減化するために、準拠することを義務づけたり推奨することが一般的に行われているため、HLA規約の範囲内で第一の課題を解決することのできる分散シミュレーションシステムを実現することが第二の課題として残されていた。
この発明は上記のような課題を解決するためになされたもので、HLA規約の範囲内において、論理時刻と実時刻の同期を確実に行うことのできる分散シミュレーションシステムを得ることを目的とする。
この発明に係る分散シミュレーションシステムは、HLAに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、RTIより各フェデレートの論理時刻を取得すると共に、実時刻を取得し、各フェデレートの論理時刻の進捗状況を監視することで実時刻の進行に対する論理時刻の遅れを検出し、論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをRTIに通知することで、RTIの時刻同期処理において、特定されたフェデレートが進めた時刻にTARによる時刻進行を要求した状態を引き起こすためのMOMインタラクションを送信するフェデレート強制時刻進行手段とを備えたものである。
この発明の分散シミュレーションシステムは、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをRTIに通知するようにしたので、HLA規約の範囲内において、論理時刻と実時刻の同期を確実に行うことができる。
実施の形態1.
図4は、この発明の実施の形態1による分散シミュレーションシステムを示す構成図である。
図4に示す分散シミュレーションシステムは、HLAに準拠したシステム全体を示しており、フェデレーション100とRTI130で構成され、フェデレーション100には、複数のフェデレート(1)110−1〜フェデレート(n)110−nと一つの実時刻同期制御フェデレート120が含まれている。
図4は、この発明の実施の形態1による分散シミュレーションシステムを示す構成図である。
図4に示す分散シミュレーションシステムは、HLAに準拠したシステム全体を示しており、フェデレーション100とRTI130で構成され、フェデレーション100には、複数のフェデレート(1)110−1〜フェデレート(n)110−nと一つの実時刻同期制御フェデレート120が含まれている。
HLAでは、シミュレーションシステム全体をフェデレーションと呼び、分散実行される模擬処理などのプログラムをフェデレートと呼ぶ。そして、シミュレーションの実行中に行われる、フェデレーション全体の実行制御や、フェデレート間のデータ交換などの共通機能を、分散シミュレーション基盤であるRTIが提供する。
図4に示すフェデレート(1)110−1〜フェデレート(n)110−nは、システムを構成する個々のシミュレータ等のサブシステムを示し、フェデレート処理部111とフェデレートRTIインタフェース部112を備えている。なお、フェデレート(1)110−1〜フェデレート(n)110−nについてはそれぞれ共通であるため、以下、単にフェデレート110として説明する。フェデレート110は、フェデレート処理部111とフェデレートRTIインタフェース部112を備えている。フェデレート処理部111はフェデレート固有の機能を有する処理部であり、フェデレートRTIインタフェース部112は、フェデレート110におけるRTI130とのインタフェース機能を実現する処理部である。
実時刻同期制御フェデレート120は、RTI130によって実行制御されるフェデレーション100において、実時刻同期処理の制御を行うフェデレートであり、実時刻条件設定手段121、時刻モニタ手段122、フェデレート強制時刻進行手段123、RTIインタフェース手段124を備えている。実時刻条件設定手段121は、実時刻と論理時刻の関係から、フェデレート強制時刻進行手段123がフェデレートを強制的に時刻進行させるか否かを決定するために参照される、利用者が設定した判定条件を格納する手段である。時刻モニタ手段122は、RTIインタフェース手段124を介してRTI130より実時刻同期制御フェデレート120が属するフェデレーション100の各フェデレートの論理時刻を取得し、また、実時刻同期制御フェデレート120が動作する計算機環境のOSから実時刻を取得する手段である。フェデレート強制時刻進行手段123は、時刻モニタ手段122で得た実時刻と各フェデレートの論理時刻と、実時刻条件設定手段121から得た判定条件を基に、実時刻同期制御フェデレート120が属するフェデレーション100の各フェデレートの論理時刻を強制的に進行させる手段である。RTIインタフェース手段124は、実時刻同期制御フェデレート120がRTI130と連携し、時刻モニタ手段122とフェデレート強制時刻進行手段123に対してRTI130の機能呼び出しやコールバック呼び出しを受け取るためのインタフェースである。
また、RTI130は、フェデレーション100および複数のフェデレート(1)110−1〜フェデレート(n)110−n、実時刻同期制御フェデレート120に対する共通機能を提供する基盤ソフトウェアであり、RTI130が保持しなければならない機能仕様やフェデレートRTIインタフェース部112およびRTIインタフェース手段124の機能仕様は、例えば非特許文献1等に規定されている。
図5は、実時刻条件設定手段121に格納される、利用者が設定した判定条件の一例である。図5において、「周期」には、シミュレーション開始時点における時刻0から周期的に論理100ミリ秒ずつ進行させることが設定される。「進行制約時間」には、シミュレーション開始時点もしくは前回のRTI130に対する論理時刻進行要求の呼び出し時点から、次の論理時刻進行要求の呼び出しを行うまで待つ制約時間が設定される。図1の例では、周期100ミリ秒に対し、RTI130の処理のオーバヘッド分を差し引いた、やや短い95ミリ秒が設定されている。「強制進行時間」には、論理時刻の進行が実時刻の進行に追いつかない場合に、シミュレーション開始時点もしくは前回のRTI130に対する論理時刻進行要求の呼び出し時点から、強制的な時刻進行処理が完了するまでの強制進行時間が設定される。図3の例では、周期100ミリ秒に対し、強制時刻進行に要するRTI130のオーバヘッド分を加味した、やや長い105ミリ秒が設定されている。
次に実施の形態1の分散シミュレーションシステムの動作について説明する。実施の形態1では、時刻統制フェデレートのみを対象とした強制論理時刻進行制御の形態を示す。実施の形態1は、一部の時刻制約フェデレートの論理時刻進行が実時刻に同期せずに遅れることを許容する形態である。実施の形態1において、時刻制約フェデレートを強制論理時刻進行制御の対象外としたのは、時刻制約フェデレートが他のフェデレートの時刻進行に影響を与えないため、時刻同期の基本的な処理プロセスを最初に説明するためである。時刻制約フェデレートを含めた強制論理時刻進行制御の形態については、実施の形態2で説明する。
なお、実時刻同期制御フェデレート120がRTI130から他のフェデレートの各種情報を取得するために、HLA規約に定められたManagement Object Model(MOM)機能に規定されたフェデレーションおよびフェデレートの状況監視機能を組み合せて利用し、また、次時刻進行要求にはTARを用いるものとする。HLA規約では、TARの以外の次時刻進行要求方法として、Next Message Request(NMR)、Time Advance Request Available(TARA)、Next Message Request Available(NMRA)、Flush Queue Request(FQR)という方法が利用できるが、これらの方法を利用する場合、次のような制約や問題が生じるため、実時刻同期制御フェデレート120は、TARのみを利用する。
・NMR、NMRA、FQRを用いて次時刻進行を要求する場合
TAGによってRTI130から通知される進行許可時刻が、実時刻同期制御フェデレート120が受け取るデータ交換メッセージの有効時刻の最小値とGALTのうち、より小さい方の時刻であるLeast Incoming Time Stamp(LITS)に基づき計算される。従って、実時刻同期制御フェデレート120が有効時刻付きのデータ交換メッセージを受信するような場合、進みたい時刻(すなわち実時刻と同期した時刻)に進めなくなる可能性が生じるという問題がある。
TAGによってRTI130から通知される進行許可時刻が、実時刻同期制御フェデレート120が受け取るデータ交換メッセージの有効時刻の最小値とGALTのうち、より小さい方の時刻であるLeast Incoming Time Stamp(LITS)に基づき計算される。従って、実時刻同期制御フェデレート120が有効時刻付きのデータ交換メッセージを受信するような場合、進みたい時刻(すなわち実時刻と同期した時刻)に進めなくなる可能性が生じるという問題がある。
・TARAを用いて次時刻進行を要求する場合
TAGによってRTI130から通知される進行許可時刻の判定がGALT以下(TARの場合GALT未満)となるため、実時刻同期制御フェデレート120が進みたい時刻(すなわち実時刻と同期した時刻)でも、他のフェデレートは未だその時刻の模擬処理を行っている可能性があり、厳密な意味で実時刻と同期できないという問題がある。
TAGによってRTI130から通知される進行許可時刻の判定がGALT以下(TARの場合GALT未満)となるため、実時刻同期制御フェデレート120が進みたい時刻(すなわち実時刻と同期した時刻)でも、他のフェデレートは未だその時刻の模擬処理を行っている可能性があり、厳密な意味で実時刻と同期できないという問題がある。
図6は、実時刻同期制御フェデレート120の初期化処理における、RTIインタフェース手段124の初期化処理の処理フローである。図6の処理フローでは、まずRTI130に対し、フェデレーション100への参加要求が行われ、次に、RTI130に対する下記(1)〜(3)の呼び出しが行われる。なお、(2)〜(4)の呼び出し順序は、必ずしもこの順番でなくとも構わない。
(1)フェデレーションに参加する(ステップST1)。
(2)RTI130に対し、実時刻同期制御フェデレート120が、論理時刻制約かつ論理時刻統制であることを通知する(ステップST2)。なお、論理時刻統制を通知する際に、引数としてLookahead値を設定する必要があるが、実時刻条件設定手段121から得た判定条件の周期値を設定する。図5の判定条件の場合、100ミリ秒が設定される。
(3)RTI130に対し、次のManagement Object Model(MOM)オブジェクトクラスの購読を通知する(ステップST3)。
・HLAobjectRoot.HLAmanager.HLAfederation
・HLAobjectRoot.HLAmanager.HLAfederate
(2)RTI130に対し、実時刻同期制御フェデレート120が、論理時刻制約かつ論理時刻統制であることを通知する(ステップST2)。なお、論理時刻統制を通知する際に、引数としてLookahead値を設定する必要があるが、実時刻条件設定手段121から得た判定条件の周期値を設定する。図5の判定条件の場合、100ミリ秒が設定される。
(3)RTI130に対し、次のManagement Object Model(MOM)オブジェクトクラスの購読を通知する(ステップST3)。
・HLAobjectRoot.HLAmanager.HLAfederation
・HLAobjectRoot.HLAmanager.HLAfederate
(4)RTI130に対し、次のMOMインタラクションクラスの公開を通知する(ステップST4)。
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAtimeAdvanceRequest
(5)フェデレーションに参加する全てのフェデレートのIDが取得できるまで、RTI130より次のMOMアトリビュート値を参照し、フェデレーション参加中のフェデレートのIDを取得する処理を繰り返す(ステップST5、ステップST6)。
・HLAobjectRoot.HLAmanager.HLAfederationクラスのHLAfederatesInFederationアトリビュート
(6)(5)の処理が完了したら、取得した全フェデレートのIDを時刻モニタ手段122など、RTIインタフェース手段124に接続された他の機能へ通知する(ステップST7)。
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAtimeAdvanceRequest
(5)フェデレーションに参加する全てのフェデレートのIDが取得できるまで、RTI130より次のMOMアトリビュート値を参照し、フェデレーション参加中のフェデレートのIDを取得する処理を繰り返す(ステップST5、ステップST6)。
・HLAobjectRoot.HLAmanager.HLAfederationクラスのHLAfederatesInFederationアトリビュート
(6)(5)の処理が完了したら、取得した全フェデレートのIDを時刻モニタ手段122など、RTIインタフェース手段124に接続された他の機能へ通知する(ステップST7)。
(7)次時刻を次式(1)により算出する(ステップST8)。例えば、初期時刻が0の場合で、図5の判定条件の場合、100ミリ秒が設定される。
次時刻=初期時刻+周期 (式1)
(8)RTI130に対し、次時刻への進行要求をTARにより通知する(ステップST9)。
次時刻=初期時刻+周期 (式1)
(8)RTI130に対し、次時刻への進行要求をTARにより通知する(ステップST9)。
次に、図7は、時刻モニタ手段122において、RTIインタフェース手段124の初期化処理が完了した時点から開始され、シミュレーションが終了するまで周期的に繰返し実行される処理フローである。図7の処理フローでは、次の(1)〜(5)の処理を周期的に繰り返す。
(1)実時刻条件設定手段121より取得した判定条件の進行制約時間に設定された時間分待つ(ステップST11)。図5の判定条件の場合、95ミリ秒待つ。
(2)実時刻同期制御フェデレート120自身のGALT値を、RTIインタフェース手段124を介してRTI130より取得する(ステップST12)。
(3)次時刻を次式(2)により算出する(ステップST13)。例えば、現在時刻が100ミリ秒の場合で、図5の判定条件の場合、200ミリ秒が設定される。
次時刻=現在時刻+周期 (式2)
(4)以下の判定式(3)が真の場合、(5)の処理を行う。式(2)が偽の場合、丸数字1以降の処理(図10および図11の処理)を実行する(ステップST14)。
取得したGALT値>次時刻 (式3)
(5)RTI130に対し、RTIインタフェース手段124を介して次時刻への進行要求をTARにより通知する(ステップST15)。
(1)実時刻条件設定手段121より取得した判定条件の進行制約時間に設定された時間分待つ(ステップST11)。図5の判定条件の場合、95ミリ秒待つ。
(2)実時刻同期制御フェデレート120自身のGALT値を、RTIインタフェース手段124を介してRTI130より取得する(ステップST12)。
(3)次時刻を次式(2)により算出する(ステップST13)。例えば、現在時刻が100ミリ秒の場合で、図5の判定条件の場合、200ミリ秒が設定される。
次時刻=現在時刻+周期 (式2)
(4)以下の判定式(3)が真の場合、(5)の処理を行う。式(2)が偽の場合、丸数字1以降の処理(図10および図11の処理)を実行する(ステップST14)。
取得したGALT値>次時刻 (式3)
(5)RTI130に対し、RTIインタフェース手段124を介して次時刻への進行要求をTARにより通知する(ステップST15)。
上記の式(3)について説明する。式(3)の右辺の次時刻は、実時刻同期制御フェデレート120がこの時刻へ進むことにより実時刻と同期し、フェデレーション100全体の時刻となる時刻値である。式(1)が真の場合、実時刻同期制御フェデレート120のGALTが次時刻より先に進んでいる、すなわち実時刻同期制御フェデレート120以外の全ての時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を全て完了していることを表す。その際の状況の例を、図8に示す。図8の状況の場合、実時刻同期制御フェデレート120がTARによる次時刻への進行要求を行うと、すぐにTAG通知が行われ次時刻への進行許可を得ることができる。以上の処理を行うのに必要な実時間は、図5の判定条件の場合、(1)の処理における95ミリ秒の待ち時間と、GALT値の参照や時刻進行要求といったRTI130の処理時間の合計となり、周期として設定された100ミリ秒に近い時間となる。以上の処理により、実時間と同期が行われる。
一方、式(3)が偽の場合、実時刻同期制御フェデレート120のGALTが次時刻以下である、すなわち実時刻同期制御フェデレート120以外のいずれかの時刻統制フェデレートが、次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了していないことを表す。その際の状況の例を、図9に示す。図9の状況の場合、実時刻同期制御フェデレート120がTARによる次時刻への進行要求を行っても、時刻統制フェデレート2が時刻進行を行わない限り、TAG通知による次時刻への進行許可を得ることができない。そのため、このような状況で、ただちに実時間と同期するためには、時刻統制フェデレートの強制的な時刻進行を行う必要がある。この、強制的な時刻進行の処理フローを、図7の丸数字1以降の処理として、図10および図11に示す。
図10は、強制的な時刻進行の前半の処理フローである。この処理フローでは、Time Granted状態にある時刻統制フェデレートを対象に強制時刻進行を行う。図10の処理フローでは、実時刻同期制御フェデレート120以外の参加中の全フェデレートを1つずつ処理するループ処理において、次の(1)〜(6)の処理を行う。
(1)時刻モニタ手段122が内部に保有する再確認フェデレートキュー(First−In−First−Out形式のリスト構造)をクリアする(ステップST21)。
(2)対象となるフェデレートのIDを利用して次のMOMアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する(ステップST22)。
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeRegulatingアトリビュート
(値として、真または偽が格納)
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
−HLAlookaheadアトリビュート
(値として、Lookahead値が格納)
(2)対象となるフェデレートのIDを利用して次のMOMアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する(ステップST22)。
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeRegulatingアトリビュート
(値として、真または偽が格納)
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
−HLAlookaheadアトリビュート
(値として、Lookahead値が格納)
(3)HLAtimeRegulatingアトリビュート値が偽の場合、当該フェデレートは時刻統制フェデレートでは無いため何も行わず、次のループ処理を行う。HLAtimeRegulatingアトリビュート値が真の場合(4)の処理を行う(ステップST23)。
(4)次の判定式(4)が偽の場合、当該フェデレートは既に次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了しているため何も行わず、次のループ処理を行う。式(4)が真の場合(5)の処理を行う(ステップST24)。
(HLAlogicalTimeアトリビュート値+HLAlookaheadアトリビュート値)<次時刻 (式4)
(5)HLAtimeManagerStateアトリビュート値がTimeGranted状態を示す場合、(6)の処理を行う。もしそうではなく、HLAtimeManagerStateアトリビュート値がTimeAdvancing状態を示す場合、当該フェデレートは時刻進行を行うことができないため、時刻モニタ手段122が内部に保有する再確認フェデレートキューに当該フェデレートのIDを格納し、次のループ処理を行う(ステップST25、ステップST26)。
(6)次式(5)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させる(ステップST26)。なお、式(6)の右辺の最後の項のEpsilonは、HLA規約にて定められた論理時刻値の最小値である。
強制進行時刻=次時刻−HLAlookaheadアトリビュート値+Epsilon
(式5)
(4)次の判定式(4)が偽の場合、当該フェデレートは既に次時刻までに処理しなければならない模擬処理やデータ交換メッセージの送信を完了しているため何も行わず、次のループ処理を行う。式(4)が真の場合(5)の処理を行う(ステップST24)。
(HLAlogicalTimeアトリビュート値+HLAlookaheadアトリビュート値)<次時刻 (式4)
(5)HLAtimeManagerStateアトリビュート値がTimeGranted状態を示す場合、(6)の処理を行う。もしそうではなく、HLAtimeManagerStateアトリビュート値がTimeAdvancing状態を示す場合、当該フェデレートは時刻進行を行うことができないため、時刻モニタ手段122が内部に保有する再確認フェデレートキューに当該フェデレートのIDを格納し、次のループ処理を行う(ステップST25、ステップST26)。
(6)次式(5)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させる(ステップST26)。なお、式(6)の右辺の最後の項のEpsilonは、HLA規約にて定められた論理時刻値の最小値である。
強制進行時刻=次時刻−HLAlookaheadアトリビュート値+Epsilon
(式5)
次に図11は、図10の処理が完了した後に実行される、強制的な時刻進行の後半の処理フローである。この処理フローでは、図10の処理フローでTime Advancing状態であった時刻統制フェデレートの状態および時刻値を再確認し、必要であれば強制時刻進行を行う。図11の処理フローでは、再確認フェデレートキューに登録されたフェデレートを1つずつ取り出し処理するループ処理において、次の(1)〜(5)の処理を行う。
(1)対象となるフェデレートのIDを利用して次のMOMアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する(ステップST31)。
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
−HLAlookaheadアトリビュート
(値として、Lookahead値が格納)
−HLAGALTアトリビュート
(値として、GALT値が格納)
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
−HLAlookaheadアトリビュート
(値として、Lookahead値が格納)
−HLAGALTアトリビュート
(値として、GALT値が格納)
(2)判定式(5)を評価し、式(5)が真の場合、実時刻同期制御フェデレート120の次時刻未満の時刻に時刻進行許可を得たということであり、強制時刻進行を行うか否かを判断するため(3)の処理を行う。式(5)が偽の場合、(5)の処理を行う(ステップST32)。
(3)判定式(4)を評価し、式(4)が偽の場合、当該フェデレートは実時刻同期制御フェデレート120の時刻進行に影響を与えないため何も行わず、次のループ処理を行う。式(4)が真の場合、(4)の処理を行う(ステップST33)。
(4)式(6)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させ、次のループ処理を行う(ステップST34)。
(5)次の判定式(6)が真の場合(ステップST35)、当該フェデレートのGALTが進んでいないために当該フェデレートがTimeAdvancing状態であると判断し、当該フェデレートのGALTが更新された後に再度(1)の処理をやり直すため、再確認フェデレートキューに当該フェデレートを再登録し(ステップST36)、次のループ処理を行う。式(6)が偽の場合(ステップST35)、実時刻同期制御フェデレート120が当該フェデレートのGALTを決定していると判断し、何もせず次のループ処理を行う。
HLAGALTアトリビュート値<次時刻 (式6)
(3)判定式(4)を評価し、式(4)が偽の場合、当該フェデレートは実時刻同期制御フェデレート120の時刻進行に影響を与えないため何も行わず、次のループ処理を行う。式(4)が真の場合、(4)の処理を行う(ステップST33)。
(4)式(6)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させ、次のループ処理を行う(ステップST34)。
(5)次の判定式(6)が真の場合(ステップST35)、当該フェデレートのGALTが進んでいないために当該フェデレートがTimeAdvancing状態であると判断し、当該フェデレートのGALTが更新された後に再度(1)の処理をやり直すため、再確認フェデレートキューに当該フェデレートを再登録し(ステップST36)、次のループ処理を行う。式(6)が偽の場合(ステップST35)、実時刻同期制御フェデレート120が当該フェデレートのGALTを決定していると判断し、何もせず次のループ処理を行う。
HLAGALTアトリビュート値<次時刻 (式6)
図12は、フェデレート強制時刻進行手段123による、強制的な時刻統制フェデレートの時刻進行要求の処理フローである。図12の処理フローでは、次の(1)の処理を行う。
(1)対象となるフェデレートのIDを利用して次のMOMインタラクションをRTIに対して送信する。
HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAtimeAdvanceRequest
(1)対象となるフェデレートのIDを利用して次のMOMインタラクションをRTIに対して送信する。
HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAtimeAdvanceRequest
上記図12の処理フロー(1)で発行するMOMインタラクションは、指定されたフェデレートの指定された時刻への時刻進行をRTI130に通知するもので、このインタラクションをRTI130が受信すると、RTI130の時刻同期処理において、指定されたフェデレートが指定された時刻にTARによる時刻進行を要求した状態が強制的に引き起こされる。なお、指定されたフェデレートの指定された時刻への時刻進行をRTI130に通知するMOMインタラクションには、他に次のものがあるが、これらの方法を利用する場合、次のような制約や問題が生じるため、実時刻同期制御フェデレート120は、上記(1)で発行するMOMインタラクションのみを利用する。
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAtimeAdvanceRequestAvailable
指定されたフェデレートが、ある要求時刻にTARAによる時刻進行要求を行った状態を引き起こすものである。TARAを用いて、ある要求時刻へ時刻進行要求を行った場合、そのフェデレートはGALTが要求時刻以上となった場合にTAGによる時刻進行許可を受け取ることができるため、時刻を進行する上でGALTと同時刻の有効時刻付きデータ交換メッセージが前時刻の模擬処理で処理されるのか、次時刻の模擬処理で処理されるのかが、RTI130の処理状況等により変わってしまい、厳密な時刻同期が行えないという問題が生じる。
指定されたフェデレートが、ある要求時刻にTARAによる時刻進行要求を行った状態を引き起こすものである。TARAを用いて、ある要求時刻へ時刻進行要求を行った場合、そのフェデレートはGALTが要求時刻以上となった場合にTAGによる時刻進行許可を受け取ることができるため、時刻を進行する上でGALTと同時刻の有効時刻付きデータ交換メッセージが前時刻の模擬処理で処理されるのか、次時刻の模擬処理で処理されるのかが、RTI130の処理状況等により変わってしまい、厳密な時刻同期が行えないという問題が生じる。
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAnextMessageRequest
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAnextMessageRequestAvailable
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAflushQueueRequest
それぞれ、指定されたフェデレートが、ある要求時刻にNMR、NMRA、FQRによる時刻進行要求を行った状態を引き起こすものである。これらの機能によって時刻進行要求を行った場合、そのフェデレートの次時刻は、必ずしも要求時刻になるとは限らない。そのため、強制的に時刻進行に適さないという問題がある。
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAnextMessageRequestAvailable
・HLAinteractionRoot.HLAmanager.HLAfederate.HLAservice.HLAflushQueueRequest
それぞれ、指定されたフェデレートが、ある要求時刻にNMR、NMRA、FQRによる時刻進行要求を行った状態を引き起こすものである。これらの機能によって時刻進行要求を行った場合、そのフェデレートの次時刻は、必ずしも要求時刻になるとは限らない。そのため、強制的に時刻進行に適さないという問題がある。
以上説明したように、実施の形態1の分散シミュレーションシステムによれば、HLAに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、RTIより各フェデレートの論理時刻を取得すると共に、実時刻を取得し、各フェデレートの論理時刻の進捗状況を監視することで実時刻の進行に対する論理時刻の遅れを検出し、論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、論理時刻の遅れを検出したフェデレートを特定した場合に、フェデレートの論理時刻を強制的に進め、進めた時刻と特定されたフェデレートとをRTIに通知することで、RTIの時刻同期処理において、特定されたフェデレートが進めた時刻にTARによる時刻進行を要求した状態を引き起こすためのMOMインタラクションを送信するフェデレート強制時刻進行手段とを備えたので、HLA規約の範囲内において、論理時刻と実時刻の同期を確実に行うことができる。
また、実施の形態1の分散シミュレーションシステムによれば、強制的な時刻進行の制御対象となるフェデレートを時刻統制フェデレートのみとしたため、シミュレーション全体の論理時刻進行に影響を与えない時刻制約フェデレートの遅れを許容することができる。
実施の形態2.
実施の形態2では、時刻統制フェデレート、時刻制約フェデレート、時刻統制・制約フェデレートを対象とした論理時刻実行制御の形態を示す。実施の形態2は、論理時刻に基づいた模擬処理を行うフェデレート全てについて、論理時刻と実時刻を同期する形態である。
実施の形態2では、時刻統制フェデレート、時刻制約フェデレート、時刻統制・制約フェデレートを対象とした論理時刻実行制御の形態を示す。実施の形態2は、論理時刻に基づいた模擬処理を行うフェデレート全てについて、論理時刻と実時刻を同期する形態である。
実施の形態2の分散シミュレーションシステムにおける図面上の構成は実施の形態1における図4と同様であるため、図4の構成を用いて説明する。また、実施の形態2では、実施の形態1における図7のステップST15処理後の処理フローが実施の形態1と異なるため、その差分について説明する。
図13は、実施の形態1における図7に相当する、時刻モニタ手段122において、RTIインタフェース手段124の初期化処理が完了した時点から開始され、シミュレーションが終了するまで周期的に繰返し実行される処理フローである。図13の処理フローでは、図7の(1)〜(5)の処理を行った後、(6)として次の処理を行う。
(6)時刻制約フェデレートの現在時刻を確認し、実時間に遅れていれば強制時刻進行制御を行う(ステップST16)。
図14に、上記図13の(6)の処理フローを示す。図14の処理フローでは、実時刻同期制御フェデレート120以外の参加中の全フェデレートを1つずつ処理するループ処理において、次の(1)〜(6)の処理を行う。
(1)対象となるフェデレートのIDを利用して次のMOMアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する(ステップST41)。
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeRegulatingアトリビュート
(値として、真または偽が格納)
−HLAtimeConstrainedアトリビュート
(値として、真または偽が格納)
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
(1)対象となるフェデレートのIDを利用して次のMOMアトリビュートを参照し、当該フェデレートの状態を示す各アトリビュート値を取得する(ステップST41)。
・HLAobjectRoot.HLAmanager.HLAfederateクラスの次のアトリビュート
−HLAtimeRegulatingアトリビュート
(値として、真または偽が格納)
−HLAtimeConstrainedアトリビュート
(値として、真または偽が格納)
−HLAtimeManagerStateアトリビュート
(値として、TimeAdvancing状態かTimeGranted状態かが格納)
−HLAlogicalTimeアトリビュート
(値として、現在時刻が格納)
(2)HLAtimeRegulatingアトリビュート値が真の場合、当該フェデレートは時刻統制フェデレートであるため何も行わず、次のループ処理を行う。HLAtimeRegulatingアトリビュート値が偽の場合、(3)の処理を行う(ステップST42)。
(3)HLAtimeConstrainedアトリビュート値が偽の場合、当該フェデレートは時刻制約フェデレートでは無いため何も行わず、次のループ処理を行う。HLAtimeConstrainedアトリビュート値が真の場合、(4)の処理を行う(ステップST43)。
(4)HLAtimeManagerStateアトリビュート値がTimeGranted状態を示す場合、(5)の処理を行う。もしそうではなく、HLAtimeManagerStateアトリビュート値がTimeAdvancing状態を示す場合、当該フェデレートは次時刻より更に先の時刻へ進もうとしていることになるため何も行わず、次のループ処理を行う(ステップST44)。
(5)次の判定式(7)が偽の場合、当該フェデレートは既に次時刻まで時刻進行しているため何も行わず、次のループ処理を行う。式(7)が真の場合、(6)の処理を行う(ステップST45)。
HLAlogicalTimeアトリビュート値<次時刻 (式7)
(6)次式(8)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させる。
強制進行時刻=次時刻 (式8)
(3)HLAtimeConstrainedアトリビュート値が偽の場合、当該フェデレートは時刻制約フェデレートでは無いため何も行わず、次のループ処理を行う。HLAtimeConstrainedアトリビュート値が真の場合、(4)の処理を行う(ステップST43)。
(4)HLAtimeManagerStateアトリビュート値がTimeGranted状態を示す場合、(5)の処理を行う。もしそうではなく、HLAtimeManagerStateアトリビュート値がTimeAdvancing状態を示す場合、当該フェデレートは次時刻より更に先の時刻へ進もうとしていることになるため何も行わず、次のループ処理を行う(ステップST44)。
(5)次の判定式(7)が偽の場合、当該フェデレートは既に次時刻まで時刻進行しているため何も行わず、次のループ処理を行う。式(7)が真の場合、(6)の処理を行う(ステップST45)。
HLAlogicalTimeアトリビュート値<次時刻 (式7)
(6)次式(8)によって当該フェデレートの強制進行時刻を算出し、フェデレート強制時刻進行手段123に通知し、当該フェデレートの時刻を強制的に進行させる。
強制進行時刻=次時刻 (式8)
以上説明したように、実施の形態2の分散シミュレーションシステムによれば、時刻統制フェデレートを対象として強制的な時刻進行の制御を行った後、時刻制約フェデレートを対象として強制的な時刻進行の制御を行うようにしたので、実時刻に対して遅れている時刻制約フェデレートの強制的な時刻進行を行うことで、全てのフェデレートについて遅れを解消することができる。
実施の形態3.
実施の形態3では、実施の形態1および実施の形態2で説明した、強制時刻進行制御によって生じる可能性のある時刻付きデータ交換メッセージの不整合を解消する例を示す形態である。
実施の形態3では、実施の形態1および実施の形態2で説明した、強制時刻進行制御によって生じる可能性のある時刻付きデータ交換メッセージの不整合を解消する例を示す形態である。
図15は、実施の形態3におけるシミュレーションシステムの構成図を示す。図示の分散シミュレーションシステムにおいて、フェデレート(1)110a−1〜フェデレート(n)110a−nがそれぞれ不整合メッセージ検出・解消手段113を備えている以外は図4に示した実施の形態1と同様の構成であるため、対応する部分に同一符号を付してその説明を省略する。また、実施の形態3においても、フェデレート(1)110a−1〜フェデレート(n)110a−nは同一構成であるため、単にフェデレート110aとして説明する。
不整合メッセージ検出・解消手段113は、一般的な時刻統制フェデレートに付加されることで、実時刻同期制御フェデレート120がこの時刻統制フェデレートに対して行った強制時刻進行によって発生した不整合メッセージを検出し解消するための手段である。すなわち、不整合メッセージ検出・解消手段113は、実時刻同期制御フェデレート120による強制的な時刻進行を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、不整合を起こす有効時刻付きメッセージ送信要求を検出し、不整合を解消するために有効時刻無しメッセージ送信に変更するよう構成されている。なお、不整合メッセージ検出・解消手段113は、この一般的なフェデレート110aが保有するフェデレートRTIインタフェース部112のみと連携し、フェデレート固有のフェデレート処理部111とは独立した構成である。
次に、実施の形態3の動作について説明する。図16は、フェデレート110aが有効時刻付きデータ交換メッセージをRTI130に対して送信要求を行った際に、不整合メッセージ検出・解消手段113がそのデータ交換メッセージの不整合を検出し、不整合を解消するためのデータ交換メッセージ送信処理を行う処理フローを示す。図16の処理フローは、フェデレート110aにおいて次の(A)および(B)の条件が双方とも成立している場合に実行される。
(A)フェデレート110aが時刻統制フェデレートである。
(B)フェデレート110aのフェデレート処理部111が、フェデレートRTIインタフェース部112に対して、有効時刻付きメッセージ送信(オブジェクトインスタンスのアトリビュート値およびインタラクションによるデータ交換メッセージ、およびオブジェクトインスタンス削除メッセージ)を要求し、その際にException(例外)が発生する。
(B)フェデレート110aのフェデレート処理部111が、フェデレートRTIインタフェース部112に対して、有効時刻付きメッセージ送信(オブジェクトインスタンスのアトリビュート値およびインタラクションによるデータ交換メッセージ、およびオブジェクトインスタンス削除メッセージ)を要求し、その際にException(例外)が発生する。
図16に示す不整合メッセージ検出・解消手段113の処理フローでは、次の(1)〜(5)の処理を行う。
(1)フェデレートRTIインタフェース部112に要求されたメッセージ送信要求および発生した例外を受信する(ステップST51)。
(2)発生した例外が「不正な有効時刻」である場合、(3)の処理を行う。発生した例外が「不正な有効時刻」でない場合、不整合メッセージによる例外ではないと判断し、処理フローを終了する(ステップST52)。
(3)フェデレートRTIインタフェース部112を介して、RTI130より自フェデレートの現在時刻およびLookahead値を取得する(ステップST53)。
(4)次の判定式(9)が真の場合、メッセージの有効時刻が、当該フェデレートが強制的に時刻進行された結果不整合を起こしているものと判定し、(5)の処理を行う。式(9)が偽の場合、フェデレート処理部111におけるプログラムミス等の別の理由によって例外が発生したものと判定し、処理フローを終了する(ステップST54)。
(現在時刻+Lookahead値)>メッセージの有効時刻 (式9)
(1)フェデレートRTIインタフェース部112に要求されたメッセージ送信要求および発生した例外を受信する(ステップST51)。
(2)発生した例外が「不正な有効時刻」である場合、(3)の処理を行う。発生した例外が「不正な有効時刻」でない場合、不整合メッセージによる例外ではないと判断し、処理フローを終了する(ステップST52)。
(3)フェデレートRTIインタフェース部112を介して、RTI130より自フェデレートの現在時刻およびLookahead値を取得する(ステップST53)。
(4)次の判定式(9)が真の場合、メッセージの有効時刻が、当該フェデレートが強制的に時刻進行された結果不整合を起こしているものと判定し、(5)の処理を行う。式(9)が偽の場合、フェデレート処理部111におけるプログラムミス等の別の理由によって例外が発生したものと判定し、処理フローを終了する(ステップST54)。
(現在時刻+Lookahead値)>メッセージの有効時刻 (式9)
(5)当該メッセージの不整合を解消し、メッセージを送信するために、次の処理を行う(ステップST55)。
・メッセージを受信したフェデレートが、このメッセージに元々付与されていた有効時刻と、不整合を起こしたことを知ることができるよう、フェデレートRTIインタフェース部112のメッセージ送信要求のオプション引数であるUserSuppliedTagに、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
・当該メッセージおよび警告情報を格納したUserSuppliedTagについて、有効時刻無しメッセージ送信要求をフェデレートRTIインタフェース部112に対して要求する。
・メッセージを受信したフェデレートが、このメッセージに元々付与されていた有効時刻と、不整合を起こしたことを知ることができるよう、フェデレートRTIインタフェース部112のメッセージ送信要求のオプション引数であるUserSuppliedTagに、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
・当該メッセージおよび警告情報を格納したUserSuppliedTagについて、有効時刻無しメッセージ送信要求をフェデレートRTIインタフェース部112に対して要求する。
ここで、上記の(5)の処理についてさらに説明する。
まず、警告情報を格納するUserSuppliedTagについては、HLA規約においてRTI130に対するメッセージ送信要求およびRTI130からのメッセージ受信通知に使われる機能(UAVおよびRAVなど)のオプションとして定義されたデータ領域である。このデータ領域は、例えばメッセージ送信を要求した際の実時刻を格納するために利用されているが、本実施の形態ではその利用方式を拡張し、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
まず、警告情報を格納するUserSuppliedTagについては、HLA規約においてRTI130に対するメッセージ送信要求およびRTI130からのメッセージ受信通知に使われる機能(UAVおよびRAVなど)のオプションとして定義されたデータ領域である。このデータ領域は、例えばメッセージ送信を要求した際の実時刻を格納するために利用されているが、本実施の形態ではその利用方式を拡張し、警告情報として不整合発生通知および元々付与されていた有効時刻を格納する。
次に、有効時刻無しメッセージ送信要求については、HLA規約では、有効時刻付きメッセージ送受信と有効時刻無しメッセージ送受信とを混在して使用することが可能である。有効時刻無しメッセージ送受信は、フェデレートの論理時間における現在時刻やLookahead値と無関係に、即時的に実行される。そのため、不整合メッセージを検出した際に、そのメッセージを有効時刻無しメッセージとして送信し直すことにより、送信側および受信側のフェデレートの時刻進行状況に関わらず、当該メッセージの送受信を行うことが可能となる。ただし、論理時刻に基づいて模擬処理を行っているフェデレートは、有効時刻無しメッセージを受信した場合、そのメッセージの内容をどの時刻において処理すれば良いか判断することができない。そこで本実施の形態では、UserSuppliedTagに警告情報として元々付与されていた有効時刻を格納し、受信側のフェデレートに通知することにより、受信したフェデレートがどの時刻にそのメッセージを処理すれば良いか判断するための基本データを与える。
以上説明したように、実施の形態3の分散シミュレーションシステムによれば、フェデレート強制時刻進行手段が強制的な時刻進行を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、不整合を起こす有効時刻付きメッセージ送信要求を検出し、不整合を解消するために有効時刻無しメッセージ送信に変更する不整合メッセージ検出・解消手段を備えたので、強制時刻進行制御によって生じる時刻付きデータ交換メッセージの不整合を解消することができる。
また、実施の形態3の分散シミュレーションシステムは、不整合メッセージ検出・解消手段は、有効時刻無しメッセージ送信に切り替えた際に、本来付与されていた有効時刻と、不整合が発生したことを示す不整合発生情報とを警告情報として、UserSuppliedTagに格納して送信要求するようにしたので、HLAのオプション機能を利用し、有効時刻無しメッセージを受信したフェデレートが、不整合解消のための基本データとして利用することができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
100 フェデレーション、110−1〜110−n,110a−1〜110a−n フェデレート、111 フェデレート処理部、112 フェデレートRTIインタフェース部、113 不整合メッセージ検出・解消手段、120 実時刻同期制御フェデレート、121 実時刻条件設定手段、122 時刻モニタ手段、123 フェデレート強制時刻進行手段、124 RTIインタフェース手段、130 RTI。
Claims (5)
- HLAに基づき、システム中のフェデレートが論理時刻および実時刻の同期を取りながら処理を進行する分散シミュレーションシステムであって、
RTIより各フェデレートの論理時刻を取得すると共に、前記実時刻を取得し、前記各フェデレートの前記論理時刻の進捗状況を監視することで前記実時刻の進行に対する前記論理時刻の遅れを検出し、当該論理時刻の遅れを検出したフェデレートを特定する時刻モニタ手段と、
前記論理時刻の遅れを検出したフェデレートを特定した場合に、当該フェデレートの論理時刻を強制的に進め、当該進めた時刻と前記特定されたフェデレートとを前記RTIに通知することで、当該RTIの時刻同期処理において、前記特定されたフェデレートが前記進めた時刻にTARによる時刻進行を要求した状態を引き起こすためのMOMインタラクションを送信するフェデレート強制時刻進行手段とを備えたことを特徴とする分散シミュレーションシステム。 - 強制的な時刻進行の制御対象となるフェデレートを時刻統制フェデレートのみとすることを特徴とする請求項1記載の分散シミュレーションシステム。
- 時刻統制フェデレートを対象として強制的な時刻進行の制御を行った後、時刻制約フェデレートを対象として強制的な時刻進行の制御を行うことを特徴とする請求項1記載の分散シミュレーションシステム。
- 前記フェデレート強制時刻進行手段が強制的な時刻進行の制御を行ったことにより、特定のフェデレートの有効時刻付きメッセージ送信において不整合が生じる場合、当該不整合を起こす有効時刻付きメッセージ送信要求を検出し、前記不整合を解消するために有効時刻無しメッセージ送信に変更する不整合メッセージ検出・解消手段を備えたことを特徴とする請求項1から請求項3のうちのいずれか1項記載の分散シミュレーションシステム。
- 前記不整合メッセージ検出・解消手段は、有効時刻無しメッセージ送信に切り替えた際に、本来付与されていた有効時刻と、不整合が発生したことを示す不整合発生情報とを警告情報として、UserSuppliedTagに格納して送信要求することを特徴とする請求項4記載の分散シミュレーションシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013060172A JP6091278B2 (ja) | 2013-03-22 | 2013-03-22 | 分散シミュレーションシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013060172A JP6091278B2 (ja) | 2013-03-22 | 2013-03-22 | 分散シミュレーションシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014186475A JP2014186475A (ja) | 2014-10-02 |
JP6091278B2 true JP6091278B2 (ja) | 2017-03-08 |
Family
ID=51834007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013060172A Expired - Fee Related JP6091278B2 (ja) | 2013-03-22 | 2013-03-22 | 分散シミュレーションシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6091278B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3471637B2 (ja) * | 1998-11-30 | 2003-12-02 | 三菱電機株式会社 | 並列分散シミュレーションシステム、シミュレーションマネージャおよび並列分散シミュレータ制御方法 |
US8463839B2 (en) * | 2000-03-28 | 2013-06-11 | Cybernet Systems Corporation | Distributed computing environment |
US20100003652A1 (en) * | 2006-11-09 | 2010-01-07 | Israel Aerospace Industries Ltd. | Mission training center instructor operator station apparatus and methods useful in conjunction therewith |
JP5159300B2 (ja) * | 2007-12-28 | 2013-03-06 | 三菱電機株式会社 | シミュレーション装置 |
-
2013
- 2013-03-22 JP JP2013060172A patent/JP6091278B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014186475A (ja) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019104713A1 (zh) | 一种机器学习方法、主节点、工作节点及系统 | |
EP2378718B1 (en) | Method, node and system for controlling version in distributed system | |
CN106776272B (zh) | 嵌入式系统实时性能测试方法 | |
JP2009518747A5 (ja) | ||
JP2019504533A5 (ja) | ||
CN103297456A (zh) | 一种分布式系统下共享资源的访问方法及分布式系统 | |
CN112632527B (zh) | 一种用于服务开放平台的api测试方法及系统 | |
CN111614708A (zh) | 一种基于区块链的交易系统 | |
Antonino et al. | A refinement based strategy for local deadlock analysis of networks of CSP processes | |
JP6091278B2 (ja) | 分散シミュレーションシステム | |
CN103914313B (zh) | 一种paxos实例更新方法、设备及系统 | |
CN111897635B (zh) | 一种基于时间触发的硬实时和软实时的任务调度方法 | |
Casimiro et al. | Membership-based manoeuvre negotiation in autonomous and safety-critical vehicular systems | |
David et al. | Schedulability of Herschel revisited using statistical model checking | |
CN103761106A (zh) | 流程的控制方法及流程引擎 | |
Liu | Real-time scheduling of logical processes for parallel discrete-event simulation | |
Ran et al. | Modeling and verifying the ttcan protocol using timed csp | |
Buse et al. | Accelerating the simulation of wireless communication protocols using asynchronous parallelism | |
CN117242462A (zh) | 用于改进人工智能(ai)系统中的ai模型的分布式训练的边缘设备、边缘服务器及其同步 | |
Fernandez et al. | Introduction to partial time composability for COTS multicores | |
CN103916426B (zh) | 一种paxos实例更新方法、设备及系统 | |
KR101354007B1 (ko) | 시뮬레이션 시간을 기반으로 시뮬레이션 시스템과 테스트 시스템의 시간 진행을 동기화하는 시스템 간 연동 구성 및 시뮬레이션 모델 테스트 방법 | |
Mubeen et al. | Tracing event chains for holistic response-time analysis of component-based distributed real-time systems | |
Nguyen et al. | A framework for distributed testing of timed composite systems | |
JP2010244459A (ja) | シミュレーション実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151210 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170207 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6091278 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |