(57)【特許請求の範囲】
【請求項１】
現象や事象を因果関係で表してシミュレーションするシミュレータのシミュレーション
モデルを作成するシミュレーションモデルジェネレータであって、
前記現象や事象などの因果関係を、各現象、各事象を定義付けしたノードと、各ノード間の因果関係を表わすリンクとにより構造化して定義するユーザインタフェース画面を提示して、ユーザの入力を受付け、各ノードを定義する情報、原因ノードと結果ノードを結ぶ各リンクに関する情報をデータベースへ登録する手段と、
ユーザインタフェース画面を提示して、前記登録された現象や事象を定義した各ノードに対して、それらの程度の量を定量的に表すメトリクス情報を、少なくともメトリクス名称、単位、メトリクス計算式、算出結果を集計する期間の単位である出力タイムバケットのデータ項目からなるレコードとしてユーザ入力より受付け、データベースへ登録する手段と、
ユーザインタフェース画面を提示して、メトリクス情報に設定する単位の種類を、単位毎に単位、係数、ベース単位、時間に関する単位か否かを識別する時間フラグのデータ項目からなるレコード形式にて、ユーザ入力を受付け、データベースへ登録する手段と、
ユーザインタフェース画面を提示して、ユーザによるノードの選択を受付け、該選択された結果ノードにリンクで結ばれた原因ノードを登録データから検索して抽出して、抽出された原因ノードに設定されているメトリクス名称、単位をユーザへ表示して、ユーザより各種係数名、単位、および値、並びに前記メトリクス名称を含む、前記選択された結果ノードのメトリクスの計算式の入力を受付けて、データベースへ登録する手段と、
ユーザインタフェース画面を提示して、登録されている前記単位データの中より、前記時間フラグがONである単位データのリストを表示し、ユーザの選択を受付けて、シミュレーションにおける１ステップ当たりの期間の単位を表すシミュレーションタイムバケットを設定して、データベースへ登録する手段と、
前記ノードとリンクとにより構造化して定義した因果関係図を対象として、前記データベースに登録されているシミュレーションモデル名、シミュレーションタイムバケットを読み出し、前記シミュレーションモデル名に所属する全てのノードの各々に対して、設定された前記メトリクス情報を前記データベースから読み出し、
前記メトリクス情報の出力タイムバケットが前記シミュレーションタイムバケットよりも大きい場合には、当該メトリクスの計算式には、原因ノードのメトリクスと係数を用いた関数によって、シミュレーション時間上のt時点における流入量（レートAn）RAn(t)、シミュレーション時間上のt時点における流出量（レートＢn）RＢn(t)、及びRAn(t)の出力タイムバケットの期間中の蓄積量(レベルｎ)Ｌｎ(t)を算出するプログラムテンプレートを適用してプログラムモジュールを作成し、
前記メトリクス情報の出力タイムバケットが前記シミュレーションタイムバケット未満の場合には、当該メトリクスの計算式には、原因ノードのメトリクスと係数を用いた関数によって、シミュレーション時間上のt時点における流入量（レートＡn）RAn(t)の流量を算出するプログラムテンプレートを適用してプログラムモジュールを作成し、
前記各ノードに対して作成された各プログラムモジュールのインプットI/FとアウトプットI/Fとに、前記因果関係図のリンクと同等のリンクを張って、シミュレーションモデルを作成するシミュレーションモデル生成手段と、
を備えたことを特徴とするシミュレーションモデルジェネレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、経済や社会等の現象や事象を因果関係で表してシミュレーションする為のシミュレーションモデル作成方法に関する。
【背景技術】
【０００２】
競合他社よりも有利な意思決定ができるようにする為には、より正確な情報をより早い段階で入手し、他社よりも先手を打てる意思決定支援が重要となってきている。そのためには、将来を予測するようなシミュレーションが有効である。シミュレーションには、事象のイベントをハンドリングしながらシミュレーションする離散系のシミュレーションと変数の値が時間軸上で連続的に変化する連続系のシミュレーションがある。例えば、非特許文献１においては、政策の意思決定、あるいは、新製品を市場に投入する際、設定した価格が売上に対してどのように影響を与えるかといった因果関係の連鎖予測には、連鎖のフィードバックループや、ミクロな事象をモデルから割愛できる連続系のシミュレーションが有効であると開示している。その中で、世の中の社会現象に見られるような因果関係により構成されるシステムに対する連続系のシミュレータとして一般的にシステムダイナミクスが適していると述べている。ちなみに、システムダイナミクスは、MITのフォレスタによって創案されたもので、現象を差分方程式として記述して過渡的な変動をシミュレーションする手法である。システムダイナミクスでは、モノの流れをレートと呼ばれる記号(変数)とモノの蓄積をレベルと呼ばれる記号（変数）の２つを組み合わせることによりモデルを構築する。
【０００３】
システムダイナミクスのシミュレーションモデル構築方法として、Ｄｙｎａｍｏと呼ばれるテキスト形式のプログラミングと市販のツールのようなビジュアルな画面にてレートやレベルの関係を設定しながら構築する方法がある。
【０００４】
【非特許文献１】「ＳＤによるバブル期以降の経済動向の可視化」内山  章：(2004年10月23日開催：ＪＳＤ学会講演会)
【発明の開示】
【発明が解決しようとする課題】
【０００５】
システムダイナミクスのシミュレーションモデル化では、モデル化したい対象をレートにするのかレベルにするのかが重要となるが、社会現象のような目には見え難い因子に対しては、どのようにレートやレベルをモデル化したら良いかの指針がなかった。そのため、シミュレーションモデル作成経験をある程度積むまでは試行錯誤繰り返しながらシミュレーションモデルを構築せざるを得ず、多大な労力と時間を要していた。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のシミュレーションモデルジェネレータは、現象や事象を因果関係で表してシミュレーションするシミュレータのシミュレーションモデルを作成するシミュレーションモデルジェネレータであって、
前記現象や事象などの因果関係を、各現象、各事象を定義付けしたノードと、各ノード間の因果関係を表わすリンクとにより構造化して定義するユーザインタフェース画面を提示して、ユーザの入力を受付け、各ノードを定義する情報、原因ノードと結果ノードを結ぶ各リンクに関する情報をデータベースへ登録する手段と、ユーザインタフェース画面を提示して、前記登録された現象や事象を定義した各ノードに対して、それらの程度の量を定量的に表すメトリクス情報を、少なくともメトリクス名称、単位、メトリクス計算式、算出結果を集計する期間の単位である出力タイムバケットのデータ項目からなるレコードとしてユーザ入力より受付け、データベースへ登録する手段と、ユーザインタフェース画面を提示して、メトリクス情報に設定する単位の種類を、単位毎に単位、係数、ベース単位、時間に関する単位か否かを識別する時間フラグのデータ項目からなるレコード形式にて、ユーザ入力を受付け、データベースへ登録する手段と、ユーザインタフェース画面を提示して、ユーザによるノードの選択を受付け、該選択された結果ノードにリンクで結ばれた原因ノードを登録データから検索して抽出して、抽出された原因ノードに設定されているメトリクス名称、単位をユーザへ表示して、ユーザより各種係数名、単位、および値、並びに前記メトリクス名称を含む、前記選択された結果ノードのメトリクスの計算式の入力を受付けて、データベースへ登録する手段と、ユーザインタフェース画面を提示して、登録されている前記単位データの中より、前記時間フラグがONである単位データのリストを表示し、ユーザの選択を受付けて、シミュレーションにおける１ステップ当たりの期間の単位を表すシミュレーションタイムバケットを設定して、データベースへ登録する手段と、前記ノードとリンクとにより構造化して定義した因果関係図を対象として、前記データベースに登録されているシミュレーションモデル名、シミュレーションタイムバケットを読み出し、前記シミュレーションモデル名に所属する全てのノードの各々に対して、設定された前記メトリクス情報を前記データベースから読み出し、前記メトリクス情報の出力タイムバケットが前記シミュレーションタイムバケットよりも大きい場合には、当該メトリクスの計算式には、原因ノードのメトリクスと係数を用いた関数によって、シミュレーション時間上のt時点における流入量（レートAn）RAn(t)、シミュレーション時間上のt時点における流出量（レートＢn）RＢn(t)、及びRAn(t)の出力タイムバケットの期間中の蓄積量(レベルｎ)Ｌｎ(t)を算出するプログラムテンプレートを適用してプログラムモジュールを作成し、前記メトリクス情報の出力タイムバケットが前記シミュレーションタイムバケット未満の場合には、当該メトリクスの計算式には、原因ノードのメトリクスと係数を用いた関数によって、シミュレーション時間上のt時点における流入量（レートＡn）RAn(t)の流量を算出するプログラムテンプレートを適用してプログラムモジュールを作成し、前記各ノードに対して作成された各プログラムモジュールのインプットI/FとアウトプットI/Fとに、前記因果関係図のリンクと同等のリンクを張って、シミュレーションモデルを作成するシミュレーシ��ンモデル生成手段とを備えたことを特徴とするシミュレーションモデルジェネレータである。
【発明の効果】
【０００８】
本発明によれば、現象や事象などの因果関係を元にシミュレーションモデルに書き下す際にシステムダイナミクス特有の流量を現すレートと、蓄積を現すレベルを区別する必要がないので、試行錯誤していた従来のモデル構築方法に比べて期間を大幅に短縮することができる。また、システムダイナミクスの知識を持たない非専門家でもシミュレーションモデルを作成し、シミュレーションすることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明のシミュレーションモデルジェネレータの一実施形態について図面を用いて説明する。本実施例では、製品の売上向上を図るための施策とその効果の関係を因果関係として表し、それを基にシステムダイナミクスのシミュレーションモデルを自動生成するまでの過程を述べる。
【００１０】
まず、本発明のシミュレーションモデルジェネレータの全体構成を説明する。
図１は、本発明のシミュレーションモデルジェネレータを実現する情報処理システムの一実施形態を示すブロック図である。図１に示すように、シミュレーションモデルジェネレータ１は、現象や事象などの因果関係をノードとリンクを用いて記述する因果関係定義手段１１と、各ノードの状態を定量的に表現するためのメトリクスを設定するメトリクス定義手段１２と、メトリクスに設定可能な単位を登録する単位マスタ定義手段１３と、各メトリクス間の影響関係を定義する影響関係定義手段１４と、シミュレーション実行における１ステップにおける期間を設定するシミュレーションタイムバケット設定手段１５と、シミュレーションモデル生成手段１６と、各手段の実行結果を記憶するテータベース２を有している。シミュレータ４は、データベース２に登録されたシミュレーションモデルを用いてシミュレーションを行う。
【００１１】
次に、シミュレーションモデルジェネレータ１のハードウェア構成について説明する。図２は、シミュレーションモデルジェネレータ１の一実施形態におけるハードウェア構成を示したものである。シミュレーションモデルジェネレータ１は、シミュレーションモデルジェネレータのサーバ３に示す電子計算機にて稼動する。シミュレーションモデルジェネレータ１のサーバ３は、ＣＰＵ３１、メモリ３２、通信制御部３３、補助記憶装置２０を有している。
【００１２】
図１で説明した各手段は、シミュレーションモデルジェネレータのプログラムとして補助記憶装置２０に格納され、必要に応じてメモリ３２に読み出され、ＣＰＵ３１によって処理される。同様に、図１で説明したデータベース２は、例えば、リレーショナルデータベースやファイルとして補助記憶装置２０に格納され、必要に応じてメモリ３２にデータが読み出され、プログラムにて利用される。
【００１３】
また、シミュレーションモデルジェネレータのプログラムのサーバ３で必要なデータをシミュレーションモデルジェネレータのプログラムのクライアント６における電子計算機にて作成し、ネットワーク５を経由して補助記憶装置２０に登録することができる。なお、シミュレーションモデルジェネレータのクライアント６とネットワーク５を利用しないで、直接、シミュレーションモデルジェネレータのサーバ３と補助記憶装置の構成でも良い。
【００１４】
図３は、図１で説明したシミュレーションモデルジェネレータ１の各手段とデータベース２とのやり取りを時系列的に示した図である。また、図４から図２１は、図３で記した各手段での入出力データや画面、各種アルゴリズムをあらわした図である。以下、図３及び図４から図２７までの図を用いて説明する。
【００１５】
初めに、図３のＡに記したシミュレーションモデルジェネレータのサーバ３で必要なデータを準備する処理のシーケンスついて説明する。因果関係図定義手段１１は、現象や事象などの因果関係をノードとリンクを用いて記述する機能である。
【００１６】
図４は、因果関係図定義手段１１の画面のイメージ図である。図中のキャンバス１１９は、因果関係を記述する部分である。パレット１１１にあるノードやリンクをマウスにてキャンバス１１９へドラッグ＆ドロップすることで、因果関係の構造を書き上げていく。例えば、パレット１１１のノードをキャンバス１１９の領域へドラッグ＆ドロップし、ノード名称として「売上増加」と入力することで、同図中のＡに示すような図が表示される。
【００１７】
このようにユーザが、パレット１１１上のノードやリンクをキャンバス１１９にドラッグ＆ドロップしていくことで、例えば、図５のキャンバス１１９に記すような因果関係図を書き上げる。本因果関係図の意味は、「領域Ｂを例とすると、販売台数を増加させると、売上が増加する」ということを意味する。即ち、リンクの矢印が無い方に接しているノードが原因で、結果として、矢印側のノードに記されている事柄が発生する因果の方向を表現する。ここで、登録ボタン１１７をクリックすると、システムが、図６に記すような登録確認画面を表示させる。ここで、シミュレーションモデル名称を入力（ここでは「モデル１」）後、登録ボタンを押下すると、システムが、これまで入力された因果関係図のデータをデータベース２に登録する。
【００１８】
ここまでで関連するデータベース２のテーブルイメージを図７と図８に示す。図７は、メトリクステーブル２０１のイメージ図である。詳細は後述するが、同図のＡに関する部分が、キャンバス１１９で入力した因果関係図のノードに関連したノード名称やノードの座標などのデータを登録する部分である。
【００１９】
なお、モデル名のフィールドには、登録確認画面にて入力されたモデル名を登録する。図８は、リンクテーブル２０２のイメージ図である。モデル名毎にノード同士を結ぶリンク情報を登録するテーブルであり、モデル名、リンクＩＤ、原因ノード名称、結果ノード名称のフィードからなる。ここで、リンクＩＤのフィールドには、ノードとノードを結ぶ各リンクの識別ＩＤが登録される。
【００２０】
また、原因ノード名称のフィールドには、当該リンクＩＤの矢印が無い方に接しているノード名称が登録され、結果ノード名称のフィールドには、矢印側に接しているノード名称が登録される。以上が、図３における因果関係図定義手段１１に関する説明である。
【００２１】
次に、同図中のメトリクス定義手段１２と単位マスタ定義手段１３について説明する。メトリクス定義手段１２は、因果関係図定義手段１１にて作成した各ノードに対して、その程度を定量的に測定するメトリクスとその単位等を設定する機能である。
【００２２】
図９は、本機能を実現するためのメトリクス定義画面のイメージ図である。本画面のスプレッドシート上には、図７にて記載したメトリクステーブル２０１のノード名称と領域Ｂに記したメトリクス名称、単位、出力タイムバケットの値が表示される。本画面を始めて開いた際は、ノード名称以外のフィールドは、設定されていないため、空白であるので、ノード名称毎にメトリクス名称、単位、出力タイムバケットを入力する。出力タイムバケットとは、シミュレーションによって得られたメトリクスの算出値の集計期間である。
【００２３】
ここで、メトリクスの単位はリストボックスによりメニューから選択することができる。なお、メニューリストは、図１０に示す単位テーブル２０３中の単位フィールドの値が表示される。
【００２４】
同様に、出力タイムバケットのリストボックスのメニューリストは、単位テーブル２０３中の時間フラグのフィールドがＯＮのレコードを対象とし、その中の単位フィールドの値が表示される。図９の各種項目を入力後、閉じるボタンをクリックすると、入力結果がメトリクステーブル２０１の領域Ｂへ登録され、本画面が閉じる。
【００２５】
図３の単位マスタ定義手段１３は、メトリクスに設定する単位の種類を登録する機能である。本機能を実現するための単位マスタ定義画面のイメージ図を図１１に示す。本画面のスプレッドシート上には、単位、係数、ベース単位、時間フラグのフィールドからなる。スプレッドシートの意味として、例えば、「分」の単位は、「秒」の単位の６０倍で表現できるということである。
【００２６】
また、ベース単位が無い場合は、「―」として表現する。その場合、単位の意味として、時間に関係するのか否かの識別を時間フラグフィールドにて設定する。本画面の閉じるボタンをクリックすることで、入力結果が、図１０の単位テーブル２０３に反映される。なお、本画面は、図９のメトリクス定義画面の単位マスタ設定ボタンをクリックすることで表示される。
【００２７】
メトリクス定義画面にて入力した結果は、図１２の因果関係図定義画面のように設定したメトリクス名称が画面に反映される。本実施例では、上述した通り、まず最初に現象や事象名などの因果関係を明記した後に、各ノードに対してその程度の量を測定できるようにするメトリクス設定するようにしている。このようにした理由は、人間が物事を考える順番のステップと一致させるようにする為である。
【００２８】
しかし、頭の中で考えた現象や事象を元にメトリクス間の関係定義から実施したい場合も当然有りえる。従って、図１２に記した因果関係図定義画面の代替案として、図１３に記した因果関係図定義画面のような形態でも良い。これは、キャンバス１１９ａには、現象や事象名ではなく、そのメトリクス間の因果関係を記すものである。
【００２９】
続いて、図３の影響関係定義手段１４について説明する。影響関係定義手段１４は、原因ノードに設定されているメトリクスの値の変化が、結果ノードに設定されているメトリクスにどのように影響を与えるかという影響関係を定義する機能である。本機能を実現するための影響関係定義画面のイメージ図を図１４に示す。ノード名称のリストには、因果関係図で入力したノード名称一覧が表示される。このデータは、図７のメトリクステーブル２０１のノード名称フィールドの値である。
【００３０】
ユーザは、ここから、影響関係を定義したいノードを選択する。すると、システムが、それに対応したメトリクス名称、単位、出力タイムバケット、メトリクスの初期値や影響関係情報をメトリクステーブル２０１より抽出し、表示する。また、影響関係情報の欄には、当該ノードにリンクが張られた原因ノードのメトリクス名称と単位が表示される。
【００３１】
この表示データの抽出方法について簡単に説明する。前述したノード名称のリストから選択した値をキーとして、図８のリンクテーブル２０２の結果ノード名称フィールドを検索し、原因ノード名称フィールドの値を得る。その値を用いて、図７中のメトリクステーブル２０１のノード名称を検索することで、メトリクス名称と単位を得ることができる。
【００３２】
ユーザは、式の欄に、リンクメトリクス名称の列に表示されたメトリクスを全て含んだ計算式を記入する。ここで、例えば「消費税率」など変更する可能性があるようなデータは、図１４の領域Ａに示すように、設定することができる。ここで設定した係数は、他のメトリクスの計算式でも流用できる。その為、例えば「消費税率」の値に変化がある場合、その値を変更するだけで「消費税率」を利用した全ての式に反映させることができる。
【００３３】
「式の判定」の欄は、ユーザが入力した式のチェック結果をシステムが表示する欄である。チェック項目は、「リンクメトリクス名称を全て利用していること」、「加減算では単位の整合性がとれていること」、「入力した算出式の単位が当該ノードのメトリクスの単位に換算できること」、「式で利用する名称は、リンクメトリクス名称又は係数名に登録されていること」の４種類からなる。
【００３４】
例えば、図１４に記されている計算式では、リンクメトリクスの「平均販売額」が利用されていない為、システムが、その旨のメッセージを「式の判定」欄に表示する。正しい計算式の例を領域Ｂに示す。
【００３５】
図１４のグラフ関数ボタンをユーザがクリックすると、システムが、図１６に示すグラフ関数定義画面を表示させる。本画面は、例えばシステムダイナミクスの製品で既に良く知られているように、二種類のメトリクスの関係を算出する関数の振る舞いを設定する画面である。ユーザが、Ｘ軸とＹ軸それぞれに対応するメトリクスを設定し、その関係をグラフ上のドットをマウスで移動させながらグラフィカルに設定することができる。ここで設定した関数は、図１４の式の欄で利用できる。
【００３６】
図１４において、ユーザが、閉じるボタンをクリックすると、システムが、式の欄の計算式を図７のメトリクステーブル２０１の式フィールドに格納する。また、領域Ａのデータを図１５の係数テーブル２０４に格納する。
【００３７】
図３のシミュレーションタイムバケット設定手段１５は、シミュレーション実行における１ステップにおける期間を設定する機能である。
【００３８】
図１７は、本機能を実現するためのシミュレーションタイムバケット設定画面のイメージ図である。本画面は、因果関係図定義画面内のシミュレーションタイムバケットボタン１１５をクリックすると表示される。シミュレーションタイムバケット設定画面におけるリスト中のデータは、図１０の単位テーブル２０３の単位フィールドを利用するもので、抽出条件は、時間フラグがＯＮのレコードである。ユーザは、シミュレーションタイムバケット設定画面の中から何れか１つを選択する。閉じるボタンがクリックされると、システムが、図１８のシミュレーションタイムバケットテーブル２０５に選択結果を登録する。
【００３９】
以上までの説明が、図３におけるシミュレーションモデルを自動生成するために必要なデータを準備するシーケンスである（領域Ａ）。ちなみに、登録ボタン１１７にてデータベース２に登録したデータを読み出す場合は、開くボタン１１８を押下することで、再読み出し可能である。本ボタンをクリックすることで、システムが、図１９に示す因果関係図読み出し画面表示する。
【００４０】
ユーザが、開きたいモデルをリストより選択し、開くボタンをクリックすることで、データを読み出すことができる。ここで、リストメニューに表示するデータは、メトリクステーブル２０１のモデル名フィールドを集約化したデータである。
【００４１】
次に、図３のシミュレーションモデル生成手段１６について説明する。本手段は、現在開いている因果関係図を対象にしたシミュレーションモデルを自動生成する機能である。本機能は、シミュレーションモデル生成ボタン１１６を押下することで呼び出すことができる。
【００４２】
図２０は、シミュレーションモデルを生成するためのフローチャートである。初めに、シミュレーションモデル生成対象のシミュレーションモデル名を得る（ステップ１０１）。
【００４３】
次に、シミュレーションタイムバケットテーブル２０５のモデル名フィールドがシミュレーションモデル名と一致したタイムバケット（ステップ１０２）を得る。
続いて、メトリクステーブル２０１のモデル名フィールドがシミュレーションモデル名と一致したレコードを座標Ｘ，Ｙ順にて抽出し、ループ回数をカウントアップさせる（ステップ１０３、１０４）。
【００４４】
ステップ１０５では、単位テーブル２０３を利用してステップ１０２とステップ１０３で得たタイムバケットを最小の時間単位に換算する。出力タイムバケットとシミュレーションタイムバケットを比較し（ステップ１０６）、出力タイムバケットが大きい場合は、図２１に示すプログラムテンプレート１６１を選択し、そこへステップ１０３にて得たメトリクステーブル２０１や係数テーブル２０４、ステップ１０４にて得たループ回数を図２３に示した対応関係に従ってパラメータを設定し、プログラムモジュールを作成する（ステップ１０７、１０８）。
【００４５】
ここで、図２１のプログラムテンプレート１６１の意味を説明する。これは、原因ノードのメトリクス１６１２と係数１６１３を用いた関数（式１６１１）にて、RAn(t)及び、RAn(t)の出力タイムバケットの期間中の蓄積量を算出するプログラム(「データ蓄積用」)のテンプレートである。
【００４６】
図中のRAn(t)とは、シミュレーション時間上のt時点における流入量（レートＡn）のことである。この流入量とメトリクスの量は、同一である。RBn(t)とは、シミュレーション時間上のt時点における流出量（レートＢn）のことである。Ln(t) とは、t時点における蓄積量（レベルn）のことであり、数式（１）の関数として表現することができる。
【００４７】
なおdtとはシミュレーションタイムバケットのことである。また、RBn(t)は、数式（２）の関数として表現できる。なお、Tは、出力タイムバケット（時定数）で、t0は、シミュレーション開始時点、t1は、最初にパルスが発生する時点を意味する。式１６１１は、RAn(t)の値を算出する関数である。
【００４８】
【数１】
0004770495.tif 000002
【００４９】
【数２】
0004770495.tif 000003
図２０のステップ１０６において、出力バケットが、シミュレーションタイムバケット以下の場合、図２２に示すプログラムテンプレート１６２を選択し、そこへステップ１０３にて得たメトリクステーブル２０１や係数テーブル２０４、ステップ１０４にて得たループ回数を図２４に示した対応関係に従ってパラメータを設定し、プログラムモジュールを作成する（ステップ１０９、１１０）。
【００５０】
ここで、図２２のプログラムテンプレート１６２の意味を説明する。これは、原因ノードのメトリクス１６１２と係数１６１３を用いた関数（式１６１１）にて、RAn(t)の流量を算出するプログラム(「流量算出用」)のテンプレートである。メトリクステーブル２０１に次レコードが存在する場合、ステップ１０３を繰り返す（ステップ１１１）。
【００５１】
図２０のステップ１１２では、リンクテーブル２０２のモデル名フィールドがシミュレーションモデルと一致したレコードを抽出し、続いて、ステップ１１３において、原因ノード名称と結果ノード名称に対応するメトリクス名称をメトリクステーブル２０１から抽出する。
【００５２】
その後、結果ノード名称のメトリクスに対応するプログラムのインプットI/Fと原因ノード名称のメトリクスに対応するプログラムのアウトプットI/Fに対してリンクを張る（ステップ１１４）。最後に、リンクテーブル２０２に次レコードの有無を確認し、在る場合は、ステップ１１２へ戻り、無い場合は、終了とする（ステップ１１５）。
【００５３】
図２５は、前述したフローチャートの実行後に、出力されるシミュレーションモデルのイメージ図である。図示の通り、シミュレーションモデルは、プログラムテンプレートから生成された複数のプログラムモジュールの組み合わせによって構成される。
【００５４】
このシミュレーションモデルは、シミュレータ４が理解できる表現であることが必要であるので、メモリ３２内でのデータの持ち方として、例えば、図２６に示すシミュレーションモデルテーブル２０６として表現される。
【００５５】
シミュレーションモデルテーブル２０６は、図示の通り、モデル名、オブジェクト名、タイプ、サイズ、メトリクス、メトリクスの初期値、式のフィールドからなる。オブジェクト名は、数式に利用される変数名のことで、タイプは、変数の種類のことで、レート、レベル、係数からなる。
【００５６】
タイプがレートの場合は、オブジェクトのサイズ、対応するメトリクスの名称、その単位、式フィールドを有する。タイプがレベルの場合は、オブジェクトのサイズ、対応するメトリクスの初期値と、式フィールドを有する。タイプが係数の場合は、オブジェクトのサイズ、対応するメトリクスの初期値フィールドを有する。
【００５７】
ここでオブジェクトのサイズは、変数の領域サイズのことである。タイプが係数のオブジェクトは、時系列の変化に影響しない変数であるので、サイズが１であり、レートやレベルなどの時系列で推移するものは、配列としてtendサイズが必要であることを意味する。なお、tendとはシミュレーション期間のことである。式のフィールドは、各変数を算出するための方程式が登録される。上述した変数を実際に格納する際のテーブルイメージを図２７のシミュレーションデータテーブル２０７に示す。本テーブル２０７は、シミュレーションモデル毎の利用変数（オブジェクト名）と、実行結果を格納する値フィールドからなる。
【００５８】
オブジェクトのタイプが、レートの場合は、図示の通り、値が全てＮＵＬＬの配列がtendのサイズ分登録する。ここで、ＮＵＬＬとは、シミュレーション実行するまで結果が未確定であるということを意味する。オブジェクトのタイプが、レベルの場合は、シミュレーション時点が0時点にのみシミュレーションモデルテーブル２０６のメトリクスの初期値フィールドの値を登録し、それ以外はＮＵＬＬとして登録する。オブジェクトのタイプが、係数の場合は、シミュレーションモデルテーブル２０６にあるメトリクスの初期値フィールドの値を登録する。
【００５９】
続いて、生成したシミュレーションモデルを実行するシミュレータ４の機能について説明する。図２８は、シミュレーション画面のイメージ図である。ユーザが、シミュレーションしたいモデルをリストより選択し、シミュレーション開始日、期間、シミュレーションタイムバケットを設定し、実行ボタンをクリックすることで、システムが選択されたシミュレーションモデルに対応するデータをシミュレーションモデルテーブル２０６から抽出し、シミュレーションする。シミュレーション実行結果は、シミュレーションデータテーブル２０７に格納され、Ｙ軸のリストには、シミュレーションモデルで作成したメトリクス名称の一覧が表示される。
【００６０】
ユーザが、閲覧したいメトリクスをメニューから選択すると、システムが、選択したメトリクスと一致するオブジェクト名が一致するレコードをシミュレーションデータテーブル２０７より抽出する。続いて、抽出した値レコードの値をメトリクスの単位に集約し、最終的にＸ軸を出力タイムバケットとしたグラフデータを表示する。これによって、ユーザは、シミュレーション実行結果をグラフ形式で確認することができる。
【００６１】
最後に、シミュレーションデータテーブル２０７へ値を出力する、シミュレータ４のシミュレーションロジックのフローチャートと本システムの別の実施形態について図２９と図３０を用いて説明する。
【００６２】
図２９は、シミュレータ４のシミュレーションロジックのフローチャートである。始めに、シミュレーションを実施したいモデルの名称、シミュレーション開始、期間を得る（ステップ４０１、４０２）。続いて、シミュレーション上の時間（ｔ時点）を初期化（ｔ＝０）する（ステップ４０３）。次に、ｔ時点をインクリメント（ｔ＝ｔ＋１）する（ステップ４０４）。ステップ４０５では、シミュレーションモデルテーブル４０６より、モデル名フィールドとステップ４０１で得たモデル名とが一致するレコードを１件抽出する。抽出したレコードの式フィールドに登録された計算式を構成する各変数の値をシミュレーションデータテーブル２０７より得る（ステップ４０６）。
【００６３】
そこで得た変数の値の中にＮＵＬＬが含まれていない場合（ステップ４０７）、ステップ４０５で得た式フィールドの計算式の各変数に、取得した値を代入し、計算式を解く（ステップ４０８）。続いて、そこで得た解をシミュレーションデータテーブル４０７に格納する（ステップ４０９）。
【００６４】
ステップ４０７において、変数の中にＮＵＬＬが含まれていた場合、ステップ４０５で得た式フィールドの値を先入先出形式のスタックに一時保存する。ステップ４０５にて次のレコードが存在すれば、再度繰り返す（ステップ４１１）。ステップ４１０で利用したスタックに値が存在していた場合（ステップ４１２）、スタックから値を先入先出にて取り出し（ステップ４１３）、ステップ４０５へ戻る。ステップ４１２にてスタックが空だった場合、シミュレーション期間とｔ時点を比較し、ｔ時点がシミュレーション期間に達していない場合は、ステップ４０４を実施し、達した場合は終了する（ステップ４１４）。
【００６５】
図３０は、本システムの別の実施形態を示すブロック図である。シミュレーションモデルジェネレータ１ａは、シミュレータ４も包含する形態で実現しても良い。本実施形態においては、以上説明したように、因果関係の構造、メトリクス間の影響関係、メトリクスの出力タイムバケット及びシミュレーションタイムバケットを定義することによってシミュレーションモデルを自動生成し、シミュレーションをすることができる。これにより、シミュレーションモデル構築期間を大幅に短縮することができる。また、システムダイナミクスの知識を持たない非専門家でもシミュレーションモデルを作成し、シミュレーションすることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明のシミュレーションモデルジェネレータを実現する情報処理システムの一実施形態を示すブロック図である。
【図２】シミュレーションモデルジェネレータの一実施形態におけるハードウェア構成を示す図である。
【図３】シミュレーションモデルジェネレータの各手段、データベース、シミュレータとのやり取りを時系列的に示した図である。
【図４】因果関係図定義手段の画面のイメージ図である。
【図５】因果関係図定義手段の画面のイメージ図である。
【図６】登録確認画面のイメージ図である。
【図７】メトリクステーブルのイメージ図である。
【図８】リンクテーブルのイメージ図である。
【図９】メトリクス定義画面のイメージ図である。
【図１０】単位テーブルのイメージ図である。
【図１１】単位マスタ定義画面のイメージ図である。
【図１２】因果関係図定義画面のイメージ図である。
【図１３】因果関係図定義画面のイメージ図である。
【図１４】影響関係定義画面のイメージ図である。
【図１５】係数テーブルのイメージ図である。
【図１６】グラフ関数定義画面のイメージ図である。
【図１７】シミュレーションタイムバケット設定画面のイメージ図である。
【図１８】シミュレーションタイムバケットテーブルのイメージ図である。
【図１９】因果関係図読み出し画面のイメージ図である。
【図２０】シミュレーションモデル生成フローチャート図である。
【図２１】プログラムテンプレート１６１のイメージ図である。
【図２２】プログラムテンプレート１６２のイメージ図である。
【図２３】プログラムテンプレート１６１を活用したプログラムモジュールの生成イメージのイメージ図である。
【図２４】プログラムテンプレート１６２を活用したプログラムモジュールの生成イメージのイメージ図である。
【図２５】自動生成したシミュレーションモデルのイメージ図である。
【図２６】シミュレーションモデルテーブルのイメージ図である。
【図２７】シミュレーションデータテーブルのイメージ図である。
【図２８】シミュレーション画面のイメージ図である。
【図２９】シミュレータのシミュレーションロジックのフローチャート図である。
【図３０】本発明のシミュレーションモデルジェネレータを実現する情報処理システムの別の実施形態を示すブロック図である。
【符号の説明】
【００６７】
１…シミュレーションモデルジェネレータ、  １ａ…シミュレーションモデルジェネレータの別の実施形態、  １１…因果関係図定義手段、  １１１…パレット、  
１１２…メトリクス定義ボタン、  １１３…シミュレーションボタン、  １１４…影響関係定義ボタン、  １１５…シミュレーションタイムバケット定義ボタン、
１１６…シミュレーションモデル生成ボタン、  １１７…登録ボタン、  １１８…開くボタン、  １１９…キャンバス、  １１１ａ…メトリクスで現したパレット、    
１２… メトリクス定義手段、  １３…単位マスタ定義手段、  １４…影響関係定義手段、  １５…シミュレーションタイムバケット設定手段、  １６…シミュレーションモデル生成手段、  ２… データベース、  ２０…補助記憶装置、  ２０１…メトリクステーブル、  ２０２…リンクテーブル、  ２０３…単位テーブル、  ２０４…係数テーブル、  ２０５…シミュレーションタイムバケットテーブル、  ２０６…シミュレーションモデルテーブル、  ２０７…シミュレーションデータテーブル、  ３…シミュレーションモデルジェネレータのサーバ、  ３１…ＣＰＵ、  ３２…メモリ、
３３…通信制御部、  ４…シミュレータ、  ５…ネットワーク、  ６…シミュレーションモデルジェネレータのクライアント
【図１】
0004770495.tif 000004
【図２】
0004770495.tif 000005
【図３】
0004770495.tif 000006
【図４】
0004770495.tif 000007
【図５】
0004770495.tif 000008
【図６】
0004770495.tif 000009
【図７】
0004770495.tif 000010
【図８】
0004770495.tif 000011
【図９】
0004770495.tif 000012
【図１０】
0004770495.tif 000013
【図１１】
0004770495.tif 000014
【図１２】
0004770495.tif 000015
【図１３】
0004770495.tif 000016
【図１４】
0004770495.tif 000017
【図１５】
0004770495.tif 000018
【図１６】
0004770495.tif 000019
【図１７】
0004770495.tif 000020
【図１８】
0004770495.tif 000021
【図１９】
0004770495.tif 000022
【図２０】
0004770495.tif 000023
【図２１】
0004770495.tif 000024
【図２２】
0004770495.tif 000025
【図２３】
0004770495.tif 000026
【図２４】
0004770495.tif 000027
【図２５】
0004770495.tif 000028
【図２６】
0004770495.tif 000029
【図２７】
0004770495.tif 000030
【図２８】
0004770495.tif 000031
【図２９】
0004770495.tif 000032
【図３０】
0004770495.tif 000033