JP3916727B2 - シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 - Google Patents
シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 Download PDFInfo
- Publication number
- JP3916727B2 JP3916727B2 JP15804397A JP15804397A JP3916727B2 JP 3916727 B2 JP3916727 B2 JP 3916727B2 JP 15804397 A JP15804397 A JP 15804397A JP 15804397 A JP15804397 A JP 15804397A JP 3916727 B2 JP3916727 B2 JP 3916727B2
- Authority
- JP
- Japan
- Prior art keywords
- simulation
- time
- simulators
- event
- scheduler
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、シミュレーション装置およびその方法、並びにシミュレーションを行うためのプログラムを記録したコンピュータで読み取り可能な記録媒体に関するものである。
【0002】
【従来の技術】
工場やプラントなどの挙動を模擬するためにシミュレーションが行われることがある。シミュレーションを行うことにより、例えば工場等の稼動効率を予測して、その結果を工程等に反映することで効率の向上を図ることができる。従来、このようなシミュレーションの手法として様々な手法が提案されている。これを大きく分けると、時間的に連続的な挙動を模擬する連続系モデルと、時間的に離散的な挙動を模擬する離散系モデルとがある。連続系モデルは、一定の時間間隔で系の時刻を進めるモデルで系の振舞いをとらえようとするものである。
【0003】
これに対して離散系モデルは、非定期的に発生する事象を中心に見ることによって系の振舞いをとらえようとするものである。この離散系モデルには、例えば、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチなど様々なシミュレーション手法が存在し、それらの手法に応じて、上記事象はアクティビティ或いはイベントと呼ばれる。
【0004】
上記スリーフェーズアプローチは、時刻の変化によって起こる時間依存のアクティビティ(Boundary Activity )を実施するフェーズ(以下、Bフェーズと呼ぶ)と、系の状況変化によって起こる系依存のアクティビティ(Conditional Activity)を実施するフェーズ(以下、Cフェーズと呼ぶ)と、系の時刻を進めるフェーズ(以下、Aフェーズと呼ぶ)とを有し、B→C→Aの順に各フェーズを繰り返し実施することにより、離散事象のシミュレーションを実行する。
【0005】
例えば、洗車場で車を洗うという作業を考えた場合、洗車が10分で終わるとすると、「洗車を開始してから10分経ったときに洗車場から車を出す」という事象は系の時刻変化に応じて行うことであるので、Boundary Activity (Bフェーズ)と考えることができる。通常、Bフェーズは、事象リストに対する事象の登録と抽出(実行)とによって行われる。
【0006】
Bフェーズを実行すると、それによって系の状況に変化が生じることがあるので、次にCフェーズを実行する。例えば、「洗車場が空いていれば車を入れる」という事象は系の状況に応じて行うことであるので、Conditional Activity(Cフェーズ)と考えることができる。次に、Aフェーズでは、事象リストに登録されている全事象の中で現時点から一番早く起こる事象まで時刻を進める処理を行う。
【0007】
また、上記イベントアプローチは、時間依存のイベントが多く含まれた系のシミュレーションに有効な手法である。例えば、電車の発着時刻問題を考える場合は、各駅間における電車の走行時間はあらかじめ分かっており、その走行時間のみをトリガーとして系全ての状態が決まるので、イベントアプローチを用いたシミュレーションを行うことが可能である。また、上記アクティビティアプローチは、系の状況に依存したアクティビティを考慮したシミュレーションの手法である。
【0008】
その他、離散系モデルには、プロセスアプローチなどのシミュレーション手法も存在する。
このように、離散系モデルによるシミュレーションの手法として様々な手法が存在するが、これらの手法は、どういう系を扱うかによって最適なものが選択される。例えば、電車の発着時刻のシミュレーションのように状況依存のイベントが少ない系にはイベントアプローチ、状況依存のイベントが多い系にはスリーフェーズアプローチといった具合である。
【0009】
【発明が解決しようとする課題】
しかしながら、上記のような各種の手法に対応した従来のシミュレーション装置あるいは方法では、扱う系が大きくなると、事象の数も莫大に多くなり、離散事象システムのモデル化が困難となっていた。また、完成したモデル系の一部に変更の必要が生じた場合にも、系全体のモデルを一から作り直さなければならないこともあった。そのため、多大の労力および作業時間を要し、システムの開発コストが増大してしまうという問題があった。
【0010】
本発明は、このような問題を解決するために成されたものであり、離散事象シミュレーションモデルの作成およびメンテナンスを簡単に行えるようにして、システム開発を効率的に行えるようにすることを目的とする。
【0011】
【課題を解決するための手段】
本発明によるシミュレーション装置は、離散事象によるシミュレーションを行うための複数のシミュレータを備えたシミュレーション装置において、上記シミュレータ間で転送する転送先情報及びタイミング情報を含んだオブジェクトを登録する転送リストと、上記転送リストに登録されたオブジェクトの転送先情報及びタイミング情報に基づいて、上記オブジェクトを該当する転送先のシミュレータへ転送するタイミングを制御するタイミング制御手段と、上記タイミング制御手段により制御されたタイミングで上記オブジェクトを上記該当する転送先のシミュレータへ転送するインタフェース手段と、シミュレーションの全体を制御する制御手段とを設けたことを特徴とする。
【0012】
ここで、上記複数のシミュレータ全てに共通の時刻情報であるクロック部を更に設け、上記タイミング制御手段は、上記クロック部の時刻を参照して、上記複数のシミュレータの中で一番最初に実行すべき事象の時刻に系の時刻を進める処理を行うようにしても良い。
また、上記複数のシミュレータ間で移動するオブジェクトは、上記複数のシミュレータで表現される系の間を物が移動する事象に関するオブジェクトであっても良い。
【0013】
本発明の他の特徴とするところは、上記インタフェース手段は、上記転送リストに登録されたオブジェクトを、転送すべきシミュレータに対して、上記系の間の物の移動時間を考慮した所定の時刻に転送することを特徴とする。
【0015】
本発明のその他の特徴とするところは、上記複数のシミュレータはそれぞれ、上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、事象を起こすためのフェーズとの2つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で継承機構を持つようにしたことを特徴とする。
【0016】
ここで、上記2つのフェーズに抽象化したクラスのうち、上記事象を起こすためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現しても良い。
また、上記複数のシミュレータはそれぞれ、上記抽象化したクラスとは別に、オブジェクトのロードやセーブ行うクラスを有するようにしても良い。
【0017】
本発明のシミュレーション方法は、離散事象によるシミュレーションを行うためのシミュレーション方法であって、上記シミュレーションの対象とする系を複数の系に分けてモデル化し、モデル化した複数のシミュレータ間で時刻の同期をとりながら所定のオブジェクトを、オブジェクト自身により指定されている転送先情報及びタイミング情報に従って、転送すべきシミュレータに対して所定の時刻に移動させるようにすることにより、上記複数のシミュレータで1つのシミュレーションを統合的に行うようにしたことを特徴とする。
【0018】
ここで、上記複数のシミュレータ間でとる時刻の同期は、上記複数のシミュレータ全てに共通の時刻情報であるクロック部の時刻を参照して、上記複数のシミュレータの中で一番最初に実行すべき事象の時刻に系の時刻を進める処理であっても良い。
また、上記複数のシミュレータ間で移動する所定のオブジェクトは、上記複数のシミュレータで表現される系の間を物が移動する事象に関するオブジェクトであっても良い。
【0019】
本発明の他の特徴とするところは、上記複数のシミュレータ間で所定のオブジェクトを移動させる際に、あるシミュレータから出力されたオブジェクトを上記系の間の物の移動時間を考慮した所定の時刻に他のシミュレータに転送するようにすることを特徴とする。
【0021】
本発明のその他の特徴とするところは、上記複数のシミュレータはそれぞれ、上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、事象を起こすためのフェーズとの2つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で継承機構を持つことを特徴とする。
【0022】
ここで、上記2つのフェーズに抽象化したクラスのうち、上記事象を起こすためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現するようにしても良い。
【0023】
本発明のコンピュータ読み取り可能な記録媒体は、上述したタイミング制御手段、インタフェース手段、及び制御手段としてコンピュータを機能させるシミュレーション用プログラムを記録したことを特徴とする。
【0024】
上記のように構成した本発明によれば、個々の系を表現するシミュレータを複数組み合わせて1つの統合シミュレータを構成することが可能となるので、シミュレーションの対象とする大きなモデル系を、モデル化を容易に行うことが可能な小さなモデル系の集まりとして表現でき、かつ、システム開発の際には、モデル系のシミュレータを並行して開発することも可能となる。
【0025】
本発明の他の特徴によれば、オブジェクトが複数のシミュレータ間を移動する際に、複数のシミュレータで表現される系の間を物が移動する際の移動時間などのインタラクションをも考慮して移動が行われることとなり、上述のように1つの大きなモデル系を複数の小さなモデル系に分けてシミュレータを構築した場合でも、より現実に近いシミュレーションを行うことが可能となる。
【0026】
本発明のその他の特徴によれば、オブジェクトの転送先シミュレータおよび転送すべき時刻は、転送リストに登録されたオブジェクト自身により指定されるので、制御手段が備えるインタフェース手段は、あるシミュレータから出力されたオブジェクトにより指定されている情報に従ってそのオブジェクトを他のシミュレータに流すだけで良くなる。これにより、インタフェース手段には変更を加えることなく、既存のシミュレータのモデルを変更したり、新たなシミュレータを追加したりすることが可能となる。
【0027】
本発明のその他の特徴によれば、今どのアクションを起こすかという部分と、時刻を進める部分との2つのフェーズに抽象化された抽象クラスの下の階層に属する子クラスにおいて、上記抽象クラスのインタフェースを継承することによってシミュレーションが実施されることとなるが、離散系モデルの多くのシミュレーション手法において上記抽象化された2つのフェーズが当てはまるので、上記抽象クラスのインタフェースの継承によって様々なシミュレーション手法に対応するような構造ができるようになる。
【0028】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態であるシミュレーション装置の主要な機能構成を示すブロック図である。本実施形態は、1つの大きな系を複数の系に分けてモデル化し、それらが時刻の同期をとりながら動くようなシミュレーションのシステムを提案するものである。例えば、図1の例では、鉄鋼会社の製鉄所における製鉄処理をモデル化したものであり、一連の製鉄処理を行う大きな系をスラブの生成、加熱、圧延の3つの小さな系に分けてモデル化し、各モデルが時刻の同期をとりながら動くようなシミュレーションを考えている。
【0029】
図1において、1はシミュレーション制御部であり、タイミング制御手段2およびインタフェース手段3を備え、これらを用いて本実施形態によるシミュレーション装置全体の動作を管理する。後で詳しく説明するが、上記インタフェース手段3は、転送リスト4を備えている。
【0030】
5a,5b,5cは個々のスケジューラ(シミュレータ)であり、例えば、5aは溶鋼からスラブを生成するA工場の系をモデル化したスケジューラ、5bは生成されたスラブを加熱するB工場の系をモデル化したスケジューラ、5cは加熱されたスラブを圧延するC工場の系をモデル化したスケジューラである。
【0031】
各スケジューラ5a〜5cは、シミュレーションを行う際に実施する時間依存の離散事象(アクティビティまたはイベント)をリストとして登録しておく事象リスト6a〜6cを持つ。リスト上における事象の並べられ方は、事象を起こすタイミングの早い順である。図1の下部の図は、事象の発生するタイミングを示したものである。横軸tは時刻を示しており、A1 →B1 →B2 →A2 →C1 ……と順次事象が実行される。
【0032】
例えば、図1の事象リスト6aではA1 という事象が時刻t=10のときに実行されるということを示し、事象A1 に次いでこのスケジューラ5aにおいては時刻t=30のときに事象A2 が実行される。シミュレーション制御部1から事象リストの問合わせがあると、各スケジューラ5a〜5cはそれぞれ自分が持っている事象リスト6a〜6cから最も早く実行すべき事象の内容と時刻とをシミュレーション制御部1に返す。なお、本実施形態では、各スケジューラ5a〜5cはそれぞれ1つずつ事象リスト6a〜6cを持っているが、これは複数でも構わない。
【0033】
7a,7b,7cはそれぞれ各スケジューラ5a,5b,5cに対応して設けられたファイルアクセス部であり、一連のシミュレーションで使用する複数のオブジェクト(オブジェクト指向プログラミングにおける、自分自身の内部状態を表す1組のデータとそれらを処理する固有のメソッド群とから成るモジュールを言う)のロード、セーブなどを行う。また、シミュレーションのための条件データや、シミュレーションの途中経過で生成される中間データあるいは最終的な処理結果データなどのロード、セーブも行う。なお、このファイルアクセス部7a〜7cは、データベースとして構成しても良い。
【0034】
後で詳しく説明するが、本実施形態では、所定のオブジェクトに関しては、各スケジューラ5a〜5cの間をシミュレーション制御部1を介して動き回るように構成している。例えば、A工場からB工場へ何か物が移動する事象があったとすれば、A工場スケジューラ5aが有するファイルアクセス部7aからロードされたオブジェクトが、シミュレーション制御部1のインタフェース手段3を介して、B工場スケジューラ5bが有するファイルアクセス部7bにセーブされる。
【0035】
8はシミュレーションにおける時刻経過を表現するためのクロック部であり、個々のスケジューラが何個あるかにかかわらず、シミュレーション制御部1に対して1個のみ備えられる。シミュレーション制御部1のタイミング制御手段2は、このクロック部8を用いて、各スケジューラ5a〜5cのシミュレーションにおける個々の事象の実行のタイミングを調整する。
【0036】
具体的には、シミュレーション制御部1は、各スケジューラ5a〜5cに対してどのような事象があるかを問い合わせる。各スケジューラ5a〜5cは上述のように、それぞれ自分が持っている事象リスト6a〜6cから最も早く実行すべき事象の内容と時刻とをシミュレーション制御部1に返す。シミュレーション制御部1は、共通の時刻であるクロック部8の時刻情報および、各スケジューラ5a〜5cから返された事象情報を基に、次にどのスケジューラのどの事象を実行すれば良いかを判断し、その事象が実行されるべき時刻に系の時刻を進める。系が所定の時刻にセットされると、該当する事象を実行する。
【0037】
なお、本実施形態ではタイミング制御手段2とクロック部8とを別に設けているが、タイミング制御手段2自身が各スケジューラ5a〜5cに共通の時刻情報を持っていれば、別途クロック部8を設ける必要はない。
【0038】
上記シミュレーション制御部1はまた、上述したように、各スケジューラ5a〜5cの間をオブジェクトが動き回るようにするインタフェース機能も備えている。インタフェース手段3は、各スケジューラ5a〜5cの中のあるスケジューラ(転送元)から送られてくるオブジェクトを転送リスト4に登録し、何れかのスケジューラ(転送先)に転送する機能を持つ。このとき登録されるオブジェクトにはあらかじめ転送元のスケジューラにより、どのスケジューラ(転送先)にどのようなタイミングで転送するかという情報が付加されている。
【0039】
次に、転送リスト4に登録されたオブジェクトを転送先のスケジューラに転送するが、このときはオブジェクトに付加されてきたタイミングの情報を基にタイミング制御手段2が所定の時刻に系の時刻を進め、インタフェース手段3が該当するスケジューラにそのオブジェクトを転送する。このタイミング情報とは、例えば、各スケジューラ5a〜5cで表される系の間で移動する物(各工場間で運搬されるスラブなど)の移動時間を考慮したものである。
【0040】
すなわち、実際の操業では、例えばA工場で生成されたスラブをB工場で処理するためには、スラブをA工場からB工場へと運搬する必要がある。よって、この運搬時間を考慮せずにシミュレーションのモデルを作ったのでは、現実に忠実なシミュレーションを行うことができない。そこで、本実施形態のように各工場間のインタラクションを考慮してモデルを作ることにより、1つの大きなモデル系を複数の小さなモデル系に分けてシミュレータを構築した場合でも、より現実に近いシミュレーションを行うことができるようになる。
【0041】
以上のように、本実施形態のシミュレーション装置においては、複数のスケジューラ間での時刻同期の処理を行うとともに、インタフェースの処理を行うようにしたシミュレーション制御部1を設けたので、個々の系を表現するスケジューラを複数組み合わせて1つの統合シミュレータを構成することができる。大きな系を1つのモデルで表現しようとすると、そのモデルの作成には多大の労力を要するが、本実施形態によれば大きなモデル系を小さなモデル系の集まりとして表現でき、その結果、個々のモデル化を容易に行うことができるようになる。
【0042】
また、個々の系のスケジューラのモデル化を容易に行うことができるだけでなく、それら個々のスケジューラの並行開発を行うこともできるようになる。すなわち、A工場、B工場、C工場で行う処理を模擬する個々のスケジューラを同時並行して開発することができる。これにより、それぞれ工場の内部に詳しい者がそれぞれのスケジューラを並行して作ることができ、より詳しく間違いのない優れた統合シミュレータを容易に短期間で作ることができるようになる。
【0043】
しかも、シミュレーション制御部1が備えるインタフェース機能は、転送リスト4に登録されたオブジェクトに付加されている情報に従ってそのオブジェクトを他の系に流すだけのものであり、その転送先のスケジューラおよび転送時刻の情報は、転送元のスケジューラにて付加されるようになっている。したがって、例えば物を移動させる事象などに対して上述の付加情報と共にオブジェクトをシミュレーション制御部1に登録するように個々のスケジューラをモデル化すれば、どんなスケジューラでも任意に組み合わせることができる。
【0044】
これにより、例えば、古いバージョンのスケジューラとの組み合わせも可能である。従来のように全体の大きな系を1つのシミュレータとして作成する場合には、その一部(例えば、スラブを生成するA工場の部分)のみに設計変更の要求が生じた場合でも全体を作り直す必要があったが、本実施形態によれば、A工場の部分のみを作り直せば良く、B工場の部分およびC工場の部分はそのまま再利用することができる。もちろん、シミュレーション制御部1の構成に変更を加える必要もない。また、新たにD工場のスケジューラなどを追加する場合にも、シミュレーション制御部1には変更を加える必要がない。そのため、システムの開発コストを大幅に削減することができる。
【0045】
なお、大きな系を複数の小モデル系に分けて表現できるようにするために、A工場スケジューラ5aとB工場スケジューラ5bとの間およびB工場スケジューラ5bとC工場スケジューラ5cとの間に、インタラクション自体をモデル化したスケジューラを作成する方法も考えられる。
【0046】
しかしこの方法では、既存のスケジューラに変更を加えた場合にはそれに関係するインタラクションのスケジューラにも変更を加える必要が出てくる。また、新たにD工場のスケジューラなどを追加する場合には、それに対応した新たなインタラクションのスケジューラも追加しなければならなくなる。
【0047】
これに対して、本実施形態によれば、既存のスケジューラを変更したり新たなスケジューラを追加した場合でも、オブジェクトの転送時に使用する情報を付加する機能を各工場のスケジューラに加えるだけで、インタラクションの部分であるシミュレーション制御部1には変更を加える必要がない。よって、シミュレーションモデルの一部変更や追加などを容易に行うことができるというメリットも有する。
【0048】
次に、本発明の第2の実施形態について説明する。第2の実施形態は、図1に示した各スケジューラ5a〜5cにおけるインタフェース構造を工夫することにより、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチ、プロセスアプローチなどの様々な離散事象シミュレーション手法に対応できるようにしたものである。
【0049】
図2は、この第2の実施形態によるシミュレーション装置に用いられるインタフェース構造を示すオブジェクト図であり、オブジェクト指向プログラミングにおけるクラスの階層構造を併せて示している。なお、図2において、図1に示したブロックと同じ機能ブロックには同一の符号を付している。
【0050】
図2に示すように、図1に示した各スケジューラ5a〜5cは、第2の実施形態ではベーススケジューラ21として実現される。そして、このベーススケジューラ21を親クラスとし、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチ、プロセスアプローチなどの何れかの手法に対応したスケジューラ22をその子クラスとして、階層構造が構築されている。
【0051】
本実施形態では、ベーススケジューラ21とスケジューラ22との間に継承関係を持たせ、スケジューラ22は、ベーススケジューラ21が持つ機能や性質を受け継ぐようにしている。また、本実施形態では、ベーススケジューラ21を仮想関数を用いて構成している。仮想関数は、あるクラスで定義した機能をその子クラスで再定義して、異なる機能に置き換えてしまうための特別な性質を持った関数で、オブジェクト指向プログラミングの多相性を利用したものである。
【0052】
つまり本実施形態では、ベーススケジューラ21で定義した機能をその子クラスであるスケジューラ22で再定義して、スケジューラ22に応じた機能に置き換えるようにしているものである。本実施形態の場合、上記ベーススケジューラ21で定義した機能とは、“時刻を進めるための機能”と、“事象を実行する機能”である。
【0053】
すなわち、“時刻を進めるための機能”は、複数ある事象のうち、最も早く実行すべき事象を選択し、その事象を実行する時刻へ系の時刻を進めるものであり、その事象を実行するのが“事象を実行する機能”である。つまり、離散系モデルのどのシミュレーション手法も、今どの事象を実行するかという部分と、時刻を進める部分との2つのフェーズに分けることができる。
【0054】
そこで、本実施形態ではこの点に着目し、この2つのフェーズの関数を持つ抽象化したクラスを作り、シミュレーションを行う際に必要な要素のうち、時刻を進める部分をシミュレーション制御部1にやらせ、その外のアクションを起こす部分を全てベーススケジューラ21にやらせるようにしている。
【0055】
このとき、ベーススケジューラ21は、仮想関数にて構成したことにより、スケジューラ22に実装されたシミュレーション手法に従った挙動をする。ベーススケジューラ21は、Boundary Activity およびConditional Activityの両方を実施する機能を有しているので、ベーススケジューラ21の機能を継承するスケジューラ22を離散系モデルのどのシミュレーション手法に基づいて実装しても、適切にシミュレーションを行うことができる。
【0056】
例えば、スケジューラ22をスリーフェーズアプローチとして実装したときは、ベーススケジューラ21は、Boundary Activity およびConditional Activityの両方を実施するように機能する。また、イベントアプローチとして実装したときは、Boundary Activity のみを実施するように機能し、アクティビティアプローチとして実装したときは、Conditional Activityのみを実施するように機能する。
【0057】
なお、この第2の実施形態においてシミュレーション制御部1は、あるスケジューラから転送リスト4に登録されたオブジェクトの構造を転送先のスケジューラで採用している型の構造に書き換える処理を行う。
【0058】
次に、本システムを構成するクラスの継承関係の一部を図3に示す。
全空間の親であるオブジェクト直下のクラスには、モデル化する系の基本的な構成要素を表すベースエンティティ31(特に、自分がどのスケジューラに何時動くかの情報はこのクラスに含まれる)、事象であるアクティビティ32、離散シミュレーションを実行するベーススケジューラ21、シミュレーションにおける時間を表現するクロック部8、オブジェクトのロードやセーブを行うファイルアクセス部7のクラスがある。
【0059】
上記ベースエンティティ31の下には、具体的なシミュレーション手法に応じて系の構成要素を表すエンティティが少なくとも1個以上継承されており、その中の1つのエンティティ33には更に、例えば2次元の配置問題を扱う2次元座標を持った2Dエンティティ34が継承されている。さらに、詳細な説明は割愛するが、この2Dエンティティ34の下には、例えば製鉄処理を模擬するためのより具体的なクラスが継承されている。また、上記ベーススケジューラ21の下には、具体的なシミュレーション手法に応じて系のシミュレーションを実行するためのスケジューラ22のクラスが少なくとも1個以上継承されている。
【0060】
図3から明らかなように、本実施形態では、ファイルアクセスをするクラスを1つにまとめてファイルアクセス部7で管理しており、その他のクラスではファイルアクセスを行わないようにしている。このようにすることにより、ファイルアクセスの手法によってベーススケジューラ21や、ベースエンティティ31以下のクラス等の構造が変わってしまうことを防いでいる。また、ファイルアクセス部7は一般的なデータベースでも同様に用いることができる。
【0061】
ファイルアクセスによってベーススケジューラ21の構造が変わらないので、その子クラスであるスケジューラ22では、ベーススケジューラ21の同じ機能や性質を継承することができる。よって、ファイルアクセスの如何によらず、上記のようにベーススケジューラ21で抽象化した2つのフェーズを有するどんなシミュレーション手法もスケジューラ22で実装することが可能となる。
【0062】
次に、図2のように構成した第2の実施形態によるシミュレーション装置の動作を、図4のフローチャートに基づいて詳しく説明する。
図4において、ユーザがシミュレーションの実行コマンドを入力すると、ステップS1から処理が開始される。ステップS1では、シミュレーション制御部1が管理する少なくとも1個以上のベーススケジューラ21の中で、現在の時刻に起こる事象が存在するdiscrete_approach()を全て実行する。
【0063】
このとき、それらの各ベーススケジューラ21で起こった事象の中で、あるベーススケジューラが表現する系から他のベーススケジューラが表現する系に物が移動する事象も存在する(図1の例で言うと、例えばA工場からB工場への移動)。そのような移動に関する事象が存在するかどうかをステップS2で判断し、存在する場合は、ステップS3で、シミュレーション制御部1が持つ転送リスト4にそのためのベースエンティティを登録する。エンティティとは、シミュレーションするときに系の構成要素を表す用語である。
【0064】
図5は、上記ステップS1で行われる動作を説明するための図である。なお、この図5は、ベーススケジューラ21の機能や性質を継承したスケジューラ22がスリーフェーズアプローチで実装されている場合のインタフェースの例を示したものである。
【0065】
図5において、シミュレーション制御部1からベーススケジューラ21に対してメンバ関数discrete_approach()の実行命令が与えられると、このベーススケジューラ21の機能を継承したスケジューラ22では、まず時間依存のBoundary Activity を全て実行する。すなわち、まず事象リスト6から、シミュレーション制御部1で管理されている現在の時刻と事象を起こすべき時刻とが一致したアクティビティ53を全て抽出することによりBoundary Activity を実行する。
【0066】
なお、図5に示すように、本実施形態では、この事象リスト6に登録されるBoundary Activity を、イニシャルアクティビティリスト51とアクティビティリスト52とに分けて別々に管理している。これは、例えば図1のようにスラブを幾つかの工場で処理して出力するという系のシミュレーションを考える場合に、ある工場の系にまだ入っていないものと入っているものとを分けて整理するためである。
【0067】
すなわち、イニシャルアクティビティリスト51は、シミュレーションをする系の外部から与えられる物に関するアクティビティ(例えば、スラブがA工場からB工場に与えられる時間に関するアクティビティ)を登録するものである。また、アクティビティリスト52は、系で処理される物のあらかじめ予定されている処理時間に関するアクティビティ(例えば、ある時刻に加熱処理が終了するというアクティビティ)を登録するものである。
【0068】
このように本実施形態では、時間依存のBoundary Activity を2つのリストに分けて管理することにより、例えば所定時間内にある量だけ処理したいという要求の下にシミュレーションを行った結果、どれくらいの物が未処理で残ってしまったかを知るためには、イニシャルアクティビティリスト51の内容だけを見れば良く、認識が容易になるという利点を有する。
【0069】
次に、上述のようにしてアクティビティ53を抽出してBoundary Activity を実行したら、アクティビティ53の終了をそれに関連するエンティティ54に知らせる。そして、そのアクティビティ53を起こしたエンティティ54がアクティビティ53の終了時に行うべきことを実行する。ここで、アクティビティ53の終了時に行うべきことは、アクティビティ53の発生時にそれに関連するエンティティ54のメンバ関数 end_process にセットされる。
【0070】
本実施形態では、このメンバ関数 end_process をオブジェクト指向プログラミングの仮想関数で定義する。これにより、この end_process の機能を継承する下のクラスで様々な動作をするように再定義することによって、いろんな事象を柔軟に表現することができる。例えば、クレーンがスラブを掴むために移動するアクティビティでは、移動というアクティビティが終了すると同時にスラブを掴むという現象を起こすようにすることもできる。このように、本実施形態では、従来はサブルーチンなどを用いて手続きとして書いていた振る舞いを1つのクラスで表現することができる。
【0071】
次に、時間依存のBoundary Activity をすべて実行した後は、ルールベースを用いて状況依存のConditional Activityをすべて実行する。すなわち、まずスケジューラ22は、推論エンジン55に推論の実行を依頼する。依頼を受けた推論エンジン55は推論を実行し、その推論の結果が所定の条件を満たした場合には、新たなアクティビティ53を発生させ、発生と同時にそれを事象リスト6に登録する。以上が図4のステップS1における処理の詳細である。
【0072】
図4のステップS4では、シミュレーション制御部1の転送リスト4に転送エンティティが登録されているかどうかを判断する。転送エンティティが存在する場合は、ステップS5に進み、シミュレーション制御部1は、その転送エンティティを転送先として指定されているベーススケジューラ21に移動させる。この移動は、転送エンティティが持っている情報(転送先および転送時刻の情報)をもとに行われる。
【0073】
次に、シミュレーション制御部1は、ステップS6で、自分が管理している少なくとも1個以上のベーススケジューラ21のオブジェクトの全てに対してアクセスし、最も早くアクティビティが起こる時刻をそれぞれから取得する。そして、各ベーススケジューラ21から受け取った時刻の値をタイミング制御手段2のオブジェクトに知らせる。なお、各ベーススケジューラ21は、次に起こるアクティビティがないときは−1の値をシミュレーション制御部1に返す。
【0074】
これに応じてタイミング制御手段2のオブジェクトは、次のステップS7で、各ベーススケジューラ21から受け取ったそれぞれの最早時刻の値をメンバ関数registered_timeに格納する。そして、ステップS8で、上記メンバ関数registered_timeに格納された複数の時刻の値をもとに次に進むべき時刻(その中でも最も早い時刻)を判断して、その時刻に系の時刻を更新する。
【0075】
その後、ステップS9で上記メンバ関数registered_timeの値を−1に初期化した後、ステップS1の処理に戻る。これにより、上記ステップS8で新しく更新された時刻を要求したベーススケジューラ21でメンバ関数discrete_approach()が実行されることとなる。以下、このようなステップS1〜S9の処理の繰り返しにより、シミュレーションが実行されていく。
【0076】
以上のように、第2の実施形態のシミュレーション装置によれば、仮想関数であるベーススケジューラ21の抽象クラス(時刻を進めるためのクラスと事象を実行するためのクラス)のインタフェースをスケジューラ22が継承することによって、様々なアプローチに対応するような構造ができる。すなわち、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチ、プロセスアプローチなどの何れの離散事象シミュレーション手法にも対応することができる。
【0077】
これにより、図1に示すような製鉄処理のシミュレーションを複数の小さな系に分けてモデル化する場合に、各工場のスケジューラをベーススケジューラ21によって構成するようにすれば、各工場ごとに任意の離散事象シミュレーション手法を選択してスケジューラを構築することができる。例えば、各工場でスケジューラを作成する者が熟知している離散事象シミュレーションの手法が、スリーフェーズアプローチ、イベントアプローチ、アクティビティアプローチなどとそれぞれ異なっている場合でも、それぞれが熟知している手法に沿って個々のスケジューラを作成することができるというメリットを有する。
【0078】
さらに、今後今までにない全く新しい離散事象シミュレーションの手法が考えだされた場合にも、その手法が上述のように抽象化されたクラスの枠組みに入るものであれば、その手法にも対応することができる。このように、本実施形態のシミュレーション装置は、将来的に案出される新しい手法にも対応することができるという柔軟性を持つ。
【0079】
なお、以上に述べた第1、第2の実施形態によるシミュレーション装置は、実際にはCPU、ROMおよびRAMなどからなるマイクロコンピュータにより構成され、そのようなシミュレーションを行うためのプログラムは、上記ROMに格納される。また、これ以外にも、本実施形態のシミュレーション装置に上記プログラムを外部から供給するようにすることも可能である。この場合、上記プログラムを供給するための手段、例えば上記プログラムを格納した記憶媒体は本発明を構成する。
【0080】
なお、上記プログラムを記憶する記憶媒体としては、ROMの他に、例えばフロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード等を用いることができる。
【0081】
【発明の効果】
本発明は上述したように、複数のシミュレータ間で時刻の同期をとるタイミング制御手段と複数のシミュレータ間で所定のオブジェクトを移動させるインタフェース手段とシミュレーション全体の制御手段とを設けたので、個々の系を表すシミュレータを複数組み合わせて1つの統合シミュレータを構成することができ、その結果、大きなモデル系を小さなモデル系の集まりとして表現することができる。個々の小さいモデル系のシミュレータは容易に作成することができるし、それらのシミュレータを並行して開発することもできるので、シミュレータの構築ひいてはシステム開発の効率を大幅に向上させることができる。
【0082】
本発明の他の特徴によれば、あるシミュレータから出力されたオブジェクトを転送すべきシミュレータに対して所定の時刻に転送するようにしたので、オブジェクトが複数のシミュレータ間を移動する際に、複数のシミュレータで表現される系の間を物が移動する際の移動時間などのインタラクションをも考慮して移動を行うようにすることができ、1つの大きなモデル系を複数の小さなモデル系に分けてシミュレータを構築した場合でも、より現実に近いシミュレーションを行うことができる。
【0083】
本発明のその他の特徴によれば、オブジェクトの転送先および転送すべき時刻を、転送リストに登録されたオブジェクト自身が持つ情報により指定するようにしたので、インタフェース手段は、ただ単にその情報に従ってオブジェクトを転送することができる。つまり、そのような情報を指定するように個々のシミュレータをモデル化すればどのようなシミュレータでも組み合わせることができ、インタフェース手段自体には変更を加えなくても済むので、既存のシミュレータのモデルを変更したり、新たなシミュレータを追加することを容易に行うことができる。また、古いバージョンのシミュレータを再利用することもできる。
【0084】
本発明のその他の特徴によれば、離散系モデルの多くのシミュレーション手法が備えている、時刻を進めるためのフェーズと事象を起こすためのフェーズとの2つのフェーズに抽象化したクラスを作り、その抽象クラスがその子クラスとの間で継承機構を持つように構成したので、抽象クラスのインタフェースをその子クラスが継承することによって様々な手法に対応したシミュレーションを行うことができる。これにより、様々な手法でシミュレーションが可能なマルチアプローチ対応のシミュレーション装置を提供することができる。
【0085】
特に、本発明では、1つの大きなモデル系を複数の小さなモデル系の集まりとして表現する場合に、個々のモデル系のシミュレータに上記のような構成を持たせるようにすれば、各系ごとに任意の離散事象シミュレーション手法を選択してシミュレータを構築することができる。これにより、各系でシミュレータを作成する者が熟知している離散事象シミュレーションの手法に沿って個々のシミュレータを作成することができ、より詳しく間違いのない優れた統合シミュレータを短期間で作ることができるようになる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態であるシミュレーション装置の主要な機能構成を示すブロック図である。
【図2】本発明の第2の実施形態によるシミュレーション装置に用いられるインタフェース構造を示すオブジェクト図である。
【図3】本システムを構成するクラスの継承関係の一部を示す図である。
【図4】図2のように構成した第2の実施形態によるシミュレーション装置の動作を示すフローチャートである。
【図5】図4のステップS1で行われる動作をより詳しく説明するための図である。
【符号の説明】
1 シミュレーション制御部
2 タイミング制御手段
3 インタフェース手段
4 転送リスト
5a A工場スケジューラ
5b B工場スケジューラ
5c C工場スケジューラ
6,6a,6b,6c 事象リスト
7,7a,7b,7c ファイルアクセス部
8 クロック部
21 ベーススケジューラ
22 スケジューラ
51 イニシャルアクティビティリスト
52 アクティビティリスト
53 アクティビティ
54 エンティティ
55 推論エンジン
Claims (14)
- 離散事象によるシミュレーションを行うための複数のシミュレータを備えたシミュレーション装置において、
上記シミュレータ間で転送する転送先情報及びタイミング情報を含んだオブジェクトを登録する転送リストと、
上記転送リストに登録されたオブジェクトの転送先情報及びタイミング情報に基づいて、上記オブジェクトを該当する転送先のシミュレータへ転送するタイミングを制御するタイミング制御手段と、
上記タイミング制御手段により制御されたタイミングで上記オブジェクトを上記該当する転送先のシミュレータへ転送するインタフェース手段と、
シミュレーションの全体を制御する制御手段とを設けたことを特徴とするシミュレーション装置。 - 上記複数のシミュレータ全てに共通の時刻情報であるクロック部を更に設け、
上記タイミング制御手段は、上記クロック部の時刻を参照して、上記複数のシミュレータの中で一番最初に実行すべき事象の時刻に系の時刻を進める処理を行うことを特徴とする請求項1に記載のシミュレーション装置。 - 上記複数のシミュレータ間で移動するオブジェクトは、上記複数のシミュレータで表現される系の間を物が移動する事象に関するオブジェクトであることを特徴とする請求項1に記載のシミュレーション装置。
- 上記インタフェース手段は、上記転送リストに登録されたオブジェクトを、転送すべきシミュレータに対して、上記系の間の物の移動時間を考慮した所定の時刻に転送することを特徴とする請求項3に記載のシミュレーション装置。
- 上記複数のシミュレータはそれぞれ、上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、事象を起こすためのフェーズとの2つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で継承機構を持つようにしたことを特徴とする請求項1〜4の何れか1項に記載のシミュレーション装置。
- 上記2つのフェーズに抽象化したクラスのうち、上記事象を起こすためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする請求項5に記載のシミュレーション装置。
- 上記複数のシミュレータはそれぞれ、上記抽象化したクラスとは別に、オブジェクトのロードやセーブ行うクラスを有することを特徴とする請求項6に記載のシミュレーション装置。
- 離散事象によるシミュレーションを行うためのシミュレーション方法であって、
上記シミュレーションの対象とする系を複数の系に分けてモデル化し、モデル化した複数のシミュレータ間で時刻の同期をとりながら所定のオブジェクトを、オブジェクト自身により指定されている転送先情報及びタイミング情報に従って、転送すべきシミュレータに対して所定の時刻に移動させるようにすることにより、上記複数のシミュレータで1つのシミュレーションを統合的に行うようにしたことを特徴とするシミュレーション方法。 - 上記複数のシミュレータ間でとる時刻の同期は、上記複数のシミュレータ全てに共通の時刻情報であるクロック部の時刻を参照して、上記複数のシミュレータの中で一番最初に実行すべき事象の時刻に系の時刻を進める処理であることを特徴とする請求項8に記載のシミュレーション方法。
- 上記複数のシミュレータ間で移動する所定のオブジェクトは、上記複数のシミュレータで表現される系の間を物が移動する事象に関するオブジェクトであることを特徴とする請求項8に記載のシミュレーション方法。
- 上記複数のシミュレータ間で所定のオブジェクトを移動させる際に、あるシミュレータから出力されたオブジェクトを上記系の間の物の移動時間を考慮した所定の時刻に他のシミュレータに転送するようにすることを特徴とする請求項10に記載のシミュレーション方法。
- 上記複数のシミュレータはそれぞれ、上記離散事象によるシミュレーションを行う際に必要なフェーズのうち、時刻を進めるためのフェーズと、事象を起こすためのフェーズとの2つのフェーズに抽象化したクラスを有し、該クラスが、離散系モデルの具体的なシミュレーション手法に対応した子クラスとの間で継承機構を持つことを特徴とする請求項8〜11の何れか1項に記載のシミュレーション方法。
- 上記2つのフェーズに抽象化したクラスのうち、上記事象を起こすためのフェーズは、オブジェクト指向プログラミングの多相性を用いて実現されることを特徴とする請求項12に記載のシミュレーション方法。
- 請求項1に記載のタイミング制御手段、インタフェース手段、及び制御手段としてコンピュータを機能させるシミュレーション用プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15804397A JP3916727B2 (ja) | 1997-05-30 | 1997-05-30 | シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15804397A JP3916727B2 (ja) | 1997-05-30 | 1997-05-30 | シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10333712A JPH10333712A (ja) | 1998-12-18 |
JP3916727B2 true JP3916727B2 (ja) | 2007-05-23 |
Family
ID=15663050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15804397A Expired - Fee Related JP3916727B2 (ja) | 1997-05-30 | 1997-05-30 | シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3916727B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018054465A1 (de) * | 2016-09-22 | 2018-03-29 | Siemens Aktiengesellschaft | Verfahren und vorrichtungen zur synchronisierten simulation und emulation von automatisierten produktionsanlagen |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10755003B2 (en) * | 2013-11-08 | 2020-08-25 | Rockwell Automation Technologies, Inc. | Time synchronization of signal transmission intervals for simulating a machine in industrial automation |
-
1997
- 1997-05-30 JP JP15804397A patent/JP3916727B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018054465A1 (de) * | 2016-09-22 | 2018-03-29 | Siemens Aktiengesellschaft | Verfahren und vorrichtungen zur synchronisierten simulation und emulation von automatisierten produktionsanlagen |
Also Published As
Publication number | Publication date |
---|---|
JPH10333712A (ja) | 1998-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Waraich et al. | Performance improvements for large-scale traffic simulation in MATSim | |
Anglani et al. | Object-oriented modeling and simulation of flexible manufacturing systems: a rule-based procedure | |
Baldassari et al. | PROTOB: An object oriented methodology for developing discrete event dynamic systems | |
JP2020507157A (ja) | システムの自動化および制御に対するコグニティブエンジニアリング技術のためのシステムおよび方法 | |
CN108229686A (zh) | 模型训练、预测方法、装置、电子设备及机器学习平台 | |
Amato et al. | An approach to control automated warehouse systems | |
López-Neri et al. | A modeling framework for urban traffic systems microscopic simulation | |
CN114091251A (zh) | 面向多智能体群体行为的仿真系统及方法 | |
Campos et al. | Automatic generation of digital twin industrial system from a high level specification | |
JP6371778B2 (ja) | プロセス移行方法及びコンピュータシステム | |
Bañares et al. | Model and simulation engines for distributed simulation of discrete event systems | |
van Putten et al. | Supervisor synthesis and throughput optimization of partially-controllable manufacturing systems | |
Kang et al. | The extended activity cycle diagram and its generality | |
JP3916727B2 (ja) | シミュレーション装置およびその方法、コンピュータ読み取り可能な記録媒体 | |
Lascu et al. | Automatic component deployment in the presence of circular dependencies | |
Gonzalez et al. | A simulation-based controller for distributed discrete-event systems with application to flexible manufacturing | |
Gomaa | Software design methods for the design of large-scale real-time systems | |
Arronategui et al. | Towards an architecture proposal for federation of distributed DES simulators | |
JP3955129B2 (ja) | シミュレーションのためのインタフェース構造およびシミュレーション装置 | |
Wei et al. | Designing for architecture of complicated military training simulation system based on model-driven | |
KR20180056319A (ko) | 자가 진화 행위자 기반 시뮬레이션을 위한 시뮬레이션 시스템 및 방법 | |
Junqueira et al. | A platform for distributed modeling and simulation of productive systems based on Petri nets and object-oriented paradigm | |
JP5652718B2 (ja) | バッチ処理制御装置、バッチ処理制御方法およびバッチ処理制御プログラム | |
Perko et al. | A modelling-based methodology for evaluating the performance of a real-time embedded control system | |
Yonezawa et al. | Object oriented concurrent programming and industrial software production |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040428 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060811 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060905 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061031 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070207 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |