以下、この発明の統合シミュレーションシステムの実施の形態について、図面を参照して詳細に説明する。なお、この発明は以下に説明する実施の形態に限定されるものではない。
実施の形態1.
図1は、統合シミュレーションシステムの一例を概略的に示すブロック図である。同図に示す統合シミュレーションシステム50は、第1から第Nまでの計N個のシミュレーション演算部10a〜10nと、シミュレーション演算部間での時間的な同期を制御する同期整合制御部30とを備えたタイムドリブン型の統合シミュレーションシステムである。
この統合シミュレーションシステム50では、シミュレーションで用いられるパラメータデータ等の情報を含んだメッセージをシミュレーション演算部間で授受しながら、各シミュレーション演算部10a〜10nがそれぞれ独自のシミュレーション時刻、シミュレーションサイクルの下に動作して分散処理を進める。そして、各シミュレーション演算部10a〜10nによる分散処理結果を最終的に統合してシミュレーション結果を得る。
個々のシミュレーション演算部10a〜10nはモデル計算部1、時刻制御部3、パラメータ生成部5、データ出力部7、データ入力部9、および図示を省略した記憶部を有しており、記憶部に予め格納されたシナリオに従って動作して上記の分散処理を進める。このとき、モデル計算部1は、他のシミュレーション演算部から通知されるメッセージ中のパラメータデータを利用しながら演算処理を行う。
また、時刻制御部3はモデル計算部1でのシミュレーション時刻およびシミュレーションサイクルを制御し、パラメータ生成部5は、上記のシナリオに従った所定のシミュレーション演算部に宛てて通知すべきパラメータデータをモデル計算部1の演算結果の中から抽出する。
データ出力部7は、モデル計算部1でのシミュレーション時刻およびシミュレーションサイクルそれぞれの情報を時刻制御部3から受け取ると共に上記のパラメータデータをパラメータ生成部5から受け取って、これらを含んだメッセージを所定のシミュレーション演算部宛に作成して発信する。ただし、データ出力部7から発信されたメッセージは、一旦、同期整合制御部30により受信され、その後、同期整合制御部30から所定のシミュレーション演算部に送信される。
データ入力部9は、他のシミュレーション演算部から同期整合制御部30を介して送られているメッセージを受信する。データ入力部9が受信したメッセージに含まれているパラメータデータはモデル計算部1に送られ、当該メッセージに含まれているシミュレーションサイクルに関する情報は時刻制御部3に送られる。時刻制御部3は、当該情報にそってモデル計算部1でのシミュレーションサイクルを制御する。
一方、同期整合制御部30は、各シミュレーション演算部10a〜10nでのシミュレーション時刻を監視して個々のシミュレーション演算部10a〜10nでの演算負荷を判断し、演算負荷が高いと判断されるシミュレーション演算部があったときには、該シミュレーション演算部にシミュレーションサイクルを長くする指令を含んだメッセージを通知して、シミュレーション演算部間での時間的な同期を制御する。そのために、当該同期整合制御部30はデータ入力部11、時刻監視部13、時刻記録部15、時刻同期部17、パラメータ情報処理部19、メッセージ生成部21、およびデータ出力部23を有している。
上記のデータ入力部11は各シミュレーション演算部10a〜10nが発信したメッセージを受信する。時刻監視部13は、データ入力部11が受信したメッセージから情報元(発信元)シミュレーション演算部の識別情報と、当該情報元シミュレーション演算部でのシミュレーション時刻およびシミュレーションサイクルの各情報とを抽出する。また、当該時刻監視部13は、メッセージの相手先(送信先)シミュレーション演算部でのシミュレーション時刻の情報を時刻記録部15から読み出し、該シミュレーション時刻と上記情報元シミュレーション演算部でのシミュレーション時刻との進み具合を比較して比較結果を時刻同期部17に送る。
時刻記録部15は、時刻監視部13から送られてくるシミュレーション時刻およびシミュレーションサイクルの各情報を上記情報元シミュレーション演算部の識別情報と関連付けて記録し、保存する。
時刻同期部17は、時刻監視部13から送られてくる比較結果を基に上記情報元シミュレーション演算部での演算負荷と上記相手先シミュレーション演算部での演算負荷とを判断する。例えば、時刻監視部13での比較結果から一方のシミュレーション演算部でのシミュレーション時刻が他方のシミュレーション演算部でのシミュレーション時刻よりも遅れていると判断されたときには、シミュレーション時刻が遅れているシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと判断する。
そして、一方のシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと判断されたときには、演算負荷が高いと判断されたシミュレーション演算部でのシミュレーションサイクルを他方のシミュレーション演算部でのシミュレーションサイクルよりも長くする制御指令をメッセージ生成部21に生成させて、情報元シミュレーション演算部と相手先シミュレーション演算部との時間的な同期を制御する。また、その後に情報元シミュレーション演算部での演算負荷と相手先シミュレーション演算部での演算負荷とに差がないと判断されたときには、シミュレーションサイクルを長くしていたシミュレーション演算部でのシミュレーションサイクルを短くする制御指令をメッセージ生成部21に生成させて、情報元シミュレーション演算部と相手先シミュレーション演算部との時間的な同期を制御する。
具体的には、一方のシミュレーション演算部での演算負荷の方が他方のシミュレーション演算部での演算負荷よりも高いと初めて判断されたときに、演算負荷が高いと判断されたシミュレーション演算部でのシミュレーションサイクルが長くなるように時刻記録15での保存情報を書き換え、その後の適当な時期に当該演算負荷が高いと判断されたシミュレーション演算部に宛てたメッセージをメッセージ生成部21に生成させる。また、保存情報を書き換えたシミュレーション演算部での演算負荷がその後に下がったときには、当該シミュレーション演算部でのシミュレーションサイクルが短くなるように時刻記録15での保存情報を書き換え、その後の適当な時期に当該シミュレーション演算部に宛てたメッセージをメッセージ生成部21に生成させる。
パラメータ情報処理部19は、データ入力部11が受信したメッセージから情報元シミュレーション演算部の識別情報、相手先シミュレーション演算部の識別情報、および情報元シミュレーション演算部が算出したパラメータデータを抽出してこれらをメッセージ生成部21に送る。
メッセージ生成部21は、時刻同期部17から送られている情報元シミュレーション演算部でのシミュレーション時刻および相手先シミュレーション演算部でのシミュレーションサイクルの各情報、ならびにパラメータ情報処理部19から送られてくる情報元シミュレーション演算部の識別情報、相手先シミュレーション演算部の識別情報、および情報元シミュレーション演算部が算出したパラメータデータの各々を含んだメッセージを生成してデータ出力部23に送る。そして、データ出力部23は、メッセージ生成部21から送られてきたメッセージを上記相手先シミュレーション演算部に宛てて発信する。
図2は、データ出力部23から発信されるメッセージの一例を概略的に示す概念図である。同図に示すメッセージMeは、ヘッダ部Hとデータ部Dとを有している。ヘッダ部Hには情報元シミュレーション演算部の識別情報Is、相手先シミュレーション演算部の識別情報Id、情報元シミュレーション演算部でのシミュレーション時刻St、相手先シミュレーション演算部でのシミュレーションサイクルScが格納される。必要に応じて、当該メッセージの通知タイプ情報、例えばパラメータデータが有るメッセージかパラメータデータが無いメッセージかを特定する通知タイプ情報Ntもヘッダ部Hに格納される。また、データ部Dには、情報元シミュレーション演算部が算出したパラメータデータが格納される。図示の例では#1から#nまでの計n種類のパラメータデータPd1〜Pdnがデータ部Dに格納されている。
上述のように構成された統合シミュレーションシステム50では、演算負荷が高いシミュレーション演算部があったときに、該シミュレーション演算部のシミュレーションサイクルを長くするので、結果として、当該シミュレーション演算部でのモデル計算回数が減ってそのシミュレーション進行速度が上がる。そのため、演算負荷が高いシミュレーション演算部のシミュレーションサイクルを長くしない場合に比べてシミュレーション精度は低下するものの、システム全体での計算時間を加速させることができる。この統合シミュレーションシステム50では、システム全体の計算時間を効率よく短縮させることが容易である。
以下、統合シミュレーションシステム50での同期制御方法について、図1または図2で用いた参照符号を適宜引用しつつ図3または図4を参照して具体的に説明する。
図3は、図1に示した統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図1に示した第1シミュレーション演算部10aと第2シミュレーション演算部10bとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に実質的に差が生じなかったときの同期制御方法を示している。
なお、下記の例では、第1シミュレーション演算部10aは、その演算負荷が過多にならない限り、シミュレーションサイクル(シミュレーションの時間間隔)Δt1で所定回数のモデル計算を行い、当該モデル計算で得られたパラメータデータのうちで第2シミュレーション演算部10bで用いられるものを第2シミュレーション演算部10bに宛てて発信するものとする。また、第2シミュレーション演算部10bは、その演算負荷が過多にならない限り、シミュレーションサイクル(シミュレーションの時間間隔)Δt2で所定回数のモデル計算を行い、当該モデル計算で得られたパラメータデータのうちで第1シミュレーション演算部10bで用いられるものを第1シミュレーション演算部10aに宛てて発信するものとする。
図示の例では、第1シミュレーション演算部10aでのシミュレーション時刻が時刻T101になったときに、当該第1シミュレーション演算部10aがシミュレーション時刻T101およびシミュレーションサイクルΔt1の各情報とパラメータデータとを含んだメッセージを生成し、発信する。このメッセージは第2シミュレーション演算部10bを相手先(発信先)とするものであるが、同期整合制御部30により一旦受信される。図3においては、このときの第1シミュレーション演算部10aから同期整合制御部30へのメッセージの送信を「データ送信DT11」と表記している。
以下の説明においては、第1シミュレーション演算部10aから同期整合制御部30へのメッセージの送信、および第2シミュレーション演算部10bから同期整合制御部30へのメッセージの送信をそれぞれ「データ送信」と表記し、個々の「データ送信」に参照符号を付して説明する。また、同期整合制御部30から第1シミュレーション演算部10aへのメッセージの送信、および同期整合制御部30から第2シミュレーション演算部10bへのメッセージの送信をそれぞれ「データメッセージ通知」と表記し、個々の「データメッセージ通知」に参照符号を付して説明する。これらの点は、後述する実施の形態2,3においても同様である。
データ送信DT11を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T101およびシミュレーションサイクルΔt1の各情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15(図1参照)に保存する。この後、ヘッダ部H(図2参照)での情報元のシミュレーション時刻StがT101に設定され、データ部D(図2参照)に上記メッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN11を行う。このとき、第2シミュレーション演算部10bでのシミュレーションサイクルの情報を同期整合制御部30が未だ取得していないことから、上記のヘッダ部Hは相手先のシミュレーションサイクルScの情報を抜いた状態で生成される。
演算処理を開始していた第2シミュレーション演算部10bは、同期整合制御部30からデータメッセージ通知MN11を受けた後のシミュレーション時刻T201に、シミュレーション時刻T201およびシミュレーションサイクルΔt2の各情報とパラメータデータとを含んだメッセージを生成してデータ送信DT21を行う。このメッセージは第1シミュレーション演算部10aを相手先とするものであるが、同期整合制御部30により一旦受信される。
データ送信DT21を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T201およびシミュレーションサイクルΔt2の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T201と、時刻記録部15(図1参照)に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T101とを時刻監視部13(図1参照)で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T201>時刻T101であるので、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻St(図2参照)がT201に設定され、相手先のシミュレーションサイクルSc(図2参照)がΔt1に設定され、データ部Dに上記データ送信DT21で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN21を行う。
各シミュレーション演算部10a,10bは、個々のシミュレーション時刻を進めることで次の演算処理を行い、第1シミュレーション演算部10aは、そのシミュレーション時刻がT102のときにデータ送信DT12を行う。このときのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T102およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT12を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T102およびシミュレーションサイクルΔt1の各情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、第1シミュレーション演算部10aでのシミュレーション時刻T102と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T201とを時刻監視部13で比較して、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T102>時刻T201であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT102に設定されていると共に相手先のシミュレーションサイクルScがΔt2に設定され、データ部Dに上記データ送信DT12で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN12を行う。
第2シミュレーション演算部10bは、同期整合制御部30からデータメッセージ通知MN12を受けた後、シミュレーション時刻T202にデータ送信DT22を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T202およびシミュレーションサイクルΔt2の各情報とパラメータデータとが含まれている。
データ送信DT22を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T202およびシミュレーションサイクルΔt2の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T202と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T102とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T202>時刻T102であるので、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT202に設定されていると共に相手先のシミュレーションサイクルScがΔt1に設定され、データ部Dに上記データ送信DT22で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN22を行う。
以上説明したように、同期整合制御部30は、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないと判断されたときには、時刻記録部15に保存されている情報の書換えを行うことなくメッセージ通知を行って、これらシミュレーション演算部10a,10b間での時間的な同期を制御する。第1シミュレーション演算部10aと第2シミュレーション演算部10bとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差がないと判断されたときには、図3を参照して説明した要領で時間的な同期を制御する。
次に、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差があると判断されたときの同期制御方法について説明する。統合シミュレーションシステム50(図1参照)では、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差があると判断されたときに、同期整合制御部30が時刻記録部15に保存されている情報を書き換えてからメッセージ通知を行って、これらシミュレーション演算部間での時間的な同期を制御する。このときの同期制御方法について、図1または図2で用いた参照符号を適宜引用しつつ図4を参照して具体的に説明する。
図4は、図1に示した統合シミュレーションシステムでの同期制御方法の他の例を示すシーケンス図である。このシーケンス図は、図1に示した第1シミュレーション演算部10aと第2シミュレーション演算部10bとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
図示の例では、図3に示した例におけるのと同様にしてデータ送信DT11、データメッセージ通知MN11、データ送信DT21、データメッセージ通知MN21、データ送信DT12、およびデータメッセージ通知MN12がこの順番で行われた後、第2シミュレーション演算部10bが同期整合制御部30にデータ送信DT22を行う前に、第1シミュレーション演算部10bが同期整合制御部30にデータ送信DT13を行っている。
すなわち、第2シミュレーション演算部10bでの演算負荷がシミュレーション時刻T201からシミュレーション時刻T202までの間に高くなって、データ送信DT22がデータ送信DT13に遅れて行われている。ただし、同期整合制御部30は、第2シミュレーション演算部10bからデータ送信DT22を受けるまで、第2シミュレーション演算部10bでの演算負荷の増大を認識できない。
第1シミュレーション演算部10bから同期整合制御部30へのデータ送信DT13でのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T103およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT13を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T103およびシミュレーションサイクルΔt1の各情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、第1シミュレーション演算部10aでのシミュレーション時刻T103と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T201とを時刻監視部13で比較して、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T103>時刻T201であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT103に設定されていると共に相手先のシミュレーションサイクルScがΔt2に設定され、データ部Dに上記データ送信DT13で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN13を行う。
第2シミュレーション演算部10bは、同期整合制御部30からデータメッセージ通知MN13を受けた後、シミュレーション時刻T202にデータ送信DT22を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T202およびシミュレーションサイクルΔt2の各情報とパラメータデータとが含まれている。
データ送信DT22を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T202およびシミュレーションサイクルΔt2の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T202と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T103とを時刻監視部13で比較し、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T202<時刻T103であるので、第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断して、時刻記録部15に保存されている情報の書換えを行う。すなわち、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルをΔt2よりも所定時間だけ長いΔt3に書き換える。同期整合制御部30は、情報元のシミュレーション時刻StがT202に設定されていると共に相手先のシミュレーションサイクルがΔt1に設定され、データ部Dに上記データ送信DT22で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN22を行う。
第1シミュレーション演算部10aは、同期整合制御部30からデータメッセージ通知MN22を受けた後、シミュレーション時刻T104にデータ送信DT14を行う。このときのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT14を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、第1シミュレーション演算部10aでのシミュレーション時刻T104と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T202とを時刻監視部13で比較して、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T104>時刻T202であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。ただし、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルは、データ送信DT22を受けたときにΔt3に書き換えられている。同期整合制御部30は、情報元のシミュレーション時刻StがT104に設定されていると共に相手先のシミュレーションサイクルScがΔt3に設定され、データ部Dに上記データ送信DT14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN14を行う。
データメッセージ通知MN14を受けた第2シミュレーション演算部10bは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔt2に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δt3に変更する。すなわち、自己のシミュレーションサイクルをΔt2よりも長いΔt3にする。
その結果として、第2シミュレーション演算部10bでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻T203までの演算処理とシミュレーション時刻T204までの演算処理とが速やかに行われる。
第2シミュレーション演算部10bでのシミュレーション時刻がT203になると、当該第2シミュレーション演算部10bはデータ送信DT23を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報とパラメータデータとが含まれている。
データ送信DT23を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T203と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T104とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T203<時刻T104であるので、第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断する。ただし、第2シミュレーション演算部10bからの直近のデータ送信DT22を受けたときにも第2シミュレーション演算部10bでの演算負荷が高いと判断して、時刻記録部15に保存されている情報の書換えを行っているので、ここでは時刻記録部15に保存されている情報の書換えを行わない。
なお、同期整合制御部30は、同じ情報元シミュレーション演算部からのデータ送信に基づく情報の書換えを複数回続けて行うように構成することもできるし、情報の書換えを1度行った後は、同じ情報元シミュレーション演算部からのデータ送信に基づく情報の書換えを1回おきまたは複数回おきに行うように構成することもできる。さらには、情報の書換えを1度行った後は、情報元シミュレーション演算部の演算負荷と相手先シミュレーション演算部の演算負荷とに差がないと判断されるまで情報の書換えを行わないように構成することもできる。
データ送信DT23を受けた同期整合制御部30は、情報元のシミュレーション時刻StがT203に設定されていると共に相手先のシミュレーションサイクルScがΔt1に設定され、データ部Dに上記データ送信DT23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN23を行う。
シミュレーションサイクルをΔt2からΔt3にすることでシミュレーション進行速度が上がった第2シミュレーション演算部10bでは、第1シミュレーション演算部10aでのシミュレーション時刻がT105になるよりも早く自己のシミュレーション時刻がT204になる。第2シミュレーション演算部10bは、当該時刻T204にデータ送信DT24を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T204およびシミュレーションサイクルΔt3の各情報とパラメータデータが含まれている。
データ送信DT24を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T204およびシミュレーションサイクルΔt3の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T204と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T104とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T204>時刻T104であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がなくなったものと判断して、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第2シミュレーション演算部10bでの演算負荷が小さくなったものと判断して、第2シミュレーション演算部10bでのシミュレーションサイクルがΔt3よりも短くなるように、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第2シミュレーション演算部10bでのシミュレーションサイクルを元のΔt2に戻すものであってもよいし、元のΔt2とは異なる値にするものであってもよい。ここでは元のΔt2に戻す書換えを行うものとして説明を続ける。
時刻同期部17により上記の書換えを行った同期整合制御部30は、情報元のシミュレーション時刻StがT204に設定されていると共に相手先のシミュレーションサイクルがΔt1に設定され、データ部Dに上記データ送信DT24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN24を行う。
第1シミュレーション演算部10aは、同期整合制御部30からデータメッセージ通知MN24を受けた後、シミュレーション時刻T105にデータ送信DT15を行う。このときのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T105およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT15を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T105およびシミュレーションサイクルΔt1の情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、第1シミュレーション演算部10aでのシミュレーション時刻T105と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T204とを時刻監視部13で比較して、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T105>時刻T204であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT105に設定されていると共に相手先のシミュレーションサイクルScがΔt2に設定され、データ部Dに上記データ送信DT15で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN15を行う。
データメッセージ通知MN15を受けた第2シミュレーション演算部10bは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔt3に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δt2に変更する。すなわち、自己のシミュレーションサイクルを元のシミュレーションサイクルΔt2に戻す。その結果として、第2シミュレーション演算部10bでのシミュレーション進行速度が元に戻される。第2シミュレーション演算部10bは、シミュレーション時刻が進み過ぎないように制御されたことになる。
以上説明したように、同期整合制御部30は、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差が生じたと判断されたときに、時刻記録部15に保存されている情報を書き換えてからメッセージ通知を行うことで、シミュレーション演算部10a,10b間での時間的な同期を制御する。第1シミュレーション演算部10aと第2シミュレーション演算部10bとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図4を参照して説明した要領で時間的な同期を制御する。
実施の形態2.
この発明の統合シミュレーションシステムにおいては、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じたと判断されたときに、演算負荷が高いシミュレーション演算部に同期整合制御部からパラメータデータ含んでいないメッセージを通知して、該メッセージによりそのシミュレーションサイクルを長くする制御を行うこともできる。
この場合の統合シミュレーションシステムの構成は、例えば、同期整合制御部の時刻同期部に新たな機能、すなわち演算負荷が高いと判断されたシミュレーション演算部に上記パラメータデータを含んでいないメッセージを通知する機能を付加する以外は、図1に示した統合シミュレーションシステム50と同様の構成とすることができるので、ここではその図示を省略する。以下、同期整合制御部に上記の機能が付加された統合シミュレーションシステムによる同期制御方法について、図1または図2で用いた参照符号を適宜引用しつつ図5を参照して具体的に説明する。
図5は、演算負荷が高いと判断されたシミュレーション演算部に同期整合制御部からパラメータデータを含んでいないメッセージを通知してそのシミュレーションサイクルを長くする制御を行う統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図1に示した第1シミュレーション演算部10aと第2シミュレーション演算部10bとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
図示の例では、図4に示した例におけるのと同様にしてデータ送信DT11、データメッセージ通知MN11、データ送信DT21、データメッセージ通知MN21、データ送信DT12、データメッセージ通知MN12、データ送信DT13、データメッセージ通知MN13、データ送信DT22、およびデータメッセージ通知MN22がこの順番で行われている。この後、同期整合制御部30から第2シミュレーション演算部10b(図1参照)にデータ無しメッセージ通知ND、すなわちパラメータデータを含んでいないメッセージ通知が行われる。
図4を参照して既に説明したように、同期整合制御部30は、第2シミュレーション演算部10bからデータ送信DT22を受けたときに、第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断して、時刻記録部15(図1参照)に保存されている第2シミュレーション演算部10bのシミュレーションサイクルをΔt2からΔt3に書き換える。図5に示す例では、当該書換えを行った同期整合制御部30が第1シミュレーション演算部10aにデータメッセージ通知MN22を行った後、第1シミュレーション演算部10aからのデータ送信DT14を待たずに、第2シミュレーション演算部10bに対してデータ無しメッセージ通知NDを行う。
このデータ無しメッセージ通知NDでは、情報元のシミュレーション時刻StがT202に設定されていると共に相手先のシミュレーションサイクルSc(図2参照)がΔt3に設定され、データ部Dにはパラメータデータが格納されていないメッセージを同期整合制御部30が生成して、第2シミュレーション演算部10bに宛てて送信する。
同期整合制御部30からデータ無しメッセージ通知NDを受けた第2シミュレーション演算部10bは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔt2に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δt3に変更する。すなわち、自己のシミュレーションサイクルをΔt2よりも長いΔt3にする。
その結果として、第2シミュレーション演算部10bでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻T203までの演算処理が速やかに行われる。
第2シミュレーション演算部10bでのシミュレーション時刻がT203になると、当該第2シミュレーション演算部10bはデータ送信DT23を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報とパラメータデータとが含まれている。
データ送信DT23を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T203と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T103とを時刻監視部13(図1参照)で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17(図1参照)が判断する。
時刻同期部17は、時刻T203>時刻T103であるので、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷との差が解消されたものと判断して、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第2シミュレーション演算部10bでの演算負荷が小さくなったものと判断して、第2シミュレーション演算部10bでのシミュレーションサイクルがΔt3よりも短くなるように、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第2シミュレーション演算部10bでのシミュレーションサイクルを元のΔt2に戻すものであってもよいし、元のΔt2とは異なる値にするものであってもよい。ここでは元のΔt2に戻す書換えを行うものとして説明を続ける。
データ送信DT23を受けた同期整合制御部30は、情報元のシミュレーション時刻StがT203に設定されていると共に相手先のシミュレーションサイクルScがΔt1に設定され、データ部Dに上記データ送信DT23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN23を行う。
第1シミュレーション演算部10aは、同期整合制御部30からデータメッセージ通知MN23を受けた後、シミュレーション時刻T104にデータ送信DT14を行う。このときのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT14を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報を第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、第1シミュレーション演算部10aでのシミュレーション時刻T104と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T203とを時刻監視部13で比較して、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T104>時刻T203であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。ただし、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルは、データ送信DT23を受けたときにΔt2に書き換えられている。同期整合制御部30は、情報元のシミュレーション時刻StがT104に設定されていると共に相手先のシミュレーションサイクルScがΔt2に設定され、データ部Dに上記データ送信DT14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN14を行う。
同期整合制御部30からデータメッセージ通知MN14を受けた第2シミュレーション演算部10bは、当該データメッセージ通知MN14でのメッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔt3に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δt2に変更する。すなわち、自己のシミュレーションサイクルを元のシミュレーションサイクルΔt2に戻す。その結果として、第2シミュレーション演算部10bでのシミュレーション進行速度が元に戻される。第2シミュレーション演算部10bは、シミュレーション時刻が進み過ぎないように制御されたことになる。
この後、第2シミュレーション演算部10bは、そのシミュレーション時刻がT204になるとデータ送信DT24を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T204およびシミュレーションサイクルΔt2の各情報とパラメータデータとが含まれている。
データ送信DT24を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T204およびシミュレーションサイクルΔt2の各情報を第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T204と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T104とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T204>時刻T104であるので、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷とに差がないものと判断する。したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT204に設定されていると共に相手先のシミュレーションサイクルScがΔt1に設定され、データ部Dに上記データ送信DT24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN24を行う。
本実施の形態2の統合シミュレーションシステムでは、第1シミュレーション演算部10aと第2シミュレーション演算部10bとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図5を参照して説明した要領で時間的な同期を制御する。この統合シミュレーションシステムでは、演算負荷が相対的に低いシミュレーション演算部でのメッセージの送信間隔(データ送信の間隔)に左右されることなく上記パラメータデータ含んでいないメッセージの通知(データ無しメッセージ通知)が行われるので、実施の形態1で説明した統合シミュレーションシステム50(図1参照)に比べて、演算負荷が高いと判断されたシミュレーション演算部のシミュレーションサイクルを速やかに制御することができる。
なお、シミュレーション演算部間での演算負荷の差が解消されたと判断されときには、シミュレーションサイクルを長くしていたシミュレーション演算部に上記データ無しメッセージ通知と同様の要領でメッセージ通知を行ってそのシミュレーションサイクルを短くするように当該統合シミュレーションシステムを構成することも可能である。
実施の形態3.
この発明の統合シミュレーションシステムは、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部間での時間的な同期を制御するものであってもよい。上記の予測は、例えば、シミュレーション演算部から同期整合制御部へデータ送信の実時刻(現実の時刻)と各シミュレーション演算部でのシミュレーション時刻とを用いて行うことができる。
上記の予測機能を備えた統合シミュレーションシステムの構成は、例えば、時刻監視部にデータ送信の実時刻を監視して該実時刻を時刻記録部に記録し、保存させる機能を付加すると共に、時刻同期部に上記の予測機能を付加する以外は、図1に示した統合シミュレーションシステム50と同様の構成とすることができるので、ここではその図示を省略する。以下、同期整合制御部に上記の予測機能が付加された統合シミュレーションシステムによる同期制御方法について、図1または図2で用いた参照符号を適宜引用しつつ図6を参照して具体的に説明する。
図6は、パラメータデータを授受するシミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部間での時間的な同期を制御する統合シミュレーションシステムでの同期制御方法の一例を示すシーケンス図である。このシーケンス図は、図1に示した第1シミュレーション演算部10aと第2シミュレーション演算部10bとがパラメータデータの授受を行って分散処理を進める過程で各々の演算負荷に差が生じたときの同期制御方法を示している。
図示の例では、図3に示した例におけるのと同様にしてデータ送信DT11、データメッセージ通知MN11、データ送信DT21、データメッセージ通知MN21、データ送信DT12、データメッセージ通知MN12、データ送信DT22、およびデータメッセージ通知MN22がこの順番で行われている。ただし、同期整合制御部30(図1参照)では、各データ送信DT11,DT21,DT12,DT22を受けたときの実時刻S101,S201,S102,S202を時刻記録部15に記録し、保存している。
また、データ送信の実時刻と各シミュレーション演算部でのシミュレーション時刻とを用いた上述の予測は、第1シミュレーション演算部10aおよび第2シミュレーション演算部10bの各々が少なくとも2回のデータ送信を行った後に初めて可能になるので、データメッセージ通知MN22が行われるまでの間に当該予測は行われていない。
上記のデータメッセージ通知MN22を受けた第1シミュレーション演算部10aは、そのシミュレーション時刻がT103になると、同期整合制御部30にデータ送信DT13を行う。このデータ送信DT13でのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T103およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT13を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T103およびシミュレーションサイクルΔt1の各情報とデータ送信DT13を受けた実時刻S103とを第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15(図1参照)に保存する。また、時刻同期部17(図1参照)は、第1〜第3ステップの3段階に分けて、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷との大小関係を判断する。ただし、第3ステップは、第2ステップの判断結果に応じて省略されることもある。
上記の第1ステップでは、第1シミュレーション演算部10aでのシミュレーション時刻T103と、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーション時刻T201とから、シミュレーション演算部10a,10b間での演算負荷の大小関係を判断する。また、第2ステップでは、第2シミュレーション演算部10bから次回のデータ送信を受ける実時刻を時刻同期部17が予測し、該予測時刻とデータ送信DT13を受けた実時刻S103との進み具合から、シミュレーション演算部10a,10b間での演算負荷の大小関係を判断する。そして第3ステップでは、第2シミュレーション演算部10bが次回のデータ送信を行うときのシミュレーション時刻を時刻同期部17が予測し、該予測シミュレーション時刻と第1シミュレーション演算部10aがデータ送信DT13を行ったときのシミュレーション時刻T103との進み具合から、シミュレーション演算部10a,10b間での演算負荷の大小関係を判断する。
時刻同期部17は、時刻T103>時刻T202であるので、上記の第1ステップでは第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。また、第2ステップでは、第2シミュレーション演算部10bから次回のデータ送信を受ける実時刻を式 S202−S201+S202 により予測し、S103<S202−S201+S202であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。上記の第3ステップは省略される。
したがって、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行わない。同期整合制御部30は、情報元のシミュレーション時刻StがT103に設定されていると共に相手先のシミュレーションサイクルScがΔt2に設定され、データ部Dに上記データ送信DT13で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN13を行う。
第2シミュレーション演算部10bは、同期整合制御部30からデータメッセージ通知MN13を受けた後、シミュレーション時刻T203にデータ送信DT23を行うが、図示の例では、データ送信DT23よりも先に第1シミュレーション演算部10aでのシミュレーション時刻がT104になって、第1シミュレーション演算部10aから同期整合制御部30にデータ送信DT14が行われている。このデータ送信DT14でのメッセージには、第1シミュレーション演算部10aでのシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報とパラメータデータとが含まれている。
データ送信DT14を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T104およびシミュレーションサイクルΔt1の各情報とデータ送信DT14を受けた実時刻S104とを第1シミュレーション演算部10aの識別情報と関連付けて時刻記録部15に保存する。また、時刻同期部17は、第1〜第3ステップの3段階に分けて、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷との大小関係を判断する。
このときの第1ステップでは、時刻T104>時刻T202であるので、時刻同期部17は第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がないものと判断する。また第2ステップでは、S104>S202−S201+S202であるので、時刻同期部17は第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断する。第2シミュレーション演算部10bからのデータ送信が遅延していることが予測される。このため、第3ステップが行われる。当該第3ステップでは、第2シミュレーション演算部10bが次回のデータ送信を行うときのシミュレーション時刻T203を式 T202−T201+T202 により予測し、T104>T202−T201+T202であるので、第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断する。
このため、時刻同期部17は、時刻記録部15に保存されている情報の書換えを行う。すなわち、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルをΔt2よりも所定時間だけ長いΔt3に書き換える。同期整合制御部30は、情報元のシミュレーション時刻StがT104に設定されていると共に相手先のシミュレーションサイクルがΔt3に設定され、データ部Dに上記データ送信DT14で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第2シミュレーション演算部10bに宛ててデータメッセージ通知MN14を行う。
データメッセージ通知MN14を受けた第2シミュレーション演算部10bは、メッセージに格納されているシミュレーションサイクルの情報が現在のシミュレーションサイクルΔt2に対応していないので、自己のシミュレーションサイクルを上記のメッセージに格納されているシミュレーションサイクルの情報に対応した値Δt3に変更する。すなわち、自己のシミュレーションサイクルをΔt2よりも長いΔt3にする。
その結果として、第2シミュレーション演算部10bでのモデル計算回数が減って、シミュレーション進行速度が上がる。シミュレーション時刻T203までの演算処理とシミュレーション時刻T204までの演算処理とが速やかに行われる。
第2シミュレーション演算部10bでのシミュレーション時刻がT203になると、当該第2シミュレーション演算部10bはデータ送信DT23を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報とパラメータデータとが含まれている。
データ送信DT23を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T203およびシミュレーションサイクルΔt3の各情報とデータ送信DT23を受けた実時刻S203とを第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T203と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T104とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T203<時刻T104であるので、第2シミュレーション演算部10bでの演算負荷が第1シミュレーション演算部10aでの演算負荷よりも高いと判断する。ただし、第2シミュレーション演算部10bへの直近のデータメッセージ通知MN14を行うときに第2シミュレーション演算部10bでの演算負荷が高いと判断して、時刻記録部15に保存されている情報の書換えを行っているので、ここでは時刻記録部15に保存されている情報の書換えを行わない。
なお、同期整合制御部30は、シミュレーションサイクルを一旦変更したシミュレーション演算部については、その直後の当該シミュレーション演算部からのデータ送信で演算負荷が高いと判断されても、時刻記録部15に保存されている当該シミュレーション演算部でのシミュレーションサイクルの情報を書き換えないように構成される。そして、シミュレーションサイクルを変更した後での2回目以降のデータ送信で演算負荷に差がないと判断されたときには、当該シミュレーション演算部でのシミュレーションサイクルが短くなるように、時刻記録部15に保存されているシミュレーションサイクルの情報を書き換える。
上述のデータ送信DT23を受けた同期整合制御部30は、情報元のシミュレーション時刻StがT203に設定されていると共に相手先のシミュレーションサイクルScがΔt1に設定され、データ部Dに上記データ送信DT23で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN23を行う。
シミュレーションサイクルをΔt2からΔt3にすることでシミュレーション進行速度が上がった第2シミュレーション演算部10bでは、第1シミュレーション演算部10aでのシミュレーション時刻がT105(図示せず)になるよりも早く自己のシミュレーション時刻がT204になる。第2シミュレーション演算部10bは、当該時刻T204にデータ送信DT24を行う。このときのメッセージには、第2シミュレーション演算部10bでのシミュレーション時刻T204およびシミュレーションサイクルΔt3の各情報とパラメータデータが含まれている。
データ送信DT24を受けた同期整合制御部30は、メッセージ中のシミュレーション時刻T204およびシミュレーションサイクルΔt3の各情報とデータ送信DT24を受けた実時刻S204とを第2シミュレーション演算部10bの識別情報と関連付けて時刻記録部15に保存する。また、第2シミュレーション演算部10bでのシミュレーション時刻T204と、時刻記録部15に保存されている第1シミュレーション演算部10aでのシミュレーション時刻T104とを時刻監視部13で比較して、第2シミュレーション演算部10bでの演算負荷と第1シミュレーション演算部10aでの演算負荷の大小関係を時刻同期部17が判断する。
時刻同期部17は、時刻T204>時刻T104であるので、第1シミュレーション演算部10aでの演算負荷と第2シミュレーション演算部10bでの演算負荷とに差がなくなったものと判断して、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。すなわち、シミュレーションサイクルを長くしていた第2シミュレーション演算部10bでの演算負荷が小さくなったものと判断して、第2シミュレーション演算部10bでのシミュレーションサイクルがΔt3よりも短くなるように、時刻記録部15に保存されている第2シミュレーション演算部10bでのシミュレーションサイクルの情報を書き換える。このときの情報の書換えは、第2シミュレーション演算部10bでのシミュレーションサイクルを元のΔt2に戻すものであってもよいし、元のΔt2とは異なる値にするものであってもよい。
時刻同期部17により上記の書換えを行った同期整合制御部30は、情報元のシミュレーション時刻StがT204に設定されていると共に相手先のシミュレーションサイクルがΔt1に設定され、データ部Dに上記データ送信DT24で受けたメッセージ中のパラメータデータが格納されたメッセージを生成して、第1シミュレーション演算部10aに宛ててデータメッセージ通知MN24を行う。
本実施の形態3の統合シミュレーションシステムでは、第1シミュレーション演算部10aと第2シミュレーション演算部10bとの同期制御に限らず、パラメータデータの授受を行うシミュレーション演算部間で演算負荷に差が生じたと判断されたときには、図6を参照して説明した要領で時間的な同期を制御する。この統合シミュレーションシステムでは、シミュレーション演算部間で演算負荷に差が生じることを予測し、該予測結果に基づいてシミュレーション演算部でのシミュレーションサイクルを制御するので、実施の形態2で説明した統合シミュレーションシステムに比べても、演算負荷が高いシミュレーション演算部のシミュレーションサイクルを速やかに制御することができる。
なお、シミュレーションサイクルを長くしていたシミュレーション演算部のシミュレーションサイクルを短くするという制御は、統合シミュレーションシステム全体での時間進行に影響がないので速やかに行う必要性は必ずしもないが、シミュレーション精度の低下をできるだけ抑えるという観点からは、できるだけ速やかに行うことが好ましい。この点は、実施の形態2で説明した統合シミュレーションシステムにおいても同じである。
以上、この発明の統合シミュレーションシステムについて実施の形態を挙げて説明したが、前述のように、この発明は上述の形態に限定されるものではない。この発明の統合シミュレーションシステムは、演算負荷が高いと判断されたシミュレーション演算部のシミュレーションサイクルを長くするという制御を行うものであり、個々のシミュレーション演算部の具体的構成や同期整合制御の具体的構成は、当該統合シミュレーションシステムの用途等に応じて適宜変更可能である。この発明については、上述したもの以外にも種々の変形、修飾、組み合わせ等が可能である。