(57)【特許請求の範囲】
【請求項１】
離散事象によるシミュレーションを行うためのインタフェース構造であって、
上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、時間依存の事象及び／又は系依存の事象を実行するためのフェーズとの２つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で、離散系モデルにおいて必要とされる該クラスの機能及び性質を継承させる機構を持つようにしたことを特徴とするシミュレーションのためのインタフェース構造。
【請求項２】
上記２つのフェーズに抽象化したクラスのうち、上記事象を実行するためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする請求項１に記載のシミュレーションのためのインタフェース構造。
【請求項３】
離散事象によるシミュレーションを行うためのシミュレーション装置であって、
上記離散事象によるシミュレーションを行う実行部が、時刻を進めるためのフェーズと、時間依存の事象及び／又は系依存の事象を実行するためのフェーズとの２つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で、離散系モデルにおいて必要とされる該クラスの機能及び性質を継承させる機構を持つようにしたインタフェース構造を備え、
上記実行部において事象を実行し、系の時刻を進める要求を行うことを特徴とするシミュレーション装置。
【請求項４】
上記２つのフェーズに抽象化したクラスのうち、上記事象を実行するためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする請求項３に記載のシミュレーション装置。
【請求項５】
上記抽象化したクラスとは別に、オブジェクトのロードやセーブ行うクラスを有することを特徴とする請求項４に記載のシミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シミュレーションのためのインタフェース構造およびシミュレーション装置に関するものである。
【０００２】
【従来の技術】
工場やプラントなどの挙動を模擬するためにシミュレーションが行われることがある。シミュレーションを行うことにより、例えば工場等の稼動効率を予測して、その結果を工程等に反映することで効率の向上を図ることができる。従来、このようなシミュレーションの手法として様々な手法が提案されている。これを大きく分けると、時間的に連続的な挙動を模擬する連続系モデルと、時間的に離散的な挙動を模擬する離散系モデルとがある。連続系モデルは、一定の時間間隔で系の時刻を進めるモデルで系の振舞いをとらえようとするものである。
【０００３】
これに対して離散系モデルは、非定期的に発生する事象を中心に見ることによって系の振舞いをとらえようとするものである。この離散系モデルには、例えば、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチなど様々なシミュレーション手法が存在し、それらの手法に応じて、上記事象はアクティビティ或いはイベントと呼ばれる。
【０００４】
上記スリーフェーズアプローチは、時刻の変化によって起こる時間依存のアクティビティ（Boundary Activity ）を実施するフェーズ（以下、Ｂフェーズと呼ぶ）と、系の状況変化によって起こる系依存のアクティビティ（Conditional Activity）を実施するフェーズ（以下、Ｃフェーズと呼ぶ）と、系の時刻を進めるフェーズ（以下、Ａフェーズと呼ぶ）とを有し、Ｂ→Ｃ→Ａの順に各フェーズを繰り返し実施することにより、離散事象のシミュレーションを実行する。
【０００５】
例えば、洗車場で車を洗うという作業を考えた場合、洗車が１０分で終わるとすると、「洗車を開始してから１０分経ったときに洗車場から車を出す」という事象は系の時刻変化に応じて行うことであるので、Boundary Activity （Ｂフェーズ）と考えることができる。通常、Ｂフェーズは、事象リストに対する事象の登録と抽出（実行）とによって行われる。
【０００６】
Ｂフェーズを実行すると、それによって系の状況に変化が生じることがあるので、次にＣフェーズを実行する。例えば、「洗車場が空いていれば車を入れる」という事象は系の状況に応じて行うことであるので、Conditional Activity（Ｃフェーズ）と考えることができる。次に、Ａフェーズでは、事象リストに登録されている全事象の中で現時点から一番早く起こる事象まで時刻を進める処理を行う。
【０００７】
また、上記イベントアプローチは、時間依存のイベントが多く含まれた系のシミュレーションに有効な手法である。例えば、電車の発着時刻問題を考える場合は、各駅間における電車の走行時間はあらかじめ分かっており、その走行時間のみをトリガーとして系全ての状態が決まるので、イベントアプローチを用いたシミュレーションを行うことが可能である。また、上記アクティビティアプローチは、系の状況に依存したアクティビティを考慮したシミュレーションの手法である。
【０００８】
その他、離散系モデルには、プロセスアプローチなどのシミュレーション手法も存在する。
このように、離散系モデルによるシミュレーションの手法として様々な手法が存在するが、これらの手法は、どういう系を扱うかによって最適なものが選択される。例えば、電車の発着時刻のシミュレーションのように状況依存のイベントが少ない系にはイベントアプローチ、状況依存のイベントが多い系にはスリーフェーズアプローチといった具合である。
【０００９】
【発明が解決しようとする課題】
しかしながら、従来の離散系モデルのシミュレーション装置は、種々ある手法の中の１つにのみ特化して作られていた。そのため、その特化された手法に詳しい者だけがシミュレーションをする系のモデルの作成あるいは変更等をすることが可能であり、他の手法に詳しくても、シミュレーション装置に特化された手法に詳しくなければシミュレーションを実施することは困難であった。このように、従来のシミュレーション装置は、汎用性に欠けているという問題があった。
【００１０】
本発明は、このような問題を解決するために成されたものであり、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチ、プロセスアプローチなどの様々な手法でシミュレーションが可能なマルチアプローチ対応のシミュレーション装置およびそのためのインタフェース構造を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明によるシミュレーションのためのインタフェース構造は、離散事象によるシミュレーションを行うためのインタフェース構造であって、上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、時間依存の事象及び／又は系依存の事象を実行するためのフェーズとの２つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で、離散系モデルにおいて必要とされる該クラスの機能及び性質を継承させる機構を持つようにしたことを特徴とする。
【００１２】
本発明の他の特徴とするところは、上記２つのフェーズに抽象化したクラスのうち、上記事象を実行するためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする。
【００１３】
本発明のシミュレーション装置は、離散事象によるシミュレーションを行うためのシミュレーション装置であって、上記離散事象によるシミュレーションを行う実行部が、時刻を進めるためのフェーズと、時間依存の事象及び／又は系依存の事象を実行するためのフェーズとの２つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で、離散系モデルにおいて必要とされる該クラスの機能及び性質を継承させる機構を持つようにしたインタフェース構造を備え、上記実行部において事象を実行し、系の時刻を進める要求を行うことを特徴とする。
【００１４】
本発明の他の特徴とするところは、上記２つのフェーズに抽象化したクラスのうち、上記事象を実行するためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする。
【００１５】
本発明のその他の特徴とするところは、上記抽象化したクラスとは別に、オブジェクトのロードやセーブ行うクラスを有することを特徴とする。
【００１６】
上記のように構成した本発明によれば、今どの事象を実行するかという部分と時刻を進める部分との２つのフェーズに抽象化された抽象クラスの下の階層に属する子クラスにおいて、上記抽象クラスのインタフェースを継承することによってシミュレーションが実施されることとなるが、離散系モデルの多くの手法で上記抽象化された２つのフェーズに当てはまるので、上記抽象クラスのインタフェースの継承によって様々なシミュレーション手法に対応するような構造ができるようになる。
【００１７】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
図１は本発明の一実施形態であるシミュレーション装置の主要な機能構成を示すブロック図であり、図２はこのシミュレーション装置に用いられるインタフェース構造を示すオブジェクト図である。
【００１８】
図１において、１は事象リストであり、シミュレーションを行う際に実施する時間依存の離散事象（アクティビティあるいはイベント）をリストとして登録しておくものである。リスト上における事象の並べられ方は、事象を起こすタイミングの早い順である。なお、以下では、事象の例としてアクティビティを用いて説明する。
【００１９】
図１に示すように、本実施形態では、この事象リスト１に登録されるBoundary Activity を、イニシャルアクティビティリスト１ａとアクティビティリスト１ｂとに分けて別々に管理している。これは、例えばある物を幾つかの工程で処理して出力するという系のシミュレーションを考える場合に、系にまだ入っていないものと入っているものとを分けて整理するためである。
【００２０】
すなわち、イニシャルアクティビティリスト１ａは、シミュレーションをする系の外部から与えられる物に関するアクティビティ（例えば、鉄鋼会社の製鉄所における製鉄処理の場合、スラブを加熱処理して移動テーブルなどで圧延機に運ぶという系に対してスラブが外部から与えられる時間に関するアクティビティ）を登録するものである。また、アクティビティリスト１ｂは、系で処理される物のあらかじめ予定されている処理時間に関するアクティビティ（例えば上述の例では、ある時刻に加熱処理が終了するというアクティビティ）を登録するものである。
【００２１】
このように本実施形態では、時間依存のBoundary Activity を２つのリストに分けて管理することにより、例えば所定時間内にある量だけ処理したいという要求の下にシミュレーションを行った結果、どれくらいの物が未処理で残ってしまったかを知るためには、イニシャルアクティビティリスト１ａの内容だけを見れば良く、認識が容易になるという利点を有する。
【００２２】
２はベーススケジューラであり、事象管理部２ａおよび時刻管理部２ｂを備え、上記事象リスト１に対するアクティビティの登録と抽出とによってBoundary Activity を実行するとともに、Conditional Activityや系の時刻を進める処理を実行することによって、シミュレーションを実施する。
【００２３】
すなわち、上記事象管理部２ａは、時間依存のアクティビティ（Boundary Activity ）と系依存のアクティビティ（Conditional Activity）との両方を実施する。また、時刻管理部２ｂは、上記事象リスト１に登録されている全アクティビティの中で一番早く起こるアクティビティまで系の時刻を進める要求を行う。３はシミュレーションにおける時刻を表現するためのクロック部であり、時刻管理部２ｂからの要求に応じて時刻を進める。なお、本実施形態ではクロック部３はベーススケジューラ２の外部に備えているが、時刻管理部２ｂと共にベーススケジューラ２の内部に設けることも可能である。
【００２４】
４はファイル管理部であり、一連のシミュレーションで使用する複数のオブジェクト（オブジェクト指向プログラミングにおける、自分自身の内部状態を表す１組のデータとそれらを処理する固有のメソッド群とから成るモジュールを言う）のロード、セーブなどを行う。また、シミュレーションのための条件データや、シミュレーションの途中経過で生成される中間データあるいは最終的な処理結果データなどのロード、セーブも行う。
【００２５】
図２は、上記のような本実施形態によるシミュレーション装置に用いられるインタフェース構造を示すオブジェクト図であり、オブジェクト指向プログラミングにおけるクラスの階層構造を示している。なお、図２において、図１に示したブロックと同じ機能ブロックには同一の符号を付している。
【００２６】
図２に示すように、ベーススケジューラ２を親クラス（クラスは、オブジェクト指向プログラミングにおける同一の機能や性質を持つオブジェクトの型を言う）とし、スリーフェーズスケジューラ２１、イベントスケジューラ２２、アクティビティスケジューラ２３などの様々な手法に対応したスケジューラをその子クラスとして、階層構造が構築されている。
【００２７】
そして、本実施形態では、親クラスであるベーススケジューラ２と子クラスである各手法に対応したスケジューラ２１〜２３との間に継承関係を持たせ、各スケジューラ２１〜２３は、ベーススケジューラ２が持つ機能や性質を受け継ぐようにしている。また、本実施形態では、ベーススケジューラ２が備える事象管理部２ａを仮想関数を用いて構成している。仮想関数は、あるクラスで定義した機能をその子クラスで再定義して、異なる機能に置き換えてしまうための特別な性質を持った関数であり、これはオブジェクト指向プログラミングの多相性を利用したものである。
【００２８】
つまり本実施形態では、ベーススケジューラ２で定義した機能をその子クラスであるスケジューラ２１〜２３で再定義して、スケジューラ２１〜２３に応じた機能に置き換えるようにしているものである。本実施形態の場合、上記ベーススケジューラ２で定義した機能とは、“時刻を進めるための機能”と、“事象を実行する機能”である。
【００２９】
すなわち、“時刻を進めるための機能”は、複数ある事象のうち、最も早く実行すべき事象を選択し、その事象を実行する時刻へ系の時刻を進めるものであり、その事象を実行するのが“事象を実行する機能”である。つまり、従来例で述べた離散系モデルのどのシミュレーション手法も、今どの事象を実行するかという部分と、時刻を進める部分との２つのフェーズに分けることができる。
【００３０】
そこで、本実施形態ではこの点に着目し、この２つのフェーズの関数を持つ抽象化したクラスを作り、シミュレーションを行う際に必要な要素のうち、時刻を進める部分を時刻管理部２ｂにやらせ、その外の事象を実行するための部分を全て事象管理部２ａにやらせるようにしている。
【００３１】
このとき、ベーススケジューラ２は、仮想関数にて構成したことにより、スケジューラ２１〜２３に実装されたシミュレーション手法に従った挙動をする。ベーススケジューラ２は、Boundary Activity およびConditional Activityの両方を実施する機能を有しているので、ベーススケジューラ２の機能を継承するスケジューラを離散系モデルの多くのシミュレーション手法に基づいて実装しても、適切にシミュレーションを行うことができる。
【００３２】
つまり、本実施形態のシミュレーション装置は上記のようなインタフェース構造を持つことにより、スリーフェーズスケジューラ２１として実装したときは、事象管理部２ａは、Boundary Activity およびConditional Activityの両方を実施するように機能する。また、イベントスケジューラ２２として実装したときは、Boundary Activity のみを実施するように機能し、アクティビティスケジューラ２３として実装したときは、Conditional Activityのみを実施するように機能する。
【００３３】
このように、本実施形態のシミュレーション装置によれば、仮想関数であるベーススケジューラ２において今どの事象を実行するかという部分と時刻を制御する部分との２つのフェーズに抽象化した抽象クラスのインタフェースを各スケジューラが継承することによって、様々なアプローチに対応するような構造ができる。すなわち、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチ、プロセスアプローチなどの何れの離散事象シミュレーション手法にも対応することができる。
【００３４】
さらに、今後今までにない全く新しい離散事象シミュレーションの手法が考えだされた場合にも、その手法が上述のように抽象化されたクラスの枠組みに入るものであれば、その手法にも対応することができる。このように、本実施形態のシミュレーション装置は、将来的に案出される新しい手法にも対応することができるという柔軟性を持つメリットがある。
【００３５】
なお、図２から明らかなように、本実施形態では、ファイルアクセスをするクラスを１つにまとめてファイル管理部４で管理しており、ベーススケジューラ２のクラスではファイルアクセスを行わないようにしている。このようにすることにより、ファイルアクセスの手法によってベーススケジューラ２の構造が変わってしまうことを防いでいる。また、ファイル管理部４は一般的なデータベースでも同様に用いることができる。
【００３６】
ファイルアクセスによってベーススケジューラ２の構造が変わらないので、その子クラスであるスケジューラ２１〜２３では、ベーススケジューラ２の同じ機能や性質を継承することができる。よって、ファイルアクセスの如何によらず、上記のようにベーススケジューラ２で抽象化した２つのフェーズを有するどんなシミュレーション手法もスケジューラ２１〜２３で実装することが可能となる。
【００３７】
【発明の効果】
本発明は上述したように、離散系モデルの多くのシミュレーション手法が備えている、時刻を進めるためのフェーズと事象を実行するためのフェーズとの２つのフェーズに抽象化したクラスを作り、その抽象クラスがその子クラスとの間で継承機構を持つように構成したので、上記抽象クラスのインタフェースをその子クラスが継承することによって様々な手法に対応したシミュレーションを行うことができる。これにより、様々な手法でシミュレーションが可能なマルチアプローチ対応のシミュレーション装置を提供することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態であるシミュレーション装置の主要な機能構成を示すブロック図である。
【図２】本実施形態によるシミュレーション装置に用いられるインタフェース構造を示すオブジェクト図である。
【符号の説明】
１  事象リスト
１ａ  イニシャルアクティビティリスト
１ｂ  アクティビティリスト
２  ベーススケジューラ
２ａ  事象管理部
２ｂ  時刻管理部
３  クロック部
４  ファイル管理部
２１  スリーフェーズスケジューラ
２２  イベントスケジューラ
２３  アクティビティスケジューラ
【図１】
0003955129.tif 000002
【図２】
0003955129.tif 000003