(57)【要約】【課題】ユーザが希望する条件に沿った分散シミュレーションのシナリオを自動的に生成し実行することができる分散シミュレーションシステムを提供する。【解決手段】分散シミュレーションシステム１１のシミュレータ特性取得部１１３は、シミュレータごとのシミュレータ特性を取得する。シミュレーション条件入力部１１４は、ユーザが実行させようとするシミュレーションのシミュレーション条件の入力を受け付ける。シミュレーションシナリオ生成部１１２は、シミュレータの情報やシミュレータ特性などに基づいて、シミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序や、２つ以上のシミュレータのそれぞれのシミュレーションを表すすり合わせルール、を示すシミュレーションシナリオを生成する。シミュレーション実行部１１６は、シミュレーションシナリオに従って、シミュレータにシミュレーションを実行させる。【選択図】図１
2012018508.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムであって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得手段と、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力手段と、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力手段に入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成手段と、
前記生成手段で生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行手段と、
を備えることを特徴とする分散シミュレーションシステム。
【請求項２】
前記特性取得手段は、前記シミュレータにシミュレーションを実行させた結果から前記シミュレータ特性を取得することを特徴とする請求項１に記載の分散シミュレーションシステム。
【請求項３】
前記特性取得手段は、前記シミュレータごとのシミュレーションの１ステップの計算時間を取得し、
前記シミュレーション条件が計算時間の情報を含む場合に、前記生成手段は、前記シミュレーション条件の計算時間に適合する計算時間の特性を有するシミュレータを選択する、
ことを特徴とする請求項１または２に記載の分散シミュレーションシステム。
【請求項４】
前記生成手段は、前記シミュレーションシナリオに含まれる少なくとも１つのシミュレータを代替するシミュレータの候補を含むシミュレーションシナリオを生成し、
前記実行手段は、前記シミュレーションシナリオに従ってシミュレーションを実行させるときに、実行させたシミュレータの結果から、前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合するか否かを判断する手段を含み、
前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合しないと判断する場合に、その後に実行するシミュレータを代替する候補の中から前記シミュレーション条件に最も近くなると推測される計算時間の特性を有するシミュレータを選択して実行させる、
ことを特徴とする請求項３に記載の分散シミュレーションシステム。
【請求項５】
前記特性取得手段は、前記シミュレータごとの前記出力データの精度の情報を取得し、
前記シミュレーション条件が出力データの精度の条件を含む場合に、前記生成手段は、前記精度の条件に適合する精度の特性を有するシミュレータを選択する、
ことを特徴とする請求項１ないし４のいずれか１項に記載の分散シミュレーションシステム。
【請求項６】
前記生成手段で生成した前記シミュレーションシナリオを、前記条件入力手段にシミュレーション条件を入力した前記ユーザに提示する提示手段と、
前記提示手段で提示した前記シミュレーションシナリオの中から、１つのシミュレーションシナリオの選択を受け付ける選択手段と、を備え、
前記実行手段は、前記選択手段で選択された前記シミュレーションシナリオを実行させることを特徴とする請求項１ないし５のいずれか１項に記載の分散シミュレーションシステム。
【請求項７】
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムが行う分散シミュレーション方法であって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を備えることを特徴とする分散シミュレーション方法。
【請求項８】
前記特性取得ステップは、前記シミュレータにシミュレーションを実行させた結果から前記シミュレータ特性を取得することを特徴とする請求項７に記載の分散シミュレーション方法。
【請求項９】
前記特性取得ステップは、前記シミュレータごとのシミュレーションの１ステップの計算時間を取得し、
前記シミュレーション条件が計算時間の情報を含む場合に、前記生成ステップは、前記シミュレーション条件の計算時間に適合する計算時間の特性を有するシミュレータを選択する、
ことを特徴とする請求項７または８に記載の分散シミュレーション方法。
【請求項１０】
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させるコンピュータに、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散シミュレーションシステム、分散シミュレーション方法およびプログラムに関する。
【背景技術】
【０００２】
様々な分野において開発される組み込みソフトウェアなどの評価のため、ソフトウェアで制御される実際の装置を数式化し、各装置のシミュレータを組み合わせて分散シミュレーションを行うシステムが利用されている。また、景気や環境など社会の様々なシミュレーションを行う上で、経済・心理・数学など多分野のシミュレーションモデルを組み合わせたシミュレーションが行われている。このような場合、個別のシミュレータを入れ替えた分散シミュレーションを行いその結果を比較したい、一度生成したシミュレータを別の分散シミュレーションでも再利用したい、という要求がある。このような要求に対応するため、複数のシミュレータを自由に組み合わせて分散シミュレーションを行うシステムが開発されている。
【０００３】
非特許文献１には、関連する技術の分散シミュレーションシステムについて記載されている。図１５ないし図１７は、非特許文献１にかかる分散シミュレーションシステムの構成を示すブロック図の一例である。各シミュレータは外部に出力する何らかのデータ(シミュレーション対象である環境の状態や人の心理状態など)と外部から入力するデータの情報を、分散シミュレーションマネージャのシミュレータ情報蓄積部に格納し、分散シミュレーションマネージャに登録する。分散シミュレーションを行いたいユーザは、シミュレータ表示部によって登録されているシミュレータの一覧を確認し、分散シミュレーションのシナリオを作成する。シナリオとは、シミュレータの組み合わせと実行する順序、どんな情報をユーザが外部から与えるかの一覧、またその際にデータをどう変換するかのルールなどのデータセットをいう。このシナリオを分散シミュレーションシナリオ入力部に入力すると、分散シミュレーション実行部がそれぞれのシミュレータ同士の値交換や時刻進行管理を行い、分散シミュレーションを行うことができる。
【０００４】
特許文献１には、機能モジュール単位で適切なシミュレーション方式を判定、選択し、高速に動作するＬＳＩシミュレーションが記載されている。その技術は、第１のテストベクタを用いたＬＳＩ動作のシミュレーションにおいて、ＬＳＩを構成する各機能モジュールに発生するイベント数を計数して各機能モジュールのシミュレーション方式を選択する指標値を算出する手段と、選択指標値に基づいて、各機能モジュールのシミュレーション方式を複数のシミュレーション方式の中からそれぞれ１つ選択するシミュレーション方式選択手段と、各機能モジュールごとに選択されたシミュレーション方式で第２のテストベクタを用いたＬＳＩ動作のシミュレーションの実行を制御する制御手段を備える方法である。
【０００５】
特許文献２には、シミュレータ同士のコンピュータネットワーク間、すなわちサイト間でのセキュリティを考慮することができる拡張性や柔軟性を有する分散シミュレーションシステムが記載されている。その技術は、分散シミュレーションシステムの各サイトは、構内分散シミュレーション定義情報を参照して、異機種分散シミュレータ間の通信制御を行う構内分散シミュレーションマネージャと、外部へ公開可能なシミュレーション情報のみを選択してサイト外部へ公開する構内代表シミュレータとを備え、広域分散シミュレーションマネージャは、シミュレーション情報を公開するサイトと購読するサイト間での通信制御を行う方法である。
【０００６】
特許文献３には、高い精度と短い計算時間とを同時に実現する分散シミュレーションが記載されている。その技術は、モデル選択部が条件入力部から設定された選択条件に基づいてシミュレーションモデルを選択しモデルデータベースから読出し、シミュレーション計算部がシミュレーションモデルを用いて条件入力部に設定された初期状態及びシミュレーション条件に基づいてシミュレーション計算を行う方法であり、モデルの選択条件に基づいて、詳細度の異なる各シミュレーションモデルを切替えてシミュレーション計算を行なう。
【０００７】
特許文献４には、ハードウェアリソースと割り付けられたモデル等のソフトウェアリソースとを容易に対応付けて把握することのできる分散型シミュレーションシステムが記載されている。その技術は、分散シミュレーションシステム管理装置と複数のシミュレータとがネットワークを介して接続され、管理装置の管理下で各シミュレータに割り付けられた複数のシミュレーションモデルが分散して実行される分散型シミュレーションシステムに、管理装置に表示されるシミュレーションモデルに関する情報とそのシミュレーションモデルに基づく演算を行うシミュレータとを対応付けて報知する報知手段を備える方法である。
【０００８】
特許文献５には、モデルの表現方法が異なる複数のシミュレーションを連携可能にした情報処理装置が記載されている。その技術は、同一内容のモデルに対して相互に異なる表現で規定されたシミュレーションをそれぞれ実行する複数のシミュレーション装置に接続され、複数のシミュレーションの時間進行ならびにモデルの生成および削除を管理する情報処理装置であって、複数のシミュレーション間でモデルの表現を変換するための連携設定情報が格納された記憶部と、複数のシミュレーションのいずれかにおいてモデルの生成または削除の処理が実行されると、処理対象のモデルを他のシミュレーションに対応する表現に連携設定情報に基づいて変換し、表現変換後のモデルについて生成または削除があった旨の情報を他のシミュレーションに対応するシミュレーション装置に送信する制御部とを有する方法である。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−２８８４３２号公報
【特許文献２】特開２００１−３０６５３８号公報
【特許文献３】特開２００２−２５９８８８号公報
【特許文献４】特開２００８−４０９８３号公報
【特許文献５】特開２００９−２０８０１号公報
【非特許文献】
【００１０】
【非特許文献１】IEEE P1516.1 Modeling and Simulation (M&S) High Level Architecture(HLA)-Federate Interface Specification
【発明の概要】
【発明が解決しようとする課題】
【００１１】
関連する技術の分散シミュレーションシステムでは、ユーザが自分の希望する条件に沿った分散シミュレーションのシナリオを生成したくても、条件を実現するために個々のシミュレータのどのような特性を把握する必要があるのかが解らないという課題がある。また、シミュレータ特性を取得する為に、利用可能なシミュレータ全てについて実装の詳細を確認したり何度もシミュレータを動かし結果の確認をしたりしなければならないという課題がある。さらに、特性が解ったとしても、それをもとにシナリオを生成するのが困難という課題がある。
【００１２】
また、関連する技術において、各シミュレータを組み合わせたシミュレーションを行う際に、各シミュレータを自動的に切り替えることは可能であるが、複数のシミュレーションモデルを組み合わせてシナリオを生成することについては考慮されてない。シミュレーションモデルを組み合わせる場合、ユーザ自身がシミュレーションモデルに合わせて様々な組み合わせを指定しなければならず、各シミュレータ特性だけでなく各シミュレーションモデルをも把握せねばならないという課題が生じている。そのため、シミュレーションシナリオの生成の必要性が高い場合であっても、シミュレーションモデルを組み合わせて実際にシミュレーションシナリオを生成できず、シミュレーションがうまく行われない事もあった。
【００１３】
さらに、シミュレーションシナリオは、シミュレーション特性に基づいた予測値によってユーザが希望する条件を満たすように生成されているが、予測どおりにならない可能性もあり、その場合には実際のシミュレーション実行時に希望する条件を満たすよう再調整することが望ましいが、関連する技術の分散シミュレーションシステムでは困難である。
【００１４】
本発明は、上記事情に鑑みてなされたものであり、ユーザが希望する条件に沿った分散シミュレーションのシナリオを自動的に生成し実行することができる分散シミュレーションシステム、分散シミュレーション方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の観点に係る分散シミュレーションシステムは、
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムであって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得手段と、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力手段と、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力手段に入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成手段と、
前記生成手段で生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行手段と、
を備えることを特徴とする。
【００１６】
本発明の第２の観点に係る分散シミュレーション方法は、
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムが行う分散シミュレーション方法であって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を備えることを特徴とする。
【００１７】
本発明の第３の観点に係るプログラムは、
２つ以上のシミュレータを組み合わせ、シミュレーションを実行させるコンピュータに、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１８】
本発明によれば、ユーザが希望する条件に沿った分散シミュレーションのシナリオを自動的に生成し実行することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１に係る分散シミュレーションシステムの構成例を示すブロック図である。
【図２】シミュレータ情報の一例を示す図である。
【図３】シミュレータ情報の一例を示す図である。
【図４】シミュレーションシナリオ条件の一例を示す図である。
【図５】シミュレーションシナリオの一例を示す図である。
【図６】シミュレータ特性の一例を示す図である。
【図７】実施の形態１に係る分散シミュレーションのシミュレーション実行およびシミュレータ特性取得動作の一例を示すフローチャートである。
【図８】実施の形態１に係る分散シミュレーションの分散シミュレーション実行動作の一例を示すフローチャートである。
【図９】本発明の実施の形態２に係る分散シミュレーションシステムの構成例を示すブロック図である。
【図１０】シミュレーションシナリオの一例を示す図である。
【図１１】シミュレーションシナリオの一例を示す図である。
【図１２】シミュレーション条件の一例を示す図である。
【図１３】実施の形態２に係る分散シミュレーションのシミュレーション実行およびシミュレータ特性取得動作の一例を示すフローチャートである。
【図１４】本発明の実施の形態に係る分散シミュレーションシステムのハードウェア構成の一例を示すブロック図である。
【図１５】関連する技術の分散シミュレーションシステムの構成例を示すブロック図である。
【図１６】図１５に係る関連する技術の分散シミュレーションシステムの概略図である。
【図１７】図１５に係る関連する技術の分散シミュレーションシステムの概略図である。
【発明を実施するための形態】
【００２０】
本発明において、シミュレータとは、データを入力することによって、ある期間の事柄をシミュレートし出力することを１ステップとし、決まったステップ数のシミュレーションを行うための装置もしくはそのプログラムをいう。シミュレータ特性とは、シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含む情報をいう。項目により外部から与える情報またはシステムが抽出可能な情報に分けられ、例えば、計算時間はシミュレーションを実行することにより取得できるシステムにより抽出可能な情報である。
【００２１】
シミュレータ定義情報とは、入力データの項目、単位および形式、出力データの項目、単位および形式、ならびにシミュレーションの１ステップの期間を含む情報をいう。シミュレータ定義情報は、外部から与えられる情報である。
【００２２】
本発明ですり合わせルールとは、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数（と、その公倍数）に含まれるそれぞれのシミュレータの１ステップの期間の数、を表す情報である。このすり合わせルールはシミュレータ定義情報から生成できる。例えば、１つのシミュレータの出力データの単位と形式が次に実行するシミュレータの入力の単位と形式に合っている場合、または、１ステップの期間が同じ場合には、すり合わせルールは「一致する」という情報である。
【００２３】
本発明でシミュレーションシナリオとは、実行するシミュレータの組合せとそれを実行する順序、入力する必要のあるデータ、およびシミュレータの間のすり合わせルールを示す情報をいう。
【００２４】
以下に、発明を実施するための形態について図面を参照して詳細に説明する。なお、図中同一または相当する部分には同じ符号を付す。
【００２５】
（実施の形態１）
図１は、本発明の実施の形態１に係る分散シミュレーションシステムの構成例を示すブロック図である。シミュレーション装置１００は、分散シミュレーションシステム１１と複数のシミュレータ１２により構成される。分散シミュレーションシステム１１は、シミュレータ情報蓄積部１１１と、シミュレーションシナリオ生成部１１２と、シミュレータ特性取得部１１３と、シミュレーション条件入力部１１４と、個別シミュレータ入出力部１１５と、シミュレーション実行部１１６と、シミュレーション用データ入力部１１７と、シミュレーション用データ蓄積部１１８と、シミュレーション結果表示部１１９と、を備える。
【００２６】
シミュレータ情報蓄積部１１１は、各シミュレータ１２のシミュレータ特性およびシミュレータ定義情報を含むシミュレータ情報を蓄積して記憶する。
【００２７】
シミュレーションシナリオ生成部１１２は、シミュレータ情報蓄積部１１１のシミュレータ情報を利用して、ユーザが実行させようとするシミュレーションについて、ユーザの希望する条件を満たすシミュレーションシナリオを生成する。
【００２８】
シミュレータ特性取得部１１３は、各シミュレータ１２のシミュレータ特性を取得する。このとき、シミュレータ特性取得部１１３は、実際にシミュレーションを実行した結果より、シミュレータ特性を取得することができる。取得したシミュレータ特性は、シミュレータ情報蓄積部１１１に蓄積する。
【００２９】
シミュレーション条件入力部１１４は、ユーザがシミュレーションを実行しようとする希望の条件を入力した際の、その条件を受け付ける。シミュレーション条件は、シミュレーションシナリオ生成部１１２でシミュレーションシナリオ生成の際に参照される。
【００３０】
具体的には、シミュレータ情報蓄積部１１１には、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性や、ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション定義情報などが情報として蓄積される。
【００３１】
また、各シミュレータ１２について、２つのシミュレータ１２の一方の出力データの単位と形式を、その出力データに対応する他方の入力データの単位と形式に変換する規則、および、２つ以上のシミュレータ１２のそれぞれのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータ１２の１ステップの期間の数、を表すすり合わせルールなどについても、シミュレータ特性として蓄積されてもよい。
【００３２】
シミュレータ特性は、シミュレータ特性取得部１１３によって各シミュレータ１２から取得される。シミュレータ特性の取得は、シミュレーション実行部１１６によるシミュレーションの実行を通して、各シミュレータ１２から取得してもよい。例えば、シミュレーション用データ蓄積部１１８に蓄積されたテストデータを利用し、様々なサイズの入力に対して何度もシミュレーションを行うことによって、入力データのサイズによる計算時間、というシミュレータ特性を取得する。
【００３３】
シミュレーションシナリオ生成部１１２は、シミュレータ情報蓄積部１１１に蓄積されたシミュレータ情報を利用して、シミュレーション条件入力部１１４より入力されたユーザの希望する条件に合うシナリオを生成する。
【００３４】
ユーザの希望する条件に合うとは、例えば、ユーザが実行させようとするシミュレーションが、シミュレーションの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性や、シミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の中で、指定した項目について所定の値を満たすことをいう。
【００３５】
これらの入力すべき条件の一覧はシミュレーション条件入力部１１４によって提示されるが、ユーザは全ての条件を入力する必要は無く、一部だけ入力してもよい。シミュレーションシナリオ生成部１１２は、入力された条件より、条件に合うシミュレーションシナリオ（以下、単にシナリオということがある）を生成する。
【００３６】
生成するシナリオは前述のとおり、実行するシミュレータ１２の組合せとそれを実行する順序、およびシミュレータ１２の間のすり合わせルールを示す情報である。シミュレータ１２はそれぞれ、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報で定義されている。シミュレーションシナリオ生成部１１２は、シミュレータ１２の定義情報に基づいて、ユーザが入力した希望するシミュレーションを行うシミュレータ１２の組合せを選択する。
【００３７】
シナリオのすり合わせルールは前述のとおり、２つのシミュレータ１２の一方の出力データの単位と形式を、その出力データに対応する他方の入力データの単位と形式に変換する規則、および、２つ以上のシミュレータ１２のそれぞれのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータ１２の１ステップの期間の数を示す情報を含む。すり合わせルールは、シミュレーションを行うシミュレータ１２の組合せと実行順序に従って、シミュレータ１２の定義情報から生成する。
【００３８】
以下にシナリオの生成方法の例を示す。例えば、シミュレータ情報蓄積装置にシミュレータ特性として入力サイズに対する計算時間と出力サイズが蓄積されていたとして、ユーザが希望するシミュレーションとして、入力データはあるデータＡであり、出力データは別のデータＢであり、さらに計算時間の上限がある値であるという条件が与えられた場合を考える。
【００３９】
まず、データＡを入力としデータＢを出力とするようなシミュレータ１２の組み合わせを抽出し、各組み合わせについてどのシミュレータ１２の出力をどの別のシミュレータ１２の入力とするかを決め、計算順序を決める。各シミュレータ１２の出力サイズはシミュレータ特性として取得できるので、各シミュレータ１２の入力サイズを決定できる。また、入力サイズに対する計算時間はシミュレータ特性として取得できるので、各シミュレータ１２の計算時間を求める事ができる。よって、各シミュレータ１２の組み合わせの合計計算時間を求める事ができるので、ユーザが希望する計算時間の上限内に収まるようなシミュレータ１２の組み合わせを抽出できる。
【００４０】
次に、各シミュレータ１２の組み合わせについてシミュレータ１２間のすり合わせルールを生成する。シミュレータ１２間のすり合わせとは、組み合わせる２つのシミュレータ１２の間で扱っているデータの単位や形式が違う場合に適宜変換したり、２つのシミュレータ１２が違う時間粒度（１ステップの期間）で計算を行っている場合に時間粒度をいずれかに統一したりすることをいう。時間粒度をいずれかに統一するための、シミュレータ１２間のすり合わせのルールは、例えば一方のシミュレータ１２は１ステップを１年としてシミュレーションを行い、他方のシミュレータ１２は１ステップを１ヶ月でシミュレーションを行っている場合、前者のシミュレータ１２を１ステップ動かす間に後者のシミュレータ１２をステップ動かしたりするためのルールである。すなわち、２つ以上のシミュレータのそれぞれのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれの１ステップの期間の数である。生成されたシナリオは、シミュレーション実行部１１６に出力される。また出力されるシナリオは複数あってもよい。
【００４１】
個別シミュレータ入出力部１１５は、各シミュレータ１２との間で、データの入出力を行う。例えば、シミュレータ１２から入力したデータをシミュレータ情報蓄積部１１１へ蓄積するなどして、シミュレーション実行部１１６から実行結果を各シミュレータ１２へ出力する。
【００４２】
シミュレーション用データ入力部１１７では、シミュレーションに用いる外部データを入力する。入力されたデータは、シミュレーション用データ蓄積部１１８に蓄積される。これらのデータは、シミュレーションシナリオ生成部１１２によって生成されたシナリオに必要な場合にユーザによって入力されたり、シミュレータ１２の特性を取得するためのテストデータとして入力されたりする。
【００４３】
シミュレーション実行部１１６は、シミュレーションシナリオ生成部１１２よりシナリオを受け取る。また、シミュレーション実行部１１６は、シミュレーション用データ蓄積部１１８よりシミュレーションに必要なデータを受け取る。そして、シミュレーション実行部１１６は、個別シミュレータ入出力部１１５によって各シミュレータ１２とデータをやり取りしながら、シナリオに沿った分散シミュレーションを実行する。
【００４４】
実行過程や結果はシミュレータ特性取得部１１３へ出力される。また、シナリオがユーザの条件入力によって生成されていた場合は、シミュレーション結果表示部１１９によってシミュレーション結果が出力され、ディスプレイなどの表示装置へシミュレーション結果が表示される。
【００４５】
図２および図３は、シミュレータ情報の一例を示す図である。各シミュレータ１２についてのデータ項目についての情報（シミュレータ情報）であって、シミュレータ情報蓄積部１１１に蓄積されたシミュレータ情報が記載されている。
【００４６】
シミュレータ情報は、各シミュレータ１２から個別シミュレータ入出力部１１５を介してシミュレータ情報蓄積部１１１へ蓄積される。シミュレータ情報は、シミュレータ１２のデータ種類、単位、形式、大きさ、時間粒度の少なくとも１つを含む。
【００４７】
図４は、ユーザが入力したシミュレーションシナリオ条件の一例を示す図である。入力されたシミュレーション条件を用いて、シミュレーションシナリオ生成部１１２でシミュレーションシナリオを生成する。図５は、このようにして生成されたシミュレーションシナリオの一例を示す図である。
【００４８】
図６は、シミュレータ特性の一例を示す図である。シミュレータ特性には、各シミュレータ１２の情報から直接取得するデータの他に、シミュレーションを実行することにより得られる特性、各シミュレータ１２の組み合わせなどから得られるデータなど、シミュレータ特性データは複数の特性に関する項目がある。特に、シミュレータ特性に影響を与える項目として、シミュレータ１２ごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度などが挙げられる。
【００４９】
以下に、図１ないし図６を用いて、実施の形態１に係る分散シミュレーションシステムの動作について具体的に説明する。過去の人口データを入力とし将来のＧＤＰ（国内総生産）を出力とする分散シミュレーションを実行する場合を例に挙げる。
【００５０】
以下、分散シミュレーションの実行に先立ってシミュレータの特性を取得する際の動作について説明する。分散シミュレーションシステム１１によるシミュレータ特性情報を取得するためには、まず、シミュレーション用データ入力部１１７によって入力された、シミュレーション用データ蓄積部１１８に蓄積されているシミュレータＡの初期入力データのセットを多数取り出す。
【００５１】
次に、それぞれの初期入力データセットに対してシミュレータＡによるシミュレーションをシミュレーション実行部１１６によって実行し、初期入力データセットのサイズと対応する計算時間をシミュレータ特性取得部１１３へ出力する。最後に、シミュレータ特性取得部１１３は初期入力データセットのサイズと計算時間の組を調べ、初期入力データサイズから計算時間を求める式を予測し、シミュレータ情報蓄積部１１１に蓄積する。
【００５２】
具体的に図２および図３では、登録したシミュレータ１２について、シミュレータ１２の入出力や内部変数の情報である。図２では、シミュレータの初期入力データ・毎ステップ入力するデータ・出力データの種類や、データの単位・時間粒度などが蓄積されている。またユーザが入力するシミュレータ情報の種類は、あらかじめ決められている。図３では、初期入力データサイズに対する計算時間、出力データのサイズ、入力データの値による出力データの精度、入力データの値による出力データの値の範囲、毎ステップ入力データの値による出力データの値の範囲が蓄積されている。
【００５３】
以下、分散シミュレーションを実行する際の動作について説明する。分散シミュレーションシステム１１を利用する、すなわち分散シミュレーションを実行しようとするユーザは、シミュレーション条件入力部１１４に、初期入力データ、毎ステップ入力を希望するデータ、出力データ、１ステップの計算時間などの分散シミュレーション条件を入力する。ユーザは全ての条件を入力する必要は無く、一部の条件については未入力でも良い。
【００５４】
具体的に図４では、ユーザが希望する分散シミュレーションは、初期入力として人口を入力し、１年ごとのＧＤＰを出力するものであって、ユーザがステップ毎に入力するデータは無く、１ステップの計算時間は４０秒以内であるようなシミュレーションである。
【００５５】
次に、ユーザが入力した条件を基にして、シミュレーションシナリオ生成部１１２はシナリオを生成する。シミュレーションシナリオ生成のため、まず条件を満たすシミュレータ１２の組み合わせを抽出し、次にシミュレータ１２間のすり合わせルールの生成を行う。
【００５６】
条件を満たすシミュレータ１２の組み合わせ抽出のために、まず、初期入力データは人口が指定されているので、条件を満たすシミュレータＡ、Ｂ、Ｃ、Ｄ、Ｅを入力用シミュレータとして取得する。次に、出力データはＧＤＰが指定されているので、条件を満たすシミュレータＤ、Ｅ、Ｆを出力用シミュレータとして取得する。そして、入力用シミュレータの出力を別のシミュレータの入力として繋げることを繰り返して、出力用シミュレータまで繋がるような組み合わせを抽出する。
【００５７】
シミュレータＤおよびＥは入力用シミュレータでも出力用シミュレータでもあるので、シミュレータＤおよびＥは単体で条件を満たすシミュレータである。また、シミュレータＦはステップ毎に入力データとして人口を与える必要があるので、人口を出力するようなシミュレータと組み合わせなければならない。人口を出力するシミュレータはＡ、Ｂ、Ｃであるので、ＡＦ、ＢＦ、ＣＦの３つのシミュレータの組み合わせが考えられ、これらの組み合わせは入力用シミュレータも出力用シミュレータも含んでいるので、条件に合うシミュレータの組み合わせになっている。このようにして条件を満たすシミュレータ１２の組み合わせを探すと５つの組み合わせ（Ｄ、Ｅ、ＡＦ、ＢＦ、ＣＦ）が抽出される。
【００５８】
抽出された組み合わせの中から、入出力以外の他の条件、ユーザがステップ毎に入力するデータが無い、１ステップの計算時間が４０秒以内である、１ステップの時間粒度は１年である、という３つの条件に合うものを取得する。まず、Ｅという組み合わせはユーザがステップ毎にＣＯ２を入力しなければならないため、条件を満たさない。
【００５９】
次に、各組み合わせに対する１ステップの計算時間を、毎ステップ入力データサイズから求める。例えばＢＦの組み合わせの場合、Ｂの計算時間は１５ｎ秒であり、毎ステップ入力データはＦの出力データなのでサイズは１であるため、計算時間は１５秒である。Ｆの計算時間は１０ｎ秒であり、Ｂの出力データサイズは２であるため、計算時間は２０秒である。よってＢＦの計算時間は３５秒である。同様にして計算時間を求めると、Ｄ：２０秒、ＡＦ：６０秒、ＢＦ：３５秒、ＣＦ：５６秒であるので、ＡＦとＣＦは条件に合わない。以上より、抽出される組み合わせはＤ、ＢＦの２つである。
【００６０】
シミュレーション条件は、条件が一つとは限らず複数あってもよく、１ステップの計算時間を条件としてもよい。シミュレータ特性取得部１１２で実際にシミュレーションを実行した結果からステップの計算時間を取得することも可能である。この場合、シミュレータ特性取得部１１２でステップの計算時間を取得するためにかかる時間をできるだけ低減させるために、対象となるシミュレータ１２が少ない方が好ましく、シミュレーション条件の適合不適合を判断する際の条件の並びについて、１ステップの計算時間での判断を行う順番を、後ろの順となるように予め設定しておくことも可能である。
【００６１】
シミュレータ１２の組み合わせを抽出した後、組み合わせごとにシミュレータ１２間のすり合わせルールを生成する。このルールとは、例えばシミュレータ１２間でデータの単位が異なる（シミュレータＢの入力データの単位は１００万人だが、他のシミュレータの人口の単位は１万人など）ためにデータの変換を行ったり、時間粒度が異なる（シミュレータＣの時間粒度は１ヶ月だが、他のシミュレータの時間粒度は１年など）ために、あるシミュレータを他のシミュレータより多いステップ数で計算させたり、などのルールである。言い換えると、２つ以上のシミュレータ１２のそれぞれのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータ１２の１ステップの期間の数にすり合わせて揃えることを指す。
【００６２】
具体的に図５では、シミュレータＢの出力データの単位が１００万人であるのに対し、シミュレータＦの毎ステップ入力データの単位が万人であるため、データの単位を揃えるため、シナリオ２の「２番目へのデータ変換」の欄には１００倍するという情報が示されている。
【００６３】
シミュレーション実行部１１６はシナリオを受け取り、シミュレーション用データ蓄積部１１８よりシミュレーションに必要なデータを受け取り、個別シミュレータ入出力部１１５によって各シミュレータ１２とデータをやり取りしながら、シナリオに沿った分散シミュレーションを実行する。実行過程や結果はシミュレータ特性取得部１１３へ出力される。また、シミュレーション結果はシミュレーション結果表示部１１９手段へ出力され、結果がユーザに表示される。
【００６４】
シミュレータ特性取得部１１３は、シミュレーション実行部１１６より受け取ったシミュレーションの過程や結果より、各シミュレータ１２の特性を取得し、シミュレータ情報蓄積部１１１へ出力する。
【００６５】
具体的に図６では、図５の２つのシミュレーションシナリオを全て実行した場合にシミュレータ特性を取得している。シミュレータＢ、Ｄに関しては、実際の計算時間が解るため、図２のようなシミュレータ情報を更新したり、修正したりすることができる。またシミュレータＦに関しては、シミュレータＢ、Ｄと同様に計算時間を修正できる他、シミュレータＢを入力とした場合の計算時間も追加で蓄積することができる。
【００６６】
上述の例における、抽出される組み合わせはシミュレータＤ、ＢＦの２つの場合であったが、別のシミュレーション実行について説明する。シミュレーションシナリオをシミュレーションシナリオ生成部１１２で抽出した２つについて各々生成する場合については上述の通りである。また、より条件に一致している度合いが高い組み合わせのシミュレータ１２のみ生成してもよい。このとき、シミュレーションシナリオ生成部１１２は、シミュレーションシナリオに含まれる少なくとも１つのシミュレータ１２を代替するシミュレータ１２の候補を含むシミュレーションシナリオを生成することができる。シミュレーション実行部１１６は、シミュレーションシナリオに従ってシミュレーションを実行させるときに、実行させたシミュレータ１２の結果から、シミュレーションシナリオ全体の計算時間がシミュレーション条件に適合するか否かを合わせて判断し、シミュレーションシナリオ全体の計算時間がシミュレーション条件に適合しないと判断する場合に、その後に実行するシミュレータ１２を代替する候補の中からシミュレーション条件に最も近くなると推測される計算時間の特性を有するシミュレータ１２を選択して実行させることができる。
【００６７】
図７は、実施の形態１に係る分散シミュレーションシステムの、シミュレーション実行およびシミュレータ特性取得動作の一例を示すフローチャートである。
【００６８】
まず、シミュレーションシナリオ生成部１１２は、シミュレーション装置１００に登録されている各シミュレータ１２について、シミュレータ特性を取得する為のシミュレーションシナリオを生成する（ステップＳ１１）。
【００６９】
次に、シミュレーション用データ入力部１１７はシミュレーションに必要なデータを入力するように求め取得し、シミュレーション用データ蓄積部１１８に蓄積する（ステップＳ１２）。シミュレーション実行部１１６は、シミュレーション用データ蓄積部１１８に蓄積されたシミュレーション用データを、生成されたシミュレーションシナリオに基づいて実行する（ステップＳ１３）。
【００７０】
そしてシミュレータ特性取得部１１３は、実行における過程やその結果に基づいてシミュレータ特性を取得し、シミュレータ情報蓄積部１１１に蓄積する（ステップＳ１４）。
【００７１】
図８は、実施の形態１に係る分散シミュレーションシステムの、分散シミュレーション実行動作の一例を示すフローチャートである。
【００７２】
予め、ユーザは希望するシミュレーションの条件を入力しておく。シミュレーション条件入力部１１４はシミュレーション条件を受付する（ステップＳ２１）。シミュレータ情報蓄積部１１１に蓄積されたシミュレータ特性をあわせて取得する（ステップＳ２２）。取得したシミュレーション条件およびシミュレータ特性を基に、シミュレーション実行およびシミュレータ特性取得動作（ステップＳ２３）を実行することにより、シミュレーションを実行しシミュレータ特性を取得する。そして、シミュレーション実行およびシミュレータ特性取得動作で実行されたシミュレーション結果をシミュレーション結果表示部１１９を介してディスプレイなどに表示し（ステップＳ２４）、一連の動作を終える。
【００７３】
以上説明したように、実施の形態１に係る分散シミュレーションシステムによれば、ユーザが希望する条件に沿った分散シミュレーションのシナリオを自動的に生成し実行することが可能になる。
【００７４】
シミュレータの特性が自動的に取得され、その特性に合わせたシミュレーションシナリオが自動的に生成されるので、利用する各シミュレータの詳細について知らなくとも希望する条件に沿った分散シミュレーションを行うことができる。
【００７５】
（実施の形態２）
図９は、本発明の実施の形態２に係る分散シミュレーションシステムの構成例を示すブロック図である。実施の形態２に係るシミュレーション装置１０１は、実施の形態１のシミュレーション装置１００と基本的な構成は同じである。シミュレーション装置１０１の分散シミュレーションシステム２１は、分散シミュレーションシステム１１にシミュレーションシナリオ提示選択部２１１を備える。
【００７６】
シミュレーションシナリオ生成部１１２は、シミュレーション条件入力部１１４で入力された条件をもとに、シミュレーションシナリオを生成する。その際に、各シミュレータ１２の特性と、条件の組み合わせや条件を満たす範囲などにより、ユーザが提示する条件と適合性が高い優先度の高いシミュレーションシナリオが生成されるだけでなく、シナリオの付随情報も生成し、シナリオに含める。シナリオの付随情報とは例えば、ユーザがシミュレーション情報として入力する項目の値であり、１ステップの計算時間や、シミュレーションが内部変数として利用している変数の一覧などである。また、最優先のシミュレーションシナリオを生成するだけでなく、次に優先度の高いシミュレーションシナリオについて生成されるようにしてもよい。
【００７７】
シミュレーションシナリオ提示選択部２１１は、ディスプレイなどの表示装置に生成した複数のシミュレーションシナリオを提示し、その中から１つもしくは複数のシミュレーションシナリオをユーザへ選択するように促す。また、シミュレーションシナリオ提示選択部２１１は、ユーザが選択したシミュレーションシナリオについてシミュレーション実行部１１６へ出力を行い、シミュレーション実行部１１６により分散シミュレーションが実行される。
【００７８】
シミュレーションシナリオ提示選択部２１１で用意する複数のシミュレーションシナリオは、予め、所定の数より少ない数でシミュレーションシナリオを提示することや、条件と適合する範囲が所定の割合より多い場合のシミュレーションシナリオ、すなわち精度の高いシミュレーションシナリオを提示するなど、提示するシミュレーションシナリオの数や条件について設定しておいてもよい。また、ユーザがシミュレーションシナリオを選択するときにシミュレーションシナリオの数が多いと感じた場合に、再び条件を設定し、シミュレーションシナリオ生成部１１２に対してシミュレーションシナリオの再生成を行わせることができるように設定しておいてもよい。
【００７９】
図１３は、実施の形態２に係る分散シミュレーションシステムの、シミュレーション実行およびシミュレータ特性取得動作の一例を示すフローチャートである。分散シミュレーションシステム２１の基本的な動作は、実施の形態１に係る分散シミュレーションシステム１１の基本的な動作と同じであり、シミュレーション実行およびシミュレータ特性取得動作１のステップＳ１１を、シミュレーション実行およびシミュレータ特性取得動作２のステップＳ３１ないしステップＳ３４に置き換えたものである。
【００８０】
予め、ユーザは、シミュレーションシナリオについて所定の条件を設定して分散シミュレーションシステム２１に登録しておく。ここでの所定の条件とは、生成するシミュレーションシナリオの本数の最大値や、シミュレーション条件がどれくらい適合した場合にシミュレーションシナリオを生成するかなどの目安値であり、生成するシミュレーションシナリオの数がある所定の範囲内となるように調整するための条件をいう。所定の条件にシミュレーションシナリオの付随情報を考慮した条件を含めてもよい。シミュレーションシナリオの付随情報とは、例えば、ユーザがシミュレーション情報として入力する項目の値であり、１ステップの計算時間や、シミュレーションが内部変数として利用している変数の一覧などである。
【００８１】
まず、シミュレーションシナリオ生成部１１２は、シミュレーション装置１００に登録されている各シミュレータ１２について、シミュレータ特性を取得する為のシミュレーションシナリオを生成する（ステップＳ３１）。シミュレーションシナリオ生成部１１２は、ユーザがシミュレーション条件入力部１１４より入力した条件に基づいて生成するだけでなく、シミュレーションシナリオの付随情報も含めて生成する。
【００８２】
シミュレーションシナリオ生成部１１２が生成したシミュレーションシナリオについて、そのシミュレーションシナリオが所定の条件、すなわちシミュレーションシナリオ数がある所定の範囲内であれば（ステップＳ３２；ＹＥＳ）、シミュレーションシナリオ提示選択部２１１はディスプレイなどの表示装置へ、生成したシミュレーションシナリオを提示する（ステップＳ３３）。シミュレーションシナリオが所定の条件、すなわちシミュレーションシナリオ数がある所定の範囲内になければ（ステップＳ３２；ＮＯ）、ステップＳ３１に戻り、シミュレーションシナリオ生成を再び行う。そして、シミュレーションシナリオ提示選択部２１１は、ユーザが入力する選択されたシミュレーションシナリオについてシミュレーションシナリオを決定する（ステップＳ３４）。
【００８３】
以降はシミュレーション実行およびシミュレータ特性取得動作１と同様に、シミュレーション用データ入力部１１７はシミュレーションに必要なデータを入力するように求め取得し、シミュレーション用データ蓄積部１１８に蓄積する（ステップＳ１２）。そして、シミュレーション実行部１１６は、シミュレーション用データ蓄積部１１８に蓄積されたシミュレーション用データを、生成されたシミュレーションシナリオに基づいて実行する（ステップＳ１３）。最後に、シミュレータ特性取得部１１３は、実行における過程やその結果に基づいてシミュレータ特性を取得し、シミュレータ情報蓄積部１１１に蓄積する（ステップＳ１４）。
【００８４】
実施の形態２に係る分散シミュレーションシステムの分散シミュレーション実行動作は、実施の形態１に係る分散シミュレーションシステムの分散シミュレーション実行動作とほぼ同じである。ただし、ステップＳ２３におけるシミュレーション実行およびシミュレータ特性取得動作は、シミュレーション実行およびシミュレータ特性取得動作２を用いるので、それに伴い、分散シミュレーション実行動作も一部異なる。
【００８５】
以上説明したように、実施の形態２に係る分散シミュレーションシステムによれば、ユーザが希望する条件に沿った分散シミュレーションのシナリオを自動的に生成し実行することが可能になる。
【００８６】
ユーザが入力したシミュレーション条件だけではシナリオの数が多くなりすぎる場合に、ユーザによって実行するシナリオの数を絞ることができる。また、ユーザが希望するシミュレーションの条件を最初に決めてしまうのではなく、一度生成されたシミュレーションシナリオを提示させ、その中から選択することができるので、希望するシミュレーションを効率よく探すことができ、かつ、好ましいシナリオシミュレーションで実行させることができる。
【００８７】
図１４は、本発明の実施の形態に係る分散シミュレーションシステムのハードウェア構成の一例を示すブロック図である。分散シミュレーションシステム１１、２１は、図１４に示すように、制御部３１、主記憶部３２、外部記憶部３３、操作部３４、表示部３５、入出力部３６および送受信部３７を備える。主記憶部３２、外部記憶部３３、操作部３４、表示部３５、入出力部３６および送受信部３７はいずれも内部バス３０を介して制御部３１に接続されている。
【００８８】
制御部３１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部３３に記憶されている制御プログラム３９に従って、分散シミュレーションシステム１１、２１のシミュレータ情報蓄積部１１１、シミュレーションシナリオ生成部１１２、シミュレータ特性取得部１１３、シミュレーション条件入力部１１４、個別シミュレータ入出力部１１５、シミュレーション実行部１１６、シミュレーション用データ入力部１１７、シミュレーション用データ蓄積部１１８、シミュレーション結果表示部１１９およびシミュレーションシナリオ提示選択部２１１の各処理を実行する。
【００８９】
主記憶部３２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部３３に記憶されている制御プログラム３９をロードし、制御部３１の作業領域として用いられる。
【００９０】
外部記憶部３３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、分散シミュレーションシステム１１、２１の処理を制御部３１に行わせるためのプログラムをあらかじめ記憶し、また、制御部３１の指示に従って、このプログラムが記憶するデータを制御部３１に供給し、制御部３１から供給されたデータを記憶する。
【００９１】
操作部３４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス３０に接続するインタフェース装置から構成されている。
【００９２】
表示部３５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成される。
【００９３】
入出力部３６は、シリアルインタフェースまたはパラレルインタフェースから構成されている。
【００９４】
送受信部３７は、ネットワークに接続する網終端装置または無線通信装置、およびそれらと接続するシリアルインタフェースまたはＬＡＮ（Local Area Network）インタフェースから構成されている。
【００９５】
図１または図９に示す分散シミュレーションシステム１１、１２のシミュレータ情報蓄積部１１１、シミュレーションシナリオ生成部１１２、シミュレータ特性取得部１１３、シミュレーション条件入力部１１４、個別シミュレータ入出力部１１５、シミュレーション実行部１１６、シミュレーション用データ入力部１１７、シミュレーション用データ蓄積部１１８、シミュレーション結果表示部１１９およびシミュレーションシナリオ提示選択部２１１の各処理は、制御プログラム３９が、制御部３１、主記憶部３２、外部記憶部３３、操作部３４、表示部３５、入出力部３６および送受信部３７などを資源として用いて処理することによって実行する。
【００９６】
その他、前記のハードウェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【００９７】
制御部３１、主記憶部３２、外部記憶部３３、操作部３４、内部バス３０などから構成される情報伝達支援処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する分散シミュレーションシステム１１、２１を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで分散シミュレーションシステム１１、２１を構成してもよい。
【００９８】
また、分散シミュレーションシステム１１、２１の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００９９】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【０１００】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１０１】
（付記１）２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムであって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得手段と、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力手段と、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力手段に入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成手段と、
前記生成手段で生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行手段と、
を備えることを特徴とする分散シミュレーションシステム。
【０１０２】
（付記２）前記特性取得手段は、前記シミュレータにシミュレーションを実行させた結果から前記シミュレータ特性を取得することを特徴とする付記１に記載の分散シミュレーションシステム。
【０１０３】
（付記３）前記特性取得手段は、前記シミュレータごとのシミュレーションの１ステップの計算時間を取得し、
前記シミュレーション条件が計算時間の情報を含む場合に、前記生成手段は、前記シミュレーション条件の計算時間に適合する計算時間の特性を有するシミュレータを選択する、
ことを特徴とする付記１または２に記載の分散シミュレーションシステム。
【０１０４】
（付記４）前記生成手段は、前記シミュレーションシナリオに含まれる少なくとも１つのシミュレータを代替するシミュレータの候補を含むシミュレーションシナリオを生成し、
前記実行手段は、前記シミュレーションシナリオに従ってシミュレーションを実行させるときに、実行させたシミュレータの結果から、前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合するか否かを判断する手段を含み、
前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合しないと判断する場合に、その後に実行するシミュレータを代替する候補の中から前記シミュレーション条件に最も近くなると推測される計算時間の特性を有するシミュレータを選択して実行させる、
ことを特徴とする付記３に記載の分散シミュレーションシステム。
【０１０５】
（付記５）前記特性取得手段は、前記シミュレータごとの前記出力データの精度の情報を取得し、
前記シミュレーション条件が出力データの精度の条件を含む場合に、前記生成手段は、前記精度の条件に適合する精度の特性を有するシミュレータを選択する、
ことを特徴とする付記１ないし４のいずれかに記載の分散シミュレーションシステム。
【０１０６】
（付記６）前記生成手段で生成した前記シミュレーションシナリオを、前記条件入力手段にシミュレーション条件を入力した前記ユーザに提示する提示手段と、
前記提示手段で提示した前記シミュレーションシナリオの中から、１つのシミュレーションシナリオの選択を受け付ける選択手段と、を備え、
前記実行手段は、前記選択手段で選択された前記シミュレーションシナリオを実行させることを特徴とする付記１ないし５のいずれかに記載の分散シミュレーションシステム。
【０１０７】
（付記７）２つ以上のシミュレータを組み合わせ、シミュレーションを実行させる分散シミュレーションシステムが行う分散シミュレーション方法であって、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を備えることを特徴とする分散シミュレーション方法。
【０１０８】
（付記８）前記特性取得ステップは、前記シミュレータにシミュレーションを実行させた結果から前記シミュレータ特性を取得することを特徴とする付記７に記載の分散シミュレーション方法。
【０１０９】
（付記９）前記特性取得ステップは、前記シミュレータごとのシミュレーションの１ステップの計算時間を取得し、
前記シミュレーション条件が計算時間の情報を含む場合に、前記生成ステップは、前記シミュレーション条件の計算時間に適合する計算時間の特性を有するシミュレータを選択する、
ことを特徴とする付記７または８に記載の分散シミュレーション方法。
【０１１０】
（付記１０）前記生成ステップは、前記シミュレーションシナリオに含まれる少なくとも１つのシミュレータを代替するシミュレータの候補を含むシミュレーションシナリオを生成し、
前記実行ステップは、前記シミュレーションシナリオに従ってシミュレーションを実行させるときに、実行させたシミュレータの結果から、前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合するか否かを判断するステップを含み、
前記シミュレーションシナリオ全体の計算時間が前記シミュレーション条件に適合しないと判断する場合に、その後に実行するシミュレータを代替する候補の中から前記シミュレーション条件に最も近くなると推測される計算時間の特性を有するシミュレータを選択して実行させる、
ことを特徴とする付記９に記載の分散シミュレーション方法。
【０１１１】
（付記１１）前記取得ステップは、前記シミュレータごとの前記出力データの精度の情報を取得し、
前記シミュレーション条件が出力データの精度の条件を含む場合に、前記生成手段は、前記精度の条件に適合する精度の特性を有するシミュレータを選択する、
ことを特徴とする付記７ないし１０のいずれかに記載の分散シミュレーション方法。
【０１１２】
（付記１２）前記生成ステップで生成した前記シミュレーションシナリオを、前記条件入力ステップでシミュレーション条件を入力した前記ユーザに提示する提示ステップと、
前記提示ステップで選択を受け付ける選択ステップと、を備え、
前記実行ステップは、前記選択ステップで選択された前記シミュレーションシナリオを実行させることを特徴とする付記７ないし１１のいずれかに記載の分散シミュレーション方法。
【０１１３】
（付記１３）２つ以上のシミュレータを組み合わせ、シミュレーションを実行させるコンピュータに、
前記シミュレータごとの、シミュレーションの１ステップの計算時間、入力データの範囲、出力データの範囲、または、出力データの精度を含むシミュレータ特性を取得する特性取得ステップと、
ユーザが実行させようとするシミュレーションの入力データの項目、出力データの項目およびシミュレーションの１ステップの期間の情報を含むシミュレーション条件の入力を受け付ける条件入力ステップと、
前記シミュレータの、入力データの項目、単位および形式、出力データの項目、単位および形式、シミュレーションの１ステップの期間を含む情報、ならびに、前記シミュレータ特性に基づいて、前記条件入力ステップで入力されたシミュレーション条件に適合する、実行するシミュレータの組合せとそれを実行する順序、ならびに、２つのシミュレータの出力データと入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの入力データとシミュレータの入力データとの組合せ、もしくは、前記シミュレーション条件においてユーザが入力したシミュレーションの出力データとシミュレータの出力データとの組合せ、において、シミュレータの出力データもしくはユーザが入力したシミュレーションの入力データの単位と形式を、そのデータに対応するシミュレータの入力データもしくはユーザが入力したシミュレーションの出力データの単位と形式に変換する規則、および、前記シミュレーション条件においてユーザが入力したシミュレーションの１ステップの期間と各シミュレータのシミュレーションの１ステップの期間の最小公倍数に含まれるそれぞれのシミュレータの１ステップの期間の数、を表すすり合わせルール、を示すシミュレーションシナリオを生成する生成ステップと、
前記生成ステップで生成したシミュレーションシナリオに従って、前記シミュレータにシミュレーションを実行させる実行ステップと、
を実行させることを特徴とするプログラム。
【産業上の利用可能性】
【０１１４】
本発明によれば、再利用可能な複数のシミュレータを自由に組み合わせた分散シミュレーションを容易に行う事ができるので、組み込みソフトウェアなどの評価や、景気や環境など社会の現象を予測に用いるシステムとして利用可能である。
【符号の説明】
【０１１５】
１１、２１  分散シミュレーションシステム
１２  シミュレータ
３１  制御部
３２  主記憶部
３３  外部記憶部
３４  操作部
３５  表示部
３６  入出力部
３７  送受信部
３９  制御プログラム
１００、１０１  シミュレーション装置
１１１  シミュレータ情報蓄積部
１１２  シミュレーションシナリオ生成部
１１３  シミュレータ特性取得部
１１４  シミュレーション条件入力部
１１５  個別シミュレータ入出力部
１１６  シミュレーション実行部
１１７  シミュレーション用データ入力部
１１８  シミュレーション用データ蓄積部
１１９  シミュレーション結果表示部
２１１  シミュレーションシナリオ提示選択部
【図１】
2012018508.tif 000003
【図２】
2012018508.tif 000004
【図３】
2012018508.tif 000005
【図４】
2012018508.tif 000006
【図５】
2012018508.tif 000007
【図６】
2012018508.tif 000008
【図７】
2012018508.tif 000009
【図８】
2012018508.tif 000010
【図９】
2012018508.tif 000011
【図１０】
2012018508.tif 000012
【図１１】
2012018508.tif 000013
【図１２】
2012018508.tif 000014
【図１３】
2012018508.tif 000015
【図１４】
2012018508.tif 000016
【図１５】
2012018508.tif 000017
【図１６】
2012018508.tif 000018
【図１７】
2012018508.tif 000019