(57)【要約】【課題】シミュレーションの対象となる物体の構成要素の構造を考慮して精度の高いシミュレーションを行う。【解決手段】方程式と、方程式の属性を表す方程式分類名と、変数の別称を表す変数別名と、変数別名間の接続関係を表す変数別名依存関係と、変数別名依存関係が属する状態変数名と、状態変数名の値を表す状態名と、状態名間の関係を表す状態遷移条件を含むハイブリッドモデル構造データ１０２から変数を変数別名に置換して別名方程式１０４、変数別名依存関係に基づいて依存関係方程式１０８、状態変数名と状態名に基づいて依存関係方程式が有効となる状態変数名および状態名を含む遷移情報１１０をそれぞれ生成し、別名方程式１０４、依存関係方程式１０８および遷移情報１１０を組み合わせてハイブリッドモデル振舞いデータ１１２を生成し、ハイブリッドモデルを生成してシミュレーションを行う。【選択図】図１
2011059789.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算子、変数、および関数の組み合わせからなりシミュレーションの対象となる物体の構成要素の構造を定義する方程式、この方程式の属性を表す方程式分類名、前記変数の別称を表す変数別名、この変数別名間の接続関係を表す変数別名依存関係、この変数別名依存関係が属する状態変数名、この状態変数名の値を表す状態名、および前記状態名の間の関係を表す状態遷移条件を含むハイブリッドモデル構造データと、
このハイブリッドモデル構造データに含まれる前記方程式の前記変数を前記変数別名に置換して別名方程式を生成する方程式置換部と、
前記ハイブリッドモデル構造データに含まれる前記変数別名依存関係に基づいて依存関係方程式を生成する依存関係方程式生成部と、
前記ハイブリッドモデル構造データに含まれる前記状態遷移条件に基づいて状態遷移の前後における前記状態名および前記状態遷移の発生条件を含む遷移情報を生成する遷移情報生成部と、
前記別名方程式、前記依存関係方程式および前記遷移情報を組み合わせてハイブリッドモデル振舞いデータを生成するハイブリッドモデル振舞いデータ合成部と、
前記ハイブリッドモデル振舞いデータから制約処理プログラミング言語で記述されたハイブリッドモデルを生成するハイブリッドモデル生成部と、
前記生成されたハイブリッドモデルを用いて前記シミュレーションを実行するシミュレーション部と、
を具備することを特徴とするハイブリッドモデルシミュレーション装置。
【請求項２】
前記方程式置換部における前記方程式から前記別名方程式への置換履歴および前記変数から前記変数別名への置換履歴が前記ハイブリッドモデル振舞いデータ内に保存されており、かつ、前記保存された置換履歴に基づいて前記ハイブリッドモデル振舞いデータの変換を行い、前記ハイブリッドモデル構造データに復元するハイブリッドモデル構造データ復元部を更に具備することを特徴とする請求項１記載のハイブリッドモデルシミュレーション装置。
【請求項３】
ユーザからの入力に基づいてブロック形式の構造図を作成する編集画面を表示すると共に、この編集画面において作成された構造図に含まれる前記方程式、前記方程式分類名、前記変数別名、前記変数別名依存関係、前記状態変数名、前記状態名および状態遷移条件に基づいて前記ハイブリッドモデル構造データを生成するハイブリッドモデル構造データ編集部を更に具備することを特徴とする請求項１または請求項２記載のハイブリッドモデルシミュレーション装置。
【請求項４】
前記ハイブリッドモデル振舞いデータを表す状態遷移図を編集する第２の編集画面を表示すると共に、この第２の編集画面において編集された前記状態遷移図に基づいて前記ハイブリッドモデル振舞いデータを編集するハイブリッドモデル振舞いデータ編集部を更に具備することを特徴とする請求項１乃至請求項３のいずれか一項に記載のハイブリッドモデルシミュレーション装置。
【請求項５】
複数の演算子、変数、および関数の組み合わせからなりシミュレーションの対象となる物体の構成要素の構造を定義する方程式、この方程式の属性を表す方程式分類名、前記変数の別称を表す変数別名、この変数別名間の接続関係を表す変数別名依存関係、この変数別名依存関係が属する状態変数名、この状態変数名の値を表す状態名、および前記状態名の間の関係を表す状態遷移条件を含むハイブリッドモデル構造データから前記変数を前記変数別名に置換して別名方程式を生成する方程式置換ステップと、
前記ハイブリッドモデル構造データに含まれる前記変数別名依存関係に基づいて依存関係方程式を生成する依存関係方程式生成ステップと、
前記ハイブリッドモデル構造データに含まれる前記状態遷移条件に基づいて状態遷移の前後における前記状態名および前記状態遷移の発生条件を含む遷移情報を生成する遷移情報生成ステップと、
前記別名方程式、前記依存関係方程式および前記遷移情報を組み合わせてハイブリッドモデル振舞いデータを生成するハイブリッドモデル振舞いデータ合成ステップと、
前記ハイブリッドモデル振舞いデータから制約処理プログラミング言語で記述されたハイブリッドモデルを生成するハイブリッドモデル生成ステップと、
前記生成されたハイブリッドモデルを用いて前記シミュレーションを実行するシミュレーションステップと、
を有することを特徴とするハイブリッドモデルシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを用いて機械やプラント等の挙動のシミュレーションを行うハイブリッドモデルシミュレーション装置および方法に関する。
【背景技術】
【０００２】
現在、コンピュータを用いて機械やプラント等の挙動のシミュレーションを行う際に、ハイブリッドモデリングと呼ばれる手法が使われている。ハイブリッドモデルを用いたシミュレーションは「ハイブリッドシミュレーション」と呼ばれている。このようなシミュレーション挙動をするシステムを「ハイブリッドシステム」と呼ぶこともある。
【０００３】
シミュレーションの目的で作成されるハイブリッドモデルは、概念的には常微分方程式や代数方程式を連立させた連立方程式によって表現される連続系モデルと、イベント発生に伴う状態遷移を表現するための状態遷移モデルとを組み合わせたモデルである。ハイブリッドモデルによれば、連続系モデルで表現される状態が外部からのイベントなどにより瞬時に切り替わるシステムを表現することができる。
【０００４】
ハイブリッドモデルを記述するための言語として、米国ゼロックス社（商標）のパロアルト研究所にて創作されたＨＣＣ（Ｈｙｂｒｉｄ  Ｃｏｎｃｕｒｒｅｎｔ  Ｃｏｎｓｔｒａｉｎｔ  Ｐｒｏｇｒａｍｍｉｎｇ）と呼ばれる言語がある。このＨＣＣは発展途上にあり、現在も米国ＮＡＳＡのエイムズ研究所において研究が進められている。ＨＣＣは制約処理プログラミング（コンストレイントプログラミング）と呼ばれる技術の一種であり、連続系モデルを表現する常微分方程式や代数方程式を制約として扱い、これら方程式をそのまま順不同で記述することができる。このような制約記述に、状態遷移を制御する記述を付加してＨＣＣ言語のハイブリッドモデルは完成される。ＨＣＣによれば、方程式をそのまま制約として羅列する（プログラミングする）ことができ、複雑なモデルを記述可能である。
【０００５】
このように、ハイブリッドモデルの技術を用いれば、系の特性を常微分方程式などでモデル表現し、初期状態から時間の推移に従ってどのような挙動を示すかをシミュレーションすることができる。また、微分方程式などで表現可能な対象や現象を的確にモデル化できるハブリッドモデルの技術の応用例として、ソフトウエアにより機構が制御されるメカトロニクス機器の機構シミュレーションがある。かかる機構シミュレーションによれば、機構の実機が存在しない状況においても、当該機構を制御する制御ソフトウエアのプロトタイピング、テスト、あるいはデバッグなどが行えるようになる。
【０００６】
しかし、ハイブリッドモデルを扱うことのできる公知のプログラム言語は、必ずしもメカトロニクス機器等の機構シミュレーションに応用することを目的に開発されたものではない。したがって、制御ソフトウエアが機構に送信するアクチュエータへの動作コマンドなどをシミュレータの外部から制御信号として受け取るような構成とする場合、外部関数などを個別に定義する必要がある上、プログラミングにおいてかなりの工夫を必要とする。すなわち、ハイブリッドモデル記述言語を利用した場合は言語の習得が必要となるため、一般ユーザにとっては言語を習得しなくても比較的簡単にモデルを構築できる機能が求められていた。
【０００７】
このような要求に対する技術として、状態遷移図形式または状態遷移表形式の入力データに基づいてＨＣＣ言語で記述されたハイブリッドモデルを容易に作成できるハイブリッドモデル作成装置が知られている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特許第３８６６５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記従来技術においては、装置を構成する物体の状態に着目し、状態を表す運動方程式と状態遷移条件を含む状態遷移図に基づいてハイブリッドモデルを作成するに留まり、各物体の質量、長さ、物性など静的な条件はモデル作成において考慮されていない。この結果、モデル作成の対象によってはシミュレーションの精度が低くなる場合があった。
【００１０】
そこで、本発明は、上記従来技術の問題に鑑み、シミュレーションの対象となる物体の構成要素の構造を考慮しつつ、複雑な機構系を簡便かつ正確にモデル化し、精度の高いシミュレーションを行えるハイブリッドモデルシミュレーション装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明に係るハイブリッドモデルシミュレーション装置は、複数の演算子、変数、および関数の組み合わせからなりシミュレーションの対象となる物体の構成要素の構造を定義する方程式、この方程式の属性を表す方程式分類名、前記変数の別称を表す変数別名、この変数別名間の接続関係を表す変数別名依存関係、この変数別名依存関係が属する状態変数名、この状態変数名の値を表す状態名、および前記状態名の間の関係を表す状態遷移条件を含むハイブリッドモデル構造データと、このハイブリッドモデル構造データに含まれる前記方程式の前記変数を前記変数別名に置換して別名方程式を生成する方程式置換部と、前記ハイブリッドモデル構造データに含まれる前記変数別名依存関係に基づいて依存関係方程式を生成する依存関係方程式生成部と、前記ハイブリッドモデル構造データに含まれる前記状態遷移条件に基づいて状態遷移の前後における前記状態名および前記状態遷移の発生条件を含む遷移情報を生成する遷移情報生成部と、前記別名方程式、前記依存関係方程式および前記遷移情報を組み合わせてハイブリッドモデル振舞いデータを生成するハイブリッドモデル振舞いデータ合成部と、前記ハイブリッドモデル振舞いデータから制約処理プログラミング言語で記述されたハイブリッドモデルを生成するハイブリッドモデル生成部と、前記生成されたハイブリッドモデルを用いて前記シミュレーションを実行するシミュレーション部と、を具備することを特徴とする。
【００１２】
本発明に係るハイブリッドモデルシミュレーション方法は、複数の演算子、変数、および関数の組み合わせからなりシミュレーションの対象となる物体の構成要素の構造を定義する方程式、この方程式の属性を表す方程式分類名、前記変数の別称を表す変数別名、この変数別名間の接続関係を表す変数別名依存関係、この変数別名依存関係が属する状態変数名、この状態変数名の値を表す状態名、および前記状態名の間の関係を表す状態遷移条件を含むハイブリッドモデル構造データから前記変数を前記変数別名に置換して別名方程式を生成する方程式置換ステップと、前記ハイブリッドモデル構造データに含まれる前記変数別名依存関係に基づいて依存関係方程式を生成する依存関係方程式生成ステップと、前記ハイブリッドモデル構造データに含まれる前記状態遷移条件に基づいて状態遷移の前後における前記状態名および前記状態遷移の発生条件を含む遷移情報を生成する遷移情報生成ステップと、前記別名方程式、前記依存関係方程式および前記遷移情報を組み合わせてハイブリッドモデル振舞いデータを生成するハイブリッドモデル振舞いデータ合成ステップと、前記ハイブリッドモデル振舞いデータから制約処理プログラミング言語で記述されたハイブリッドモデルを生成するハイブリッドモデル生成ステップと、前記生成されたハイブリッドモデルを用いて前記シミュレーションを実行するシミュレーションステップと、を有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、シミュレーションの対象となる物体の構成要素の構造を考慮しつつ、複雑な機構系を簡便かつ正確にモデル化し、精度の高いシミュレーションを行えるハイブリッドモデルシミュレーション装置および方法が提供される。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態１に係るハイブリッドモデルシミュレーション装置の全体構成例を示すブロック図。
【図２】図１に示すハイブリッドモデルシミュレーション装置に適用されるコンピュータの構成例を示す図
【図３】図１に示すハイブリッドモデル構造データ編集部が出力するハイブリッドモデル構造データ編集画面の具体例を示す図。
【図４】図１に示すハイブリッドモデル振舞いデータ合成部が出力するハイブリッドモデル振舞いデータ表示画面の具体例を示す図。
【図５】図３に示すハイブリッドモデル構造データの文書形式の具体例を示す図。
【図６】図３に示すハイブリッドモデル振舞いの文書形式の具体例を示す図。
【図７】本発明の実施形態１に係るハイブリッドモデルシミュレーション装置における処理の具体例を示すフローチャート。
【図８】図１に示す方程式置換部における処理の具体例を示すフローチャート。
【図９】図１に示す依存関係方程式生成部における処理の具体例を示すフローチャート。
【図１０】図１に示すハイブリッドモデル振舞いデータ合成部における処理の具体例を示すフローチャート。
【図１１】図１に示すハイブリッドモデル構造データ編集部が出力する第２のハイブリッドモデル構造データ編集画面の具体例を示す図。
【図１２】図１に示すハイブリッドモデル振舞いデータ合成部が出力する第２のハイブリッドモデル振舞いデータ表示画面の具体例を示す図。
【図１３】図１１に示すハイブリッドモデル構造データの文書形式の具体例を示す図。
【図１４】図１２に示すハイブリッドモデル振舞いの文書形式の具体例を示す図。
【図１５】本発明の実施形態３に係るハイブリッドモデルシミュレーション装置の全体構成例を示すブロック図。
【図１６】図１５に示すハイブリッドモデル構造データ復元部における処理の具体例を示すフローチャート。
【図１７】図１に示すハイブリッドモデル構造データ編集部が出力する第３のハイブリッドモデル構造データ編集画面の具体例を示す図。
【図１８】図１に示すハイブリッドモデル構造データ編集部が出力する第４のハイブリッドモデル振舞いデータ表示画面の具体例を示す図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を用いて詳細に説明する。
【００１６】
＜実施形態１＞
図１は、本発明の一実施形態に係るハイブリッドモデルシミュレーション装置１の全体構成例を示す図である。以下、同図に示す各部の機能を説明する。
【００１７】
ハリブリッドモデル構造データ編集部１０１は、ユーザからの入力に基づいてブロック形式の構造図を作成する編集画面を表示すると共に、この編集画面において構造図内に定義された複数の演算子、変数、および関数の組み合わせからなりシミュレーションの対象となる物体の構成要素の構造を定義する方程式（例えば運動方程式など）、方程式の属性を表す方程式分類名、変数の別称を表す変数別名、変数別名間の接続関係を表す変数別名依存関係、変数別名依存関係が属する状態変数名、状態変数名の値を表す状態名、および状態名間の関係を表す状態遷移条件からハイブリッドモデル構造データ１０２を作成する。尚、本実施形態では、シミュレーションの対象を機械やプラント等の有体物としているが、構成要素を方程式によって構造的に定義できるのであれば無体物（例えば気象、株式市場など）にも応用可能である。また、依存関係を変数別名同士で定義するが、変数別名は必須の要件ではなく、元の変数同士で定義することも可能である。しかし、物理法則を記述する方程式には慣用的に使われる変数名があり(例えば、加速度はａ、速度はｖ、質量はｍ等)、方程式は慣用的に使用される変数名で記述された方が、どの物理現象に関わる式なのかを変数名から知ることができる。一方、コンポーネント間の関係を示す場合、依存関係は、システム全体（全てのコンポーネント）に対して固有の変数名を用いなければならない。そのため、慣用的な変数名とは別の名前を固有の変数名として割り当て、それを介して依存関係を定義することで構造データ内部の現象を直感的に理解することを可能としている。
【００１８】
方程式置換部１０３は、ハイブリッドモデル構造データ１０２に含まれる方程式の変数を変数別名に置換して別名方程式１０４を生成する。
【００１９】
置換履歴保存部１０５は、方程式置換部１０３における方程式から別名方程式１０４へ置換する際の置換履歴１０６を保存する。
【００２０】
依存関係方程式生成部１０７は、ハイブリッドモデル構造データ１０２に含まれる変数別名依存関係に基づいて依存関係方程式１０８を生成する。
【００２１】
遷移情報生成部１０９は、ハイブリッドモデル構造データ１０２に含まれる前記状態遷移条件に基づいて状態遷移の前後における前記状態名および前記状態遷移の発生条件を含む遷移情報１１０を生成する。
【００２２】
ハイブリッドモデル振舞いデータ合成部１１１は、別名方程式１０４、置換履歴１０６、依存関係方程式１０８および遷移情報１１０からハイブリッドモデル振舞いデータ１１２を合成する。
【００２３】
ハイブリッドモデル生成部１１３は、ハイブリッドモデル振舞いデータ１１２からＨＣＣ言語などの制約処理プログラミング言語で記述されたハイブリッドモデルを生成する。
【００２４】
シミュレーション部１１４は、ハイブリッドモデル生成部１１３において生成されたハイブリッドモデルを用いて所望のシミュレーションを実行する。
【００２５】
図２は、図１に示すハイブリッドモデルシミュレーション装置１に適用されるコンピュータの構成例を示す図である。ここでは、ＣＰＵ（Central Processing Unit）２１１、ＲＯＭ（Read Only Memory）２１２、ＲＡＭ（Random Access Memory）２１３、入出力インターフェース２１４、システムバス２１５、入力装置２１６、表示装置２１７、補助記憶装置２１８および通信装置２１９から構成されている。
【００２６】
ＣＰＵ２１１は、ＲＯＭ２１２やＲＡＭ２１３に格納されたプログラムやデータを用いて各種の演算処理を実行する処理装置である。ＲＯＭ２１２は、コンピュータを機能させるための基本プログラムや環境ファイルなどを記憶する読み取り専用の記憶装置である。ＲＡＭ２１３は、ＣＰＵ２１１が実行するプログラムおよび各プログラムの実行に必要なデータを記憶する記憶装置であり、高速な読み出しと書き込みが可能である。入出力インターフェース２１４は、各種のハードウェアとシステムバス２１５との接続を仲介する装置およびプログラムである。システムバス２１５は、ＣＰＵ２１１、ＲＯＭ２１２、ＲＡＭ２１３および入出力インターフェース２１４で共有される情報伝達路である。
【００２７】
また、入出力インターフェース２１４には、入力装置２１６、表示装置２１７、補助記憶装置２１８、および通信装置２１９などのハードウェアが接続されている。入力装置２１６は、ユーザからの入力を処理する装置であり、例えばキーボードやマウスなどである。表示装置２１７は、ユーザに対して演算結果や作成画面などを表示する装置であり、例えばＣＲＴ、液晶ディスプレイ、プラズマディスプレイなどである。補助記憶装置２１８は、プログラムやデータを蓄積する大容量の記憶装置であり、例えばハードディスク装置などである。
【００２８】
図３は、図１に示すハイブリッドモデル構造データ編集部１０１が出力するハイブリッドモデル構造データ編集画面の具体例を示す図である。ここでは、ハイブリッドモデル構造データ１０２がブロック図形式で表現されている。ハイブリッドモデル構造データ１０２は、ハイブリッドモデルの恒等式である方程式３０１を複数まとめた方程式グループを作成し、その名称を付加した方程式分類名３０２、方程式グループ間のインターフェースとなる変数別名３０３、変数別名３０３間の依存関係を示す変数別名依存関係３０４、変数別名依存関係３０４が成立する条件を記述する状態名３０５、状態変数名３０６、状態遷移条件３０７、方程式３０１内の変数と変数別名３０３との接続関係を示すリンク３０８からなる。これらの各情報は、画面内のボタンの押下によってブロック状の編集領域が表示され、この編集領域にキーボードやマウスを用いてユーザが入力することによって定義される。同図においては、方程式分類名３０２としてｃｏｍｐｏｎｅｎｔ１およびｃｏｍｐｏｎｅｎｔ２の２つがあり、ｃｏｍｐｏｎｅｎｔ１の方程式３０１として
a0 = a１ + a２
a３ = a0
がある。また、ｃｏｍｐｏｎｅｎｔ２の方程式３０１として
c0 = c１
がある。また、ｃｏｍｐｏｎｅｎｔ１の変数別名３０３としてｂ０、ｂ２があり、方程式３０１内の変数ａ１とｂ０、ａ２とｂ１、ａ３とｂ２がリンク３０８で接続されている。
【００２９】
また、ｃｏｍｐｏｎｅｎｔ２は変数別名３０３としてｄ０とｄ１があり、ｃ０とｄ０、ｃ１とｄ１がリンク３０８でそれぞれ接続されている。ｂ０とｄ０は変数別名依存関係３０４で接続されており、その接続が成立する条件は状態変数名３０６であるｍｏｄｅの状態名３０５がＯＦＦになったときである。状態は大括弧で表示し、ｍｏｄｅ＝［ＯＦＦ］と表記する。
【００３０】
また、状態遷移条件３０７としては、  
[ON] -> [OFF] : b0 = １0  
[OFF] -> [ON] : b0 = １  
がある。コロン記号の左辺は状態の遷移を示し、右辺はその遷移が発生する条件を示す。また、状態遷移表記内の右矢印の左辺は遷移前の状態、右は遷移後の状態を指す。例えば［ＯＮ］−＞［ＯＦＦ］：ｂ０＝１０という表記は、状態ＯＮから状態ＯＦＦへｂ０＝１０という条件が成立したときに遷移するという意味である。
【００３１】
図４は、図１に示すハイブリッドモデル振舞いデータ合成部１１１が出力するハイブリッドモデル振舞いデータ表示画面の具体例を示す図である。ここでは、ハイブリッドモデル振舞いデータ１１２が状態遷移図形式で表現されており、別名方程式１０４、状態名３０５、状態遷移条件３０７、依存関係方程式１０８、および置換履歴１０６が含まれている。ここでは別名方程式１０４として  
a0 = b0 + b１  
b２ = a0  
d0 = d１  
がある。また、状態名３０５としてＯＮとＯＦＦがあり、ＯＦＦ状態には依存関係方程式１０８としてｂ０＝ｄ０がある。状態遷移条件３０７としてｂ０＝１０およびｂ０＝１がある。
【００３２】
図５は、図３に示すハイブリッドモデル構造データ１０２の文書形式の具体例を示す図である。この文書はＸＭＬ形式で記述され、＜ＨｙｂｒｉｄＳｔｒ＞がルートタグであり、その下に複数の＜ｃａｔｅｇｏｒｙ＞タグ、一つの＜ｒｅｌａｔｉｏｎ＞タグ、一つの＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグが記述されている。
【００３３】
＜ｃａｔｅｇｏｒｙ＞タグは＜ａｌｉａｓｅｓ＞タグと＜ｅｑｎｓ＞タグを持ち、それぞれ＜ａｌｉａｓ＞タグ、＜ｅｑｎ＞タグを持つ。＜ａｌｉａｓ＞タグはその属性としてｖａｒ１およびｖａｒ２を持ち、ｖａｒ１の値が内部変数の名称を指し、ｖａｒ２の値が変数別名３０３を指す。＜ｅｑｎ＞タグ以下には方程式３０１が記述されている。＜ｃｏｍｐｏｎｅｎｔ＞タグのｎａｍｅ属性として方程式分類名３０２であるｃｏｍｐｏｎｅｎｔ１およびｃｏｍｐｏｎｅｎｔ２が記述され、ｃｏｍｐｏｎｅｎｔ１のｎａｍｅ属性を持つ＜ｃａｔｅｇｏｒｙ＞タグ内の＜ａｌｉａｓ＞タグにはｖａｒ１属性の値として方程式３０１内の変数が、ｖａｒ２属性の値として変数別名３０３が記述されており、リンク３０８を表している。
【００３４】
＜ｅｑｎ＞タグ内の方程式３０１としてはａ０＝ａ１＋ａ２およびａ３＝ａ０が記述されている。同様に、ｃｏｍｐｏｎｅｎｔ２のｎａｍｅ属性を持つ＜ｃａｔｅｇｏｒｙ＞タグ内の一方の＜ａｌｉａｓ＞タグにはｖａｒ１属性としてｃ０がｖａｒ２属性としてｄ０が、他方の＜ａｌｉａｓ＞タグにはｖａｒ１属性としてｃ１がｖａｒ２属性としてｄ１がある。また、＜ｅｑｎ＞タグのデータとしてｃ０＝ｃ１がある。
【００３５】
変数別名依存関係３０４は、＜ｒｅｌａｔｉｏｎｓ＞タグ内の＜ｒｅｌ＞タグで記述され、その属性としてｔｙｐｅ、ｍｏｄｅｖａｒ、ｍｏｄｅを持つ。ｍｏｄｅ＝［ＯＦＦ］の場合ｔｙｐｅ＝“ｅｑ”、ｍｏｄｅｖａｒ＝“ｍｏｄｅ”、ｍｏｄｅ＝“ＯＦＦ”と表記する。また、この依存関係が接続されている変数名は＜ｒｅｌ＞タグ以下の＜ｖａｒ＞タグに記述されている。ここでは変数別名３０３であるｂ０とｄ０に接続されているため、＜ｖａｒ＞ｂ０＜／ｖａｒ＞＜ｖａｒ＞ｄ０＜／ｖａｒ＞と記述されている。
【００３６】
状態遷移条件３０７は、＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグで記述され、複数の＜ｔｒａｎｓ＞タグを持つ。＜ｔｒａｎｓ＞タグにはｆｒｏｍ属性、ｔｏ属性、ｃｏｎｄ属性があり、［ＯＮ］−＞［ＯＦＦ］：ｂ０＝１０の場合＜ｔｒａｎｓ  ｆｒｏｍ＝“ＯＮ”  ｔｏ＝“ＯＦＦ”  ｃｏｎｄ＝“ｂ０＝１０”／＞と記述し、［ＯＦＦ］−＞［ＯＮ］：ｂ０＝１の場合は、＜ｔｒａｎｓ  ｆｒｏｍ＝“ＯＦＦ”  ｔｏ＝“ＯＮ”  ｃｏｎｄ＝“ｂ０＝１”／＞と記述されている。
【００３７】
図６は、図３に示すハイブリッドモデル振舞い１１２の文書形式の具体例を示す図である。ここでは、ハイブリッドモデル振舞いデータ１１２のルートタグは＜ＨｙｂｒｉｄＦｓｍ＞であり、それ以下に一つの＜ｇｌｏｂａｌ＞タグ、複数の＜ｓｔａｔｅｓ＞タグ、一つの＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグ、複数の＜ｒｅｌ＞タグをもつ。
【００３８】
別名方程式１０４は、＜ｇｌｏｂａｌ＞タグで記述されており、このタグ以下の＜ｅｑｎ＞タグ内には方程式３０１が記述されている。また、それぞれの方程式３０１にはｃａｔｅｇｏｒｙ属性があり、対応する方程式分類名３０２が入力されている。方程式３０１として記述されたａ０＝ｂ１＋ｂ２およびｂ２＝ａ０の方程式分類名３０２はｃｏｍｐｏｎｅｎｔ１であるため、ｃａｔｅｇｏｒｙ＝“ｃｏｍｐｏｎｅｎｔ１”と記述されている。また、ｄ０＝ｄ１の方程式分類名３０２はｃｏｍｐｏｎｅｎｔ２であるため、ｃａｔｅｇｏｒｙ＝“ｃｏｍｐｏｎｅｎｔ２”と記述されている。
【００３９】
また、依存関係方程式１０８は、＜ｓｔａｔｅｓ＞タグで記述されている。＜ｓｔａｔｅｓ＞タグ以下には複数の＜ｓｔａｔｅ＞タグがあり、ｎａｍｅ属性をそれぞれ持つ。＜ｓｔａｔｅｓ＞タグのｎａｍｅ属性は状態変数名３０６を表し、＜ｓｔａｔｅ＞タグのｎａｍｅ属性は状態名３０５を表す。ここでは、ｎａｍｅ属性として“ｍｏｄｅ”を持つ一つの＜ｓｔａｔｅｓ＞タグがあり、その下にｎａｍｅ属性として“ＯＮ”と“ＯＦＦ”を持つ＜ｓｔａｔｅ＞タグがある。＜ｓｔａｔｅ＞タグの下には一つの＜ｅｑｎｓ＞タグがあり、その下に複数の＜ｅｑｎ＞タグがある。ここでは、状態名３０５がＯＦＦのときに成立するｂ０＝ｄ０が依存関係方程式１０８として記述されている。
【００４０】
状態遷移条件３０７は、＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグで記述され、複数の＜ｔｒａｎｓ＞タグを持つ。＜ｔｒａｎｓ＞タグにはｆｒｏｍ属性、ｔｏ属性、ｃｏｎｄ属性があり、［ＯＮ］−＞［ＯＦＦ］：ｂ０＝１０の場合＜ｔｒａｎｓ  ｆｒｏｍ＝“ＯＮ”  ｔｏ＝“ＯＦＦ”  ｃｏｎｄ＝“ｂ０＝１０”／＞と記述し、［ＯＦＦ］−＞［ＯＮ］：ｂ０＝１の場合は、＜ｔｒａｎｓ  ｆｒｏｍ＝“ＯＦＦ”  ｔｏ＝“ＯＮ”  ｃｏｎｄ＝“ｂ０＝１”／＞と記述されている。
【００４１】
置換履歴１０６は、複数の＜ｒｅｌ＞タグで記述され、このタグ内には方程式３０１内の変数を表す＜ｖａｒ＞タグとそのリンク先である＜ａｌｉａｓ＞タグがある。
【００４２】
図７は、本発明の実施形態１に係るハイブリッドモデルシミュレーション装置１における処理の具体例を示すフローチャートである。尚、Ｓ７０２〜Ｓ７０４の処理は各部において独立して行われるため、下記の順序に限定されない。
【００４３】
Ｓ７０１において、ハイブリッドモデル構造データ編集部１０１は、ハイブリッドモデル構造データ１０２を作成する。  
Ｓ７０２において、方程式置換部１０３は、ハイブリッドモデル構造データ１０２内の方程式３０１を別名方程式１０４に変換する。この処理に連動して、置換履歴保存部１０５は、方程式置換部１０３より置換履歴１０６を取得して記憶装置に保存する。
【００４４】
Ｓ７０３において、依存関係方程式生成部１０７は、ハイブリッドモデル構造データ１０２内の変数別名依存関係３０４より依存関係方程式１０８を生成し、記憶装置に保存する。  
Ｓ７０４において、遷移情報生成部１０９は、ハイブリッドモデル構造データ１０２より遷移情報１１０を生成し、記憶装置に保存する。
【００４５】
Ｓ７０５において、ハイブリッドモデル振舞いデータ合成部１１１は、記憶装置に保存されている別名方程式１０４、依存関係方程式１０８、置換履歴１０６および遷移情報１１０を取得し、これらの情報を所定の規則に基づいて組合せることによってハイブリッドモデル振舞いデータ１１２を合成する。
【００４６】
Ｓ７０６において、ハイブリッドモデル生成部１１３は、ハイブリッドモデル振舞いデータ１１２よりＨＣＣ言語のハイブリッドモデルを作成する。  
Ｓ７０７において、シミュレーション部１１４は、ハイブリッドモデルを用いてシミュレーションを実行する。
【００４７】
図８は、図１に示す方程式置換部１０３における処理の具体例を示すフローチャートであり、図７のＳ７０２の詳細を示す。ここでは、図５のハイブリッドモデル構造データ１０２が読込まれ、図６のハイブリッドモデル振舞いデータ１１２を構成する＜ｇｌｏｖａｌ＞タグ内のデータが生成される場合を例に説明する。
【００４８】
Ｓ８０１では、ハイブリッドモデル構造データ１０２を読込む。ここでは、図５のドキュメントを読み込み、＜ｅｑｎ＞タグ内のデータを抽出する。すなわち、  
a0 = a１ + a２  
a３ = a0  
c0 = c１  
が生成される。
【００４９】
Ｓ８０２では、コンポーネント毎に方程式３０１および変数別名３０３を取得する。ここでは、＜ａｌｉａｓ＞タグを読み込みｖａｒ１属性とｖａｒ２属性の対応関係を読込む。
【００５０】
Ｓ８０３では、方程式３０１内の変数を対応関係に従って変数別名３０３によって置換する。置換後の方程式３０１は、  
a0 = b0 + b１  
b２ = a0  
d0 = d１  
である。
【００５１】
Ｓ８０４では、＜ｅｑｎ＞タグの親にあるｃａｔｅｇｏｒｙタグのｎａｍｅ属性を読み込み方程式と方程式分類名３０２との対応関係を求める。すなわち、  
a0 = b0 + b２  component１  
b２ = a0       component１  
d0 = d１       component２  
である。
【００５２】
以上より、  
<global>  
<eqn category=“component１”>a0=b１+b２</eqn>  
<eqn category=“component１”>b２=a0</eqn>  
<eqn category=“component２”>d0=d１</eqn>  
</global>  
が生成され、各コンポーネントの別名方程式１０４となる。
【００５３】
図９は、図１に示す依存関係方程式生成部１０７における処理の具体例を示すフローチャートであり、図７のＳ７０３の詳細を示す。ここでは、図５のハイブリッドモデル構造データ１０２が読込まれ、図６のハイブリッドモデル振舞いデータ１１２を構成する＜ｓｔａｔｅｓ＞タグ内のデータが生成される場合を例に説明する。
【００５４】
Ｓ９０１では、状態遷移条件３０７および状態名３０５に含まれる全ての状態名を抽出する。ここでは、図５に示すドキュメントを読み込み＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグの下にある＜ｔｒａｎｓ＞タグを読込む。＜ｔｒａｎｓ＞タグ内にあるｆｒｏｍ属性とｔｏ属性には状態名３０５が入力されているので、全ての状態名３０５を抽出する。ここではＯＮとＯＦＦが該当する状態名である。
【００５５】
Ｓ９０２では、状態が属する状態変数を推定する。ここでは、ＯＮ、ＯＦＦという状態名が属する状態変数を得る。まず＜ｒｅｌ＞タグ内のｍｏｄｅ属性とｍｏｄｅｖａｒ属性を読込むと、ＯＦＦという状態名がｍｏｄｅという状態変数名に属していることが分かる。また、ＯＮ、ＯＦＦの状態名は＜ｔｒａｎｓ＞タグから同一の状態名であることが分かるため、状態変数名ｍｏｄｅにはＯＮとＯＦＦの２つの状態名があることが分かる。尚、Ｓ９０２ではユーザに入力を促し、必要によって入力されていない状態名を追加することも可能である。
【００５６】
また、状態名の一部が重複している場合、例えば、
<rel type=“eq” modevar=“mode１” mode=“OFF”>
<rel type=“eq” modevar=“mode２” mode=“ON”>
<trans from=“T１” to=“OFF” cond=“b0=b１”/>
<trans from=“T２” to=“OFF” cond=“b0=b１”/>
<trans from=“K１” to=“ON” cond=“b0=１”/>
<trans from=“K１” to=“K２” cond=“b0=１”/>
<trans from=“K２” to=“OFF” cond=“b0=１”/>
の場合は、以下の手順で状態の推定を行う。まず＜ｒｅｌ＞タグ内のｍｏｄｅ属性とｍｏｄｅｖａｒ属性を読込むと、ＯＦＦという状態名がｍｏｄｅ１に、ＯＮという状態名がｍｏｄｅ２に属していることが分かる。次に、＜ｔｒａｎｓ＞タグのｆｒｏｍ属性とｔｏ属性に含まれるすべての状態名を取り出す。ここで取り出される状態名は、｛Ｔ１、Ｔ２、Ｋ１、Ｋ２、ＯＮ、ＯＦＦ｝である。次に取り出された状態名に対し、ｆｒｏｍ属性に含まれる状態名をｔｏ属性に含まれる状態名に置換する。一回の置換により、｛ＯＦＦ、ＯＦＦ、ＯＮ、Ｋ２、ＯＦＦ、ＯＮ、ＯＦＦ｝が得られる。この置換をｆｒｏｍ属性に含まれる状態名が無くなるまで繰り返す。すると、｛ＯＦＦ、ＯＦＦ、ＯＮ、ＯＦＦ、ＯＦＦ、ＯＮ、ＯＦＦ｝となる。次に同一の状態名を削除し、｛ＯＮ、ＯＦＦ｝を得る。状態の候補は、ここで得られた状態名が、ｍｏｄｅ１、ｍｏｄｅ２に重複して含まれる場合である。従って、（１）状態名｛ＯＮ、ＯＦＦ｝がどちらもｍｏｄｅ１、ｍｏｄｅ２に含まれる、（２）状態名ＯＮのみがｍｏｄｅ１、ｍｏｄｅ２に含まれる、（３）状態名ＯＦＦのみがｍｏｄｅ１、ｍｏｄｅ２に含まれる、の３種類の候補が得られる。このときそれぞれの、状態名の組み合わせは、
（１）ｍｏｄｅ１＝｛Ｔ１、Ｔ２、Ｋ１、Ｋ２、ＯＮ、ＯＦＦ｝、ｍｏｄｅ２＝｛Ｔ１、Ｔ２、Ｋ１、Ｋ２、ＯＮ、ＯＦＦ｝、  
（２）ｍｏｄｅ１＝｛Ｔ１、Ｔ２、Ｋ１、Ｋ２、ＯＮ、ＯＦＦ｝、ｍｏｄｅ２＝｛ＯＮ｝、
（３）ｍｏｄｅ１＝｛Ｔ１、Ｔ２、ＯＦＦ｝、ｍｏｄｅ２＝｛Ｋ１、Ｋ２、ＯＮ、ＯＦＦ｝、となる。以上のステップで複数の候補が得られた場合は、表示装置２１７に候補を全て表示する。ユーザは入力装置２１６から入力された１つの候補を選択する。以上のステップで状態空間の推定が完了する。
【００５７】
Ｓ９０３では、推定される状態に属する変数別名依存関係の有無に応じた状態変数情報を出力する。この処理は推定される全ての状態について行われる。  
（１）推定される状態に属する変数別名依存関係があるときは、変数別名依存関係を解析して状態変数名の間の関係式を抽出または生成し、この関係式を含む状態変数情報を出力する。ここでは、変数別名依存関係が記述される＜ｒｅｌａｔｉｏｎｓ＞タグ以下の＜ｒｅｌ＞の下にある＜ｖａｒ＞タグよりｂ０とｄ０の変数別名依存関係が読込まれる。変数別名依存関係に関係式（以下、「変数別名関係式」という。）が含まれておらず、変数名が２つだけの場合であるので、ｂ０＝ｄ０という等式が生成され、＜ｖａｒ＞タグの上位タグにあたる＜ｒｅｌ＞タグのｍｏｄｅｖａｒ属性で表される状態変数名の値（状態名）はＯＦＦであるため、ＯＦＦ状態の関係式はｂ０＝ｄ０であることが分かる。このステップで生成されるＸＭＬドキュメントは、図５の場合は、
<state name=“OFF”>  
<eqns><eqn>b0=d0</eqn></eqns>  
</state>である。  
尚、例えばａ０、ａ１、ａ２の３変数が変数別名依存関係で関連付けがあり、変数別名関係式が記述されていない場合には、ａ０＝ａ１＝ａ２が生成される。変数の数が増える場合も同様である。
【００５８】
（２）推定される状態に属する変数別名依存関係がないときは、変数別名関係式を含まない空の状態変数情報を出力する。ここでは、状態変数名３０５であるＯＮに該当する変数別名依存関係がないので、<eqns>タグ内に関係式を含まないＸＭＬドキュメント
<state name=“ON”>  
<eqns></eqns>  
</state>  
を生成する。
【００５９】
Ｓ９０４では、状態変数情報を付加し、依存関係方程式１０８を生成する。ここでは、Ｓ９０３で生成されたドキュメント片を＜ｓｔａｔｅｓ＞タグ内に入れ、ｎａｍｅ属性に状態名がＯＦＦまたはＯＮである状態変数（ｍｏｄｅ）を追加することによって、以下のようなドキュメントが生成される。  
<states name=“mode”>
<state name=“ON”><eqns></eqns></state>
<state name=“OFF”>
<eqns><eqn>b0=d0</eqn></eqns>
</state>
</states>
これが依存関係方程式１０８となる。
【００６０】
また、遷移情報生成部１０９は図５の＜ｔｒａｎｓｔｒｉｇｇｅｒ＞タグを読み込み、タグ以下を遷移情報１１０として保存する。また、置換履歴保存部１０５は図５の＜ａｌｉａｓ＞タグを読込むことで、
<rel><var>a１</var><alias>b0</alias></rel>
<rel><var>a２</var><alias>b１</alias></rel>
<rel><var>a３</var><alias>b２</alias></rel>
<rel><var>c0</var><alias>d0</alias></rel>
<rel><var>c１</var><alias>d１</alias></rel>
のデータを作成し、これが置換履歴１０６となる。
【００６１】
図１０は、図１に示すハイブリッドモデル振舞いデータ合成部１１１における処理の具体例を示すフローチャートである。  
Ｓ１００１では、方程式置換部１０３において生成された別名方程式１０４を読込む。
Ｓ１００２では、置換履歴保存部１０５に記憶されている置換履歴１０６を読込む。
Ｓ１００３では、依存関係方程式生成部１０７において生成された依存関係方程式１０８を読込む。  
Ｓ１００４では、遷移情報生成部１０９において生成された遷移情報１１０を読込む。
【００６２】
Ｓ１００５では、各コンポーネントの別名方程式１０４、依存関係方程式１０８、置換履歴１０６および遷移情報１１０から状態遷移を定義するハイブリッドモデル振舞いデータを所定の規則に基づいて合成する。具体的には、別名方程式１０４、置換履歴１０６、依存関係方程式１０８、遷移情報１１０として保存されたＸＭＬデータを＜ＨｙｂｒｉｄＦｓｍ＞タグ以下に追加して合成する。  
Ｓ１００６では、生成されたハイブリッドモデル振舞いデータ１１２を保存する。
【００６３】
このように、本実施形態に係るハイブリッドモデルシミュレーション装置１によれば、シミュレーションの対象物の構成要素の構造を考慮しつつ、複雑な機構系を簡便かつ正確にモデル化できるため、精度の高いシミュレーションを行える。また、特別な言語スキルを習得していなくともブロック形式の構造図を用いてモデル作成を行えるため、そのモデルの時間的な動きを簡単に確認することができるようになり、モデル作成時間を削減することが可能である。更に、外部との連携などに関わる処理を記述するプログラムを直接モデル記述の一部に含めることを可能にし、シミュレーションの適用範囲を拡大することを目的とする。
【００６４】
＜実施形態２＞
図１１は、図１に示すハイブリッドモデル構造データ編集部１０１が出力する第２のハイブリッドモデル構造データ編集画面の具体例を示す図である。同図において、ハイブリッドモデル構造データ１０２は、ハイブリッドモデルの恒等式である方程式３０１を複数まとめて方程式グループを作成し、その名称を付加した方程式分類名３０２、方程式グループ間のインターフェースとなる変数別名３０３、変数別名３０３間の依存関係を示す変数別名依存関係３０４、変数別名依存関係３０４が成立する条件を記述する状態名３０５、状態変数名３０６、状態遷移条件３０７、方程式３０１内の変数と変数別名３０３との接続関係を示すリンク３０８からなる。ここでは、２つの方程式分類名ｃｏｍｐｏｎｅｎｔ１およびｃｏｍｐｏｎｅｎｔ２があり、ｃｏｍｐｏｎｅｎｔ１の方程式３０１として
a0 = a１ + a２  
a３ = a0  
がある。また、ｃｏｍｐｏｎｅｎｔ２の方程式３０１として
c0 = c１  
がある。
【００６５】
また、ｃｏｍｐｏｎｅｎｔ１の変数別名３０３としてｂ０，ｂ２があり、方程式３０１内の変数ａ１とｂ０、ａ２とｂ１、ａ３とｂ２がリンク３０８で接続されている。また、ｃｏｍｐｏｎｅｎｔ２は変数別名３０３としてｄ０，ｄ１がありｃ０とｄ０、ｃ１とｄ１がリンク３０８で接続されている。
【００６６】
また、ｂ０、ｂ２、ｄ０は変数別名関係式１１０１と接続されており、その接続が成立する条件は状態変数名３０６（ｍｏｄｅ）がＯＦＦになったときである。状態は大括弧で表示し、ｍｏｄｅ＝［ＯＦＦ］と表記する。このように、本実施形態に係るハイブリッドモデル構造データ１０２においては実施形態１の場合と異なり、変数別名依存関係３０４が変数別名関係式１１０１によっても記述されている。
【００６７】
状態遷移条件３０７としては、
[ON] -> [OFF] : b0 = １0  
[OFF] -> [ON] : b0 = １  
がある。コロン記号の左辺は状態の遷移を示し、右辺はその遷移が発生する条件を示す。また、状態遷移表記内の右矢印の左辺は遷移前の状態、右は遷移後の状態を指す。例えば［ＯＮ］−＞［ＯＦＦ］：ｂ０＝１０という表記は、ｂ０＝１０という条件が成立したときに状態名がＯＮからＯＦＦへ遷移するという意味である。
【００６８】
図１２は、図１に示すハイブリッドモデル振舞いデータ合成部１１１が出力する第２のハイブリッドモデル振舞いデータ表示画面の具体例を示す図である。同図において、ハイブリッドモデル振舞いデータ１１２は、別名方程式１０４、状態名３０５、状態遷移条件３０７、依存関係方程式１０８、および置換履歴１０６からなる。ここでは別名方程式１０４として
a0 = b0 + b１  
b２ = a0  
d0 = d１  
がある。また、状態名３０５としてＯＮとＯＦＦがあり、ＯＦＦ状態には依存関係方程式１０８としてｄ０＝ｂ０＋ｂ２がある。状態遷移条件３０７としてｂ０＝１０およびｂ０＝１がある。
【００６９】
図１３は、図１１に示すハイブリッドモデル構造データ１０２の文書形式の具体例を示す図である。同図のように、変数が２つ以上あり、＜ｃｏｎｄ＞タグがある場合は、＜ｃｏｎｄ＞タグ内に含まれる関係式がＯＦＦ状態の関係式となる。ここでは、ｄ０＝ｂ０＋ｂ２という式が生成される。この場合、上述した図９のＳ９０３では、
<state name=“OFF”>
<eqns><eqn>d0=b0+b２</eqn></eqns>
</state>
というＸＭＬドキュメントが生成される。図１４は、図１２に示すハイブリッドモデル振舞いの文書形式の具体例を示す図である。
【００７０】
このように、本実施形態に係るハイブリッドモデルシミュレーション装置１によれば、変数別名依存関係３０４が関係式によっても記述されることにより、各コンポーネント同士の依存関係が複雑な場合にも対処することが可能となる。
【００７１】
＜実施形態３＞
図１５は、本発明の実施形態３に係るハイブリッドモデルシミュレーション装置１の全体構成例を示すブロック図である。同図に示されるように、本実施形態に係るハイブリッドモデルシミュレーション装置１は実施形態１と異なり、ハイブリッドモデル振舞いデータ編集部１１５およびハイブリッドモデル構造データ復元部１１６を更に具備している。尚、図１において付された符号と共通する符号は同一の対象を表すため説明を省略し、以下では異なる箇所について詳細に説明する。
【００７２】
ハイブリッドモデル振舞いデータ編集部１１５は、ハイブリッドモデル振舞いデータ１１２を表す状態遷移図を編集する第２の編集画面（図示省略する）を表示すると共に、この第２の編集画面において編集された状態遷移図に基づいてハイブリッドモデル振舞いデータを編集する。第２の編集画面は、例えば、上述したハイブリッドモデル振舞いデータ表示画面に編集機能を加えた画面とし、ユーザからの入力に基づいて編集可能とすると好適である。
【００７３】
ハイブリッドモデル構造データ復元部１１６は、ハイブリッドモデル振舞いデータ１１２内に保存された置換履歴１０６に基づいてハイブリッドモデル振舞いデータ１１２の変換を行い、ハイブリッドモデル構造データ１０２を復元する。
【００７４】
図１６は、図１５に示すハイブリッドモデル構造データ復元部１１６における処理の具体例を示すフローチャートである。ここでは、図６のハイブリッドモデル振舞いデータ１１２を読込み、図５のハイブリッドモデル構造データ１０２へ復元する場合を例に説明する。
【００７５】
Ｓ１６０１では、ハイブリッドモデル振舞いデータを読込む。ここでは、図６のデータを読み込み、＜ｇｌｏｂａｌ＞タグ以下の＜ｅｑｎ＞タグ内のｃａｔｅｇｏｒｙ属性が重複しないように読込む。ここではｃｏｍｐｏｎｅｎｔ１とｃｏｍｐｏｎｅｎｔ２の２種類のｃａｔｅｇｏｒｙが読込まれる。
【００７６】
Ｓ１６０２では、新規のＸＭＬファイルを生成し、先頭タグ情報を書込む。ここでは、生成したＸＭＬファイルの先頭のタグに＜ＨｙｂｒｉｄＳｔｒ＞タグを生成する。  
Ｓ１６０３では、別名方程式１０４を表すタグを抽出し、属性情報に基づいてＸＭＬファイルに各コンポーネントを表すタグを書込む。ここでは、＜ＨｙｂｒｉｄＳｔｒ＞タグの下に＜ｃａｔｅｇｏｒｙ＞タグを先ほど読込んだｃａｔｅｇｏｒｙの種類分だけ生成する。ここでは２つの＜ｃａｔｅｇｏｒｙ＞タグを生成し、そのｎａｍｅ属性にｃｏｍｐｎｅｎｔ１とｃｏｍｐｏｎｅｎｔ２をセットする。
【００７７】
Ｓ１６０４では、置換履歴１０６を表すタグを抽出する。ここでは、図６の＜ｒｅｌ＞タグを読み込み、その下の＜ｖａｒ＞タグと＜ａｌｉａｓ＞タグ内部のデータを読込むことで、変数間の置換履歴１０６を記憶領域（図示省略する）に保存する。ここではａ１とｂ０、ａ２とｂ１、ａ３とｂ２、ｃ０とｄ０、ｃ１とｄ１の対応があることがわかる。
【００７８】
Ｓ１６０５では、置換履歴情報に基づいて別名方程式を置換し、元の方程式へ戻す。ここでは、図６の＜ｇｌｏｂａｌ＞タグの下の＜ｅｑｎ＞タグ内部のデータを読み込み、変数間の置換履歴に従って、文字列を生成する。ここでは、ａ０＝ａ１＋ａ２、ａ３＝ａ０、ｃ０＝ｃ１という文字列が生成される。この際、この文字列が対応しているｃａｔｅｇｏｒｙ名は置換前の文字列に対応するｃａｔｅｇｏｒｙ名であることも記憶しておく。
【００７９】
Ｓ１６０６では、各コンポーネントのタグ内に方程式を表すタグを生成し、置換された方程式を書込む。ここでは、＜ＨｙｂｒｉｄＳｔｒ＞タグ下の＜ｃａｔｅｇｏｒｙ＞タグの下に＜ｅｑｎｓ＞タグを生成し、更にその下に＜ｅｑｎ＞タグを生成し、その内部データとして、＜ｃａｔｅｇｏｒｙ＞タグのｎａｍｅ属性が一致する文字列（ｃｏｍｐｏｎｅｎｔ１はａ０＝ａ１＋ａ２、ａ３＝ａ０、ｃｏｍｐｏｎｅｎｔ２はｃ０＝ｃ１）をセットする。
【００８０】
Ｓ１６０７では、置換履歴情報に基づいて変数別名を表すタグを作成し、各コンポーネントのタグ内に書込む。ここでは、＜ｃａｔｅｇｏｒｙ＞タグの下に＜ａｌｉａｓｅｓ＞タグを生成し、更にその下に＜ａｌｉａｓ＞タグを生成し、先ほどの対応関係（ａ１とｂ０、ａ２とｂ１、ａ３とｂ２、ｃ０とｄ０、ｃ１とｄ１）に従って、ｖａｒ１属性とｖａｒ２属性をセットする。
【００８１】
Ｓ１６０８では、依存関係方程式１０８を表すタグを抽出し、依存関係方程式１０８を取得する。ここでは、図６の＜ＨｙｂｅｉｄＦｓｍ＞タグ以下の＜ｓｔａｔｅｓ＞タグ内の＜ｅｑｎｓ＞タグ内の＜ｅｑｎ＞タグにデータがセットされているものを取り出す。ここではｂ０＝ｄ０が取り出され、そのときの＜ｓｔａｔｅ＞タグ内のｎａｍｅ属性（ここではＯＦＦ）、＜ｓｔａｔｅｓ＞タグ内のｎａｍｅ属性（ここではｍｏｄｅ）も、管理する。
【００８２】
Ｓ１６０９では、抽出された依存関係方程式１０８の構文解析を行い、構文が適正か否かを判定する。ここでは、文字列ｂ０＝ｄ０を構文解析し、一つの等号記号と二つの変数名が左辺と右辺にそれぞれ一つずつあるか否かを判定する。このステップにおいて、条件を満たすと判定された場合、＜ＨｙｂｒｉｄＳｔｒ＞タグの下に＜ｒｅｌａｔｉｏｎｓ＞タグを生成し、更に＜ｒｅｌ＞タグを生成する（Ｓ１６１０）。そのｔｙｐｅ属性にｅｑを、ｍｏｄｅｂａｒ属性にＳ１６０８において保存したｍｏｄｅ、ｍｏｄｅ属性にもＳ１６０８において保存したＯＦＦを追加する。更に、＜ｒｅｌ＞タグの下に二つの変数名の左辺、右辺の順番に＜ｖａｒ＞タグとその内部データとして変数名を生成する。ここでは＜ｖａｒ＞ｂ０＜／ｖａｒ＞、＜ｖａｒ＞ｄ０＜／ｖａｒ＞が生成される。一方、構文解析が条件を満たしていないと判定された場合は、図１３のように＜ｃｏｎｄ＞タグを生成し（Ｓ１６１１）、構文解析対象である式（図１３の場合はｄ０＝ｂ０＋ｂ２が対応）を保存する。
【００８３】
Ｓ１６１２では、遷移情報１１０を表すタグを抽出し、ＸＭＬファイルに状態遷移条件３０７を表すタグへ書込む。ここでは、図６の＜ＨｙｂｒｉｄＦｓｍ＞タグ以下の＜ｔｒａｎｓｔｒｉｇｅｒ＞タグ内のデータをすべて読み込み、＜ＨｙｂｒｉｄＳｔｒ＞タグ内に複製を作ることによって、ハイブリッドモデル振舞いデータ１１２からハイブリッドモデル構造データ１０２を復元する。
【００８４】
このように、本実施形態に係るハイブリッドモデルシミュレーション装置１によれば、ハイブリッドモデル振舞いデータ１１２を作成した場合に、このデータ内に置換履歴１０６が保存されるため、この置換履歴１０６に基づいて自動的にハイブリッドモデル構造データ１０２への復元が可能となり、より簡単にハイブリッドモデルを生成することができる。例えば、ハイブリッドモデル振舞いデータ編集部１１５においてハイブリッドモデル振舞いデータ１１２の編集がなされた場合、この編集データをハイブリッドモデル構造データ１０２へ復元することで、ハイブリッドモデル構造データ編集部１０１において再編集および検証が可能であるため、精度の高いハイブリッドモデルを効率的に生成し、シミュレーションを行うことができる。
【００８５】
尚、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。以下、上記実施形態の変形例について説明する。
【００８６】
＜変形例１＞
上記実施形態では、ＸＭＬ形式でデータを記述したが、階層構造のテキストを記述できるフォーマットであれば他の形式を用いてもよい。例えば、下記のＸＭＬドキュメント
<state name=“OFF”>
<eqns><eqn>b0=d0</eqn></eqns>
</state>
のタグの代わりに、"+"文字で階層の深さを記述し、
state[name="OFF"]  
+eqns  
++eqn(b0=d0)  
と記述することもできる。
【００８７】
同様に、"+"文字の代わりにタブ文字を利用して、
state[name="OFF"]  
[タブ文字]eqns  
[タブ文字][タブ文字]eqn(b0=d0)  
と記述することもできる。
【００８８】
また、ＸＭＬと似たテキストフォーマットであるＪＳＯＮを用いた場合には、
{ 
"name":"OFF",
{
"eqn":"b0=d0" 
}
}
と記述される。"{"は"state"タグを表し、２段目の"{"は"eqns"を表すものとする。  
このように、フォーマットを変えた場合には、文字数が削減できるため、より小さいサイズでの記述も可能となるため、任意に設計変更可能である
＜変形例２＞
図１７は、図１に示すハイブリッドモデル構造データ編集部１０１が出力する第３のハイブリッドモデル構造データ編集画面の具体例を示す図である。ここでは、状態変数３０６が２つあり、状態名３０５の一部が重複している場合のハイブリッドモデル構造データ１０２が図形で表現されている。このように、状態変数３０６が複数ある場合であっても、ハイブリッドモデル構造データ１０２の作成は上述した手順で行えるため、コンポーネント同士が複雑な関係を有する場合であっても対応可能である。
【００８９】
＜変形例３＞
図１８は、図１に示すハイブリッドモデル構造データ編集部１０１が出力する第４のハイブリッドモデル振舞いデータ表示画面の具体例を示す図である。ここでは、状態変数３０６であるｍｏｄｅに対して状態名３０５がＯＮとＯＦＦがある場合に、それぞれの状態名３０５ごとに異なる接続先を持ったハイブリッドモデル構造データ１０２が図形で表現されている。このように、図形表現を用いることによって、状態名３０５と接続関係の対応が明確になり、より直感的な入力を行うことができる。
【符号の説明】
【００９０】
１…ハイブリッドモデルシミュレーション装置
１０１…ハリブリッドモデル構造データ編集部
１０２…ハイブリッドモデル構造データ
１０３…方程式置換部
１０４…別名方程式
１０５…置換履歴保存部
１０６…置換履歴
１０７…依存関係方程式生成部
１０８…依存関係方程式
１０９…遷移情報生成部
１１０…遷移情報
１１１…ハイブリッドモデル振舞いデータ合成部
１１２…ハイブリッドモデル振舞いデータ
１１３…ハイブリッドモデル生成部
１１４…シミュレーション部
１１５…ハイブリッドモデル振舞いデータ編集部
１１６…ハイブリッドモデル構造データ復元部
２１１…ＣＰＵ
２１２…ＲＯＭ
２１３…ＲＡＭ
２１４…入出力インターフェース
２１５…システムバス
２１６…入力装置
２１７…表示装置
２１８…補助記憶装置
２１９…通信装置
３０１…方程式
３０２…方程式分類名
３０３…変数別名
３０４…変数別名依存関係
３０５…状態名
３０６…状態変数名
３０７…状態遷移条件
３０８…リンク
１１０１…変数別名関係式
【図１】
2011059789.tif 000003
【図２】
2011059789.tif 000004
【図３】
2011059789.tif 000005
【図４】
2011059789.tif 000006
【図５】
2011059789.tif 000007
【図６】
2011059789.tif 000008
【図７】
2011059789.tif 000009
【図８】
2011059789.tif 000010
【図９】
2011059789.tif 000011
【図１０】
2011059789.tif 000012
【図１１】
2011059789.tif 000013
【図１２】
2011059789.tif 000014
【図１３】
2011059789.tif 000015
【図１４】
2011059789.tif 000016
【図１５】
2011059789.tif 000017
【図１６】
2011059789.tif 000018
【図１７】
2011059789.tif 000019
【図１８】
2011059789.tif 000020