(57)【要約】複数の計算装置上における複合システムのシミュレーションを容易にする方法（３００）及び装置（２０）を提供する。モデルの作者は、他のアプリケーション及びモデルが閲覧又はアクセスできるように、状態関連情報がエクスポートされるように指定できる。エクスポートのための状態関連情報を定義し、サブシステム・モデルが接続されている他のモデルからインポートしたデータの特定の使用法を可能にすることなどにより、サブシステム・モデルを被制御インターフェースを介して他のサブシステム・モデルと通信できるように書くことができる。或る実施形態では、一貫した分散型シミュレーションＡＰＩが複合システムのクロスプラットフォームのマルチデバイス・シミュレーションを可能にし、この場合、各サブシステム・シミュレーションの所有者はインプリメンテーションを秘密に保ちつつ、他のアクセを可能とする。
2004510219.tif 000002
【特許請求の範囲】
【請求項１】
第１の実行プロセスであって、
第１の言語でプログラムされ且つ第１の状態変数を有する第１のモデルを実施して第１のサブシステムをシミュレートし、
各状態関連メッセージが、前記第１のモデルにおけるシミュレーション時間中の異なる点ｔｍでの第１の状態変数の値に関連する情報を反映するものである、第１の一連の状態関連メッセージを送るものである
第１の実行プロセスと、
第２の実行プロセスであって、
前記第１の一連の状態関連メッセージを受け取り、
第２の言語でプログラムされ且つ前記第１の一連の状態関連メッセージから前記第１の状態変数の値を入力として取る第２のモデルを実施して、第２のサブシステムをシミュレートするものである
第２の実行プロセスと、
を備えるシステム。
【請求項２】
前記第２のモデルが第２の状態変数を有し、
前記第２のプロセスが第２の一連の状態関連メッセージを更に送り、その各状態関連メッセージが、前記第１のモデルにおけるシミュレーション時間中の異なる点ｔｎでの前記第２の状態変数の値に関連する情報をするものであり、
前記第１のプロセスが、前記第２の一連の状態関連メッセージを更に受け取り、
前記第１のモデルが、前記第２の一連の状態関連メッセージから前記第２の状態変数の値を入力として取る、
請求項１に記載のシステム。
【請求項３】
前記第１の一連の状態関連メッセージ中の少なくとも第１のメッセージに関して、該第１のメッセージが、前記第１のモデルにおけるシミュレーション時間中の点ｔ１での前記第１の状態変数の値に関連する情報を反映し、前記第２の一連の状態関連メッセージ中に、前記第１のモデルにおけるシミュレーション時間中の時点ｔ１での前記第２の状態変数の値を反映する第２のメッセージがある、請求項２に記載のシステム。
【請求項４】
一連の状態関連メッセージ中の少なくとも第１のメッセージに関して、該第１のメッセージが、シミュレーション時間中の点ｔ１での前記第１の状態変数の値を反映し、前記第２の一連の状態関連メッセージ中に、シミュレーション時間中の点ｔ１での前記第２の状態変数の値を反映する第２のメッセージがない、請求項２に記載のシステム。
【請求項５】
前記第１の一連の状態関連メッセージが、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ１での前記第１の状態変数の値に関連する情報を反映する第１のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ２での前記第１の状態変数の値に関連する情報を反映する第２のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ３での前記第１の状態変数の値に関連する情報を反映する第３のメッセージと
を含み、
前記第１のメッセージ、前記第２のメッセージ、及び前記第３のメッセージが、前記第１の一連の状態関連メッセージ内で連続しており、ｔ２−ｔ１＝ｔ３−ｔ２である、
請求項１に記載のシステム。
【請求項６】
前記第１の一連の状態関連メッセージが、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ１での前記第１の状態変数の値に関連する情報を反映する第１のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ２での前記第１の状態変数の値に関連する情報を反映する第２のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ３での前記第１の状態変数の値に関連する情報を反映する第３のメッセージと
を備え、前記第１のメッセージ、前記第２のメッセージ、及び前記第３のメッセージが、前記第１の一連の状態関連メッセージ内で連続しており、かつｔ２−ｔ１≠ｔ３−ｔ２である、
請求項１に記載のシステム。
【請求項７】
前記第１の組のプログラミング命令が、前記第１のモデルのための第１のインターフェースを公開し、前記第１のインターフェースが、
前記第２の組のプログラミング命令が前記第１のモデルの第１の実質的な部分にアクセスすることを妨げ、
前記第２の組のプログラミング命令が前記第１のモデルの第２の実質的な部分にアクセスすることを許可する
ものであり、
前記第２の組のプログラミング命令が、前記第２のモデルのための第２のインターフェースを公開し、前記第２のインターフェースが、
前記第１の組のプログラミング命令が前記第２のモデルの第１の実質的な部分にアクセスすることを妨げ、
前記第１の組のプログラミング命令が前記第２のモデルの第２の実質的な部分にアクセスすることを許可する
ものである、
請求項１に記載のシステム。
【請求項８】
前記第１のモデルが第３の状態変数を有し、
前記第１の一連の状態関連メッセージ中の各メッセージが、シミュレーション時間中の時間ｔｍでの前記第３の状態変数の値に関連する情報を更に反映し、
前記第２のモデルが、前記第３の状態変数も、前記第１の一連の状態関連メッセージからの入力として取る、
請求項１に記載のシステム。
【請求項９】
複数の物理サブシステムを有する物理システムの動作をシミュレートするための方法において、
第１の物理サブシステムをシミュレートするステップと、
前記シミュレートする前記ステップにおいて前記第１の物理サブシステムの状態を特徴付けるｎ個の状態関連変数に関連する情報のエクスポートの要求を受け付けるステップと、
第１の一連の状態関連メッセージであって、各メッセージが前記ｎ個の状態変数の少なくとも１つの値に関連する情報を含むものである第１の一連の状態関連メッセージを送るステップと、
第２の物理サブシステムをシミュレートするステップと
を備え、
前記要求が、前記第２の物理サブシステムをシミュレートする前記ステップと関連して行われ、
前記第１の物理サブシステムが前記第２の物理サブシステムと対話し、
前記の少なくとも１つの状態変数が、前記第１の物理サブシステムと前記第２の物理サブシステムとの間の対話の少なくとも一部を特徴付ける、
方法。
【請求項１０】
前記第１の物理サブシステムをシミュレートする前記ステップが第１のプロセッサ上で実行され、
前記第２の物理サブシステムをシミュレートする前記ステップが前記第１のプロセッサ上で実行される、
請求項９に記載の方法。
【請求項１１】
前記第１の物理サブシステムをシミュレートする前記ステップが第１のプロセッサ上で実行され、
前記第２の物理サブシステムをシミュレートする前記ステップが第２のプロセッサ上で実行される、
請求項９に記載の方法。
【請求項１２】
ｎが少なくとも２である、請求項９に記載の方法。
【請求項１３】
ｎが少なくとも４である、請求項１２に記載の方法。
【請求項１４】
前記第１の一連の状態関連メッセージ中の少なくとも１つのメッセージが、前記ｎ個の状態変数のそれぞれの値に関連する情報を含む、請求項１２に記載の方法。
【請求項１５】
前記第１の一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ個の状態変数のすべてを含む組の第１の真部分集合の値に関連する情報を含む、請求項１２に記載の方法。
【請求項１６】
第３の一連の状態関連メッセージを送るステップを更に備え、
前記第３の一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ個の状態変数のすべてを含む組の第２の真部分集合の値に関連する情報を含み、
前記第２の真部分集合が前記第１の真部分集合とは異なるものである、
請求項１５に記載の方法。
【請求項１７】
前記第１の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第１のレートでサンプルされ、
前記第３の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第２のレートでサンプルされ、
前記第１のレートと前記第２のレートとが等しくないものである、
請求項１６に記載の方法。
【請求項１８】
前記第１の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第１のレートでサンプルされ、
前記第３の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第２のレートでサンプルされ、
前記第１のレートと第２のレートとが等しいものである、
請求項１６に記載の方法。
【請求項１９】
所与のプロセスが要求を行い、
前記送るステップが、前記第１の一連の状態関連メッセージを、前記所与のプロセスとは異なるプロセスへ送る、
請求項９に記載の方法。
【請求項２０】
第１の出力デバイスと通信を行う第１の出力プロセスにおける前記第１の一連の状態関連メッセージを受け取るステップと、
前記第１の一連の状態関連メッセージ中の複数のメッセージにより運ばれる第１の組の情報を、前記第１の出力デバイスへ送るステップと
を更に備え、前記第１の出力デバイスが前記第１の出力プロセスと通信を行うものである、
請求項９に記載の方法。
【請求項２１】
前記第１の出力デバイスがモニタである、請求項２０に記載の方法。
【請求項２２】
前記第１の出力デバイスがプリンタである、請求項２０に記載の方法。
【請求項２３】
前記第１の出力デバイスが、前記第１の組の情報を記録可能媒体に記憶する、請求項２０に記載の方法。
【請求項２４】
前記表示するステップが、時間対前記第１の状態変数の関数をグラフ化するステップを含む、請求項２０に記載のシステム。
【請求項２５】
前記第１の出力プロセスにおいて第２の一連の状態関連メッセージを受け取るステップと、
前記第２の一連の状態関連メッセージ中の複数のメッセージにより運ばれる第２の組の情報を、前記第１の出力デバイスへ送るステップと
を更に備え、前記送るステップが、前記第１の組の情報および前記第２の組の情報をシステム時間に関連付ける時間情報を出力するステップを含む、請求項２０に記載の方法。
【請求項２６】
第２の出力デバイスと通信を行う第２の出力プロセスにおいて第２の一連の状態関連メッセージを受け取るステップと、
前記第２の一連の状態関連メッセージ中の複数のメッセージによって運ばれる第２の組の情報を、前記第２の出力デバイスへ出力するステップと
を更に備え、前記送るステップが、前記第１の組の情報とシステム時間とを関連付けるステップを含み、
前記出力するステップが、前記第２の組の情報とシステム時間とを関連付けるステップを含む、
請求項２０に記載の方法。
【請求項２７】
第１のコンピュータ読取可能媒体であって、
第１のシミュレーション・モデルをインプリメントするステップと、
第１のコマンド信号を受け付けるステップと、
前記第１のコマンド信号に基づいて前記第１のシミュレーション・モデルを管理するステップと
を行うために第１のプロセスにおいて実行可能なプログラミング命令で符号化された第１のコンピュータ読取可能媒体と、
第２のコンピュータ読取可能媒体であって、
第２のシミュレーション・モデルをインプリメントするステップと、
第２のコマンド信号を受け付けるステップと、
前記第２のコマンド信号に基づいて前記第２のシミュレーション・モデルを管理するステップと
を行うために第２のプロセスにおいて実行可能な第２の組のプログラミング命令で符号化された第２のコンピュータ読取可能媒体と、
第３のコンピュータ読取可能媒体であって、
前記第１のコマンド信号を前記第１のプロセスへ送るステップと、
前記第２のコマンド信号を前記第２のプロセスへ送るステップと
を行うために第３のプロセスにおいて実行可能な第３の組のプログラミング命令で符号化された第３のコンピュータ読取可能媒体と
を備えるシステム。
【請求項２８】
前記管理するステップを共通のシステム時間に同期させる、請求項２７に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、合衆国国防総省によって授与された契約Ｆ３３６１５−９９−Ｃ−２９１１の下に、政府支援を受けてなされたものである。
【０００２】
関連する出願の参照
２０００年６月１９日に出願した同時係属の米国仮特許出願第６０／２１２，６９５号の優先権を主張する。
【０００３】
背景
本発明は、システムをシミュレートするコンピュータ・プログラムに関する。より詳細には、本発明は、分散型コンピュータ・ネットワークを使ったシミュレーション・システムに関し、サブシステムを独立してシミュレートすることができ、そのサブシステムのシミュレーションが、入力／出力変数の値を伝達してサブシステムの対話をシミュレートするシステムに関する。現在の複合システムをシミュレートする方法は、セキュリティ、相互運用性、クロスプラットフォーム通信、及びその他の機能エリアにおいて制限を受けている。多くのシミュレーション・プラットフォームは、分散型シミュレーションを可能にすることが全くできないため、単一デバイスのコンピューティング（計算）及び記憶能力の関数としてモデル化できるシステムの複雑性を制限している。適当な時間内での複合システム（例えば、戦車や航空機など）のシミュレーションを、広範に利用可能なコンピューティング・システムを使って行うことは、不可能ではないにしてもきわめて難しい。
【０００４】
更に、複数のベンダが、大規模システムの様々なサブシステムを担当している場合には、セキュリティ及び所有権上の懸念によって、各ベンダが提供する各サブシステムのシミュレーション・モデルを含む、協働シミュレーション・システムの形成が抑制され又は妨げられる。或る種の契約及び／又は規制に関連する場合には、システム全体のシミュレーションを実施することができるように、ベンダが、自分達の優先権に反して、シミュレーション・モデルを他のベンダ又は当局に開示することを強いられる場合もある。
【０００５】
従って、分散型シミュレーション技術に対する更なる寄与及び改善の必要がある。
概要
新規なシミュレーション・システムを提供することが、本発明の１つの目的である。別の目的は、様々なサブシステム・シミュレーションが様々な言語で書かれ、異なるコンピューティング・デバイス上で走る異なるプログラムによって実行され、しかも、サブシステム・シミュレーションがサブシステムの組合せのオペレーションをシミュレートするように通信する、シミュレーション・システムを提供することである。更に別の目的は、シミュレーションの様々な部分を、異なる積分方法及び／又はシミュレーションの他の部分のパラメータを使って実行することができるシミュレーション・システムを提供することである。
【０００６】
これら及びその他の目的は、本発明の様々な形態によって達成される。本発明の一形態は、独特の分散型シミュレーション・システムである。更なる形態は、複数のプロセッサが、それぞれ別個のプログラムを実行して物理システムの異なる部分を独立してシミュレートするようにしたシステムを含む。様々な時点で、プロセッサのうちの第１のプロセッサが、第２のプロセッサにメッセージを伝達して、シミュレーション時間中の或る時点で、シミュレートされているサブシステムに関する情報を伝達する。第２のプロセッサは、第１のプロセッサからの状態関連情報を使って、システムの第２の部分のそのモデルを実行する。この形態の或る実施形態では、メッセージが、シミュレーション時間中に一定の間隔で送られるが、他の実施形態では、メッセージが、リアルタイムで一定の間隔で送られる。更に別の実施形態では、１つ又は複数の変数の関数、１つ又は複数の変数の変化のパターン、検出されたネットワークの輻輳又は遅延、或るいは（第１のモデル、第２のモデル、別のモデル、又はそれらの組合せにおける）その他の状態変数の挙動などの状況に応じて、メッセージが変動する間隔で送られる。
【０００７】
本発明の別の形態では、或るプログラムが第１のモデルに関連するインターフェースを公開し、第２のプログラムが第２のモデルに関連するインターフェースを公開する。第１のインターフェースは、第１のモデルのプログラム制御された１組の状態関連情報に第２のプログラムがアクセスすることを許可するが、第１のプログラム又はモデルの実質的な部分に第２のモデルがアクセスすることを妨げる。この形態の幾つかの実施形態では、第２のプログラムのインターフェースは、第２のモデルのプログラム制御された１組の状態関連情報に第１のモデルがアクセスすることを可能にするが、第２のプログラム又はモデルの少なくとも実質的な部分に第１のモデルがアクセスすることを妨げる。
【０００８】
本発明の別の形態では、システム・モニタ・アプリケーションが、サブシステム・シミュレーションの制御及び調整を行う。この形態の或る実施形態では、各サブシステム・モデルが、それ自体がシステム・モニタ・アプリケーションによって開始され、停止され、構成され、コンフィギュレーションされ、そして／または他のモデルに接続されることを可能にしている。別の実施形態では、モデルは、或る種の状態関連情報を、１つ又は複数のデータ出力アプリケーションへ定期的に伝送するようにという要求を受け付けて、これに応じて作用するものであり、これは、これらの値の（又はこれらの値の関数の）１つ又は複数のグラフを生成することができる。これらの実施形態の幾つかにおいては、１つ又は複数の状態関連変数の一連の値が、複数の可能な受取側へブロードキャストされる。
【０００９】
好ましい実施形態の説明
本発明の原理の理解を高める目的で、図面に示す実施形態を参照し、また、特定の用語を使って、その実施形態を説明する。ただし、それによって本発明の範囲を限定することを意図しているわけではなく、説明している又は例示している実施形態のいかなる変更及び更なる改造、及び、その中で示している本発明の原理のいかなる更なる応用も、本発明が関連する分野の技術者であれば、通常、思いつくものであるとみなす。
【００１０】
一般に、図１〜図３に示す分散型シミュレーション・システムは、物理システムの様々な部分又は側面（「サブシステム」）の並列的インプリメンテーションを提供する。この例示の実施形態では、コンピュータ２９は、モデル・ホスト・コンピュータ２３、２５、２７上で実行される複数のモデル２２、２４、２６、２８の間の接続及び対話を開始し、停止し、コンフィギュレーションし、かつ制御する。各モデル２２、２４、２６、２８は、１つ又は複数のサブシステムのモデルを実施し、そのインプリメンテーションを、システムのその他の部分のモデルへの接続に利用可能とする。様々なハードウェア及びソフトウェア・プラットフォームのための一貫した外部通信インターフェース（以下に更に詳説する）は、各サブシステムが、異なるシミュレーション・プラットフォーム及び／又はオペレーティング・システム上でモデル化されることを可能にし、更に、異なるサブシステムの異なるベンダが、自分達のサブシステムのモデルを、システムの田のものと組み合わせてシミュレーションに利用できるようにすることを可能にする。
【００１１】
現在の説明が、個別の物理サブシステムを備えた物理システムのシミュレーションの観点から見ると、最も理解し易いことに留意されたい。しかし、ここで使用している「システム」とは、コンポーネントの物理的構成に限定されるわけではない。そのコンセプトは、いかなるシミュレーションの対象も含むものとして理解されるべきである。同様に、本出願で使用している「サブシステム」とは、必ずしも物理的に個別の１組のコンポーネントではない。例えば、或る独立してモデル化された「サブシステム」が、或るアイテムの熱伝達の側面をモデル化したものであり、別の「サブシステム」が、そのアイテムの電子的な側面をモデル化したものである場合もある。
【００１２】
シミュレーション目的のモデルのインプリメンテーションは、１人又は多数のプログラマ、又はプログラマの組織が、システム中の他のモデルと同じ言語で、又は異なる言語で、プログラムすることができる。
【００１３】
次に、図１を参照しながら、システム２０について更に詳細に説明する。ネットワーク２１は、コンピュータ２３、２５、２７及び２９を相互接続する。図示されたこれらのコンピュータ上で実行されているモデル２２、２４、２６、２８は、それぞれが少なくとも１つのサブシステムをモデル化し、そして、シミュレートされるインターフェースの状態をリアルタイム又はバーチャル・タイムまたは様々な間隔でサブシステム間で通信するようにインターフェースすることにより、集合的に完全なシステムをモデル化する。これについては、以下に更に詳細に説明する。図１に、分散型シミュレーション・システム２０に含まれる他のアプリケーションを、様々なコンフィギュレーションで示す。単純なモデル・ホスト・コンピュータ２３は、他のモデル２４、２６、２８及び他のアプリケーション（システム・モニタ３１など）とネットワーク２１を介してアクセス可能な、単一のモデル２２を実行する。
【００１４】
しかし、本発明の多くの実施形態では、追加のアプリケーションを実行するために、単一のホスト・コンピュータ内の資源を利用することができる。一般的な構成を、図１のコンピュータ２５に関連して示す。当業者にはわかるであろうが、そこでは、モデル２４が１つ又は複数のサブシステムをシミュレートし、コントロール・パネル３２が、開始、停止、パラメータ設定、接続関連、及びその他のコマンドを発行する。ＯＳＣＯＰＥアプリケーション３３及び３４は、時間にわたって、モデル２４の１つ又は複数の変数又は変数の関数を表示する。アプリケーションのこのグループ化は、単一のコンピュータ上にける資源の妥当な有効利用であることが実験的にわかっている。或るモデルが必要とする資源が、追加のアプリケーションをサポートするには大きすぎるとき（例えば、モデルが、シミュレーション・システム内のボトルネックだった場合）、例えば、他のコンポーネントをホスト・コンピュータからオフロードして、ローカル・エリア・ネットワーク上の「近接する」コンピュータ上で実行することができる。
【００１５】
図１のコンピュータ２７に関連して示すように、或る状況では、複数のモデルを単一のコンピュータ上で実行することができる。コンピュータ２７は、モデル２６及び２８を実行し、それらは、それぞれコントロール・パネル（それぞれ、３５及び３７）及びＯＳＣＯＰＥ（それぞれ、３６及び３８）に関連している。
【００１６】
システム・モニタ３１は、コンピュータ２９上で実行され、モデル２２、２４、２６、２８のパラメータ、及びそれらの間の接続を制御する。この例示の実施形態では、コントロール・パネル３２、３５、３７が、それぞれ、単一のモデル（それぞれ、２４、２６、２８）を制御及び監視し、システム・モニタ３１は、分散型シミュレーション・システム２０全体を管理するように設計されている。コンピュータ２９上ではＯＳＣＯＰＥ３９も実行しており、これは、例えば、モデル２２の１つ又は複数の変数又は変数の関数を監視する。
【００１７】
コンピュータ２９上で実行している「システム・モニタ」アプリケーション３１（以下に更に詳細に説明する）は、モデルのパラメータを設定し、モデル間の接続を制御し、それらの機能を監視し、シミュレーションにおける関連する事実、パラメータ及びイベントを記録する。システム・モニタ３１の幾つかの機能について、以下に更に詳説する。
【００１８】
次に、図２を参照しながら、コンピュータ２３及び２５の或る種の機能コンポーネントを説明する。モデル・ホスト・コンピュータ２３は、プロセッサ４１を含む。プロセッサ４１は、或る実施形態では、１つ又は複数のペンティアム（登録商標）ＩＩＩ又はペンティアム（登録商標）４プロセッサ（米国カリフォルニア州、サンタクララのインテル社が供給）、アスローン（Ａｔｈｌｏｎ）プロセッサ（米国カリフォルニア州、サニベールのアドバンスト・マイクロ・デバイシーズ社（Ａｄｖａｎｃｅｄ　Ｍｉｃｒｏ　Ｄｅｖｉｃｅｓ，Ｉｎｃ．）が供給）、又はパワーＰＣプロセッサ（米国テキサス州、オースティンのモトローラ社の半導体製品部門が供給）などのような、従来の集積回路マイクロプロセッサ構成である。
【００１９】
記憶装置４３は、例えば、プログラム、モデル、ログ、及びその他のデータのための記憶を含めての、コンピュータ２３が必要とするデータ記憶を提供する。記憶装置４３には、幾つか例を挙げると、１つ又は複数のタイプのソリッドステート電子メモリ、磁気メモリ、又は光メモリを含めることができる。記憶装置４３には、非限定的な例として、ソリッドステート電子ランダム・アクセス・メモリ（ＲＡＭ）、順次アクセス可能メモリ（ＳＡＭ）（先入れ先出し（ＦＩＦＯ）型の種のものや、後入れ先出し（ＬＩＦＯ）型の種のものなど）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、電気的プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、又は電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、光ディスク・メモリ（ＤＶＤやＣＤ−ＲＯＭなど）、磁気的に符号化されるハード・ディスク、フロッピー（登録商標）・ディスク、テープ、又はカートリッジ媒体、或るいは、これらのメモリ・タイプの任意の組合せを含めることができる。また、記憶装置４３は、揮発性、不揮発性、又は、揮発性型と不揮発性型のハイブリッドの組合せであってもよい。
【００２０】
オプションの入力デバイス（１又は複数）４５には、幾つか代表的な例を挙げると、キーボード、マウス、トラック・ボール、ライト・ペン、及び／又はマイクロフォンを含めることができる。また、オプションの出力デバイス（１又は複数）４７には、この場合も幾つか代表的な例を挙げると、１つ又は複数のモニタ、ラウドスピーカ、プリンタ、及び／又はその他の記録装置を含めることができる。
【００２１】
オペレーティング・システム４９は、ＷＩＮＤＯＷＳ（Ｒ）オペレーティング・システム（米国ワシントン州、レッドモンドのマイクロソフト社が発表）又はＭＡＣ　ＯＳ（Ｒ）（合衆国カリフォルニア州のクパチーノのアップル・コンピュータ社が発表）などの汎用オペレーティング・システムである。当業者は、過度に実験を行うことなく、その他のオペレテーリング・システムを使用することができる。
【００２２】
オペレーティング・システム４９上には計算プラットフォーム５１が実行されており、これは、ＭＡＴＬＡＢ（米国マサチューセッツ州、ナティックのＭａｔｈＷｏｒｋｓ社が発表）などの汎用計算及び分析パッケージである。幾つかの代替のシミュレーション・プログラム及びプラットフォームの構成について、コンピュータ２５及び２７に関連して以下に説明する。しかし、コンピュータ２３の場合、ＳＩＭＵＬＩＮＫ（これも、ＭａｔｈＷｏｒｋｓ社が発表）として知られる追加のシミュレーション・ツールボックス５２が含まれており、それによって、サブシステム・モデル・インプリメンテーション２２のための分散型シミュレーションＡＰＩの組み込みを可能にしている。この例では、モデル２２は、ＳＩＭＵＬＩＮＫツールボックス５２及び分散型シミュレーション・インターフェース５５で定義されているプロシージャ及び／又はオブジェクトを参照して、ＭＡＴＬＡＢプログラミング言語で書かれる。インターフェース５５は、本明細書で更に説明しているように、ＡＰＩを提供し、ＡＰＩは、モデル２２が、他のコンピューティング・デバイスからの接続をプログラム化されたように制御すること、及びそれらを介して交換されたデータを処理することを可能にする関数を含む。
【００２３】
コンピュータ２５は、記憶装置６３に記憶されているプログラムを使って、プロセッサ６１が制御する（この場合、プロセッサ６１及び記憶装置６３は、それぞれ、プロセッサ４１及び記憶装置４３に関連して上述したように、適切なタイプであればどのようなものでもよい）。オプションの出力デバイス（１又は複数）６７及びオプションの入力デバイス（１又は複数）６５は、これも、人であるユーザとの対話を容易にする。オペレーティング・システム６９は、この例では、マイクロソフト社発表のＷＩＮＤＯＷＳ２０００（Ｒ）オペレーティング・システムである。モデル２４は、Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｖｉｓｕａｌ　Ｂａｓｉｃ又はＪＡＶＡ（登録商標）などの１つ又は複数のシステム・プログラミング言語によって書かれているスタンドアローン・アプリケーションとして、ＯＳ６９上で実行される。
【００２４】
ブラウザ７１は、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）ファイル及びＪＡＶＡ（登録商標）アプレット（システム・コントロール・アプレット３２など）などのような、ネットワーク２１を介して利用可能な資源へのアクセス及びそれらの閲覧を可能にする。ブラウザ７１は、例えば、ネットスケープ・ナビゲータ（Ｎｅｔｓｃａｐｅ　Ｎａｖｉｇａｔｏｒ）（Ｒ）（米国カリフォルニア州、パロ・アルトのサン・マイクロシステムズ社が発表）である。ＯＳＣＯＰＥアプリケーション３３及び３４は、モデル２４から状態関連の情報を読み取り、それを、出力デバイス（１又は複数）６７によって出力としてユーザへ送る。インターフェース５５と同様に、分散型シミュレーション・インターフェース７５は、通信関連の機能をモデル２４に提供する。
【００２５】
図３は、コンピュータ２７及び２９のコンポーネントを示す（図１も参照のこと）。コンピュータ２７において、記憶装置８３、オプションの入力デバイス（１又は複数）８５、及びオプションの出力デバイス（１又は複数）８７は、４３、４５及び４７と類似したものである（ただし、必ずしも同じである必要はない）。ここで、再び、サブシステム・モデル・インプリメンテーション２６、２８は、幾つか例を挙げるならば、Ｃ、Ｃ＋＋、Ｆｏｒｔｒａｎ、Ｖｉｓｕａｌ　Ｂａｓｉｃ又はＪＡＶＡ（登録商標）などの１つ又は複数のシステム・プログラミング言語で書かれているスタンドアローン・アプリケーションである。プロセッサ８１は、特にシミュレーション計算のために適合化された、特注設計の特定用途向け集積回路（ＡＳＩＣ）である。特注設計のシミュレーション・オペレーティング・システム８９は、サブシステム・モデル・インプリメンテーション２６及び２８を実行し、これらは、分散型シミュレーション・インターフェース８８を介して、互いに、およびシステム２０内のその他のモデルと通信を行う。コントロール・パネル・アプリケーション３５及びＯＳＣＯＰＥアプリケーション３６は、モデル２６に接続して、シミュレーション・オペレーティング・システム８９上で実行する。オペレーティング・システム８９は、モデル２８と関連して、コントロール・パネル３７及びＯＳＣＯＰＥ３８も実行する。上記に概説したように、また以下により詳細に説明するように、システム・モニタ・アプリケーション３１は、オペレーティング・システム９９上で実行し、システム２０に対するコマンド及び制御機能を提供する。ＯＳＣＯＰＥアプリケーション３９もオペレーティング・システム９９上で実行し、コンピュータ２３上のモデル２２からの状態関連情報の出力を、コンピュータ２９でユーザに表示する（図１参照）。
【００２６】
コンピュータ２９は、プロセッサ９１、記憶装置９３、入力デバイス（１又は複数）９５、及び出力デバイス（１又は複数）９７を含む（コンピュータ２３中の対応するコンポーネント、すなわちコンポーネント４１、４３、４５及び４７に類似したものであるが、必ずしも同じである必要はない）。オペレーティング・システム９９は、例えば、Ｒｅｄ　Ｈａｔ　Ｌｉｎｕｘ（合衆国ノースカロライナ州、ダーラムのレッドハット社が発表）などのような、ＵＮＩＸ（登録商標）又はＵＮＩＸのようなオペレーティング・システムである。
【００２７】
図１〜図３に関する上記の記述は、コンピューティング資源の幾つかの使用法及び構成、及び、コンポーネント、アプリケーション、アプレット、モデル、及びシステム２０のその他の物理的及び機能的部分の間の接続及び関係の幾つかの説明を示したものであるが、当業者であれば、これら又はその他の物理及び／又は仮想のコンフィギュレーションを使って、本発明による分散型シミュレーション・システムを実装できることを理解されたい。例えば、本明細書で説明している何れかの機能を、システム中の少なくとも１つの他のコンポーネントと通信を行う何れかのコンピューティング・デバイス中に実装することができる。
【００２８】
次に、図１〜図３に示し、また図１〜図３に関連して説明してきたアイテムを参照し続けながら、本発明の一実施形態によるシミュレーションを実行するためのプロセスを、図４に関連して大まかに説明する。本発明の選択した一実施形態におけるモデル間の接続の制御に関しては、更なる詳細を、図７Ａ〜図７Ｃに関連して以下に説明する。図４のプロセス１００は、スタート点１０１で開始する。ブロック１１０で、様々なモデルが開始する。様々な実施形態では、このイベントを各モデル毎に起動することができ、起動のための幾つか可能なトリガの例を挙げると、ローカル・ユーザのアクション（デスクトップ上のグラフィカル・ユーザ・インターフェース（ＧＵＩ）における身振り）、リモート・ユーザによって（例えば、ウェブ・ブラウザを介して、又は別の信号を使って）、又は、自動化プロセス（タスク・スケジューラによる呼び出しなど）などがある。当業者は理解されるであろうが、これらの実施形態の幾つかにおいては、オペレーティング・システム４９、６９、８９、９９、計算プラットフォーム５１、シミュレーション・ツールボックス５２、サブシステム・モデル・インプリメンテーション２２、２４、２６、２８、及び分散型シミュレーション・インターフェース・ソフトウェア５５、７５、８８がメモリにロードされ、シミュレーション・パラメータで初期設定される。
【００２９】
ブロック１２０で、例えば、システム・モニタ・アプリケーション３１、又は特定のモデルそれぞれに関連するコントロール・パネル３２、３５、３７が、様々なモデル２２、２４、２６、２８のパラメータ（シミュレートされるシステムのコンデンサのキャパシタンスや燃料の濃度など）を設定する。当業者であれば考え及ぶように、様々な実施形態では、これらのパラメータを、ローカル・コンフィギュレーション・ファイル、ユーザの入力、システム・モニタ３１又はコントロール・パネルからの信号、又はその他のソースによって提供することができる。
【００３０】
ブロック１３０で、この場合もシステム・モニタ３１又はモデルのそれぞれのコントロール・パネル３２、３５、３７の制御の下で、モデルを他のモデルに接続する及び／又は接続解除することができる。例えば、ＴＣＰ／ＩＰプロトコル・スタックを使用している幾つかの実施形態では、ＩＰアドレス及びＴＣＰポート番号が取得されて（例えば、ローカル記憶装置４３、６３、８３、１つ又は複数のコマンド・ライン・パラメータ、システム・モニタ３１などから）、ＴＣＰ接続が開かれる。
【００３１】
ブロック１４０で、接続されたモデルは、制御及び状態関連の情報を交換し、ブロック１５０で、ＯＳＣＯＰＥ又はその他の監視プロセスに状態関連情報をエクスポートする。図１〜図３に示す例示の実施形態では、サブシステム・モデル・インプリメンテーション２４は、サブシステム・モデル・インプリメンテーション２２から、状態関連メッセージを受け取る。このメッセージは、サブシステム・モデル・インプリメンテーション２２から１つ又は複数の状態変数に関する情報を伝達する。次いで、サブシステム・モデル・インプリメンテーション２４は、そのシミュレーションにおいてその情報を使用する。例えば、サブシステム・モデル・インプリメンテーション２４は、幾つかのインプリメンテーションにおいて、状態関連メッセージからの情報を、シミュレートされるサブシステムへの入力として使用する。これらの実施形態の幾つかでは、サブシステム・モデル・インプリメンテーション２４からサブシステム・モデル・インプリメンテーション２２への状態関連メッセージは、サブシステム・モデル・インプリメンテーション２４中の１つ又は複数の状態変数に関する情報を、サブシステム・モデル・インプリメンテーション２２のオペレーションへの入力（１又は複数）として提供する。
【００３２】
ブロック１６０で、その他のコマンドがモデルによって処理され、判定ブロック１７０で、システム２０がオペレーションを継続すべきかどうかが判定される。継続すべき場合は、ブロック１２０で、プロセス１００は、コマンド処理ループの最初に戻る。判定ブロック１７０で、システム２０がオペレーションを続けるべきでないとされた場合は（負の結果）、プロセス１００は、エンド点１９９で終了する。
【００３３】
図４に、プロセス１００を線形の単一スレッドのタスクとして示してあるが、当業者であれば思い及ぶように、複数のコンピューティング・デバイス上のマルチスレッド形態で、又は別の制御フローで実装することができる。
【００３４】
この例示的な実施形態では、分散型シミュレーション・インターフェース５５、７５、８８は、様々なサブシステム・モデル・インプリメンテーション２２、２４、２６、２８の開発のためのアプリケーション・プログラミング・インターフェース（ＡＰＩ）を公開する。このＡＰＩ中の関数は、そのＡＣＳＬバージョンを下記の表１に示すが、サブシステム・モデル・インプリメンテーションのプログラマが、他のサブシステム・シミュレーションからインポートする又はそこへエクスポートする変数を制御することを可能にする。
【００３５】
【表１】
2004510219.tif 000003
この例示的実施形態では、ＡＤＤ＿ＰＯＲＴ又はＯＳＣＯＰＥ関数がそれぞれ呼び出される度に、ゼロから始まるポート・インデックス番号（ＰＩＮ）及びＯＳＣＯＰＥインデックス番号（ＯＩＮ）が順次に割り当てられる。次いで、ＯＳＣＯＰＥが特定のモデルへの接続を要求すると、そのモデルは、要求側アプリケーション（又はアプレット）を、次の利用可能なＯＳＣＯＰＥインデックス番号へ、もし別のものが存在する場合には、接続する。
【００３６】
即ち、例示の実施形態では、データの交換の間の間隔を、シミュレーションを実行する前に、モデルのプログラマが表１に示すコマンドを使って設定する。所与のポートについての交換が、シミュレーション時間中に、モデル時間を基準系として使って、一定の間隔（他のポートに使用される間隔と同じであっても異なってもよい）で行われる。或る代替の実施形態では、リアルタイム又は他の外部の基準系が使用され、他の実施形態では、本明細書で説明しているように、間隔が動的に制御される。
【００３７】
表１に示す関数は、システム２０内で利用可能な様々なシミュレーション環境に対処するように、様々な形態で提供される。例えば、関数を、ダイナミック・リンク・ライブラリ（ＤＬＬ）、ソース・コード・ライブラリ、デバイス・ドライバ、オペレーティング・システムＡＰＩ、又は当業者であれば思い及び、かつその実装環境の制約を考慮した上で許容できるその他のフォーマットで実装することができる。
【００３８】
図７Ａ〜図７Ｃには、シミュレーション制御メッセージを処理するためのメッセージ処理ループを示す。この例は、当業者であれば、追加のメッセージ処理タスク、又は本発明の所与のインプリメンテーションで発生し得るその他のイベントを含むように、容易に変更することができる。更に、本発明の様々な実施形態において、非メッセージ・ベースの制御メカニズムを使用することができる。
【００３９】
次に、図７Ａ〜図７Ｃに関連して、所与のモデルに対するメッセージ処理ループ３００を説明する。要約すると、ループ３００は、スタート点３０１で開始し、部分３１０でシステム・モニタの接続アクティビティ（活動）を処理し、部分３２０でコントロール・パネルのアクティビティを処理し、部分３３０でコントロール・パネルからのコマンドを処理し、部分３５０で、入来するモデル接続要求を処理し、部分３６０で入来するＯＳＣＯＰＥ接続アクティビティを処理し、部分３７０でシステム・モニタ・コマンドを処理し、エンド点３９９で終了する。
【００４０】
ループ３００の部分３１０では、モデルは、ブロック３１２で、それが、システム・モニタ・プログラムからの入来する接続要求を聞いている（聞いている）ことを確認する。判定ブロック３１４で、システム・モニタの接続要求が保留状態である（正の結果）と判定すると、ブロック３１６で、接続を試みているシステム・モニタが、そのローカル・モデル（１又は複数）のアクティブなシステム・モニタとして確立される。次いで、又はそのような接続がない場合（判定ブロック３１４での負の結果）には、部分３１０での処理は終了し、ループ３００は部分３２０へ進む。
【００４１】
ループ３００は、部分３２０では、最初に、ブロック３２１でシステムが入来するコントロール・パネルの接続を聞いていることを確認することによって、入来するコントロール・パネル接続アクティビティを処理する。判定ブロック３２３で、コントロール・パネル・アプリケーションからの入来する接続が保留状態である（正の結果）と判定すると、ブロック３２５で、そのコントロール・パネル・アプリケーションがアクティブなコントロール・パネルとして確立される。次いで、ブロック３２７で、ローカル・モデルの現在のパラメータ及びポート情報がそのコントロール・パネルへ送られる。システム・モニタがアクティブである場合、ブロック３２９で、それに新しい接続を通知する。その時点で、又は、ブロック３２３で、外部コントロール・パネルからの接続が何も待機していない（負の結果）と判定した場合には、ループ３００は、部分３２０を越えて部分３３０に進む。
【００４２】
ループ３００は、部分３３０では、保留中のコントロール・パネルのコマンドがあれば、それを処理する。判定ブロック３３１で、コントロール・パネルが現在ローカル・モデルに接続されているかどうかを判定する。接続されていない（負の結果）場合、ループ３００は、部分３３０を越えて（プレースホルダＡを経由して）部分３５０に進む。コントロール・パネルが接続されている（判定ブロック３３１での正の結果）と判定した場合は、判定ブロック３３３で、そのコントロール・パネルからのコマンドが待機しているかどうかを判定する。待機していない場合（判定ブロック３３３での負の結果）、ループ３００は、部分３５０に進む（プレースホルダＡを経由して）。
【００４３】
判定ブロック３３３で、コマンドが待機している（正の結果）と判定した場合、ブロック３３５でそのコマンドを読み取り、ブロック３３７で、「設定パラメータ」の関連するパラメータ名及び値を読み取る。ブロック３３９で、所与のパラメータを更新して新しい値を反映する。システム・モニタが接続されている場合は、ブロック３４１で、それに更新を通知する。
【００４４】
判定ブロック３４３は、コントロール・パネル・コマンドによって、リモート・モデルを接続／接続解除するためのオプションの方法を実現する。ブロック３３７で読み取ったパラメータが有効なポート・インデックス番号ではない（判定ブロック３４３での結果が「Ｘ」）場合、ループ３００は部分３５０に進む（プレースホルダＡを経由して）。パラメータ名が有効なポート・インデックス番号であって、対応するポートのステータス（状態）値が１ではない（判定ブロック３４３での負の結果）場合は、ブロック３４５で、そのポートを介した接続を閉じ、ループ３００は部分３５０へ進む（プレースホルダＡを介して）。
【００４５】
ポートのステータス値が１（判定ブロック３４３での正の結果）の場合は、ブロック３４７で、コントロール・パネルからモデルの接続パラメータ（例えば、リモート・モデル・ホストのＩＰ番号、リモート・モデルのインデックス番号、リモート・ポートのインデックス番号、ローカル・モデルのインデックス番号などが含まれる）を読み取る。次いで、ブロック３４９で、識別したローカル・モデルと識別したリモート・モデルとの間の接続を開始し、ループ３００は部分３５０を継続する。
【００４６】
ループ３００は、部分３５０で、他のモデルから入来する接続要求を処理する。ブロック３５１で、サーバがモデルの接続要求を聞いていることを確認する。このような要求が待機していない（判定ブロック３５３での負の結果）場合、ループ３００は部分３６０へ進む。モデルの接続要求が待機している（ブロック３５３での正の結果）場合、ブロック３５５で、要求されているＰＩＮを読み取り、ブロック３５７で、リモート・モデルへの接続を完了する。次いで、ブロック３５９で、内部ポートのステータスを更新し、ループ３００は部分３６０へ進む。
【００４７】
部分３６０では、ループ３００は、ＯＳＣＯＰＥアプリケーション又はアプレットから入来する接続要求を処理する。最初に、ブロック３６１で、モデルがこのような接続を聞いていることを確認する。次いで、ＯＳＣＯＰＥ接続要求が待機していない（判定ブロック３６３での負の結果）場合、ループ３００は部分３７０に進む。このような要求が待機している（判定ブロック３６３での正の結果）場合、ブロック３６５で、次の利用可能なＯＳＣＯＰＥ識別子を決定し、ブロック３６７で、そのＯＳＣＯＰＥ識別子のメタデータ（例えば、要求されているポートを介して利用可能な変数の数、それらの変数の名前、モデルの名前）を、ＯＳＣＯＰＥアプリケーション又はアプレットへ送る。ブロック３６９で、アクティブなシステム・モニタ（１つが接続されている場合）に、そのアクティビティを通知する。ループ３００は部分３７０を継続する。
【００４８】
ループ３００の部分３７０で、システム・モニタ（１つが接続されている場合）からのコマンドを処理する。最初に、ブロック３７１で、システム・モニタが本当に接続されているかどうかを調べる。接続されていない（負の結果）場合、エンド点３９９でループ３００は終了する。システム・モニタが接続されている（判定ブロック３７１での正の結果）場合、判定ブロック３７３で、そのシステム・モニタからのコマンドが、処理されるために待機しているかどうかを判定する。システム・モニタのコマンドが待機していない（判定ブロック３７３での負の結果）場合、エンド点３９９でループ３００は終了する。コマンドが待機している（判定ブロック３７３での正の結果）場合、ループ３００は図７Ｃに示す部分４００に進む（プレースホルダＢを経由して）。部分４００での処理が完了すると、ループ３００はエンド点３９９に到達して終了するか、又は、再びスタート点３０１で開始することによって繰り返す。
【００４９】
図７Ｃに示すループ４００中のブロック４０１で、要求されたコマンドをシステム・モニタから読み取る。判定ブロック４１１で、システム・モニタがパラメータ及び／又はポート・データの表示を要求しているかどうかを判定する。要求している場合は、ブロック４１３で、要求されているアイテムの名前を読み取る。その名前が「ＰＡＲＡＭＳ（パラメータ）」又は「ＡＬＬ（すべて）」である（判定ブロック４１５での正の結果）場合、ブロック４１７で、モデルの各パラメータの名前及び対応する値をシステム・モニタに送る。次いで（又は、判定ブロック４１５で負の結果の場合）、判定ブロック４１９で、ブロック４１３で読み取った名前が「ＰＯＲＴＳ（ポート）」又は「ＡＬＬ（すべて）」であるかを判定する。そうである場合（判定ブロック４１９での正の結果）、ブロック４２１で、モデルの各ポートの名前及びステータスをシステム・モニタに送る。しかし、判定ブロック４１９での結果が負の場合、ブロック４２３で、指定した（ブロック４１３で）パラメータの名前及び値をシステム・モニタに送る。ブロック４２１又は４２３の何れかのアクションの後、ループ３００は、終了点３９９に戻る（プレースホルダＣを経由して）。
【００５０】
ブロック４０１で読み取ったコマンドが、１つ又は複数のパラメータの表示に対する要求ではない（すなわち、判定ブロック４１１での負の結果）場合、ブロック４３１で、そのコマンドがモデルの登録のためのものであるかどうかを判定する。そうである場合は、ブロック４３３で、そのモデル名を読み取り、ブロック４３５でそのモデルを登録する。次いで、ループ３００はエンド点３９９に戻る（プレースホルダＣを経由して）。
【００５１】
ブロック４０１で読み取ったコマンドがモデルの登録のためのものでもない（判定ブロック４３１での負の結果）場合、判定ブロック４４１で、そのコマンドがパラメータ値を設定する要求であったかどうかを判定する。そうであれば（正の結果）、ブロック４４３で、その名前及び新しい値を読み取り、ブロック４４５で、指定したパラメータの値を更新する。次いで、ブロック４４７で、ロギング、デバッギング、又はその他の目的で、すべてのパラメータ及びポートの名前及び値をコントロール・パネルに送る。次いで、ループ３００はエンド点３９９に戻る（プレースホルダＣを経由して）。
【００５２】
ブロック４０１で読み取ったコマンドが、モデルのパラメータを設定する要求でもない（判定ブロック４４１での負の結果）場合、判定ブロック４５１で、そのコマンドがローカル・モデルをリモート・モデルに接続する要求であるかどうかを判定する。そうであれば（正の結果）、ブロック４５３で、その接続を確立するためのパラメータ（上記のブロック３４７に関連する説明を参照）を読み取る。次いで、ブロック４５５で、リモート・モデルとローカル・モデルとの間の要求されている接続を開始し、確立する。ループ３００は、ブロック４４７で、継続して、上述のようにパラメータ及びポートの値及びステータスをコントロール・パネルへ送り、エンド点３９９に戻る（プレースホルダＣを経由して）。
【００５３】
ブロック４０１で読み取ったコマンドがモデルを接続する要求ではない（判定ブロック４５１での負の結果）場合、ブロック４６１で、そのコマンドがモデルを接続解除するコマンドであるかどうかを判定する。そうであれば（正の結果）、ブロック４６３で、接続解除すべきポートを読み取る。次いで、判定ブロック４６５で、すべてのポートの接続解除が要求されているかどうかを判定する。そうであれば（正の結果）、ブロック４６７ですべてのポートを閉じ、上述のように、ループ３００は、ブロック４４７で、コントロール・パネルへのパラメータ及びポート情報のレポート（報告）を開始する。特定のポートを閉じることが要求されていた（判定ブロック４６５での負の結果）場合、ブロック４６９で、その特定のポートを閉じ、ブロック４４７で、上述のように、ループ３００は、パラメータ及びポート情報のレポートを続ける。
【００５４】
判定ブロック４６１で、ブロック４０１で読み取ったコマンドが接続解除の要求ではないと判定した場合には、そのコマンドは無視され、ループ３００はエンド点３９９に進む（プレースホルダＣを経由して）。当業者であれば理解されるであろうが、本発明の様々な実施形態は、部分４００に関連して説明したコマンドとは異なる、又はそれに加えての、又はその数よりも少ないコマンドを処理する場合があることに注意されたい。当業者は、図７Ａ〜図７Ｃに関連して説明した「設定パラメータ」コマンド以外の他のコマンドもコントロール・パネルを介して利用可能なことを理解するであろうことに注意されたい。
【００５５】
ループ３００は、せいぜい１つのシステム・モニタと１つのコントロール・パネルを所与のモデルに同時接続することを例示していることにも気が付かれよう。本発明の或る実施形態では、両タイプの制御アプリケーションが接続されて動作することができ、別の実施形態は、両タイプの制御アプリケーションの同時接続を妨げることがあり、また、別の実施形態では、特定の機能については両方が接続されることを要求することがある。更に別の実施形態では、所与のモデルに対して、１タイプ又は両タイプの制御アプリケーションの複数のものによる例を可能にするものもある。
【００５６】
ループ３００の説明をより理解し易くするために、使用している通信プロトコル、送られる及び／又は期待される肯定応答、及びエラー処理に関する詳細を省略することにより、簡略化してあることに留意されたい。例えば、モデル、ポート、ＯＳＣＯＰＥ、及びその他の識別番号及びハンドルは、使用する前に、分散型シミュレーション・インターフェース５５、７５、８８によって妥当性確認を行うことが好ましい。或る実施形態ではエラーが無視されるが、別の実施形態では、エラーによってログ・エントリが作成され、アラームが始動され、かつ／又はシステムが停止される。
【００５７】
次に、本発明の一形態によるＯＳＣＯＰＥアプリケーションの例示的実施形態を、図５と関連して説明する。ＯＳＣＯＰＥアプリケーションは、システム２０の様々なモデル２２、２４、２６、２８の特定の状態関連情報へのアクセスを容易にする。制御エレメント２０２、出力フォーマット・エレメント２０４及びグラフ・エレメント２０６を含むグラフィカル・ユーザ・インターフェース（ＧＵＩ）２００は、ユーザのＯＳＣＯＰＥアプリケーションとのユーザ対話を容易にする。制御エレメント２０２は、モデル・ホスト（ＩＰアドレス）、モデル・インデックス番号（ＭＩＮ）、及びディスプレイの出力フォーマットについてのユーザの選択を受け付ける。ユーザが「接続」チェック・ボックスを選択すると、ＯＳＣＯＰＥアプリケーションは、選択されたモデルへの接続を試みる。
【００５８】
選択されたモデルからシミュレーション・データを受け取ると、それを出力グラフ２０６中に表示する。様々なユーザ・インターフェース・コンポーネント２０４は、ユーザが、広範にわたる様々な表示用フォーマットを選択することを可能にする。これの幾つか例を挙げると、グラフ化する変数を選択すること、そのグラフを１つ又は複数の寸法でスケーリングすること、取得した範囲のデータ・ポイントを使ってグラフを自動的にスケーリングすること、グラフ化された１つ又は複数の信号中の１つ又は複数のトリガ点に基づいて、繰り返しトレースを表示すること、ディスプレイ中のサンプル点を接続すること、及び／又はＦＦＴ（高速フーリエ変換）によって信号を変形することなどが含まれる。この説明では、出力はグラフ２０６にグラフ化され、グラフ２０６は、例えば、磁気ディスク上のグラフィック・ファイルを含めての、任意の適切な媒体上に任意の適切なフォーマットで保存することができる。当業者は、特定の実施形態において、必要又は所望により、他の選択、制御、及び出力フォーム、及び技術を使用できることを理解されよう。例えば、信号データを、図２の「出力デバイス」６７を含むプリンタで、ページ、プロット、又はストリップ・チャートの形でプリントすることができる。
【００５９】
図８に、システム２０で使用するＧＵＩを示す。チェック・ボックス２２１は、ユーザの入力に基づいて、特定のモデルとの接続を確立又は解除する。モデル情報エリア２２３は、接続されたモデルのパラメータの値、及びそのモデルのポートのステータスを反映する。「パラメータ」及び「値」フィールドを使って、コントロール・パネルが接続されているモデルのパラメータを変更することができ、「ローカルＩ／Ｏポート」及び「ポート・ステータス」エレメントを使って、モデルを、制御されているモデルに接続したり、それから接続解除することができる。リモート・モデルに接続したい場合は、ＧＵＩ２２０のエリア２２５において、ＩＰアドレス、ポート識別番号、及びモデル識別番号を入力する。この実施形態では、ユーザが情報をモデルへ提出することを望む度に、「提出」ボタン２２７を選択し、当技術分野で知られている方法、技術、及びプロトコルを使って、その情報がモデルへ伝送される。テキスト・ボックス２２９で、接続されているモデルから受け取ったメッセージ、及びエラー・メッセージがある場合はそのエラー・メッセージが、ユーザに示される。
【００６０】
当業者には明らかなように、従来及び／又は代替のコンポーネントが、この記載で説明しているコンピューティング・デバイスの何れかの中に存在すること、又はその何れかに取り付けられることも可能である。同様に、示してあるネットワークは、本明細書に示していないデバイスに接続することもできる。そのデバイスには、分散型シミュレーションに何の役割も果たさないデバイスも含まれるが、それのみに限定されるわけではない。
【００６１】
本発明の一つの代替の実施形態では、サブシステム・モデル・インプリメンテーション２２、２４、２６、２８は、モデルが実行されている間に、動的に接続及びコンフィギュレーションされる。場合によっては、この動的な接続が、それぞれのインプリメンテーション中でモデル化されている物理コンポーネントの物理的接続又は再接続をシミュレートする。
【００６２】
別の代替の実施形態では、複数のシミュレーション・プログラムが一緒になってシステムをシミュレートし、各シミュレーション・プログラムが、そのシステムの異なるサブシステムをシミュレートする。更に別の実施形態では、異なる人々が、ネットワーク中の他のコンピュータによって、又はそれらを介して閲覧及び／又は制御することができる様々なサブシステム・モデルのパラメータ及びデータを指定する。
【００６３】
更に別の実施形態の一部を図６に示す。複数のコンピュータ２５１が、ネットワーク２１と通信を行うサブネットワーク２６１を形成している。各コンピュータ２５１は、サブシステムの一部をモデル化し、サブネットワーク２６１中のゲートウェイ・コンピュータ２５１ａは、サブネットワーク２６１中のコンピュータとネットワーク２１の残りの部分との間で送られる状態関連メッセージのための通信ゲートウェイの役割を果たす。ゲートウェイ・コンピュータ２５１ａは、１つ又は複数のモデルをホストする場合もあるし、しない場合もある。この構成の或る実施形態では、非ゲートウェイ・コンピュータ２５１上で行われるシミュレーションは、独立して（すなわち、何れかの他のモデルからの状態情報に依存することなく）行われる。このような場合、ゲートウェイ２５１ａは、それらのサブシステム・シミュレーションの結果を収集して、それらを統合するか、又はシステム２０中の他のモデル又は他のコンポーネントへ生データと共に転送することができる。
【００６４】
本発明の別の形態では、ネットワーク中の複数のコンピュータ上で、複数の相互関係があるシミュレーション・プログラムが実行される。複数の相互関係があるシミュレーション・プログラムは、並列に動作し、互いにデータを交換する。この形態の或る実施形態では、様々なシミュレーション・プログラムが、それぞれ、同じソフトウェア・パッケージ上で実行され、そのようなソフトウェア・パッケージには、ＡＣＳＬ（米国アラバマ州、ハウンツビルのＴｈｅ　Ａｅｇｉｓ　Ｔｅｃｈｎｏｌｏｇｉｅｓ　Ｇｒｏｕｐ，Ｉｎｃ．が発表）、Ｓａｂｅｒ（合衆国カリフォルニア州、フリモントのＡｖａｎｔ！　Ｃｏｒｐｏｒａｔｉｏｎが発表）、ＭＡＴＬＡＢ／ＳＩＭＵＬＩＮＫ又はＥＡＳＹ５（米国イリノイ州、シカゴのボーイング社（Ｔｈｅ　Ｂｏｅｉｎｇ　Ｃｏｍｐａｎｙ）が発表）などがある。この形態の他の実施形態では、様々なサブシステム・シミュレーションが異質のグループのソフトウェア／パッケージ（例えば、ＡＣＳＬモデルを１台のコンピュータ上に、そして２つのＭＡＴＬＡＢ／ＳＩＭＵＬＩＮＫモデルそれぞれを他の別個のコンピュータ上に）によって、実行される。
【００６５】
この形態の一実施形態では、複数のシミュレーション・プログラムが一緒になって実システムをシミュレートし、その場合、各シミュレーション・プログラムが、実システムの異なる実サブシステムをシミュレートする。この形態の別の実施形態では、様々な人々が、システム２０中の他のコンピュータによって、又はそれらを介して、閲覧及び／又は制御することができる様々なシミュレーション・プログラムのパラメータ及びデータを指定する。
【００６６】
本発明の別の形態では、コンピュータ読取可能媒体は、（ａ）第１の状態変数を有する第１のシミュレーション・モデルを実施し、（ｂ）別のプロセッサによって実行されるプログラムから第１のコマンド信号を受け付け、（ｃ）第１のコマンド信号に基づいて、第１のシミュレーション・モデルを管理するための、第１のプロセッサによって実行可能なプログラミング命令で符号化され、同様に、第２のコンピュータ可読媒体は、（１）第１のコマンド信号を第１のプロセッサへ送り、（２）出力デバイスに、シミュレーション時間の間に第１の状態変数に関連する情報を反映する第１の出力を作成させるための、出力デバイスと通信を行う第２のプロセッサによって実行可能なプログラミング命令で符号化される。本発明のこの形態の一実施形態では、第１のシミュレーションにおける１つ又は複数の状態変数の値に関連する情報を、リアルタイムの一定の間隔で、第２のシミュレーションへ転送する（又は、第２のシミュレーションから受け取る）。この形態の別の実施形態では、第１のシミュレーションにおける１つ又は複数の状態変数の値に関連する情報を、シミュレーション時間の一定の間隔で、第２のシミュレーションへ転送する（又は、第２のシミュレーションから受け取る）。この形態の更に別の実施形態では、第１のシミュレーションにおける１つ又は複数の状態変数の値に関連する情報を、シミュレーション時間の、システム中の１つ又は複数のモデルの状態（１又は複数）に応じて変化する間隔で、第２のシミュレーションへ転送する（又は、第２のシミュレーションから受け取る）。この形態の更に別の実施形態では、第１のシミュレーションにおける２つ又はそれ以上の状態変数の値に関連する情報を、第２のシミュレーションへ転送する（又は、第２のシミュレーションから受け取る）。更なる実施形態では、第１のシミュレーションにおける４つ又はそれ以上の状態変数の値に関連する情報を、第２のシミュレーションへ転送する（又は、第２のシミュレーションから受け取る）。この形態の更なる実施形態では、第１のシミュレーションにおけるｎ≧２個の状態変数の値に関連する情報を、第２のシミュレーションへ転送し（又は、第２のシミュレーションから受け取り）、第１のシミュレーションが送った一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ≧２個の状態変数のそれぞれの値に関連する情報を含む。更なる実施形態では、第１のシミュレーションにおけるｎ≧２個の状態変数の値に関連する情報を第２のシミュレーションへ転送し（又は、第２のシミュレーションから受け取り）、第１のシミュレーションが送った一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ個の状態変数のうちのたった１つの変数の値に関連する情報を含む。この形態の別の実施形態では、１つのプロセスが要求を行うが、第１のシミュレーションが一連の状態関連メッセージを異なるプロセスへ送る。更に別の実施形態では、プロセスが一連の状態関連メッセージを受け取り、出力デバイス（例えば、モニタやプリンタ）上に、その一連のもののうちの複数のメッセージが運ぶ情報を表示する（例えば、［シミュレーション］時間に対する状態変数の関数のグラフ）。
【００６７】
本発明の更に別の形態は、複数のコンピュータ上で動作する複数のシミュレーションを含む。システム・モニタは、各シミュレーションと通信を行い、各シミュレーションをコンフィギュレーション、制御、及び／又は調整することができる。この形態の一実施形態では、ローカル・コントロール・パネル・アプレットが各シミュレーションに対して提供され、これは、その特定のシミュレーションをコンフィギュレーション、制御、及び／又は調整することができる。
【００６８】
或る実施形態では、異なるサブシステム・モデル・インプリメンテーション２２、２４、２６、２８が、積分のために異なる技術及び／又はパラメータを使用する。例えば、或るモデルが、新しい値がミリ秒毎に概算される有限オイラー積分技術（ｆｉｎｉｔｅ　Ｅｕｌｅｒ　ｉｎｔｅｇｒａｔｉｏｎ　ｔｅｃｈｎｉｑｕｅ）を使い、別のモデルが、概算間隔が１マイクロ秒毎のルンゲクッタ積分法（Ｒｕｎｇｅ−Ｋｕｔｔａ　ｉｎｔｅｇｒａｔｉｏｎ）を使う場合もある。このタイプの実施形態は、高速で変化する信号及び低速で変化する信号を含むシステムのより効率的なシミュレーションを可能にするものであり、それは、低速で変化する信号を頻繁にサンプリングしてコンピューティング資源を浪費することなしに、各サブシステムを適切なレートで「サンプリング」する。
【００６９】
或る実施形態では、シミュレーション開発のためにプラグイン・コンポーネントが提供され、この場合、サブシステム・モデル・インプリメンテーションの設計に「ブラック・ボックス」エレメントを置いて、シミュレーション中の１つ又は複数のその他のサブシステムを表す。「ブラック・ボックス」に対してパラメータがプログラムされ、そのパラメータはサブシステムの入力及び出力を定義するものであり、その入力及び出力は近接するサブシステムによって及びサブシステムへ提供される（それぞれに）。これらの実施形態の幾つかにおいては、「ブラック・ボックス」が、ＧＵＩシミュレーション設計ツールにおいてブロックで表される。サブシステム・モデル・インプリメンテーションにおける「ブラック・ボックス」に関連するフィールドは、その接続のネットワーキング・パラメータ（例えば、ＩＰアドレス及びＴＣＰポート番号）及びシグナリング・パラメータ（例えば、メッセージングの頻度及び変数の可用性）を示す。
【００７０】
当業者は、コンピュータ２３、２５、２７、２９、及びこの記述において説明しているその他のコンピュータが、特定のインプリメンテーションにおいて必要とされる又は所望される追加又は代替のコンポーネントを含むことができることを理解されよう。同様に、本発明の趣旨から逸脱することなく、追加又は代替のデバイスを、ネットワーク２１及び／又はサブネットワーク２６１（図１及び６を参照）に接続することができる。
【００７１】
本明細書で挙げているすべての出版物、先行出願、及びその他の文書は、それぞれが、個々に参照により組み込まれているかのように、また完全に記載されているかのように、参照によりその全体が本明細書に組み込まれている。
【００７２】
本発明を、図面及び前述の説明において詳細に示し、説明してきたが、それは例示的な性質のものとしてみなされるべきあり、制約的な性質のものとしてみなされるべきではない。好ましい実施形態のみを示し説明したのであり、当業者であれば思い及ぶであろうすべての変更及び改造が保護されることを要求する。
【図面の簡単な説明】
【図１】
図１は、分散型シミュレーション・システムのブロック図である。
【図２】
図２は、分散型シミュレーション・システムのモデル・ホスト・コンピュータの２つの実施形態のブロック図である。
【図３】
図３は、分散型シミュレーション・システムのシステム・モニタ・コンピュータ及びモデル・ホスト・コンピュータのブロック図である。
【図４】
図４は、分散型シミュレーションのフローチャートである。
【図５】
図５は、分散型シミュレーション・システムのＯＳＣＯＰＥアプリケーションのサンプル図である。
【図６】
図６は、サブネットワーク構成を含む分散型シミュレーション・システムの一部の概略図である。
【図７】
図７Ａは、或る分散型シミュレーション・システムで使用する制御メッセージ処理ループのフローチャートである。
図７Ｂは、或る分散型シミュレーション・システムで使用する制御メッセージ処理ループのフローチャートである。
図７Ｃは、或る分散型シミュレーション・システムで使用する制御メッセージ処理ループのフローチャートである。
【図８】
図８は、分散型シミュレーション・システムのコントロール・パネル・アプリケーションのサンプル図である。
【図１】
2004510219.tif 000004
【図２】
2004510219.tif 000005
【図３】
2004510219.tif 000006
【図４】
2004510219.tif 000007
【図５】
2004510219.tif 000008
【図６】
2004510219.tif 000009
【図７】
2004510219.tif 000010
2004510219.tif 000011
2004510219.tif 000012
【図８】
2004510219.tif 000013
【国際公開パンフレット】
2004510219.tif 000014
2004510219.tif 000015
2004510219.tif 000016
2004510219.tif 000017
2004510219.tif 000018
2004510219.tif 000019
2004510219.tif 000020
2004510219.tif 000021
2004510219.tif 000022
2004510219.tif 000023
2004510219.tif 000024
2004510219.tif 000025
2004510219.tif 000026
2004510219.tif 000027
2004510219.tif 000028
2004510219.tif 000029
2004510219.tif 000030
2004510219.tif 000031
2004510219.tif 000032
2004510219.tif 000033
2004510219.tif 000034
2004510219.tif 000035
2004510219.tif 000036
2004510219.tif 000037
2004510219.tif 000038
2004510219.tif 000039
2004510219.tif 000040
2004510219.tif 000041
2004510219.tif 000042
2004510219.tif 000043
2004510219.tif 000044
2004510219.tif 000045
2004510219.tif 000046
2004510219.tif 000047
2004510219.tif 000048
2004510219.tif 000049
2004510219.tif 000050
2004510219.tif 000051
2004510219.tif 000052
2004510219.tif 000053
2004510219.tif 000054
2004510219.tif 000055
【国際公開パンフレット（コレクトバージョン）】
2004510219.tif 000056
2004510219.tif 000057
【手続補正書】
【提出日】平成14年8月21日(2002.8.21)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の実行プロセスであって、
第１の言語でプログラムされ且つ第１の状態変数を有する第１のモデルを実施して第１のサブシステムをシミュレートし、
各状態関連メッセージが、前記第１のモデルにおけるシミュレーション時間中の異なる点ｔｍでの第１の状態変数の値に関連する情報を反映するものである、第１の一連の状態関連メッセージを送るものである
第１の実行プロセスと、
第２の実行プロセスであって、
前記第１の一連の状態関連メッセージを受け取り、
第２の言語でプログラムされ且つ前記第１の一連の状態関連メッセージから前記第１の状態変数の値を入力として取る第２のモデルを実施して、第２のサブシステムをシミュレートするものである
第２の実行プロセスと、
を備えるシステム。
【請求項２】
前記第２のモデルが第２の状態変数を有し、
前記第２のプロセスが第２の一連の状態関連メッセージを更に送り、その各状態関連メッセージが、前記第１のモデルにおけるシミュレーション時間中の異なる点ｔｎでの前記第２の状態変数の値に関連する情報をするものであり、
前記第１のプロセスが、前記第２の一連の状態関連メッセージを更に受け取り、
前記第１のモデルが、前記第２の一連の状態関連メッセージから前記第２の状態変数の値を入力として取る、
請求項１に記載のシステム。
【請求項３】
前記第１の一連の状態関連メッセージ中の少なくとも第１のメッセージに関して、該第１のメッセージが、前記第１のモデルにおけるシミュレーション時間中の点ｔ１での前記第１の状態変数の値に関連する情報を反映し、前記第２の一連の状態関連メッセージ中に、前記第１のモデルにおけるシミュレーション時間中の時点ｔ１での前記第２の状態変数の値を反映する第２のメッセージがある、請求項２に記載のシステム。
【請求項４】
一連の状態関連メッセージ中の少なくとも第１のメッセージに関して、該第１のメッセージが、シミュレーション時間中の点ｔ１での前記第１の状態変数の値を反映し、前記第２の一連の状態関連メッセージ中に、シミュレーション時間中の点ｔ１での前記第２の状態変数の値を反映する第２のメッセージがない、請求項２に記載のシステム。
【請求項５】
前記第１の一連の状態関連メッセージが、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ１での前記第１の状態変数の値に関連する情報を反映する第１のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ２での前記第１の状態変数の値に関連する情報を反映する第２のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ３での前記第１の状態変数の値に関連する情報を反映する第３のメッセージと
を含み、
前記第１のメッセージ、前記第２のメッセージ、及び前記第３のメッセージが、前記第１の一連の状態関連メッセージ内で連続しており、ｔ２−ｔ１＝ｔ３−ｔ２である、
請求項１に記載のシステム。
【請求項６】
前記第１の一連の状態関連メッセージが、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ１での前記第１の状態変数の値に関連する情報を反映する第１のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ２での前記第１の状態変数の値に関連する情報を反映する第２のメッセージと、
前記第１のモデルにおけるシミュレーション時間中の時間ｔ３での前記第１の状態変数の値に関連する情報を反映する第３のメッセージと
を備え、前記第１のメッセージ、前記第２のメッセージ、及び前記第３のメッセージが、前記第１の一連の状態関連メッセージ内で連続しており、かつｔ２−ｔ１≠ｔ３−ｔ２である、
請求項１に記載のシステム。
【請求項７】
前記第１の組のプログラミング命令が、前記第１のモデルのための第１のインターフェースを公開し、前記第１のインターフェースが、
前記第２の組のプログラミング命令が前記第１のモデルの第１の実質的な部分にアクセスすることを妨げ、
前記第２の組のプログラミング命令が前記第１のモデルの第２の実質的な部分にアクセスすることを許可する
ものであり、
前記第２の組のプログラミング命令が、前記第２のモデルのための第２のインターフェースを公開し、前記第２のインターフェースが、
前記第１の組のプログラミング命令が前記第２のモデルの第１の実質的な部分にアクセスすることを妨げ、
前記第１の組のプログラミング命令が前記第２のモデルの第２の実質的な部分にアクセスすることを許可する
ものである、
請求項１に記載のシステム。
【請求項８】
前記第１のモデルが第３の状態変数を有し、
前記第１の一連の状態関連メッセージ中の各メッセージが、シミュレーション時間中の時間ｔｍでの前記第３の状態変数の値に関連する情報を更に反映し、
前記第２のモデルが、前記第３の状態変数も、前記第１の一連の状態関連メッセージからの入力として取る、
請求項１に記載のシステム。
【請求項９】
複数の物理サブシステムを有する物理システムの動作をシミュレートするための方法において、
第１の物理サブシステムをシミュレートするステップと、
前記シミュレートする前記ステップにおいて前記第１の物理サブシステムの状態を特徴付けるｎ個の状態関連変数に関連する情報のエクスポートの要求を受け付けるステップと、
第１の一連の状態関連メッセージであって、各メッセージが前記ｎ個の状態変数の少なくとも１つの値に関連する情報を含むものである第１の一連の状態関連メッセージを送るステップと、
第２の物理サブシステムをシミュレートするステップと
を備え、
前記要求が、前記第２の物理サブシステムをシミュレートする前記ステップと関連して行われ、
前記第１の物理サブシステムが前記第２の物理サブシステムと対話し、
前記の少なくとも１つの状態変数が、前記第１の物理サブシステムと前記第２の物理サブシステムとの間の対話の少なくとも一部を特徴付ける、
方法。
【請求項１０】
前記第１の物理サブシステムをシミュレートする前記ステップが第１のプロセッサ上で実行され、
前記第２の物理サブシステムをシミュレートする前記ステップが前記第１のプロセッサ上で実行される、
請求項９に記載の方法。
【請求項１１】
前記第１の物理サブシステムをシミュレートする前記ステップが第１のプロセッサ上で実行され、
前記第２の物理サブシステムをシミュレートする前記ステップが第２のプロセッサ上で実行される、
請求項９に記載の方法。
【請求項１２】
ｎが少なくとも２である、請求項９に記載の方法。
【請求項１３】
ｎが少なくとも４である、請求項１２に記載の方法。
【請求項１４】
前記第１の一連の状態関連メッセージ中の少なくとも１つのメッセージが、前記ｎ個の状態変数のそれぞれの値に関連する情報を含む、請求項１２に記載の方法。
【請求項１５】
前記第１の一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ個の状態変数のすべてを含む組の第１の真部分集合の値に関連する情報を含む、請求項１２に記載の方法。
【請求項１６】
第３の一連の状態関連メッセージを送るステップを更に備え、
前記第３の一連の状態関連メッセージ中の少なくとも１つのメッセージが、ｎ個の状態変数のすべてを含む組の第２の真部分集合の値に関連する情報を含み、
前記第２の真部分集合が前記第１の真部分集合とは異なるものである、
請求項１５に記載の方法。
【請求項１７】
前記第１の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第１のレートでサンプルされ、
前記第３の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第２のレートでサンプルされ、
前記第１のレートと前記第２のレートとが等しくないものである、
請求項１６に記載の方法。
【請求項１８】
前記第１の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第１のレートでサンプルされ、
前記第３の一連の状態関連メッセージ中のメッセージが、前記第１のモデルにおけるシミュレーション時間において第２のレートでサンプルされ、
前記第１のレートと第２のレートとが等しいものである、
請求項１６に記載の方法。
【請求項１９】
所与のプロセスが要求を行い、
前記送るステップが、前記第１の一連の状態関連メッセージを、前記所与のプロセスとは異なるプロセスへ送る、
請求項９に記載の方法。
【請求項２０】
第１の出力デバイスと通信を行う第１の出力プロセスにおける前記第１の一連の状態関連メッセージを受け取るステップと、
前記第１の一連の状態関連メッセージ中の複数のメッセージにより運ばれる第１の組の情報を、前記第１の出力デバイスへ送るステップと
を更に備え、前記第１の出力デバイスが前記第１の出力プロセスと通信を行うものである、
請求項９に記載の方法。
【請求項２１】
前記第１の出力デバイスがモニタである、請求項２０に記載の方法。
【請求項２２】
前記第１の出力デバイスがプリンタである、請求項２０に記載の方法。
【請求項２３】
前記第１の出力デバイスが、前記第１の組の情報を記録可能媒体に記憶する、請求項２０に記載の方法。
【請求項２４】
前記表示するステップが、時間対前記第１の状態変数の関数をグラフ化するステップを含む、請求項２０に記載のシステム。
【請求項２５】
前記第１の出力プロセスにおいて第２の一連の状態関連メッセージを受け取るステップと、
前記第２の一連の状態関連メッセージ中の複数のメッセージにより運ばれる第２の組の情報を、前記第１の出力デバイスへ送るステップと
を更に備え、前記送るステップが、前記第１の組の情報および前記第２の組の情報をシステム時間に関連付ける時間情報を出力するステップを含む、請求項２０に記載の方法。
【請求項２６】
第２の出力デバイスと通信を行う第２の出力プロセスにおいて第２の一連の状態関連メッセージを受け取るステップと、
前記第２の一連の状態関連メッセージ中の複数のメッセージによって運ばれる第２の組の情報を、前記第２の出力デバイスへ出力するステップと
を更に備え、前記送るステップが、前記第１の組の情報とシステム時間とを関連付けるステップを含み、
前記出力するステップが、前記第２の組の情報とシステム時間とを関連付けるステップを含む、
請求項２０に記載の方法。
【請求項２７】
第１のコンピュータ読取可能媒体であって、
第１のシミュレーション・モデルをインプリメントするステップと、
第１のコマンド信号を受け付けるステップと、
前記第１のコマンド信号に基づいて前記第１のシミュレーション・モデルを管理するステップと
を行うために第１のプロセスにおいて実行可能なプログラミング命令で符号化された第１のコンピュータ読取可能媒体と、
第２のコンピュータ読取可能媒体であって、
第２のシミュレーション・モデルをインプリメントするステップと、
第２のコマンド信号を受け付けるステップと、
前記第２のコマンド信号に基づいて前記第２のシミュレーション・モデルを管理するステップと
を行うために第２のプロセスにおいて実行可能な第２の組のプログラミング命令で符号化された第２のコンピュータ読取可能媒体と、
第３のコンピュータ読取可能媒体であって、
前記第１のコマンド信号を前記第１のプロセスへ送るステップと、
前記第２のコマンド信号を前記第２のプロセスへ送るステップと
を行うために第３のプロセスにおいて実行可能な第３の組のプログラミング命令で符号化された第３のコンピュータ読取可能媒体と
を備えるシステム。
【請求項２８】
前記管理するステップを共通のシステム時間に同期させる、請求項２７に記載の方法。
【請求項２９】
前記第１の実行プロセス及び前記第２の実行プロセスが、前記第１の一連の状態関連メッセージを通信するために共用のメモリを使用しない、請求項１に記載のシステム。
【請求項３０】
前記第１の実行プロセスが第１のプロセッサによって実行され、
前記第２の実行プロセスが第２のプロセッサによって実行され、
前記第１の一連の状態関連メッセージが、中央サーバでキューに入れられることなく、直接に前記第１のプロセッサから前記第２のプロセッサへ通信される、請求項１に記載のシステム。
【請求項３１】
前記送るステップが、ピア・ツー・ピア通信モデルを用いて行われる、請求項１１に記載のシステム。
【請求項３２】
前記送るステップが、前記第１のプロセッサから前記第２のプロセッサへ直接に行われる、請求項１１に記載のシステム。
【請求項３３】
第１の実行プロセスであって、
第１の状態変数を用いて第１のサブシステムをシミュレートする第１のモデルをインプリメントし、
それぞれのメッセージが前記第１のモデルにおける時間中の異なる点ｔｍでの前記第１の状態変数の値に関連する情報を反映するものである、第１の一連の状態関連メッセージを送る
第１の実行プロセスと、
第２の実行プロセスであって、
前記第１の一連の状態関連メッセージを受け取り、
前記第１の状態変数の値を入力として取って、第２のサブシステムをシミュレートする第２のモデルをインプリメントする
第２の実行プロセスと、
前記第１の一連の状態関連メッセージを運ぶピア・ツー・ピアの通信チャネルと
を備えるシステム。
【請求項３４】
前記第１のモデルが第２の状態変数を用いて前記第１のサブシステムをインプリメントし、
前記第１の実行プロセスが、それぞれのメッセージが前記第２の状態変数の値に関連する情報を反映するものである第２の一連の状態関連メッセージも送り、
前記ピア・ツー・ピアの通信チャネルが、前記第２の一連の状態関連メッセージも運ぶ
ものであり、前記システムが、
前記第２の一連の状態関連メッセージを受け取り、
前記第２の状態変数の値を入力として取って、第３のサブシステムをシミュレートする第３のモデルをインプリメントする
第３の実行プロセスを更に備える、
請求項３３に記載のシステム。
【請求項３５】
前記第２のモデルが第２の状態変数を用いて前記第２のサブシステムをインプリメントし、
前記第２の実行プロセスが、それぞれのメッセージが前記第２の状態変数の値に関連する情報を反映するものである第２の一連の状態関連メッセージを送り、
前記ピア・ツー・ピアの通信チャネルが、前記第２の一連の状態関連メッセージも運ぶ
ものであり、前記システムが、
前記第２の一連の状態関連メッセージを受け取り、
前記第２の状態変数の値を入力として取って、第３のサブシステムをシミュレートする第３のモデルをインプリメントする
第３の実行プロセスを更に含む、
請求項３４に記載のシステム。
【請求項３６】
前記第２のモデルが第２の状態変数を用いて前記第２のサブシステムをインプリメントし、
前記第２の実行プロセスが、それぞれのメッセージが前記第２の状態変数の値に関連する情報を反映するものである第２の一連の状態関連メッセージを送り、
前記ピア・ツー・ピアの通信チャネルが、前記第２の一連の状態関連メッセージも運び、
前記第１の実行プロセスが、前記第２の状態関連メッセージを受け取り、複数の前記第２の一連のものからの前記第２の状態変数の値を、第１のモデルのインプリメンテーションへの入力として取る、請求項３５に記載のシステム。
【国際調査報告】
2004510219.tif 000058
2004510219.tif 000059