IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧

特許7647915制御システム、制御方法及び制御プログラム
<>
  • 特許-制御システム、制御方法及び制御プログラム 図1
  • 特許-制御システム、制御方法及び制御プログラム 図2
  • 特許-制御システム、制御方法及び制御プログラム 図3
  • 特許-制御システム、制御方法及び制御プログラム 図4
  • 特許-制御システム、制御方法及び制御プログラム 図5
  • 特許-制御システム、制御方法及び制御プログラム 図6
  • 特許-制御システム、制御方法及び制御プログラム 図7
  • 特許-制御システム、制御方法及び制御プログラム 図8
  • 特許-制御システム、制御方法及び制御プログラム 図9
  • 特許-制御システム、制御方法及び制御プログラム 図10
  • 特許-制御システム、制御方法及び制御プログラム 図11
  • 特許-制御システム、制御方法及び制御プログラム 図12
  • 特許-制御システム、制御方法及び制御プログラム 図13
  • 特許-制御システム、制御方法及び制御プログラム 図14
  • 特許-制御システム、制御方法及び制御プログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-03-10
(45)【発行日】2025-03-18
(54)【発明の名称】制御システム、制御方法及び制御プログラム
(51)【国際特許分類】
   G06F 11/34 20060101AFI20250311BHJP
【FI】
G06F11/34 157
【請求項の数】 8
(21)【出願番号】P 2023555959
(86)(22)【出願日】2021-10-27
(86)【国際出願番号】 JP2021039705
(87)【国際公開番号】W WO2023073839
(87)【国際公開日】2023-05-04
【審査請求日】2024-04-04
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】福田 哲也
(72)【発明者】
【氏名】丸吉 政博
【審査官】大倉 崚吾
(56)【参考文献】
【文献】特開2012-146148(JP,A)
【文献】特開2017-091467(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
G06F 11/28-11/36
G16Z 99/00
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
複数のシミュレータを組み合わせて一つのシミュレーションを構築する連成シミュレーションを制御する制御システムであって、
前記複数のシミュレータにおいてシミュレーションを実行するとともに、各シミュレータの内部における計算過程の状態変数を含む情報を取得するラッパ部と、
前記複数のシミュレータ間の因果関係に沿って、各シミュレータに対する論理時刻管理を行い、当該論理時刻を用いて、前記ラッパ部に、各シミュレータにおけるシミュレーションの実行を指示する第1の制御部と、
前記複数のシミュレータ間の因果関係に沿って、各シミュレータ間の情報交換を制御し、シミュレータ間で交換された情報である連携情報を取得する第2の制御部と、
前記計算過程の状態変数及び前記連携情報を基に、前記連成シミュレーションの異常の有無を解析する解析部と、
を有することを特徴とする制御システム。
【請求項2】
前記計算過程の状態変数、前記連携情報、及び、前記解析部による解析結果の少なくとも一つを可視化して、ユーザに提示する提示部をさらに有することを特徴とする請求項1に記載の制御システム。
【請求項3】
前記連成シミュレーションの速度監視を行い、シミュレーションの実行の中で最も時間がかかっている部分である実行ホットスポットを同定する監視部をさらに有し、
前記提示部は、前記実行ホットスポットの原因を抽出して改善提案を提示することを特徴とする請求項2に記載の制御システム。
【請求項4】
前記解析部は、異常を検知した場合、前記第1の制御部に、異常を検知したシミュレータと、前記異常を検知したシミュレータに依存する全てのシミュレータとに対するシミュレーションの再実行を指示し、
前記第1の制御部は、前記解析部による再実行の指示に応じて、前記解析部によって前記異常が検知されたシミュレータと、前記解析部によって異常が検知されたシミュレータに依存する全てのシミュレータとに対し、任意のタイミングまでロールバックしてシミュレーションを再実行させることを特徴とする請求項1~3のいずれか一つに記載の制御システム。
【請求項5】
前記解析部は、前記計算過程の状態変数を基に、状態変数の変化の軌跡において不連続的な特異点を検知し、前記連携情報を基に、前記特異点における状態変数の変化が前記連成シミュレーションの情報交換に由来することを判定した場合に、前記特異点の発生タイミングで前記連成シミュレーションに異常が発生したことを検知する請求項1~4のいずれか一つに記載の制御システム。
【請求項6】
前記複数のシミュレータ間の通信、及び、前記ラッパ部と前記第2の制御部との間の通信に対し、P2P形式の通信方式を適用することを特徴とする請求項1~5のいずれか一つに記載の制御システム。
【請求項7】
複数のシミュレータを組み合わせて一つのシミュレーションを構築する連成シミュレーションを制御する制御システムが実行する制御方法であって、
前記複数のシミュレータ間の因果関係に沿って、各シミュレータに対する論理時刻管理を行い、当該論理時刻を用いて、各シミュレータにおけるシミュレーションの実行を指示する工程と、
前記複数のシミュレータにおいてシミュレーションを実行するとともに、各シミュレータの内部における計算過程の状態変数を含む情報を取得する工程と、
前記複数のシミュレータ間の因果関係に沿って、各シミュレータ間の情報交換を制御し、シミュレータ間で交換された情報である連携情報を取得する工程と、
前記計算過程の状態変数及び前記連携情報を基に、前記連成シミュレーションの異常の有無を解析する工程と、
を含んだことを特徴とする制御方法。
【請求項8】
コンピュータを請求項1~6のいずれか一つに記載の制御システムとして機能させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御システム、制御方法及び制御プログラムに関する。
【背景技術】
【0002】
従来、複数のシミュレーションツールを組み合わせて、一つのシミュレーションを構築する連成技術分野では、連続時間シミュレーションを扱うために策定された規格であるFMI(Functional Mock-up Interface)や、離散時間イベントベースシミュレーションを行うために策定された規格であるHLA(High Level Architecture)が提案されている。FMIは、連続時間シミュレーションを扱うために策定された規格である。HLAは、離散時間イベントベースシミュレーションを行うために策定された規格である。
【0003】
従来、連成技術として、複数のシミュレータを独立に動作させながら、既定のタイミングでシミュレータ間における情報の交換を行う技術や、各々のシミュレータが、他のシミュレータから受け取った情報を自シミュレータへの入力として与えて次の情報交換までの計算を行う技術がある。
【先行技術文献】
【非特許文献】
【0004】
【文献】Modelica Association, “Functional Mock-up Interface for Model Exchange and Co-Simulation Document version: 2.0.2”, [online],[令和3年10月15日検索],インターネット<URL:https://github.com/modelica/fmi-standard/releases/download/v2.0.2/FMI-Specification-2.0.2.pdf e>
【文献】IEEE Computer Society, “IEEE Standard for Modeling and Simulation (M&S) High Level Architecture (HLA) Federate Interface Specification”.
【文献】Modelica Association, “DCP Specification document Version 1.0”, [online],[令和3年10月15日検索],インターネット<URL: https://dcp-standard.org/assets/specification/DCP_Specification_v1.0.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
連成シミュレーションでは、計算に参加するシミュレータ要素が増加するにつれて、速度面及び精度面に関して問題が発生した際の解析が困難になる。しかしながら、FMI及びHLAは、解析を行う機能を有しておらず、ユーザ自身が情報を収集し、解析を行う必要があった。また、リアルタイム要件の具備の監視に関する仕様を含んだ連成用の通信プロトコルとして、DCP(Distributed Co-Simulation Protocol)が存在するが、DCPでは、仕様を満たせないシミュレータがどのシミュレータであるか判別できるものの、それ以上の解析はできなかった。
【0006】
このように、複雑化しやすい連成シミュレーションに対する解析技術はなく、ユーザによるシステムの管理や改善が円滑に実行できない場合があった。
【0007】
本発明は、上記に鑑みてなされたものであって、連成シミュレーションに対する解析技術を提供することができる制御システム、制御方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明に係る制御システムは、複数のシミュレータを組み合わせて一つのシミュレーションを構築する連成シミュレーションを制御する制御システムであって、複数のシミュレータにおいてシミュレーションを実行するとともに、各シミュレータの内部における計算過程の状態変数を含む情報を取得するラッパ部と、複数のシミュレータ間の因果関係に沿って、各シミュレータに対する論理時刻管理を行い、当該論理時刻を用いて、ラッパ部に、各シミュレータにおけるシミュレーションの実行を指示する第1の制御部と、複数のシミュレータ間の因果関係に沿って、各シミュレータ間の情報交換を制御し、シミュレータ間で交換された情報である連携情報を取得する第2の制御部と、計算過程の状態変数及び連携情報を基に、連成シミュレーションの異常の有無を解析する解析部と、を有することを特徴とする。
【発明の効果】
【0009】
本発明によれば、連成シミュレーションに対する解析技術を提供することができる。
【図面の簡単な説明】
【0010】
図1図1は、実施の形態に係る制御システムの構成の一例を示すブロック図である。
図2図2は、シミュレータラッパ部の構成の一例を示すブロック図である。
図3図3は、実行制御部の構成の一例を示すブロック図である。
図4図4は、データ流通制御部の構成の一例を示すブロック図である。
図5図5は、実行管理部の構成の一例を示すブロック図である。
図6図6は、プロファイリング部の構成の一例を示すブロック図である。
図7図7は、提示部の構成の一例を示すブロック図である。
図8図8は、制御システムにおける正常系の動作時における処理手順を示すシーケンス図である。
図9図9は、制御システムにおける異常系の動作時における処理手順を示すシーケンス図である。
図10図10は、制御システムにおける提示処理の処理手順を示すシーケンス図である。
図11図11は、計算結果を示すグラフの一例を示す図である。
図12図12は、解析結果の一例を示す図である。
図13図13は、制御システムにおける通信処理を説明する図である。
図14図14は、制御システムにおける通信処理を説明する図である。
図15図15は、プログラムが実行されることにより、制御システムの各構成要素が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0012】
[実施の形態]
本実施の形態は、複数の異なる専門領域で、各々に高い専門性を用いて構築されたシミュレータを組み合わせる連成を行い、分野をまたいだシミュレーションを構築する基盤技術に関する。実施の形態では、複数のシミュレータを組み合わせて一つのシミュレーションを構築する連成シミュレーションに対する制御方法及び異常解析方法について説明する。
【0013】
なお、連成対象がシミュレータと実システムとの場合では本質的な違いがないため、本実施の形態では、シミュレータは、シミュレータと実システムとを含むものとする。また、連成には、複数のシミュレーションの複数の方程式を一つのソルバで一括計算できるようにする強連成と、各々の方程式を別々のソルバで解きトラジェクトリレベルで連携する弱連成とがあるが、本実施の形態は、その中でも弱連成に関する。シミュレーションには連続時間シミュレーション、離散時間イベントベースシミュレーション、それらを組み合わせたハイブリッドシミュレーションの3種類が存在するが、本実施の形態は、これらの全てを対象とする。
【0014】
[制御システム]
次に、実施の形態に係る制御システムについて説明する。図1は、実施の形態に係る制御システムの構成の一例を示すブロック図である。なお、以降のブロック図において、実線は実行制御における通知/処理の呼び出しを意味し、破線はデータの送受信を意味し、一点鎖線はプロファイリング情報取得を意味する。
【0015】
実施の形態に係る制御システム10の各構成要素は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、CPU(Central Processing Unit)等を含むコンピュータ等に所定のプログラムが読み込まれて、CPUが所定のプログラムを実行することで実現される。また、制御システム10の各構成要素は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースを有する。
【0016】
図1に示すように、制御システム10は、シミュレータラッパ部11(ラッパ部)、実行制御部12(第1の制御部)、データ流通制御部13(第2の制御部)、実行管理部14(解析部)、プロファイリング部15(監視部)及び提示部16を有する。実施の形態では、一例として、制御システム10が、マスタースレーブ型のアーキテクチャである場合を例に説明する。
【0017】
シミュレータラッパ部11は、複数のシミュレータにおいてシミュレーションをそれぞれ実行する複数のスレーブによって構成されており、シミュレータをラップする機能を有する。シミュレータラッパ部11では、各スレーブが、他のシミュレータと情報を交換するとともに、自シミュレータの計算を実行する。シミュレータラッパ部11は、自シミュレータの時間区間の計算が終わった場合、データ流通制御部13(後述)を経由して計算結果を他のシミュレータに出力する。そして、シミュレータラッパ部11は、解析のために、連成シミュレーションの計算結果とともに、各シミュレータの内部における計算過程の状態変数の情報を取得し、実行管理部14へ送信する。
【0018】
図2は、シミュレータラッパ部11の構成の一例を示すブロック図である。図2に示すように、シミュレータラッパ部11として機能する各スレーブは、実行指示通知受信部11a、データ受信部11b、実行計画部11c、シミュレータ実行部11d、データ送信部11e及び実行終了通知送信部11fをそれぞれ有する。
【0019】
実行指示通知受信部11aは、実行制御部12から実行指示を受信する。データ受信部11bは、データ流通制御部13から、自シミュレータへの入力を受信する。実行計画部11cは、他シミュレータから離散時間イベントを受け付けた場合、当該離散時間イベントの時刻で自シミュレータのステップを分割して、シミュレーションを実行する。実行計画部11cは、他シミュレータからの入力を自シミュレータの正確な時刻に反映する。
【0020】
シミュレータ実行部11dは、シミュレータへの入出力を行い、シミュレータにおけるシミュレーションを実行する。データ送信部11eは、シミュレータの実行結果を出力として取得し、任意に変換した上で、データ流通制御部13へ送信する。
【0021】
データ送信部11eは、シミュレータの内部における計算過程の状態変数の情報を実行管理部14へ送信する。実行終了通知送信部11fは、実行制御部12に、シミュレータ実行指示を完了した通知を送信する。なお、シミュレータラッパ部11では、複数のシミュレータ間の通信に対し、例えば、P2P形式の通信方式を適用することで、マスタを介さずに直接、スレーブ間での集団通信を可能としている。
【0022】
実行制御部12は、複数のシミュレータ間の因果(依存)関係に沿って、各シミュレータに対する論理時刻管理を行い、当該論理時刻を用いて、シミュレータラッパ部11に、各シミュレータにおけるシミュレーションの実行または再実行を指示する。実行制御部12は、例えば、連成シミュレーションのマスタとして機能する。
【0023】
実行制御部12は、正常系の動作の場合、各シミュレータの論理時刻の時刻合わせをするとともに、連成シミュレーション全体の時刻に沿って、各シミュレータの動作を把握して各シミュレータに実行を指示する。実行制御部12は、異常系の動作の場合、すなわち、実行管理部14(後述)において異常が検知された場合、実行管理部14による再実行の指示に応じて、実行管理部14によって異常が検知されたシミュレータと、実行管理部14によって異常が検知されたシミュレータに依存する全てのシミュレータとに対し、任意のタイミングまでロールバックしてシミュレーションを再実行させる。
【0024】
図3は、実行制御部12の構成の一例を示すブロック図である。図3に示すように、実行制御部12は、論理時刻管理部12a、実行指示生成部12b、実行終了通知受信部12c及びロールバック制御部12dを有する。
【0025】
論理時刻管理部12aは、シミュレータに対する論理時刻管理を行う。実行指示生成部12bは、シミュレータ間の因果関係に沿って、シミュレータの実行方法の際の並列性や実行順序を決定し、実行指示として、対象となるシミュレータに対応するシミュレータラッパ部11へ実行指示通知を送信する。実行終了通知受信部12cは、シミュレータラッパ部11の実行終了通知を受信し、論理時刻を進める。
【0026】
ロールバック制御部12dは、シミュレータ間の因果関係の設定を行う。ロールバック制御部12dは、実行管理部14において異常が検知された場合、実行管理部14によって異常が検知されたシミュレータと、実行管理部14によって異常が検知されたシミュレータに依存する全てのシミュレータとに対し、任意のタイミングまでロールバックして、シミュレーションを再実行可能にする。この際、ロールバック制御部12dは、過去の情報をデータ流通制御部13から取得する。
【0027】
データ流通制御部13は、複数のシミュレータ間の因果関係に沿って、情報の交換を制御する。データ流通制御部13は、各シミュレータの情報の交換を制御するとともに、各シミュレータ間において交換された情報である連携情報を取得して実行管理部14に送信する。図4は、データ流通制御部13の構成の一例を示すブロック図である。図4に示すように、データ流通制御部13は、交換データ蓄積部13aを有する。
【0028】
交換データ蓄積部13aは、実システムからの情報の取得や、シミュレータから実システムへの情報フィードバックを行う。交換データ蓄積部13aは、シミュレータ間の情報流通を、マスタ経由またはスレーブ間で直接行う。データ流通制御部13は、マスタ経由で通信を行う場合にはキューの仕組みを用いる。また、データ流通制御部は、スレーブ間で直接通信を場合にはMPI(Message Passing Interface)の仕組みを用いる。シミュレータラッパ部11とデータ流通制御部13との間の通信に対し、P2P形式の通信方式を適用することで、直接、スレーブ間での集団通信を可能とする。
【0029】
実行管理部14は、シミュレータラッパ部11において実行された連成シミュレーションの計算精度を解析する。実行管理部14は、計算過程の状態変数及び連携情報を基に、連成シミュレーションの異常の有無を解析する。実行管理部14は、計算過程の状態変数を基に、状態変数の変化の軌跡において不連続的な特異点を検知し、連携情報を基に、特異点における状態変数の変化が連成シミュレーションの情報交換に由来することを判定した場合に、特異点の発生タイミングで連成シミュレーションに異常が発生したことを検知する。実行管理部14は、異常を検知した場合、実行制御部12に、異常を検知したシミュレータと、異常を検知したシミュレータに依存する全てのシミュレータとに対するシミュレーションの再実行を指示する。
【0030】
図5は、実行管理部14の構成の一例を示すブロック図である。図5に示すように、実行管理部14は、シミュレータ変数情報収集部14a、シミュレータ間交換データ収集部14b、異常検知部14c及びロールバック実行指示生成部14dを有する。
【0031】
シミュレータ変数情報収集部14aは、シミュレータラッパ部11から、計算過程の状態変数を受信することで、シミュレータラッパ部11において実行されたシミュレータの実行情報を収集する。シミュレータの実行情報は、シミュレータの内部における計算過程の状態変数の変化に関する情報である。シミュレータ変数情報収集部14aは、収集したシミュレータの実行情報を提示部16に出力する。
【0032】
シミュレータ間交換データ収集部14bは、データ流通制御部13から、連携情報を受信することで、連成時における連携情報を収集する。シミュレータ間交換データ収集部14bは、収集した連携情報を提示部16に出力する。
【0033】
異常検知部14cは、シミュレータの実行情報に解析アルゴリズムを適用し、連成シミュレーションの異常検知を行う。そして、異常検知部14cは、解析結果を提示部16に出力する。異常検知部14cは、計算過程の状態変数を基に、状態変数の変化の軌跡において不連続的な特異点を検知し、連携情報を基に、特異点における状態変数の変化が連成シミュレーションの情報交換に由来することを判定した場合に、特異点の発生タイミングで連成シミュレーションに異常が発生したことを検知する。
【0034】
ロールバック実行指示生成部14dは、異常検知部14cによって異常が検知された場合、実行制御部12に、異常検知部14cによって異常が検知されたシミュレータと、異常検知部14cによって異常が検知されたシミュレータに依存する全てのシミュレータとに対して、適切なタイミングで、シミュレーションを再度実行するよう指示する。
【0035】
プロファイリング部15は、シミュレータラッパ部11において実行された連成シミュレーションの速度監視を行う。プロファイリング部15は、連成シミュレーションにおける実行ホットスポットを同定する。実行ホットスポットは、実行の中で最も時間がかかっている部分である。図6は、プロファイリング部15の構成の一例を示すブロック図である。図6に示すように、プロファイリング部15は、ホットスポット分析部15aを有する。
【0036】
ホットスポット分析部15aは、連成システムと個々のシミュレータ全てとを包括的にプロファイリングし、実行ホットスポットを同定する。ホットスポット分析部15aは、同定した実行ホットスポットを提示部16に出力する。なお、実行ホットスポットの同定は、提示部16が実行してもよい。
【0037】
提示部16は、シミュレータ内部の計算過程の状態変数、連携情報、及び、実行管理部14による解析結果の少なくとも一つを可視化して、ユーザに提示する。提示部16は、シミュレーション結果、シミュレーション実行情報、解析結果、実行ホットスポットに関する情報をユーザが視認可能となるように可視化する。
【0038】
図7は、提示部16の構成の一例を示すブロック図である。図7に示すように、提示部16は、コード改善提案部16a、シミュレーション結果可視化部16b、計算モデル・データレポジトリ部16c及び相関・因果関係解析部16dを有する。
【0039】
コード改善提案部16aは、プロファイリング部15から受け取った情報コードの改善提案を行い、提案内容を出力する。コード改善提案部16aは、プロファイリング部15が同定した実行ホットスポットの原因を抽出して改善提案を提示する。シミュレーション結果可視化部16bは、実行管理部14から出力された実行情報及び解析情報をユーザに提示する。
【0040】
計算モデル・データレポジトリ部16cは、過去にこのシステムで実行されたシミュレーションモデルとデータとの組み合わせを、ユーザが利用可能な形で公開する。この際、システム提供者側が公開例をいくつか予め作っておくとよい。相関・因果関係解析部16dは、ユーザデータにおける変数間の相関及び因果関係について、分析する機能を提供する。
【0041】
[正常系の動作]
次に、制御システム10における正常系の動作について説明する。図8は、制御システム10における正常系の動作時における処理手順を示すシーケンス図である。
【0042】
まず、実行制御部12では、論理時刻管理部12aが、各々のシミュレータの進行状況を統一の指標(論理時刻)として管理する(ステップS1)。実行指示生成部12bが、シミュレータの実行間隔と因果関係とに従って、ある時刻で実行するシミュレータセットとその実行順序、及び、並列に実行するかを決定する(ステップS2)。因果関係は、あるシミュレータは必ず他の特定のシミュレータの後に実行しなければならないという制約である。実行指示生成部12bは、決定した実行順序に従って、シミュレータラッパ部11に、実際に実行を指示する情報を送信する(ステップS3)。
【0043】
シミュレータラッパ部11は、実行指示通知受信部11aが実行制御部12からの実行指示を受信する。シミュレータ実行部11dは、その時刻における自シミュレータまたは実システムへの入力が揃っているかを、データ流通制御部13に対して問い合わせ、確認する(ステップS4)。
【0044】
データ流通制御部13では、交換データ蓄積部13aが、シミュレータラッパ部11からのリクエストを受け、リクエスト元のシミュレータラッパ部11が管理するシミュレータへの入力となる情報を、連続時間変数情報と離散時間イベント情報との双方で収集する(ステップS5)。この時、交換データ蓄積部13aは、データの受け渡しを、マスタ経由でも行ってもよく、また、スレーブ間で直接やりとりしてもよい。
【0045】
マスタ経由の場合、交換データ蓄積部13aは、メッセージキューやデータベースなどの共通アクセス領域を用意するか、または、プログラム中で変数を用意する。スレーブ経由の場合、交換データ蓄積部13aは、前述したように、例えばMPIのような仕組みを用いて、P2P通信を行うが、通信の仕組みに特に制約はない。交換データ蓄積部13aは、スレーブ間で集団通信を行ってもよい。なお、P2P通信の場合、Push型のやり取りとなるため、収集は入力を行う他のシミュレータの実行終了を待つことと同義である。交換データ蓄積部13aは、収集した情報をシミュレータラッパ部11へ出力する(ステップS6)。
【0046】
シミュレータラッパ部11は、実行計画部11cが、まず、データ流通制御部13から受信したデータを参照し、入力情報を時刻順に並び替える(ステップS7)。実行計画部11cは、自らが管理するシミュレータのステップの間(ステップをt1≦t<t2とした時に、t1<T<t2となるような時刻Tを「間」と呼ぶ)の時刻を持つ離散時間イベントがあるかを判定し、存在する場合は、元のステップを分割して、ステップ実行、離散時間イベント情報反映(入力)、ステップ実行、・・・となるように制御する。なお、実行計画部11cは、管理対象が実システムの場合も同様の手順でシステムへの入力情報反映を行う。
【0047】
シミュレータ実行部11dは、実行計画部11cの分割結果に基づいてシミュレータを実行し(ステップS8)、シミュレータの時刻が分割前のステップの終了時刻に達したら、シミュレータによる計算を終了する。
【0048】
データ送信部11eは、シミュレータ実行部11dによる計算結果を受け取り(ステップS9)、ユーザが設定した任意の方法で変換し(ステップS10)、変換後の計算結果をデータ流通制御部13に送信する(ステップS11)。この場合、計算結果の受け渡しは、ファイル経由でもよいし、MPIなどの規格に沿ったネットワーク経由による通信を介したものでもよい。データ流通制御部13への計算結果の送信は、前述したように、メッセージキューまたはデータベースへの送信と、MPIなどのP2P通信を用いた送信とのいずれかをユーザが選んで実行できる。実行終了通知送信部11fは、実行制御部12に、シミュレータ実行指示を完了した通知を送信する(ステップS12)。
【0049】
実行制御部12では、実行終了通知受信部12cが、シミュレータからの終了通知を受信すると、連成シミュレーション全体の終了時刻であるかを判定する(ステップS13)。
【0050】
連成シミュレーション全体の終了時刻でない場合(ステップS13:No)、実行制御部12は、終了通知を受け取ったシミュレータの論理時刻を進め(ステップS14)、ステップS2に戻り、新しい実行指示を作成し、時刻や因果関係に従って、再度実行指示を出す。制御システム10は、連成シミュレーション全体の終了時刻に到るまで、ステップS2~ステップS14の処理を繰り返す。
【0051】
[異常系の処理]
次に、制御システム10における異常系の処理について説明する。図9は、制御システム10における異常系の動作時における処理手順を示すシーケンス図である。
【0052】
実行管理部14では、シミュレータ変数情報収集部14aが、正常系においてシミュレータラッパ部11で実行されたシミュレータの内部の状態変数をシミュレータのステップ単位で収集し(ステップS21)、論理時刻を付与した情報D1として保持する(ステップS22)。
【0053】
また、シミュレータ間交換データ収集部14bは、正常系においてデータ流通制御部13において送受信されたシミュレータ間の連携情報を収集し(ステップS23)、論理時刻を付与した情報D2として保持する(ステップS24)。ステップS21,S22の処理と、ステップS23,S24の処理は、いずれが先でもよく、また、並列に実行されてもよい。
【0054】
異常検知部14cは、情報D1の計算結果の情報を用いて、状態変数の変化の軌跡の中で異常である部分がないかを判別し、情報D2の情報を用いて、異常である部分が連成由来の問題かどうかを判別する異常検知処理を行う(ステップS25)。
【0055】
異常検知部14cは、異常検知処理として、主に不連続的な特異点の検出を実行する。異常検知部14cは、特異点の検出として、例えば、Discrete Wavelet Transformや特異スペクトル変換といった時系列データの異常検知アルゴリズムを用いるほか、特異点の検出が可能であれば、他のアルゴリズムを用いてもよい。
【0056】
異常検知部14cは、異常検知アルゴリズムによる特異点検出結果と合わせて、情報D2の時刻情報を用いることで、異常検知結果の中で連成シミュレーションの情報交換に由来するものだけを絞り込み、シミュレータ由来の異常と分けて解析する。シミュレータ由来の異常とは、連成に関係なく起こっていると考えられる異常である。
【0057】
また、ユーザによって予め乖離比較用のデータ(実測データなど)が設定されている場合、異常検知部14cは、情報D1と乖離比較用のデータとの比較を行い、その乖離の大きさが所定の閾値を超えた場合に異常であると検知することもできる。
【0058】
ロールバック実行指示生成部14dは、異常検知部14cによる解析の結果、問題(異常)が発生していたか否かを判定する(ステップS26)。問題が発生していた場合(ステップS26:Yes)、ロールバック実行指示生成部14dは、実行制御部12に対して、問題発生箇所となったシミュレータと、問題発生箇所となったシミュレータに依存する(因果関係のある)全てのシミュレータについて、問題が発生した時刻を含むステップからの再実行の依頼を送信する(ステップS27)。問題が発生していなかった場合(ステップS26:No)、実行管理部14は、ステップS21に戻り、シミュレータの内部の状態変数の収集を行う。
【0059】
実行制御部12は、ロールバック制御部12dが実行管理部14からの再実行依頼を受け付けると、問題発生箇所となったシミュレータと、問題発生箇所となったシミュレータに依存する全てのシミュレータの実行を一時中断し、再実行するかどうかを判定する(ステップS28)。
【0060】
ロールバック制御部12dは、問題が不連続性に依存するものである場合、問題発生箇所となったシミュレータと、問題発生箇所となったシミュレータに依存する全てのシミュレータとの再初期化を行った上で、シミュレーションの再実行を指示する(ステップS29)。ロールバック制御部12dは、問題が比較元データとの乖離である場合、比較用データとシミュレーション結果から新たな初期値を生成して、生成した初期値を用いて、問題発生箇所となったシミュレータと、問題発生箇所となったシミュレータに依存する全てのシミュレータとを再初期化し、シミュレーションを再度実行する(ステップS29)。なお、ロールバック制御部12dは、比較用のデータを正解データとみなしてそれを初期値にしてもよい。また、ロールバック制御部12dは、比較用のデータとシミュレーション結果とを用いたデータ同化を行って初期値を推定してもよい。シミュレータラッパ部11は、再実行指示に従って、該当するシミュレータを実行する(ステップS30)。
【0061】
[提示処理]
次に、制御システム10がユーザに解析結果等を提示するまでの処理について説明する。図10は、制御システム10における提示処理の処理手順を示すシーケンス図である。
【0062】
実行管理部14は、シミュレータ変数情報収集部14a及びシミュレータ間交換データ収集部14bによって収集された情報と、異常検知部14cによる解析結果を、提示部16に出力する(ステップS41)。実行管理部14は、例えば、計算過程の状態変数、連携情報、及び、異常検知部14cによる解析結果を提示部16に出力する。実行管理部14は、シミュレーション全体の実行終了時(正常終了または異常終了)に一括で送信してもよいし、所定間隔で情報を送信してもよい。
【0063】
プロファイリング部15では、ホットスポット分析部15aが、連成シミュレーションと個々のシミュレータ全てとを包括的にプロファイリングし、実行の中で最も時間がかかっている部分(実行ホットスポット)を同定できる情報を収集する(ステップS42)。また、ホットスポット分析部15aは、実行ホットスポットが判別できているユーザが詳細プロファイリングを行なっている場合には、その詳細プロファイリング情報も収集する。なお、ホットスポット分析部15aが使用するプロファイラは、既知のプロファイラでもよいし、ユーザがカスタマイズしたものでもよく、ユーザが定義選択すればよい。
【0064】
ホットスポット分析部15aは、収集した情報を基に、実行ホットスポットを同定する(ステップS43)。ホットスポット分析部15aは、同定した実行ホットスポットの情報を提示部16に出力する(ステップS44)。この際、ホットスポット分析部15aは、収集した情報も実行ホットスポットの情報とともに提示部16に出力してもよい。なお、提示部16のコード改善提案部16aが、ホットスポット分析部15aがホットスポットを同定してもよい。
【0065】
提示部16では、コード改善提案部16aが詳細プロファイリングを行っている場合、ボトルネックとなっている実行ホットスポットの原因を抽出し、それに応じた改善提案を提示する(ステップS45)。コード改善提案部16aは、原因として、主にキャッシュミス率、通信時間に関わる部分がある場合、各々に対して既知の情報を提供する。例えば、キャッシュミス率が高い場合、コード改善提案部16aは、キャッシュタイリングなどの行列を分割して演算する方法を提示する。また、コード改善提案部16aは、通信時間にかかわる部分がある場合、通信量を減らすための処理の分割方法や、演算と通信のオーバーラップ化などを提示する。
【0066】
シミュレーション結果可視化部16bは、シミュレータ変数情報収集部14a、シミュレータ間交換データ収集部14b、異常検知部14cなどによる情報を各々プロットし、ユーザに視覚的にデータを提示する(ステップS46)。例えば、シミュレーション結果可視化部16bは、計算結果のグラフや解析結果をディスプレイ等に表示出力する。
【0067】
図11は、計算結果を示すグラフの一例を示す図である。図12は、解析結果の一例を示す図である。また、図12は、図11の計算結果を、Discrete Wavelet Transformを用いて解析した結果を示す。
【0068】
ユーザは、図11に示す計算結果を示すグラフ及び図12の解析結果を確認することで、領域R1,R1´に特異点があることを認識することができる。また、シミュレーション結果可視化部16bは、プロット前のデータをユーザがダウンロードできるように提示することで、ユーザによるプロット前のデータの利用を可能とすることもできる。
【0069】
提示部16では、計算モデル・データレポジトリ部16cが、制御システム10を用いて過去に実行されたシミュレーションモデル、及び、実行に用いられた入力データ、結果である出力データについて、その他のユーザが利用可能な形で公開する(ステップS47)。その他のユーザは、シミュレーションモデル、入力データ、出力データの中から任意のものを取得して利用可能である。シミュレーションモデルには、シミュレータ間でデータ交換する際の変換も含まれており、その他のユーザは、この部分をそのまま利用してもよいし、任意に変更して用いてもよい。その他のユーザは、出力データ列をエミュレータ(擬似シミュレータ)とみなして、連成に用いることもできる。なお、ユーザが非公開にしたい場合は、公開しないことも可能である。
【0070】
相関・因果関係解析部16dは、公開されている入出力データと任意のユーザが入力したデータから、変数間の相関及び因果分析を行う(ステップS48)。なお、相関・因果関係解析部16dでは、変数間の相関及び因果分析として、既存の技術のほか、ユーザが導入した技術を適用することが可能である。
【0071】
[実施の形態の効果]
このように、実施の形態に係る制御システム10は、制御システム10自身が、複数のシミュレータにおいて論理時刻管理を行い、当該論理時刻を用いて、シミュレーションを実行するとともに、各シミュレータの内部における計算過程の状態変数を含む情報を取得する。そして、制御システム10は、制御システム10自身が、複数のシミュレータ間の因果関係に沿って、各シミュレータ間の情報交換を制御してシミュレータ間で交換された情報である連携情報を取得する。制御システム10は、取得した計算過程の状態変数及び連携情報を基に、連成シミュレーションの異常の有無を解析する。
【0072】
したがって、本実施の形態では、システム自身が解析に必要な情報を収集して、連成シミュレーションの異常の有無を解析する制御システム10を提供する。これによって、ユーザ自身が、複雑化しやすい連成シミュレーションに関する計算結果を解析するための各種情報を収集する処理、及び、異常の有無を解析する処理を行う必要がない。
【0073】
また、制御システム10は、計算過程の状態変数、連携情報、及び、解析結果の少なくとも一つを可視化して、ユーザに提示するため、ユーザは、これらの情報を確認することで、システムの管理及び改善を効率的に進めることができる。
【0074】
そして、制御システム10は、連成シミュレーションの速度監視を行い、実行ホットスポットを同定し、実行ホットスポットの原因を抽出して改善提案を提示する。制御システム10は、過去のデータやモデルを公開して実績のある変数の組み合わせを提示する他、既存のデータを用いた変数間の相関/因果関係分析機能を提供する。このように、制御システム10、例えば、速度面における包括的なプロファイリング取得と改善提案とを行うため、ユーザが効率的に連成シミュレーションシステム全体を管理し、改善設計を行うことが可能になる。
【0075】
したがって、制御システム10は、複雑な連成シミュレーションシステム全体に対し、速度・精度両面で解析するため、ユーザがシステムを管理・改善する際の生産性を向上させることができる。言い換えると、制御システム10は、シミュレーション計算結果、連成時の交換情報、実行プロファイルなどの各種情報を自動収集し、それらをヒューマンリーダブルな形でユーザに対して提供することで、ユーザによるシステムの管理・改善の効率化を図ることができる。
【0076】
また、制御システム10は、異常を検知した場合、異常を検知したシミュレータと、異常を検知したシミュレータに依存する全てのシミュレータとに対して、任意のタイミングまでロールバックしてシミュレーションを自動的に再実行させる。このため、制御システム10によれば、ユーザ自身が、シミュレータの入出力を設定して、シミュレーションの再実行を設定するという、煩雑かつ難易度の高い処理を行わずともよい。
【0077】
また、従来技術でユーザが実行していたシミュレータ間における情報入出力マッピングは、連成対象分野の拡大に伴い、ユーザによる実行が困難となり、システム構築の阻害要因となっていた。
【0078】
これに対し、制御システム10は、過去のデータやモデルを公開して実績のある変数の組み合わせを提示する他、既存のデータを用いた変数間の相関/因果関係分析機能を提供する。このため、制御システム10によれば、複数の分野に精通していないユーザでも、既存の実験データとモデルのセットをベースにした解析を行うことで、シミュレータ間の入出力関係を推定し、連成シミュレーションシステムを構築することができる。
【0079】
また、複数種のシミュレーション(連続時間、離散時間)の両方の特性を持つハイブリッドシミュレーションについて扱う際には、他シミュレータへの情報入力のタイミングなどで制約ができるやり方を取ることになる。一例として、連続時間シミュレーションに離散時間イベント情報を入力する場合を想定する。一般的に、連続時間シミュレーションは、一定の時間間隔(ステップ)で実行され、そのステップの時のみ入力を受け付けるのに対し、解散時間イベントはそのステップと関わりなく発行される。このため、従来、連続時間シミュレーション側で離散時間イベントを反映しようとする際には、必ず時刻的なずれが発生する。従来では、ハイブリッドシミュレーションの実行時に生じる時刻的なずれが、シミュレーションの結果の正確性や精度を低減させる要因となっていた。
【0080】
これに対し、制御システム10では、複数のシミュレータにおいて論理時刻管理を行い、当該論理時刻を用いて、シミュレーションを実行するため、時刻的なずれを解消して、シミュレーションの結果の正確及び精度の向上を図ることができる。さらに、制御システム10は、シミュレータラッパ部11において、他シミュレータから離散時間イベントを受け付けた場合、離散時間イベントの時刻で連続時間シミュレーションステップを分割する。このため、制御システム10によれば、連成シミュレーションとしての精度を向上できる。
【0081】
図13及び図14は、制御システム10における通信処理を説明する図である。従来、実システムからは、情報取得のみ可能であった(図13の(1))。これに対し、制御システム10では、スレーブのロジックをユーザがカスタマイズできる領域を設けて、実システムへのフィードバック、言い換えると、実システムへの制御も行える仕組みとしている(図13の(2))。さらに、従来、マスタ経由での通信しかできなかったが(図14の(1))、制御システム10では、複数のシミュレータ間の通信、及び、シミュレータラッパ部11とデータ流通制御部13との間の通信に対し、P2P形式の通信方式を適用する(図14の(2))。したがって、制御システム10は、スレーブ間での直接P2P通信や集団通信を可能としながら、全体のシミュレーション実行を制御する。
【0082】
したがって、制御システム10では、マスタを経由することによるオーバーヘッドを低減し、リアルタイム指向のシミュレーション実行を可能にすることができる。制御システム10は、従来よりも柔軟なスレーブ間数信を可能とすることによって、シミュレータの個数や並列数が増加した大規模並列ワークロード同士の連成シミュレーションであっても、速度向上することができ、リアルタイム性を満たしやすくなる。
【0083】
上記のように、本実施の形態では、シミュレータ同士を連携させる連成シミュレーションの制御に加え、ユーザが連成シミュレーションのシステム全体を正確かつ迅速に制御できることを支援することができる。
【0084】
[実施の形態のシステム構成について]
制御システム10の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、制御システム10の機能の分散及び統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【0085】
また、制御システム10の各構成要素においておこなわれる各処理は、全部または任意の一部が、CPU、GPU(Graphics Processing Unit)、及び、CPU、GPUにより解析実行されるプログラムにて実現されてもよい。また、制御システム10の各構成要素においておこなわれる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【0086】
また、実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【0087】
[プログラム]
図15は、プログラムが実行されることにより、制御システム10の各構成要素が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0088】
メモリ1010は、ROM1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0089】
ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、制御システム10及び推定装置20の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、制御システム10及び推定装置20における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0090】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0091】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0092】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0093】
10 制御システム
11 シミュレータラッパ部
12 実行制御部
13 データ流通制御部
14 実行管理部
15 プロファイリング部
16 提示部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15