(57)【特許請求の範囲】
【請求項１】
シミュレーションのためのモデル計算を実施する複数のシミュレーション演算部と、前記シミュレーション演算部間における時間的な同期を制御する同期整合制御部と、を備え、前記シミュレーション演算部ごとによる分散処理の結果を統合してシミュレーション結果を得る統合シミュレーションシステムであって、
前記シミュレーション演算部は、前記モデル計算におけるシミュレーション時刻およびシミュレーションサイクルを独自に制御し、
前記同期整合制御部は、前記モデル計算のための情報交換の対象となる前記シミュレーション演算部同士について、情報元である前記シミュレーション演算部の前記シミュレーション時刻と、情報の送信先となる前記シミュレーション演算部の前記シミュレーション時刻とを比較した結果、演算負荷が高いと判断した前記シミュレーション演算部に対し、前記シミュレーションサイクルを長くする旨の指令を含むメッセージを通知することを特徴とする統合シミュレーションシステム。
【請求項２】
前記同期整合制御部は、前記シミュレーション時刻が他のシミュレーション演算部でのシミュレーション時刻よりも遅れているシミュレーション演算部があったときに、該シミュレーション演算部での演算負荷が他のシミュレーション演算部での演算負荷よりも高いと判断することを特徴とする請求項１に記載の統合シミュレーションシステム。
【請求項３】
前記同期整合制御部は、前記シミュレーションサイクルを長くする指令を送信した後に前記複数のシミュレーション演算部それぞれのシミュレーション時刻の進み具合に差がなくなったと判断されたときは、前記シミュレーションサイクルを長くする指令を含んだメッセージを通知したシミュレーション演算部に、シミュレーションサイクルを短くする指令を含んだメッセージを通知することを特徴とする請求項１または２に記載の統合シミュレーションシステム。
【請求項４】
前記同期整合制御部がシミュレーション演算部に通知するメッセージは、送信先のシミュレーション演算部でのシミュレーションサイクルを指定する情報を含み、該情報が前記指令として機能することを特徴とする請求項１〜３のいずれか１つに記載の統合シミュレーションシステム。
【請求項５】
前記同期整合制御部がシミュレーション演算部に通知するメッセージは、該メッセージの通知先のシミュレーション演算部と他のシミュレーション演算部とで共有されるデータを含まないことを特徴とする請求項１〜４のいずれか１つに記載の統合シミュレーションシステム。
【請求項６】
前記同期整合制御部から前記メッセージの通知を受けたシミュレーション演算部は、前記メッセージに含まれているシミュレーションサイクルを指定する情報のみを読み出し、該情報に沿ってシミュレーションサイクルを変更することを特徴とする請求項５に記載の統合シミュレーションシステム。
【請求項７】
前記同期整合制御部は、シミュレーション演算部毎に該シミュレーション演算部から前記メッセージを受信したときの実時刻を記録して、前記シミュレーション演算部毎に次のメッセージの受信実時刻を予測し、該予測結果と前記複数のシミュレーション演算部それぞれでのシミュレーション時刻の監視結果とを用いて各シミュレーション演算部での演算負荷を判断することを特徴とする請求項１〜６のいずれか１つに記載の統合シミュレーションシステム。
【請求項８】
前記同期整合制御部は、シミュレーション演算部毎に該シミュレーション演算部が次のメッセージを送信してくるシミュレーション時刻を予測し、該シミュレーション時刻の予測結果と、前記受信実時刻の予測結果と、前記複数のシミュレーション演算部それぞれでのシミュレーション時刻の監視結果とを用いて各シミュレーション演算部での演算負荷を判断することを特徴とする請求項７に記載の統合シミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のシミュレーション演算部による分散処理の結果を統合してシミュレーションを行う統合シミュレーションシステムに関するものである。
【背景技術】
【０００２】
複数のシミュレーション演算部による分散処理の結果を統合してシミュレーションを行う統合シミュレーションシステムでは、時間的な同期をとりながら各シミュレーション演算部で演算処理が行われる。シミュレーション演算部間での時間的な同期をとるために、シミュレーション演算部の他に管理部が設けられる。自己が分担する１サイクル分の処理を完了したシミュレーション演算部は、シミュレーション時刻を進行させる要求を含んだメッセージを管理部に送り、当該メッセージを受信した管理部は、全てのシミュレーション演算部から上記の要求を受信した後に、各シミュレーション演算部にシミュレーション時刻の進行許諾を出力する。これにより、シミュレーション演算部間での時間的な同期がとられる。
【０００３】
ただし、シミュレーション演算部の数が多い統合シミュレーションシステムでは、各シミュレーション演算部と管理部とのメッセージの送受信に比較的長時間を要することとなるので、システム全体でのシミュレーション処理の進行が遅くなり易い。シミュレーション演算部の数が多くてもシステム全体での処理効率を高めることができるように、例えば特許文献１に記載された統合シミュレーションシステムでは、シミュレーションを実行するうえで情報交換が必要なシミュレーション演算部（シミュレータ）間でのみ時間的な同期をとるようにして、同期をとるための通信量を低減させている。
【０００４】
【特許文献１】特開２００４−３８７８５号公報（第６図）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、統合シミュレーションシステムを構成する各シミュレーション演算部の処理能力や処理量は必ずしも同じではない。従来の統合シミュレーションシステムでは、たとえ他のシミュレーション演算部よりも演算処理を早く完了したシミュレーション演算部があったとしても、該シミュレーション演算部と同期をとるべきシミュレーション演算部のうちで演算処理が最も遅れているシミュレーション演算部が演算処理を完了するまでは次の演算処理に移行できないため、システム全体の計算時間を効率よく短縮させることが困難である。
【０００６】
この発明は上記の事情に鑑みてなされたものであり、システム全体の計算時間を効率よく短縮させ易い統合シミュレーションシステムを得ることを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するこの発明の統合シミュレーションシステムは、シミュレーションのためのモデル計算を実施する複数のシミュレーション演算部と、シミュレーション演算部間における時間的な同期を制御する同期整合制御部と、を備え、シミュレーション演算部ごとによる分散処理の結果を統合してシミュレーション結果を得る統合シミュレーションシステムであって、シミュレーション演算部は、モデル計算におけるシミュレーション時刻およびシミュレーションサイクルを独自に制御し、同期整合制御部は、モデル計算のための情報交換の対象となるシミュレーション演算部同士について、情報元であるシミュレーション演算部のシミュレーション時刻と、情報の送信先となるシミュレーション演算部のシミュレーション時刻とを比較した結果、演算負荷が高いと判断したシミュレーション演算部に対し、シミュレーションサイクルを長くする旨の指令を含むメッセージを通知することを特徴とするものである。
【発明の効果】
【０００８】
この発明の統合シミュレーションシステムでは、演算負荷が高いシミュレーション演算部があったときに、該シミュレーション演算部のシミュレーションサイクルを長くするので、当該シミュレーション演算部でのモデル計算回数が減ってシミュレーション進行速度が上がる。その結果として、演算負荷が高いシミュレーション演算部のシミュレーションサイクルを長くしない場合に比べてシミュレーション精度は低下するものの、システム全体での計算時間を加速させることができる。したがって、この発明によれば、システム全体の計算時間を効率よく短縮させ易い統合シミュレーションシステムが得られる。
【発明を実施するための最良の形態】
【０００９】
以下、この発明の統合シミュレーションシステムの実施の形態について、図面を参照して詳細に説明する。なお、この発明は以下に説明する実施の形態に限定されるものではない。
【００１０】
実施の形態１．
図１は、統合シミュレーションシステムの一例を概略的に示すブロック図である。同図に示す統合シミュレーションシステム５０は、第１から第Ｎまでの計Ｎ個のシミュレーション演算部１０ａ〜１０ｎと、シミュレーション演算部間での時間的な同期を制御する同期整合制御部３０とを備えたタイムドリブン型の統合シミュレーションシステムである。
【００１１】
この統合シミュレーションシステム５０では、シミュレーションで用いられるパラメータデータ等の情報を含んだメッセージをシミュレーション演算部間で授受しながら、各シミュレーション演算部１０ａ〜１０ｎがそれぞれ独自のシミュレーション時刻、シミュレーションサイクルの下に動作して分散処理を進める。そして、各シミュレーション演算部１０ａ〜１０ｎによる分散処理結果を最終的に統合してシミュレーション結果を得る。
【００１２】
個々のシミュレーション演算部１０ａ〜１０ｎはモデル計算部１、時刻制御部３、パラメータ生成部５、データ出力部７、データ入力部９、および図示を省略した記憶部を有しており、記憶部に予め格納されたシナリオに従って動作して上記の分散処理を進める。このとき、モデル計算部１は、他のシミュレーション演算部から通知されるメッセージ中のパラメータデータを利用しながら演算処理を行う。
【００１３】
また、時刻制御部３はモデル計算部１でのシミュレーション時刻およびシミュレーションサイクルを制御し、パラメータ生成部５は、上記のシナリオに従った所定のシミュレーション演算部に宛てて通知すべきパラメータデータをモデル計算部１の演算結果の中から抽出する。
【００１４】
データ出力部７は、モデル計算部１でのシミュレーション時刻およびシミュレーションサイクルそれぞれの情報を時刻制御部３から受け取ると共に上記のパラメータデータをパラメータ生成部５から受け取って、これらを含んだメッセージを所定のシミュレーション演算部宛に作成して発信する。ただし、データ出力部７から発信されたメッセージは、一旦、同期整合制御部３０により受信され、その後、同期整合制御部３０から所定のシミュレーション演算部に送信される。
【００１５】
データ入力部９は、他のシミュレーション演算部から同期整合制御部３０を介して送られているメッセージを受信する。データ入力部９が受信したメッセージに含まれているパラメータデータはモデル計算部１に送られ、当該メッセージに含まれているシミュレーションサイクルに関する情報は時刻制御部３に送られる。時刻制御部３は、当該情報にそってモデル計算部１でのシミュレーションサイクルを制御する。
【００１６】
一方、同期整合制御部３０は、各シミュレーション演算部１０ａ〜１０ｎでのシミュレーション時刻を監視して個々のシミュレーション演算部１０ａ〜１０ｎでの演算負荷を判断し、演算負荷が高いと判断されるシミュレーション演算部があったときには、該シミュレーション演算部にシミュレーションサイクルを長くする指令を含んだメッセージを通知して、シミュレーション演算部間での時間的な同期を制御する。そのために、当該同期整合制御部３０はデータ入力部１１、時刻監視部１３、時刻記録部１５、時刻同期部１７、パラメータ情報処理部１９、メッセージ生成部２１、およびデータ出力部２３を有している。
【００１７】
上記のデータ入力部１１は各シミュレーション演算部１０ａ〜１０ｎが発信したメッセージを受信する。時刻監視部１３は、データ入力部１１が受信したメッセージから情報元（発信元）シミュレーション演算部の識別情報と、当該情報元シミュレーション演算部でのシミュレーション時刻およびシミュレーションサイクルの各情報とを抽出する。また、当該時刻監視部１３は、メッセージの相手先（送信先）シミュレーション演算部でのシミュレーション時刻の情報を時刻記録部１５から読み出し、該シミュレーション時刻と上記情報元シミュレーション演算部でのシミュレーション時刻との進み具合を比較して比較結果を時刻同期部１７に送る。
【００１８】
時刻記録部１５は、時刻監視部１３から送られてくるシミュレーション時刻およびシミュレーションサイクルの各情報を上記情報元シミュレーション演算部の識別情報と関連付けて記録し、保存する。
【００１９】
時刻同期部１７は、時刻監視部１３から送られてくる比較結果を基に上記情報元シミュレーション演算部での演算負荷と上記相手先シミュレーション演算部での演算負荷とを判断する。例えば、時刻監視部１３での比較結果から一方のシミュレーション演算部でのシミュレーション時刻が他方のシミュレーション演算部でのシミュレーション時刻よりも遅れていると判断されたときには、シミュレーション時刻が遅れているシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと判断する。
【００２０】
そして、一方のシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと判断されたときには、演算負荷が高いと判断されたシミュレーション演算部でのシミュレーションサイクルを他方のシミュレーション演算部でのシミュレーションサイクルよりも長くする制御指令をメッセージ生成部２１に生成させて、情報元シミュレーション演算部と相手先シミュレーション演算部との時間的な同期を制御する。また、その後に情報元シミュレーション演算部での演算負荷と相手先シミュレーション演算部での演算負荷とに差がないと判断されたときには、シミュレーションサイクルを長くしていたシミュレーション演算部でのシミュレーションサイクルを短くする制御指令をメッセージ生成部２１に生成させて、情報元シミュレーション演算部と相手先シミュレーション演算部との時間的な同期を制御する。
【００２１】
具体的には、一方のシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと初めて判断されたときに、演算負荷が高いと判断されたシミュレーション演算部でのシミュレーションサイクルが長くなるように時刻記録１５での保存情報を書き換え、その後の適当な時期に当該演算負荷が高いと判断されたシミュレーション演算部に宛てたメッセージをメッセージ生成部２１に生成させる。また、保存情報を書き換えたシミュレーション演算部での演算負荷がその後に下がったときには、当該シミュレーション演算部でのシミュレーションサイクルが短くなるように時刻記録１５での保存情報を書き換え、その後の適当な時期に当該シミュレーション演算部に宛てたメッセージをメッセージ生成部２１に生成させる。
【００２２】
パラメータ情報処理部１９は、データ入力部１１が受信したメッセージから情報元シミュレーション演算部の識別情報、相手先シミュレーション演算部の識別情報、および情報元シミュレーション演算部が算出したパラメータデータを抽出してこれらをメッセージ生成部２１に送る。
【００２３】
メッセージ生成部２１は、時刻同期部１７から送られている情報元シミュレーション演算部でのシミュレーション時刻および相手先シミュレーション演算部でのシミュレーションサイクルの各情報、ならびにパラメータ情報処理部１９から送られてくる情報元シミュレーション演算部の識別情報、相手先シミュレーション演算部の識別情報、および情報元シミュレーション演算部が算出したパラメータデータの各々を含んだメッセージを生成してデータ出力部２３に送る。そして、データ出力部２３は、メッセージ生成部２１から送られてきたメッセージを上記相手先シミュレーション演算部に宛てて発信する。
【００２４】
図２は、データ出力部２３から発信されるメッセージの一例を概略的に示す概念図である。同図に示すメッセージＭｅは、ヘッダ部Ｈとデータ部Ｄとを有している。ヘッダ部Ｈには情報元シミュレーション演算部の識別情報Ｉｓ、相手先シミュレーション演算部の識別情報Ｉｄ、情報元シミュレーション演算部でのシミュレーション時刻Ｓｔ、相手先シミュレーション演算部でのシミュレーションサイクルＳｃが格納される。必要に応じて、当該メッセージの通知タイプ情報、例えばパラメータデータが有るメッセージかパラメータデータが無いメッセージかを特定する通知タイプ情報Ｎｔもヘッダ部Ｈに格納される。また、データ部Ｄには、情報元シミュレーション演算部が算出したパラメータデータが格納される。図示の例では＃１から＃ｎまでの計ｎ種類のパラメータデータＰｄ1〜Ｐｄnがデータ部Ｄに格納されている。
【００２５】
上述のように構成された統合シミュレーションシステム５０では、演算負荷が高いシミュレーション演算部があったときに、該シミュレーション演算部のシミュレーションサイクルを長くするので、結果として、当該シミュレーション演算部でのモデル計算回数が減ってそのシミュレーション進行速度が上がる。そのため、演算負荷が高いシミュレーション演算部のシミュレーションサイクルを長くしない場合に比べてシミュレーション精度は低下するものの、システム全体での計算時間を加速させることができる。この統合シミュレーションシステム５０では、システム全体の計算時間を効率よく短縮させることが容易である。
【００２６】
以下、統合シミュレーションシステム５０での同期制御方法について、図１または図２で用いた参照符号を適宜引用しつつ図３または図４を参照して具体的に説明する。
【００２７】
図３は、図１に示した統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図１に示した第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に実質的に差が生じなかったときの同期制御方法を示している。
【００２８】
なお、下記の例では、第１シミュレーション演算部１０ａは、その演算負荷が過多にならない限り、シミュレーションサイクル（シミュレーションの時間間隔）Δｔ１で所定回数のモデル計算を行い、当該モデル計算で得られたパラメータデータのうちで第２シミュレーション演算部１０ｂで用いられるものを第２シミュレーション演算部１０ｂに宛てて発信するものとする。また、第２シミュレーション演算部１０ｂは、その演算負荷が過多にならない限り、シミュレーションサイクル（シミュレーションの時間間隔）Δｔ２で所定回数のモデル計算を行い、当該モデル計算で得られたパラメータデータのうちで第１シミュレーション演算部１０ｂで用いられるものを第１シミュレーション演算部１０ａに宛てて発信するものとする。
【００２９】
図示の例では、第１シミュレーション演算部１０ａでのシミュレーション時刻が時刻Ｔ１０１になったときに、当該第１シミュレーション演算部１０ａがシミュレーション時刻Ｔ１０１およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとを含んだメッセージを生成し、発信する。このメッセージは第２シミュレーション演算部１０ｂを相手先（発信先）とするものであるが、同期整合制御部３０により一旦受信される。図３においては、このときの第１シミュレーション演算部１０ａから同期整合制御部３０へのメッセージの送信を「データ送信ＤＴ11」と表記している。
【００３０】
以下の説明においては、第１シミュレーション演算部１０ａから同期整合制御部３０へのメッセージの送信、および第２シミュレーション演算部１０ｂから同期整合制御部３０へのメッセージの送信をそれぞれ「データ送信」と表記し、個々の「データ送信」に参照符号を付して説明する。また、同期整合制御部３０から第１シミュレーション演算部１０ａへのメッセージの送信、および同期整合制御部３０から第２シミュレーション演算部１０ｂへのメッセージの送信をそれぞれ「データメッセージ通知」と表記し、個々の「データメッセージ通知」に参照符号を付して説明する。これらの点は、後述する実施の形態２，３においても同様である。
【００３１】
データ送信ＤＴ11を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０１およびシミュレーションサイクルΔｔ１の各情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５（図１参照）に保存する。この後、ヘッダ部Ｈ（図２参照）での情報元のシミュレーション時刻ＳｔがＴ１０１に設定され、データ部Ｄ（図２参照）に上記メッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ11を行う。このとき、第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を同期整合制御部３０が未だ取得していないことから、上記のヘッダ部Ｈは相手先のシミュレーションサイクルＳｃの情報を抜いた状態で生成される。
【００３２】
演算処理を開始していた第２シミュレーション演算部１０ｂは、同期整合制御部３０からデータメッセージ通知ＭＮ11を受けた後のシミュレーション時刻Ｔ２０１に、シミュレーション時刻Ｔ２０１およびシミュレーションサイクルΔｔ２の各情報とパラメータデータとを含んだメッセージを生成してデータ送信ＤＴ21を行う。このメッセージは第１シミュレーション演算部１０ａを相手先とするものであるが、同期整合制御部３０により一旦受信される。
【００３３】
データ送信ＤＴ21を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０１およびシミュレーションサイクルΔｔ２の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０１と、時刻記録部１５（図１参照）に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０１とを時刻監視部１３（図１参照）で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００３４】
時刻同期部１７は、時刻Ｔ２０１＞時刻Ｔ１０１であるので、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻Ｓｔ（図２参照）がＴ２０１に設定され、相手先のシミュレーションサイクルＳｃ（図２参照）がΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ21で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ21を行う。
【００３５】
各シミュレーション演算部１０ａ，１０ｂは、個々のシミュレーション時刻を進めることで次の演算処理を行い、第１シミュレーション演算部１０ａは、そのシミュレーション時刻がＴ１０２のときにデータ送信ＤＴ12を行う。このときのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０２およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００３６】
データ送信ＤＴ12を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０２およびシミュレーションサイクルΔｔ１の各情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０２と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０１とを時刻監視部１３で比較して、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷の大小関係を時刻同期部１７が判断する。
【００３７】
時刻同期部１７は、時刻Ｔ１０２＞時刻Ｔ２０１であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０２に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ２に設定され、データ部Ｄに上記データ送信ＤＴ12で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ12を行う。
【００３８】
第２シミュレーション演算部１０ｂは、同期整合制御部３０からデータメッセージ通知ＭＮ12を受けた後、シミュレーション時刻Ｔ２０２にデータ送信ＤＴ22を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０２およびシミュレーションサイクルΔｔ２の各情報とパラメータデータとが含まれている。
【００３９】
データ送信ＤＴ22を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０２およびシミュレーションサイクルΔｔ２の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０２と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０２とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００４０】
時刻同期部１７は、時刻Ｔ２０２＞時刻Ｔ１０２であるので、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０２に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ22で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ22を行う。
【００４１】
以上説明したように、同期整合制御部３０は、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないと判断されたときには、時刻記録部１５に保存されている情報の書換えを行うことなくメッセージ通知を行って、これらシミュレーション演算部１０ａ，１０ｂ間での時間的な同期を制御する。第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差がないと判断されたときには、図３を参照して説明した要領で時間的な同期を制御する。
【００４２】
次に、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差があると判断されたときの同期制御方法について説明する。統合シミュレーションシステム５０（図１参照）では、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差があると判断されたときに、同期整合制御部３０が時刻記録部１５に保存されている情報を書き換えてからメッセージ通知を行って、これらシミュレーション演算部間での時間的な同期を制御する。このときの同期制御方法について、図１または図２で用いた参照符号を適宜引用しつつ図４を参照して具体的に説明する。
【００４３】
図４は、図１に示した統合シミュレーションシステムでの同期制御方法の他の例を示すシーケンス図である。このシーケンス図は、図１に示した第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
【００４４】
図示の例では、図３に示した例におけるのと同様にしてデータ送信ＤＴ11、データメッセージ通知ＭＮ11、データ送信ＤＴ21、データメッセージ通知ＭＮ21、データ送信ＤＴ12、およびデータメッセージ通知ＭＮ12がこの順番で行われた後、第２シミュレーション演算部１０ｂが同期整合制御部３０にデータ送信ＤＴ22を行う前に、第１シミュレーション演算部１０ｂが同期整合制御部３０にデータ送信ＤＴ13を行っている。
【００４５】
すなわち、第２シミュレーション演算部１０ｂでの演算負荷がシミュレーション時刻Ｔ２０１からシミュレーション時刻Ｔ２０２までの間に高くなって、データ送信ＤＴ22がデータ送信ＤＴ13に遅れて行われている。ただし、同期整合制御部３０は、第２シミュレーション演算部１０ｂからデータ送信ＤＴ22を受けるまで、第２シミュレーション演算部１０ｂでの演算負荷の増大を認識できない。
【００４６】
第１シミュレーション演算部１０ｂから同期整合制御部３０へのデータ送信ＤＴ13でのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００４７】
データ送信ＤＴ13を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０３およびシミュレーションサイクルΔｔ１の各情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０１とを時刻監視部１３で比較して、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷の大小関係を時刻同期部１７が判断する。
【００４８】
時刻同期部１７は、時刻Ｔ１０３＞時刻Ｔ２０１であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０３に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ２に設定され、データ部Ｄに上記データ送信ＤＴ13で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ13を行う。
【００４９】
第２シミュレーション演算部１０ｂは、同期整合制御部３０からデータメッセージ通知ＭＮ13を受けた後、シミュレーション時刻Ｔ２０２にデータ送信ＤＴ22を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０２およびシミュレーションサイクルΔｔ２の各情報とパラメータデータとが含まれている。
【００５０】
データ送信ＤＴ22を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０２およびシミュレーションサイクルΔｔ２の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０２と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３とを時刻監視部１３で比較し、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００５１】
時刻同期部１７は、時刻Ｔ２０２＜時刻Ｔ１０３であるので、第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断して、時刻記録部１５に保存されている情報の書換えを行う。すなわち、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルをΔｔ２よりも所定時間だけ長いΔｔ３に書き換える。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０２に設定されていると共に相手先のシミュレーションサイクルがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ22で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ22を行う。
【００５２】
第１シミュレーション演算部１０ａは、同期整合制御部３０からデータメッセージ通知ＭＮ22を受けた後、シミュレーション時刻Ｔ１０４にデータ送信ＤＴ14を行う。このときのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００５３】
データ送信ＤＴ14を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０２とを時刻監視部１３で比較して、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷の大小関係を時刻同期部１７が判断する。
【００５４】
時刻同期部１７は、時刻Ｔ１０４＞時刻Ｔ２０２であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。ただし、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルは、データ送信ＤＴ22を受けたときにΔｔ３に書き換えられている。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０４に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ３に設定され、データ部Ｄに上記データ送信ＤＴ14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ14を行う。
【００５５】
データメッセージ通知ＭＮ14を受けた第２シミュレーション演算部１０ｂは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔｔ２に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δｔ３に変更する。すなわち、自己のシミュレーションサイクルをΔｔ２よりも長いΔｔ３にする。
【００５６】
その結果として、第２シミュレーション演算部１０ｂでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻Ｔ２０３までの演算処理とシミュレーション時刻Ｔ２０４までの演算処理とが速やかに行われる。
【００５７】
第２シミュレーション演算部１０ｂでのシミュレーション時刻がＴ２０３になると、当該第２シミュレーション演算部１０ｂはデータ送信ＤＴ23を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報とパラメータデータとが含まれている。
【００５８】
データ送信ＤＴ23を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００５９】
時刻同期部１７は、時刻Ｔ２０３＜時刻Ｔ１０４であるので、第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断する。ただし、第２シミュレーション演算部１０ｂからの直近のデータ送信ＤＴ22を受けたときにも第２シミュレーション演算部１０ｂでの演算負荷が高いと判断して、時刻記録部１５に保存されている情報の書換えを行っているので、ここでは時刻記録部１５に保存されている情報の書換えを行わない。
【００６０】
なお、同期整合制御部３０は、同じ情報元シミュレーション演算部からのデータ送信に基づく情報の書換えを複数回続けて行うように構成することもできるし、情報の書換えを１度行った後は、同じ情報元シミュレーション演算部からのデータ送信に基づく情報の書換えを１回おきまたは複数回おきに行うように構成することもできる。さらには、情報の書換えを１度行った後は、情報元シミュレーション演算部の演算負荷と相手先シミュレーション演算部の演算負荷とに差がないと判断されるまで情報の書換えを行わないように構成することもできる。
【００６１】
データ送信ＤＴ23を受けた同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０３に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ23を行う。
【００６２】
シミュレーションサイクルをΔｔ２からΔｔ３にすることでシミュレーション進行速度が上がった第２シミュレーション演算部１０ｂでは、第１シミュレーション演算部１０ａでのシミュレーション時刻がＴ１０５になるよりも早く自己のシミュレーション時刻がＴ２０４になる。第２シミュレーション演算部１０ｂは、当該時刻Ｔ２０４にデータ送信ＤＴ24を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ３の各情報とパラメータデータが含まれている。
【００６３】
データ送信ＤＴ24を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ３の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００６４】
時刻同期部１７は、時刻Ｔ２０４＞時刻Ｔ１０４であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がなくなったものと判断して、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第２シミュレーション演算部１０ｂでの演算負荷が小さくなったものと判断して、第２シミュレーション演算部１０ｂでのシミュレーションサイクルがΔｔ３よりも短くなるように、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第２シミュレーション演算部１０ｂでのシミュレーションサイクルを元のΔｔ２に戻すものであってもよいし、元のΔｔ２とは異なる値にするものであってもよい。ここでは元のΔｔ２に戻す書換えを行うものとして説明を続ける。
【００６５】
時刻同期部１７により上記の書換えを行った同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０４に設定されていると共に相手先のシミュレーションサイクルがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ24を行う。
【００６６】
第１シミュレーション演算部１０ａは、同期整合制御部３０からデータメッセージ通知ＭＮ24を受けた後、シミュレーション時刻Ｔ１０５にデータ送信ＤＴ15を行う。このときのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０５およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００６７】
データ送信ＤＴ15を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０５およびシミュレーションサイクルΔｔ１の情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０５と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４とを時刻監視部１３で比較して、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷の大小関係を時刻同期部１７が判断する。
【００６８】
時刻同期部１７は、時刻Ｔ１０５＞時刻Ｔ２０４であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０５に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ２に設定され、データ部Ｄに上記データ送信ＤＴ15で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ15を行う。
【００６９】
データメッセージ通知ＭＮ15を受けた第２シミュレーション演算部１０ｂは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔｔ３に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δｔ２に変更する。すなわち、自己のシミュレーションサイクルを元のシミュレーションサイクルΔｔ２に戻す。その結果として、第２シミュレーション演算部１０ｂでのシミュレーション進行速度が元に戻される。第２シミュレーション演算部１０ｂは、シミュレーション時刻が進み過ぎないように制御されたことになる。
【００７０】
以上説明したように、同期整合制御部３０は、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差が生じたと判断されたときに、時刻記録部１５に保存されている情報を書き換えてからメッセージ通知を行うことで、シミュレーション演算部１０ａ，１０ｂ間での時間的な同期を制御する。第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図４を参照して説明した要領で時間的な同期を制御する。
【００７１】
実施の形態２．
この発明の統合シミュレーションシステムにおいては、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じたと判断されたときに、演算負荷が高いシミュレーション演算部に同期整合制御部からパラメータデータ含んでいないメッセージを通知して、該メッセージによりそのシミュレーションサイクルを長くする制御を行うこともできる。
【００７２】
この場合の統合シミュレーションシステムの構成は、例えば、同期整合制御部の時刻同期部に新たな機能、すなわち演算負荷が高いと判断されたシミュレーション演算部に上記パラメータデータを含んでいないメッセージを通知する機能を付加する以外は、図１に示した統合シミュレーションシステム５０と同様の構成とすることができるので、ここではその図示を省略する。以下、同期整合制御部に上記の機能が付加された統合シミュレーションシステムによる同期制御方法について、図１または図２で用いた参照符号を適宜引用しつつ図５を参照して具体的に説明する。
【００７３】
図５は、演算負荷が高いと判断されたシミュレーション演算部に同期整合制御部からパラメータデータを含んでいないメッセージを通知してそのシミュレーションサイクルを長くする制御を行う統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図１に示した第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
【００７４】
図示の例では、図４に示した例におけるのと同様にしてデータ送信ＤＴ11、データメッセージ通知ＭＮ11、データ送信ＤＴ21、データメッセージ通知ＭＮ21、データ送信ＤＴ12、データメッセージ通知ＭＮ12、データ送信ＤＴ13、データメッセージ通知ＭＮ13、データ送信ＤＴ22、およびデータメッセージ通知ＭＮ22がこの順番で行われている。この後、同期整合制御部３０から第２シミュレーション演算部１０ｂ（図１参照）にデータ無しメッセージ通知ＮＤ、すなわちパラメータデータを含んでいないメッセージ通知が行われる。
【００７５】
図４を参照して既に説明したように、同期整合制御部３０は、第２シミュレーション演算部１０ｂからデータ送信ＤＴ22を受けたときに、第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断して、時刻記録部１５（図１参照）に保存されている第２シミュレーション演算部１０ｂのシミュレーションサイクルをΔｔ２からΔｔ３に書き換える。図５に示す例では、当該書換えを行った同期整合制御部３０が第１シミュレーション演算部１０ａにデータメッセージ通知ＭＮ22を行った後、第１シミュレーション演算部１０ａからのデータ送信ＤＴ14を待たずに、第２シミュレーション演算部１０ｂに対してデータ無しメッセージ通知ＮＤを行う。
【００７６】
このデータ無しメッセージ通知ＮＤでは、情報元のシミュレーション時刻ＳｔがＴ２０２に設定されていると共に相手先のシミュレーションサイクルＳｃ（図２参照）がΔｔ３に設定され、データ部Ｄにはパラメータデータが格納されていないメッセージを同期整合制御部３０が生成して、第２シミュレーション演算部１０ｂに宛てて送信する。
【００７７】
同期整合制御部３０からデータ無しメッセージ通知ＮＤを受けた第２シミュレーション演算部１０ｂは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔｔ２に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δｔ３に変更する。すなわち、自己のシミュレーションサイクルをΔｔ２よりも長いΔｔ３にする。
【００７８】
その結果として、第２シミュレーション演算部１０ｂでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻Ｔ２０３までの演算処理が速やかに行われる。
【００７９】
第２シミュレーション演算部１０ｂでのシミュレーション時刻がＴ２０３になると、当該第２シミュレーション演算部１０ｂはデータ送信ＤＴ23を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報とパラメータデータとが含まれている。
【００８０】
データ送信ＤＴ23を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３とを時刻監視部１３（図１参照）で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７（図１参照）が判断する。
【００８１】
時刻同期部１７は、時刻Ｔ２０３＞時刻Ｔ１０３であるので、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷との差が解消されたものと判断して、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第２シミュレーション演算部１０ｂでの演算負荷が小さくなったものと判断して、第２シミュレーション演算部１０ｂでのシミュレーションサイクルがΔｔ３よりも短くなるように、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第２シミュレーション演算部１０ｂでのシミュレーションサイクルを元のΔｔ２に戻すものであってもよいし、元のΔｔ２とは異なる値にするものであってもよい。ここでは元のΔｔ２に戻す書換えを行うものとして説明を続ける。
【００８２】
データ送信ＤＴ23を受けた同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０３に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ23を行う。
【００８３】
第１シミュレーション演算部１０ａは、同期整合制御部３０からデータメッセージ通知ＭＮ23を受けた後、シミュレーション時刻Ｔ１０４にデータ送信ＤＴ14を行う。このときのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００８４】
データ送信ＤＴ14を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報を第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３とを時刻監視部１３で比較して、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷の大小関係を時刻同期部１７が判断する。
【００８５】
時刻同期部１７は、時刻Ｔ１０４＞時刻Ｔ２０３であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。ただし、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルは、データ送信ＤＴ23を受けたときにΔｔ２に書き換えられている。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０４に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ２に設定され、データ部Ｄに上記データ送信ＤＴ14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ14を行う。
【００８６】
同期整合制御部３０からデータメッセージ通知ＭＮ14を受けた第２シミュレーション演算部１０ｂは、当該データメッセージ通知ＭＮ14でのメッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔｔ３に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δｔ２に変更する。すなわち、自己のシミュレーションサイクルを元のシミュレーションサイクルΔｔ２に戻す。その結果として、第２シミュレーション演算部１０ｂでのシミュレーション進行速度が元に戻される。第２シミュレーション演算部１０ｂは、シミュレーション時刻が進み過ぎないように制御されたことになる。
【００８７】
この後、第２シミュレーション演算部１０ｂは、そのシミュレーション時刻がＴ２０４になるとデータ送信ＤＴ24を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ２の各情報とパラメータデータとが含まれている。
【００８８】
データ送信ＤＴ24を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ２の各情報を第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【００８９】
時刻同期部１７は、時刻Ｔ２０４＞時刻Ｔ１０４であるので、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷とに差がないものと判断する。したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０４に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ24を行う。
【００９０】
本実施の形態２の統合シミュレーションシステムでは、第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図５を参照して説明した要領で時間的な同期を制御する。この統合シミュレーションシステムでは、演算負荷が相対的に低いシミュレーション演算部でのメッセージの送信間隔（データ送信の間隔）に左右されることなく上記パラメータデータ含んでいないメッセージの通知（データ無しメッセージ通知）が行われるので、実施の形態１で説明した統合シミュレーションシステム５０（図１参照）に比べて、演算負荷が高いと判断されたシミュレーション演算部のシミュレーションサイクルを速やかに制御することができる。
【００９１】
なお、シミュレーション演算部間での演算負荷の差が解消されたと判断されときには、シミュレーションサイクルを長くしていたシミュレーション演算部に上記データ無しメッセージ通知と同様の要領でメッセージ通知を行ってそのシミュレーションサイクルを短くするように当該統合シミュレーションシステムを構成することも可能である。
【００９２】
実施の形態３．
この発明の統合シミュレーションシステムは、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部間での時間的な同期を制御するものであってもよい。上記の予測は、例えば、シミュレーション演算部から同期整合制御部へデータ送信の実時刻（現実の時刻）と各シミュレーション演算部でのシミュレーション時刻とを用いて行うことができる。
【００９３】
上記の予測機能を備えた統合シミュレーションシステムの構成は、例えば、時刻監視部にデータ送信の実時刻を監視して該実時刻を時刻記録部に記録し、保存させる機能を付加すると共に、時刻同期部に上記の予測機能を付加する以外は、図１に示した統合シミュレーションシステム５０と同様の構成とすることができるので、ここではその図示を省略する。以下、同期整合制御部に上記の予測機能が付加された統合シミュレーションシステムによる同期制御方法について、図１または図２で用いた参照符号を適宜引用しつつ図６を参照して具体的に説明する。
【００９４】
図６は、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部間での時間的な同期を制御する統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図１に示した第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
【００９５】
図示の例では、図３に示した例におけるのと同様にしてデータ送信ＤＴ11、データメッセージ通知ＭＮ11、データ送信ＤＴ21、データメッセージ通知ＭＮ21、データ送信ＤＴ12、データメッセージ通知ＭＮ12、データ送信ＤＴ22、およびデータメッセージ通知ＭＮ22がこの順番で行われている。ただし、同期整合制御部３０（図１参照）では、各データ送信ＤＴ11，ＤＴ21，ＤＴ12，ＤＴ22を受けたときの実時刻Ｓ１０１，Ｓ２０１，Ｓ１０２，Ｓ２０２を時刻記録部１５に記録し、保存している。
【００９６】
また、データ送信の実時刻と各シミュレーション演算部でのシミュレーション時刻とを用いた上述の予測は、第１シミュレーション演算部１０ａおよび第２シミュレーション演算部１０ｂの各々が少なくとも２回のデータ送信を行った後に初めて可能になるので、データメッセージ通知ＭＮ22が行われるまでの間に当該予測は行われていない。
【００９７】
上記のデータメッセージ通知ＭＮ22を受けた第１シミュレーション演算部１０ａは、そのシミュレーション時刻がＴ１０３になると、同期整合制御部３０にデータ送信ＤＴ13を行う。このデータ送信ＤＴ13でのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【００９８】
データ送信ＤＴ13を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０３およびシミュレーションサイクルΔｔ１の各情報とデータ送信ＤＴ13を受けた実時刻Ｓ１０３とを第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５（図１参照）に保存する。また、時刻同期部１７（図１参照）は、第１〜第３ステップの３段階に分けて、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷との大小関係を判断する。ただし、第３ステップは、第２ステップの判断結果に応じて省略されることもある。
【００９９】
上記の第１ステップでは、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０３と、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０１とから、シミュレーション演算部１０ａ，１０ｂ間での演算負荷の大小関係を判断する。また、第２ステップでは、第２シミュレーション演算部１０ｂから次回のデータ送信を受ける実時刻を時刻同期部１７が予測し、該予測時刻とデータ送信ＤＴ13を受けた実時刻Ｓ１０３との進み具合から、シミュレーション演算部１０ａ，１０ｂ間での演算負荷の大小関係を判断する。そして第３ステップでは、第２シミュレーション演算部１０ｂが次回のデータ送信を行うときのシミュレーション時刻を時刻同期部１７が予測し、該予測シミュレーション時刻と第１シミュレーション演算部１０ａがデータ送信ＤＴ13を行ったときのシミュレーション時刻Ｔ１０３との進み具合から、シミュレーション演算部１０ａ，１０ｂ間での演算負荷の大小関係を判断する。
【０１００】
時刻同期部１７は、時刻Ｔ１０３＞時刻Ｔ２０２であるので、上記の第１ステップでは第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。また、第２ステップでは、第２シミュレーション演算部１０ｂから次回のデータ送信を受ける実時刻を式  Ｓ２０２−Ｓ２０１＋Ｓ２０２  により予測し、Ｓ１０３＜Ｓ２０２−Ｓ２０１＋Ｓ２０２であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。上記の第３ステップは省略される。
【０１０１】
したがって、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行わない。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０３に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ２に設定され、データ部Ｄに上記データ送信ＤＴ13で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ13を行う。
【０１０２】
第２シミュレーション演算部１０ｂは、同期整合制御部３０からデータメッセージ通知ＭＮ13を受けた後、シミュレーション時刻Ｔ２０３にデータ送信ＤＴ23を行うが、図示の例では、データ送信ＤＴ23よりも先に第１シミュレーション演算部１０ａでのシミュレーション時刻がＴ１０４になって、第１シミュレーション演算部１０ａから同期整合制御部３０にデータ送信ＤＴ14が行われている。このデータ送信ＤＴ14でのメッセージには、第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報とパラメータデータとが含まれている。
【０１０３】
データ送信ＤＴ14を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ１０４およびシミュレーションサイクルΔｔ１の各情報とデータ送信ＤＴ14を受けた実時刻Ｓ１０４とを第１シミュレーション演算部１０ａの識別情報と関連付けて時刻記録部１５に保存する。また、時刻同期部１７は、第１〜第３ステップの３段階に分けて、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷との大小関係を判断する。
【０１０４】
このときの第１ステップでは、時刻Ｔ１０４＞時刻Ｔ２０２であるので、時刻同期部１７は第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がないものと判断する。また第２ステップでは、Ｓ１０４＞Ｓ２０２−Ｓ２０１＋Ｓ２０２であるので、時刻同期部１７は第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断する。第２シミュレーション演算部１０ｂからのデータ送信が遅延していることが予測される。このため、第３ステップが行われる。当該第３ステップでは、第２シミュレーション演算部１０ｂが次回のデータ送信を行うときのシミュレーション時刻Ｔ２０３を式  Ｔ２０２−Ｔ２０１＋Ｔ２０２  により予測し、Ｔ１０４＞Ｔ２０２−Ｔ２０１＋Ｔ２０２であるので、第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断する。
【０１０５】
このため、時刻同期部１７は、時刻記録部１５に保存されている情報の書換えを行う。すなわち、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルをΔｔ２よりも所定時間だけ長いΔｔ３に書き換える。同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ１０４に設定されていると共に相手先のシミュレーションサイクルがΔｔ３に設定され、データ部Ｄに上記データ送信ＤＴ14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第２シミュレーション演算部１０ｂに宛ててデータメッセージ通知ＭＮ14を行う。
【０１０６】
データメッセージ通知ＭＮ14を受けた第２シミュレーション演算部１０ｂは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔｔ２に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δｔ３に変更する。すなわち、自己のシミュレーションサイクルをΔｔ２よりも長いΔｔ３にする。
【０１０７】
その結果として、第２シミュレーション演算部１０ｂでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻Ｔ２０３までの演算処理とシミュレーション時刻Ｔ２０４までの演算処理とが速やかに行われる。
【０１０８】
第２シミュレーション演算部１０ｂでのシミュレーション時刻がＴ２０３になると、当該第２シミュレーション演算部１０ｂはデータ送信ＤＴ23を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報とパラメータデータとが含まれている。
【０１０９】
データ送信ＤＴ23を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０３およびシミュレーションサイクルΔｔ３の各情報とデータ送信ＤＴ23を受けた実時刻Ｓ２０３とを第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０３と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【０１１０】
時刻同期部１７は、時刻Ｔ２０３＜時刻Ｔ１０４であるので、第２シミュレーション演算部１０ｂでの演算負荷が第１シミュレーション演算部１０ａでの演算負荷よりも高いと判断する。ただし、第２シミュレーション演算部１０ｂへの直近のデータメッセージ通知ＭＮ14を行うときに第２シミュレーション演算部１０ｂでの演算負荷が高いと判断して、時刻記録部１５に保存されている情報の書換えを行っているので、ここでは時刻記録部１５に保存されている情報の書換えを行わない。
【０１１１】
なお、同期整合制御部３０は、シミュレーションサイクルを一旦変更したシミュレーション演算部については、その直後の当該シミュレーション演算部からのデータ送信で演算負荷が高いと判断されても、時刻記録部１５に保存されている当該シミュレーション演算部でのシミュレーションサイクルの情報を書き換えないように構成される。そして、シミュレーションサイクルを変更した後での２回目以降のデータ送信で演算負荷に差がないと判断されたときには、当該シミュレーション演算部でのシミュレーションサイクルが短くなるように、時刻記録部１５に保存されているシミュレーションサイクルの情報を書き換える。
【０１１２】
上述のデータ送信ＤＴ23を受けた同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０３に設定されていると共に相手先のシミュレーションサイクルＳｃがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ23を行う。
【０１１３】
シミュレーションサイクルをΔｔ２からΔｔ３にすることでシミュレーション進行速度が上がった第２シミュレーション演算部１０ｂでは、第１シミュレーション演算部１０ａでのシミュレーション時刻がＴ１０５（図示せず）になるよりも早く自己のシミュレーション時刻がＴ２０４になる。第２シミュレーション演算部１０ｂは、当該時刻Ｔ２０４にデータ送信ＤＴ24を行う。このときのメッセージには、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ３の各情報とパラメータデータが含まれている。
【０１１４】
データ送信ＤＴ24を受けた同期整合制御部３０は、メッセージ中のシミュレーション時刻Ｔ２０４およびシミュレーションサイクルΔｔ３の各情報とデータ送信ＤＴ24を受けた実時刻Ｓ２０４とを第２シミュレーション演算部１０ｂの識別情報と関連付けて時刻記録部１５に保存する。また、第２シミュレーション演算部１０ｂでのシミュレーション時刻Ｔ２０４と、時刻記録部１５に保存されている第１シミュレーション演算部１０ａでのシミュレーション時刻Ｔ１０４とを時刻監視部１３で比較して、第２シミュレーション演算部１０ｂでの演算負荷と第１シミュレーション演算部１０ａでの演算負荷の大小関係を時刻同期部１７が判断する。
【０１１５】
時刻同期部１７は、時刻Ｔ２０４＞時刻Ｔ１０４であるので、第１シミュレーション演算部１０ａでの演算負荷と第２シミュレーション演算部１０ｂでの演算負荷とに差がなくなったものと判断して、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第２シミュレーション演算部１０ｂでの演算負荷が小さくなったものと判断して、第２シミュレーション演算部１０ｂでのシミュレーションサイクルがΔｔ３よりも短くなるように、時刻記録部１５に保存されている第２シミュレーション演算部１０ｂでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第２シミュレーション演算部１０ｂでのシミュレーションサイクルを元のΔｔ２に戻すものであってもよいし、元のΔｔ２とは異なる値にするものであってもよい。
【０１１６】
時刻同期部１７により上記の書換えを行った同期整合制御部３０は、情報元のシミュレーション時刻ＳｔがＴ２０４に設定されていると共に相手先のシミュレーションサイクルがΔｔ１に設定され、データ部Ｄに上記データ送信ＤＴ24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第１シミュレーション演算部１０ａに宛ててデータメッセージ通知ＭＮ24を行う。
【０１１７】
本実施の形態３の統合シミュレーションシステムでは、第１シミュレーション演算部１０ａと第２シミュレーション演算部１０ｂとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図６を参照して説明した要領で時間的な同期を制御する。この統合シミュレーションシステムでは、シミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部でのシミュレーションサイクルを制御するので、実施の形態２で説明した統合シミュレーションシステムに比べても、演算負荷が高いシミュレーション演算部のシミュレーションサイクルを速やかに制御することができる。
【０１１８】
なお、シミュレーションサイクルを長くしていたシミュレーション演算部のシミュレーションサイクルを短くするという制御は、統合シミュレーションシステム全体での時間進行に影響がないので速やかに行う必要性は必ずしもないが、シミュレーション精度の低下をできるだけ抑えるという観点からは、できるだけ速やかに行うことが好ましい。この点は、実施の形態２で説明した統合シミュレーションシステムにおいても同じである。
【０１１９】
以上、この発明の統合シミュレーションシステムについて実施の形態を挙げて説明したが、前述のように、この発明は上述の形態に限定されるものではない。この発明の統合シミュレーションシステムは、演算負荷が高いと判断されたシミュレーション演算部のシミュレーションサイクルを長くするという制御を行うものであり、個々のシミュレーション演算部の具体的構成や同期整合制御の具体的構成は、当該統合シミュレーションシステムの用途等に応じて適宜変更可能である。この発明については、上述したもの以外にも種々の変形、修飾、組み合わせ等が可能である。
【図面の簡単な説明】
【０１２０】
【図１】この発明の統合シミュレーションシステムの一例を概略的に示すブロック図である。
【図２】図１に示した統合シミュレーションシステムにおける同期整合制御部のデータ出力部から発信されるメッセージの一例を概略的に示す概念図である。
【図３】図１に示した統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。
【図４】図１に示した統合シミュレーションシステムでの同期制御方法の他の例を示すシーケンス図である。
【図５】この発明の統合シミュレーションシステムのうちで、演算負荷が高いと判断されたシミュレーション演算部に同期整合制御部からパラメータデータを含んでいないメッセージを通知してそのシミュレーションサイクルを長くする制御を行うものでの同期制御方法の一例を示すシーケンス図である。
【図６】この発明の統合シミュレーションシステムのうちで、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部間での時間的な同期を制御するものでの同期制御方法の一例を示すシーケンス図である。
【符号の説明】
【０１２１】
１０ａ〜１０ｎ  シミュレーション演算部
１３  時刻監視部
１５  時刻記録部
１７  時刻同基部
２１  メッセージ生成部
３０  同期整合制御部
５０  統合シミュレーションシステム
【図１】
0005173385.tif 000002
【図２】
0005173385.tif 000003
【図３】
0005173385.tif 000004
【図４】
0005173385.tif 000005
【図５】
0005173385.tif 000006
【図６】
0005173385.tif 000007