《シミュレーションソフトウェア》

提供: ORWiki
2007年7月11日 (水) 14:34時点における122.17.2.240 (トーク)による版
ナビゲーションに移動 検索に移動

【しみゅれーしょんそふとうぇあ (simulation software) 】

 縮小モデルによる物理的シミュレーションのようなごく一部の例外を除いて, 大半のシミュレーションはコンピュータで行う. この作業を効率よく行うために, 様々なシミュレーション専用のソフトウェアが開発されている. シミュレーションは, 基礎となるモデルの違いによって, 離散型, 連続型, システムダイナミックス, その他と大別されるが, モデルの種類が異なることによってモデルの記述はもとより, シミュレーションの実行メカニズムも変わる. 最近では離散/連続共用のシミュレーションソフトウェアも珍しくないが, これは2つのタイプの異なるエンジンを搭載した車のようなものである.

コンピュータ上でシミュレーションを行うには,

(1) CやFORTRAN等の汎用言語でシミュレーションのプログラムを組む

(2) シミュレーション専用のソフトウェアを活用する

のいずれかが考えられるが, 一般にシミュレーションソフトウェアの活用は, 汎用言語を用いる場合に比べて大幅に開発時間や手間を省くことができる. これは, シミュレーションソフトウェアではシミュレーションに必要な「共通部品」が提供されているので, モデル作成や分析の手間を省くことができるためである. ただし, 「共通部品」はシミュレーションの型(離散型, 連続型等)によって異なるために, ミュレーションの型に応じてシミュレーションソフトウェアの内部メカニズムは異なる.

 シミュレーションソフトウェアは, ユーザにどれぐらいの作業を要求するかによって, (1)シミュレーション言語 (simulation language), (2)シミュレータ (simulator), に大別される. シミュレーション言語が, モデル作りにあたってプログラミング的作業を必要とするのに対して, シミュレータは用途を特定することによって, ユーザーの作業を極小化し, 基本的にデータの提供だけでシミュレーションが実行され性能評価ができるように配慮されている.

[シミュレーション言語]

 モデルを定義するために, ユーザが一定の形式で一種のプログラムを記述するシミュレーション専用ソフトウェアをシミュレーション言語と呼ぶ. データ入力だけでモデルが定義されるシミュレータに比べると, 一般に手間と時間を要するが, その分, モデル構築にあたっての柔軟性が高い. シミュレーションの種類によって, 提供される共通部品の中身が異なるが, モデル構築, シミュレーションの実行, (確率的シミュレーションの場合)乱数の発生, 結果の分析や表示等の基本機能が提供される.

[離散型シミュレーション言語]

 離散型シミュレーション言語は, モデル化の方法によって, (1) プロセス中心(process-oriented)(2) 事象中心(event-oriented)(3) アクティビティ中心(activity-oriented)の3種類に大別される. 歴史的に有名な離散型シミュレーション言語GPSSとSIMSCRIPTは, それぞれプロセス中心, 事象中心の代表的言語であるが, 最近では多くの言語に複数のモデル化機能が備えられ, それらの併用を可能にすることによって, 柔軟なモデル化ができるよう工夫されている.

 プロセス中心のモデル化は, 3つの中で一番普及している方法である. ここにプロセスとは, システムを動き回る要素の到着から退去に至る一連の振る舞いを指す. プロセス中心のモデル化では, システム中を動く要素の視点から, 要素の到着に始まりサービス, 退去に至るプロセスを, 言語が定める一定のルールで表現することによってモデルが構築されるのでシミュレーションに精通していない人でもモデルを作りやすい. GPSSやSLAMはプロセス中心の代表的シミュレーション言語である. 昨今では, モデル構築と結果のアニメーション表示の定義が一体化したソフトウェアも少なくない.

 これに対して事象中心のモデル化では, 事象が発生した瞬間にシステムがどのように状態を変えるかを記述する一種のサブルーチンを, 事象の種類毎に用意するものである. CやFORTRAN等を用いてプログラムを自作する場合は, 事象中心のモデル化を採用することが多い. ノーベル賞を受賞したマーコビッツ(H. M. Markowitz)が開発に加わったSIMSCRIPTは事象中心のモデル化を基本とする代表的シミュレーション言語である. 一方, アクティビティ中心のモデル化はアクティビティの種類毎に, アクティビティがどのように生起するかを記述するもので, 欧州で好まれるモデル化の方法である [3].

 GPSS, SIMSCRIPT以外に, 我が国でもSLAM, SIMAN/ARENA, EXTEND等, 数多くの商用ソフトウェアが流通している. また, AIM, Micro SAINT, WITNESS, Simul8等の離散型のシミュレータも汎用性を高めるためにシミュレーション言語的機能を上級者向けに提供している場合が多く, 離散型シミュレーション言語との境界ははっきりしなくなっている.

[連続型シミュレーション言語]

 連続型シミュレーション言語にはCSSLやACSL等の商用ソフトウェアが流通している. また, システムダイナミックス(system dynamics)を対象としたDYNAMOやSTELLAも連続型シミュレーション言語の一種と考えられる.

[シミュレータ]

 一般に, データを入力するだけでモデルやアニメーションが定義される形のシミュレーション専用ソフトウェアのことをシミュレータと呼ぶ. あらゆる問題状況に適用可能な汎用シミュレータは存在しないので, 例えば, 生産シミュレータ, 通信シミュレータ, LANシミュレータ, 電話受付センターシミュレータというように, 用途を限定したシミュレータが普通である. プログラミング的作業を必要とするシミュレーション言語に比べると, シミュレーションの知識なしに短時間でモデルができる.

 生産シミュレータを中心に, シミュレーション結果のアニメーション表示が常識化している. これらのソフトウェアではモデル構築とアニメーションの定義とが一体化しており, モデルができると直ちにアニメーションでその動きが見られる場合も珍しくない. 換言すると, シミュレーション言語のようにプログラムリスト(たとえば, GPSSのブロックダイアグラムやSLAMのネットワーク図)を見てモデルの正当性を検証することができないので, アニメーションの動きからモデルが意図通りに動いていること, すなわち正当性を検証することが少なくない.



参考文献

[1] J. Banks, J. S. Carson and B. Nelson, Discrete-Event Simulation (2nd ed.), Prentice Hall, 1996.

[2] A. M. Law and D. E. Kelton, Simulation Modeling and Analysis (2nd ed.), McGraw Hill, 1992.

[3] M. Pidd, Computer Simulation in Management Science (4th ed.), Wiley, 1998.