(57)【要約】【課題】分散シミュレーションシステムの規模が拡大した場合であっても、シミュレータ間の通信時間の増大を抑制することができる技術を提供する。【解決手段】本発明に係る分散シミュレーションシステムにおいて、第２スレーブ装置は第１スレーブ装置によるシミュレーション結果を用いてシミュレーションを実施する。第１スレーブ装置は、シミュレーション結果が前回送出したものとは異なる場合はそのシミュレーション結果を送出し、同一である場合は送出しない。【選択図】図１
2018025840.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のスレーブ装置がそれぞれシミュレーションを実施することによりシミュレーションを分散的に実施する分散シミュレーションシステムであって、
シミュレーションを実施する第１および第２スレーブ装置、
前記第１および第２スレーブ装置に対してシミュレーションを開始するよう指示するマスタ装置、
を有し、
前記第１スレーブ装置は、第１シミュレーションを実施する第１シミュレータ、前記第１シミュレーションの結果を前記ネットワークに対して送出する第１通信部、を備え、
前記第２スレーブ装置は、前記第１スレーブ装置が実施した前記第１シミュレーションの結果を用いて第２シミュレーションを実施する第２シミュレータを備え、
前記第１通信部は、前記第１シミュレータによる前記第１シミュレーションの結果が前記ネットワークに対して前回送出したものとは異なる場合は前記第１シミュレーションの結果を前記ネットワークに対して送出し、同一である場合は送出しない
ことを特徴とする分散シミュレーションシステム。
【請求項２】
前記第２スレーブ装置は、前記第１通信部が送出した前記第１シミュレーションの結果を受け取るように構成されており、
前記第２スレーブ装置はさらに、前記受け取った前記第１シミュレーションの結果を格納する第１受信バッファ、前記受け取った前記第１シミュレーションの結果の前回値を格納する前回値バッファ、を備え、
前記第２シミュレータは、前記第１受信バッファが格納している前記第１シミュレーションの結果を前記前回値バッファに移動するとともに、その移動した前記第１シミュレーションの結果を用いて前記第２シミュレーションを実施する
ことを特徴とする請求項１記載の分散シミュレーションシステム。
【請求項３】
前記第２シミュレータは、前記第１受信バッファが前記第１シミュレーションの結果を格納していない場合は、前記前回値バッファが格納している前記第１シミュレーションの結果の前回値を用いて、前記第２シミュレーションを実施する
ことを特徴とする請求項２記載の分散シミュレーションシステム。
【請求項４】
前記第２スレーブ装置はさらに、前記第１スレーブ装置から受け取った前記第１シミュレーションの結果を格納する第２受信バッファを備え、
前記マスタ装置は、前記指示の通番を前記第１スレーブ装置に対して通知するように構成されており、
前記第１通信部は、前記第１シミュレーションの結果と併せて前記通番を送出し、
前記第１および第２受信バッファは、前記第１シミュレーションの結果と併せて前記通番を格納し、
前記第２シミュレータは、前記第１受信バッファと前記第２受信バッファがともに前記第１シミュレーションの結果を格納している場合は、前記第１および第２受信バッファが格納している前記第１シミュレーションの結果のうち前記通番がより前であるものを用いて、前記第２シミュレーションを実施する
ことを特徴とする請求項２記載の分散シミュレーションシステム。
【請求項５】
前記マスタ装置は、前記指示の通番を前記第２スレーブ装置に対して通知するように構成されており、
前記第１通信部は、前記第１シミュレーションの結果と併せて前記通番を送出し、
前記第１受信バッファは、前記第１シミュレーションの結果と併せて前記通番を格納し、
前記第２シミュレータは、前記第１受信バッファが前記第１シミュレーションの結果を格納している場合であっても、前記第１受信バッファが格納している前記通番が前記マスタ装置から通知を受けた前記通番と整合しない場合は、前記前回値バッファが格納している前記第１シミュレーションの前回値を用いて、前記第２シミュレーションを実施する
ことを特徴とする請求項２記載の分散シミュレーションシステム。
【請求項６】
前記第１通信部は、前記第２シミュレータが前記第２シミュレーションを実行中であるか否かによらず、前記第１シミュレータが前記第１シミュレーションを完了すると前記第１シミュレーションの結果を前記第２スレーブ装置に対して送信する
ことを特徴とする請求項１記載の分散シミュレーションシステム。
【請求項７】
ネットワークを介して接続された複数のスレーブ装置がそれぞれシミュレーションを実施することによりシミュレーションを分散的に実施する分散シミュレーションシステムを用いて分散シミュレーションを実施する分散シミュレーション方法であって、前記分散シミュレーションシステムは、
シミュレーションを実施する第１および第２スレーブ装置、
前記第１および第２スレーブ装置に対してシミュレーションを開始するよう指示するマスタ装置、
を有し、
前記分散シミュレーション方法は、
前記第１スレーブ装置が、第１シミュレーションを実施する第１シミュレーションステップ、
前記第１スレーブ装置が、前記第１シミュレーションの結果を前記ネットワークに対して送出する第１通信ステップ、
前記第２スレーブ装置が、前記第１スレーブ装置が実施した前記第１シミュレーションの結果を用いて第２シミュレーションを実施する第２シミュレーションステップ、
を有し、
前記第１通信ステップにおいて、前記第１スレーブ装置は、前記第１シミュレーションステップにおける前記第１シミュレーションの結果が前記ネットワークに対して前回送出したものとは異なる場合は前記第１シミュレーションの結果を前記ネットワークに対して送出し、同一である場合は送出しない
ことを特徴とする分散シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散シミュレーションに関するものである。
【背景技術】
【０００２】
近年、車両制御の高機能化・複雑化にともない、車両が搭載するＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）の数が増加し、複数のＥＣＵが連動して車両システムを制御するようになっている。高い安全性・信頼性を確保するためには、自動車の電子機能安全規格（ＩＳＯ２６２６２）、ＦＴＡ（故障の木解析）、ＦＭＥＡ（故障モード影響解析）などの知見や手法を活かしていく必要がある。また自動車開発においては、期間の短縮化・試作レス化の動きが加速しており、増加するソフトをいかに短期・効率的に開発し、品質を確保していくかが重要な課題となっている。 
【０００３】
上記課題の解決策の１つとして、仮想検証環境を用いた検証がある。仮想検証環境を用いることにより、様々な条件でテストを実施することが可能になり、テストの自動実行もし易くなる。ただし仮想検証環境は、１つのシミュレータがカバーすることができる検証範囲が限られている。複数のシミュレータを協調させることにより、広範囲な検証を同時に、かつ、連続的に解析することができる。この場合は、計算処理能力、記憶容量などの計算機リソースを複数の計算機に分散することになる。
【０００４】
他方で、シミュレーションを複数の計算機に分散して実施することにより顕在化する課題もある。例えば、各計算機に分散したシミュレータ間で同期をとり、シミュレーション結果を中継するためには、ネットワークを経由して各シミュレータが通信する必要があるので、そのための通信時間が必要である。検証規模が大きい場合や、高精度なシミュレーションが必要な場合は、シミュレーション間のコネクション数の増加と通信回数が増加する。これによりシミュレーションの実行時間が延びる可能性がある。また、シミュレータ間で複数の通信経路が存在する場合や、計算機が高負荷状態になった場合、通信順序が入れ替わることがある。このとき分散シミュレーションシステム全体として、通信順序を保障することが必要になる。
【０００５】
下記特許文献１は、分散シミュレーションに関する技術を記載している。同文献は、『再現実行時でも通常実行時と同様に、各計算機で送信用のデータを生成して、相手先の計算機にデータを送信しなければならず、他の計算機からメッセージが到着するまで計算機におけるシミュレーションの実行が待たされることになる。』ことを課題とし、『再現モード時にシミュレーションマネージャ５からシミュレーションの実行時刻を示す論理時刻を受信すると、シミュレーション実行情報管理手段９からメッセージの受信時刻が当該実行時刻と一致するメッセージを取得して、そのメッセージをシミュレータ本体７に与える。』という手法を開示している（要約参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２６８００５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
分散シミュレーションシステムにおいては、分散配置されるシミュレータの数が増加し、あるいはシミュレータが配置されるエリアが拡大することにともない、シミュレータ間でシミュレーション結果を送受信するための通信時間が増大する。これにより、シミュレーション実行速度が低下する。上記特許文献１のような従来の分散シミュレーションシステムにおいては、このような分散規模の拡大にともなうシミュレーション時間の増大について充分に対処されていない。
【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、分散シミュレーションシステムの規模が拡大した場合であっても、シミュレータ間の通信時間の増大を抑制することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る分散シミュレーションシステムにおいて、第２スレーブ装置は第１スレーブ装置によるシミュレーション結果を用いてシミュレーションを実施する。第１スレーブ装置は、シミュレーション結果が前回送出したものとは異なる場合はそのシミュレーション結果を送出し、同一である場合は送出しない。
【発明の効果】
【００１０】
本発明に係る分散シミュレーションシステムによれば、シミュレーション結果をシミュレータ間で転送する回数を軽減することができるので、シミュレーション実行時間が増大することを抑制できる。
【図面の簡単な説明】
【００１１】
【図１】実施形態１に係る分散シミュレーションシステム１０００の構成図である。
【図２】分散シミュレーションシステム１０００の基本動作シーケンスである。
【図３】クロックマスタ装置１００の動作を説明するフローチャートである。
【図４】分散シミュレーションシステム１０００の動作を説明するタイムチャートである。
【図５】分散シミュレーションシステム１０００の動作を説明するタイムチャートである。
【図６】実施形態２に係る分散シミュレーションシステム１０００の構成図である。
【図７】分散シミュレーションシステム１０００の動作を説明するタイムチャートである。
【図８】分散シミュレーションシステム１０００の動作を説明するタイムチャートである。
【発明を実施するための形態】
【００１２】
＜実施の形態１＞
図１は、本発明の実施形態１に係る分散シミュレーションシステム１０００の構成図である。分散シミュレーションシステム１０００は、クロックマスタ装置１００、第１スレーブ装置２００、第２スレーブ装置３００を有する。３台目以降のスレーブ装置（図１における第Ｎスレーブ装置など）が存在してもよいが、以下では記載の便宜上、第１スレーブ装置２００と第２スレーブ装置３００が協調してシミュレーションを実施することを前提とする。これら装置はネットワーク５００を介して接続されている。
【００１３】
クロックマスタ装置１００は、各スレーブ装置に対してシミュレーションを実施するよう指示する装置である。クロックマスタ装置１００は、中継部１１０、協調制御部１２０、通信部１３０を備える。中継部１１０は、各スレーブ装置が実施したシミュレーション結果を他のスレーブ装置に対して中継する。協調制御部１２０は、分散シミュレーションシステム１０００内の各装置を同期させる。通信部１３０は、ネットワーク５００を介して各装置と通信する。
【００１４】
第１スレーブ装置２００は、クロックマスタ装置１００からの指示にしたがってシミュレーションを実施する装置である。第１スレーブ装置２００は、通信部２１０、送信バッファ制御部２２０、受信バッファ制御部２３０、シミュレータ制御部２４０、シミュレータ２５０を備える。
【００１５】
通信部２１０は、ネットワーク５００を介して各装置と通信する。送信バッファ制御部２２０は、送信判定部２２１、シーケンス番号２２２、送信バッファ２２３を備える。送信バッファ制御部２２０は、シミュレーション結果とシーケンス番号２２２を送信する。受信バッファ制御部２３０は、書込制御部２３１、受信バッファ２３２、読出制御部２３３、前回値バッファ２３４を備える。受信バッファ制御部２３０は、シミュレーション結果とシーケンス番号２２２を格納する。シミュレータ制御部２４０は、クロックマスタ装置１００からの指示にしたがってシミュレータ２５０を制御する。シミュレータ２５０は、シミュレータ制御部２４０の指示にしたがって検証対象モデルのシミュレーションを実施する。
【００１６】
送信判定部２２１は、シミュレータ２５０によるシミュレーション結果を送信するか否かを判定する。シーケンス番号２２２は、クロックマスタ装置１００から通知される、タイムステップ処理の通番である。送信バッファ２２３は、送信すべきデータを一時的に蓄積する。
【００１７】
書込制御部２３１と読出制御部２３３は、受信バッファ２３２と前回値バッファ２３４に対するデータ書込／データ読出を実施する。各バッファが格納するデータについては後述する。
【００１８】
第２スレーブ装置３００は、第１スレーブ装置２００と同様の構成を備える。両装置の構成要素を区別するため、第１スレーブ装置２００の構成要素については２００番台の符号を付し、第２スレーブ装置３００の構成要素については３００番台の符号を付した。
【００１９】
図２は、分散シミュレーションシステム１０００の基本動作シーケンスである。クロックマスタ装置１００は、所定の初期化処理などを実施した後、各スレーブ装置に対してシミュレーションを実施するよう指示する。各スレーブ装置は、シミュレーション結果をクロックマスタ装置１００に対して送信する。クロックマスタ装置１００は、そのシミュレーション結果を用いてシミュレーションを実施するスレーブ装置に対して、そのシミュレーション結果を中継する。これにより各スレーブ装置は互いに同期しながら分散シミュレーションを進めることができる。
【００２０】
クロックマスタ装置１００は、各スレーブ装置に対してシミュレーションを実施するよう指示してから、各スレーブ装置よりシミュレーション結果を受け取るまでの一連のシーケンスを、１つの処理単位とする。この処理単位のことを本実施形態１においてタイムステップ処理と呼ぶ。タイムステップ処理はシーケンス番号を有する。クロックマスタ装置１００は、各スレーブ装置に対してシミュレーション開始を指示するとき、各タイムステップ処理のシーケンス番号を併せて通知する。各スレーブ装置は、そのシーケンス番号を送信バッファ制御部内に格納する。
【００２１】
図３は、クロックマスタ装置１００の動作を説明するフローチャートである。以下図３の各ステップについて説明する。
【００２２】
（図３：ステップＳ３０１）
クロックマスタ装置１００は、各スレーブ装置の構成を認識する。例えばクロックマスタ装置１００から各スレーブ装置に対して応答要求を発信し、各スレーブ装置がその応答要求に対して返信することにより、各スレーブ装置の台数などの構成を認識することができる。
【００２３】
（図３：ステップＳ３０２）
クロックマスタ装置１００は、各スレーブ装置に対して初期化を指示する。各スレーブ装置はその指示にしたがって初期化を実施する。
【００２４】
（図３：ステップＳ３０３）
クロックマスタ装置１００は、各スレーブ装置に対してシミュレーションを実行するよう指示する。このとき、シミュレーションの実行時間を併せて指示してもよい。各スレーブ装置はシミュレーション結果をクロックマスタ装置１００に対して送信し、クロックマスタ装置１００はそのシミュレーション結果を用いるスレーブ装置に対してそのシミュレーション結果を中継する。
【００２５】
（図３：ステップＳ３０４〜Ｓ３０５）
クロックマスタ装置１００は、シミュレーションが終了したか否かを判定し、終了していなければ次のシーケンス番号のタイムステップ処理を繰り返す（Ｓ３０４）。シミュレーションが終了した場合は、終了処理を実施する（Ｓ３０５）。
【００２６】
図４は、分散シミュレーションシステム１０００の動作を説明するタイムチャートである。ここではタイムステップ処理Ｎ〜Ｎ＋３までを示す。実線矢印はクロックマスタ装置１００からの指示コマンドを表し、破線矢印はシミュレーション結果とシーケンス番号の中継を示す。各バッファはシミュレーション結果Ｄ０〜Ｄ３を格納する。添え字はシミュレーション結果を識別するための番号である。各バッファはシミュレーション結果Ｄ０〜Ｄ３と併せて、そのシミュレーション結果がクロックマスタ装置１００上のいずれのシーケンス番号（タイムステップ処理の通番）に対応するものであるかを示す番号（Ｎ）〜（Ｎ＋３）を格納する。
【００２７】
クロックマスタ装置１００は、第１スレーブ装置２００と第２スレーブ装置３００に対してそれぞれシミュレーションを開始するよう指示する。第１スレーブ装置２００と第２スレーブ装置３００はそれぞれ、シミュレーションが完了したらクロックマスタ装置１００に対してその旨を報告し、必要に応じてシミュレーション結果を中継する。
【００２８】
第２スレーブ装置３００は、第１スレーブ装置２００によるシミュレーション結果を用いて自身のシミュレーションを実施すると仮定する。この場合、第１スレーブ装置２００はシミュレーション結果をクロックマスタ装置１００へ送信し、クロックマスタ装置１００はそのシミュレーション結果を第２スレーブ装置３００へ中継する。シミュレーション結果間の関係については、例えばクロックマスタ装置１００が各スレーブ装置に対してシミュレーション開始を指示するときあらかじめクロックマスタ装置１００が把握しておけばよい。
【００２９】
第１スレーブ装置２００は、各タイムステップ処理において得られたシミュレーション結果が前回のタイムステップ処理とは異なる場合のみ、そのシミュレーション結果とシーケンス番号をクロックマスタ装置１００に対して送信する。図４に示す例においては、タイムステップ処理Ｎ＋１のシミュレーション結果はＤ１であり、タイムステップ処理Ｎ＋２のシミュレーション結果もＤ１であるので、タイムステップ処理Ｎ＋２においてはシミュレーション結果Ｄ１とシーケンス番号Ｎ＋２を送信しない。したがってクロックマスタ装置１００も、タイムステップ処理Ｎ＋２においてはシミュレーション結果Ｄ１とシーケンス番号Ｎ＋２を中継しない。
【００３０】
第２スレーブ装置３００は、クロックマスタ装置１００から受け取ったシミュレーション結果とシーケンス番号を受信バッファ３３２に格納する。シミュレータ３５０は、受信バッファ３３２からシミュレーション結果とシーケンス番号を読み出し、これらを前回値バッファ３３４へ移した上で、そのシミュレーション結果を用いて自身のシミュレーションを実施する。
【００３１】
シミュレータ３５０は、受信バッファ３３２がシミュレーション結果を格納していない場合は、前回値バッファ３３４からシミュレーション結果を読み出し、これを用いて自身のシミュレーションを実施する。図４に示す例においては、タイムステップ処理Ｎ＋３の時点で受信バッファ３３２はシミュレーション結果を格納していないので、前回値バッファ３３４が格納しているシミュレーション結果Ｄ１を用いることになる。
【００３２】
図５は、分散シミュレーションシステム１０００の動作を説明するタイムチャートである。ここでは図４とは異なり、シミュレータ３５０によるシミュレーション実行時間がシミュレータ２５０による実行時間よりも大幅に長いものと仮定する。
【００３３】
第１スレーブ装置２００は、シミュレータ３５０がシミュレーションを実行中であるか否かによらず、シミュレータ２５０が自身のシミュレーションを完了するとそのシミュレーション結果をクロックマスタ装置１００へ送信する。クロックマスタ装置１００も同様に、シミュレータ３５０がシミュレーションを実行中であるか否かによらず、そのシミュレーション結果を第２スレーブ装置３００へ中継する。
【００３４】
第２スレーブ装置３００は受信バッファ３３２を備えているので、シミュレータ３５０がシミュレーションを実行中であってもそのシミュレーション結果を保存しておいて後に用いることができる。したがって、第１スレーブ装置２００から第２スレーブ装置３００へシミュレーション結果を中継することと並行して第２スレーブ装置３００は自身のシミュレーションを実施できるので、分散シミュレーションシステム１０００全体としてのシミュレーション実行時間を短縮することができる。
【００３５】
＜実施の形態１：まとめ＞
本実施形態１に係る分散シミュレーションシステム１０００において、第１スレーブ装置２００はシミュレーション結果が前回と異なる場合のみそのシミュレーション結果を送出するので、シミュレーション結果を第２スレーブ装置３００へ中継する回数を削減することができる。これにより、シミュレーション結果を送受信することにともなう通信時間を削減し、シミュレーション実行時間を抑制することができる。
【００３６】
＜実施の形態２＞
図６は、本発明の実施形態２に係る分散シミュレーションシステム１０００の構成図である。本実施形態２において、各装置はワイドエリアネットワーク（ＷＡＮ）６００によって接続されている。さらに後述するように、各スレーブ装置の受信バッファはシミュレーション結果を２つ格納することができる。その他構成は実施形態１と同様であるので、以下では受信バッファがシミュレーション結果を２つ格納することに関する動作について主に説明する。
【００３７】
図７は、分散シミュレーションシステム１０００の動作を説明するタイムチャートである。シミュレータ３５０は、受信バッファ３３２からシミュレーション結果を読み出すときこれを前回値バッファ３３４へ移すので、これにより受信バッファ３３２は空くことになる。しかし図７のタイムステップ処理Ｎ＋２に示すように、クロックマスタ装置１００から第２スレーブ装置３００に対するシミュレーション開始指示が遅延した場合、受信バッファ３３２が空く前にクロックマスタ装置１００から次のシミュレーション結果が到着する。本実施形態２においては、このような場合であってもシミュレーション結果を保存することができるように、受信バッファ３３２がシミュレーション結果を格納するための記憶領域を２つ設けることとした。
【００３８】
シミュレータ３５０は、受信バッファ３３２が２つのシミュレーション結果を格納している場合は、シーケンス番号がより前のものを用いて、自身のシミュレーションを実施する。図７のタイムステップ処理Ｎ＋２においては、シーケンス番号Ｎ＋１のシミュレーション結果Ｄ１を用いることになる。
【００３９】
シミュレータ３５０が受信バッファ３３２からシミュレーション結果を読み出す前に次のシミュレーション結果が到着する原因としては、例えば通信遅延や第２スレーブ装置３００の処理負荷過大などが考えられる。いずれの場合であっても、本実施形態２において第２スレーブ装置３００は第１スレーブ装置２００によるシミュレーション結果を保存することができる。
【００４０】
図８は、分散シミュレーションシステム１０００の動作を説明するタイムチャートである。図７においては、受信バッファ３３２がシミュレーション結果を２つ格納しているときシーケンス番号がより前のものを採用することを説明した。受信バッファ３３２がシミュレーション結果を１つのみ格納している場合であっても、そのシーケンス番号が本来意図しているものとは異なる場合は、前回値バッファ３３４が格納しているシミュレーション結果を用いればよい。図８を用いてその例を説明する。
【００４１】
タイムステップ処理Ｎとタイムステップ処理Ｎ＋１において、シミュレータ２５０によるシミュレーション結果Ｄ０は変化していない。したがってタイムステップ処理Ｎ＋１において、クロックマスタ装置１００はシミュレーション結果Ｄ０を中継しない（第１スレーブ装置２００がシミュレーション結果Ｄ０を送信しないようにしてもよい）。その後、タイムステップ処理Ｎ＋２において、クロックマスタ装置１００は、第２スレーブ装置３００に対してシーケンス番号Ｎ＋２と併せてシミュレーション開始を指示する。このときクロックマスタ装置１００から第２スレーブ装置３００に対するシミュレーション開始指示の到着が遅延し、次のシミュレーション結果Ｄ２が第２スレーブ装置３００に対して先に到着したと仮定する。
【００４２】
タイムステップ処理Ｎ＋２において、シミュレータ３５０は受信バッファ３３２からシミュレーション結果Ｄ２とシーケンス番号Ｎ＋２を取得する。タイムステップ処理Ｎ＋２において、本来であればシミュレータ３５０はシーケンス番号Ｎ＋１に対応するシミュレーション結果を用いて自身のシミュレーションを実施することを想定している。しかしシミュレーション結果Ｄ２が先に到着したことにより、受信バッファ３３２は１つ先のシーケンス番号Ｎ＋２に対応するシミュレーション結果Ｄ２を格納しており、本来意図しているシーケンス番号と整合していない。この場合シミュレータ３５０は、受信バッファ３３２がシミュレーション結果を格納している場合であってもこれを用いず、前回値バッファ３３４からシミュレーション結果を取得してこれを採用する。
【００４３】
＜実施の形態２：まとめ＞
本実施形態２に係る分散シミュレーションシステム１０００において、受信バッファ３３２は、連続する２つのシーケンス番号に対応する２つのシミュレーション結果を格納する。これにより、第２スレーブ装置３００がシミュレーションを開始することが遅れることにより受信バッファ３３２が空かない場合であっても、後続のシミュレーション結果を喪失することなく、シミュレーション結果間の整合性を保持することができる。
【００４４】
本実施形態２に係る分散シミュレーションシステム１０００において、シミュレータ３５０は、受信バッファ３３２が格納しているシミュレーション結果がクロックマスタ装置１００から通知されたシーケンス番号と整合していない場合は、前回値バッファ３３４が格納しているシミュレーション結果を採用する。これにより、受信バッファ３３２がシミュレーション結果を格納しており、かつそのシーケンス番号が本来意図しているものとは異なる場合であっても、シミュレーション結果間の整合性を保持することができる。
【００４５】
＜本発明の変形例について＞
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
【００４６】
以上の実施形態においては、各スレーブ装置はクロックマスタ装置１００を介してシミュレーション結果を共有しているが、スレーブ装置間で直接的にシミュレーション結果を送受信してもよい。
【００４７】
以上の実施形態においては、シーケンス番号を用いてシミュレーション結果の順序を規定しているが、シーケンス番号に代えて例えば実行時刻などの情報を用いてシミュレーション結果の順序を規定してもよい。その他シミュレーション結果の順序を表すことができる情報を用いてもよい。
【００４８】
以上の実施形態においては、シーケンス番号を受信バッファ３３２に格納しているが、例えば格納アドレスなどの代替情報によってシーケンス番号と同等の情報を表すことができるのであれば、必ずしもシーケンス番号そのものを受信バッファ３３２内に格納する必要はない。
【００４９】
上記各構成、機能、処理部、処理手段等は、それらの一部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【符号の説明】
【００５０】
１００：クロックマスタ装置
１１０：中継部
１２０：協調制御部
１３０：通信部
２００：第１スレーブ装置
２１０：通信部
２２０：送信バッファ制御部
２２１：送信判定部
２２２：シーケンス番号
２２３：送信バッファ
２３０：受信バッファ制御部
２３１：書込制御部
２３２：受信バッファ
２３３：読出制御部
２３４：前回値バッファ
２４０：シミュレータ制御部
２５０：シミュレータ
３００：第２スレーブ装置
３１０：通信部
３２０：送信バッファ制御部
３２１：送信判定部
３２２：シーケンス番号
３２３：送信バッファ
３３０：受信バッファ制御部
３３１：書込制御部
３３２：受信バッファ
３３３：読出制御部
３３４：前回値バッファ
３４０：シミュレータ制御部
３５０：シミュレータ
４００：第Ｎスレーブ装置
５００：ネットワーク
６００：ワイドエリアネットワーク
【図１】
2018025840.tif 000003
【図２】
2018025840.tif 000004
【図３】
2018025840.tif 000005
【図４】
2018025840.tif 000006
【図５】
2018025840.tif 000007
【図６】
2018025840.tif 000008
【図７】
2018025840.tif 000009
【図８】
2018025840.tif 000010