《シミュレーション》

提供: ORWiki
ナビゲーションに移動 検索に移動

【しみゅれーしょん (simulation) 】

 対象とするシステムそのものを扱わずに, そのモデルを構築し, モデルを操作することによってシステムの挙動を再現しようとすることをシミュレーションと呼ぶ. 模擬実験と訳されていた時期もある.

[モデルとシミュレーション]

 実際の事物やシステムの特定の側面に着目して抽象化したものをモデル (model) と呼ぶ. 実際のシステムを扱わずに, そのモデルを扱うことによって, 物理的・経済的なリスクをかけずにシステムの設計・評価・分析が可能となるので, 理工学を中心に広汎な分野でモデルが活用されている. モデルには, 実物を縮小または拡大した物理モデル, 実際の特性を物理現象に置き換えたアナログモデル, 日常用いる文章で表現した言語モデル, 図表に基づく図式モデル, 論理あるいは数式で表現された論理/数学モデル等がある.

 コンピュータの普及・機能向上に伴って, 論理/数学モデルが, システムの理解・分析・設計・運用・教育, さらには娯楽を目的として, システムの評価・予測・最適化等のために幅広く用いられている. シミュレーションはオペレーションズ・リサーチ(OR)の代表的手法の1つであり, PERT, LP(線形計画法)と合わせてORの「三種の神器」と呼ばれたこともある. PERT, LPが「どうするのが一番よいか」を探る最適化モデルであるのに対して, シミュレーションは「こうしたらどうなるか」が未知のときに, システムがいかに振る舞い, その性能指標がどの程度かを明らかにする評価のモデルである. 制御可能要因を定めたときのシステムの性能評価がシミュレーションの主目的であるが, 性能評価ができるのならば制御可能要因をどう設定したら一番よいかと考えるのが自然で, シミュレーションの背後に最適化願望が潜んでいることも少なくない.

 世の中では, 最適化を含め数理的なモデルを構築し, 種々のデータに対してモデルを操作してシステムの分析を行うことを総じてシミュレーションと理解する場合が少なくないが, ここではORの専門という立場から, より限定した意味でシミュレーションを捉える.

[代表的なシミュレーションの型]

 一口にシミュレーションといっても, モデルの違いによってそのメカニズムは千差万別である. シミュレーションの基礎となるモデルは, (1)待ち行列モデル, (2)微分/差分方程式モデル, (3)その他, に大別される.

 待ち行列モデル, あるいは離散事象(ダイナミカル)システムを扱うシミュレーションは, 離散型シミュレーション (discrete-event simulation), あるいは, 離散事象(型)シミュレーションと呼ばれる. 待ち行列モデルを解析的・数値的に扱う方法論に待ち行列理論があるが, 理論の適用にあたっての数学的仮定が厳しい. これに対してシミュレーションは, 正確に定義可能な前提でさえあれば事実上なんでも取り扱いが可能であるので, 情報化や自動化が進むなかで, 大規模な通信・コンピュータシステムや生産・ロジスティクスシステムの性能評価にさかんに用いられている.

 これに対して, 連続型シミュレーション (continuous simulation) は, 微分方程式あるいは差分方程式で表現されたモデルのシミュレーションを指し, 通常, 微分方程式の初期値問題を解くことに相当する. 連続型シミュレーションは微分/差分方程式で表現可能な電気, 機械等の物理的システムや経済システムのシミュレーションによく用いられる.

 乱数を使って数値実験を行ってシステムの特性値等を推定する方法にモンテカルロ法があり, 乱数を用いたシミュレーションをモンテカルロシミュレーションと呼ぶこともある. この他にも, 離散型にも連続型にも属さない多様なシミュレーションが存在する. また, 人間を意思決定者として参加させるビジネスゲーム}{ビジネスゲーム}(business game)も広い意味でのシミュレーションと考えられる.

[確定的シミュレーションと確率的シミュレーション]

 シミュレーションは確率的変動を含むかどうかによって, 確定的シミュレーション (deterministic simulation) と確率的シミュレーション (stochastic simulation) とに分類できる. 連続型シミュレーションが確定的シミュレーションである場合が多いのに対して, 離散型シミュレーションは確率的シミュレーションとして扱われることが多い. 離散型シミュレーションでは, 要素の到着時間間隔, サービス時間, 分岐確率, 設備の故障等に確率的な変動が含まれる場合が多い. 確率変動はコンピュータ上で擬似的な乱数(random number)を発生させることによって生成する.

 乱数を用いたシミュレーションの場合, シミュレーション結果は, 用いた乱数の値に依存する. しかも離散型シミュレーションの場合, 結果が通常の統計分析手法が想定する独立同分布の仮定を満たさないこともが多い. このため, シミュレーション結果の分析では, 実験のしかたと結果の分析方法とを合わせて考えることが必要となる. さらに, 同じ計算量で, より精度の高い結果を得るために分散減少法(variance reduction method)と呼ばれる方法があり, シミュレーションで使用する擬似乱数の再現可能性をはじめ, 乱数の使い方に工夫をこらすなどして精度の向上が図られる.

[シミュレーションの高速化と並列シミュレーション]

 シミュレーションは解析的方法に比べると腕力に頼った分析手法であり, モデルの規模が大きくなった場合, 計算量が膨大になる恐れがある. シミュレーションを効率化・高速化する工夫が, 乱数の制御を含む実験の計画や分散減少法, 事象処理アルゴリズムやデータ構造の改良, 並列シミュレーション等, 様々な形で行われている. このうち, コンピュータの並列計算機能を活用して, 高速化を図ろうとする並列シミュレーション (parallel simulation) は, 電話等の大規模な通信システムの分析で実際に使用されている.

[シミュレーションプロジェクトの進め方]

 シミュレーション技術は総合的なシステム分析技術であり, シミュレーションを用いたプロジェクトの進め方は, システム分析やオペレーションズリサーチの一般的な手順に順ずる [2]. シミュレーションを用いたモデル分析では, 以下の点が一般のシステム分析とは異なる:

(1) 実際のシステムのモデルを作る必要がある. さらに, 構築されたモデルが, 解決しようとする問題にふさわしいモデルかどうかをチェックする「妥当性の検証(validation)」が重要となる.

(2) モデルをコンピュータ上に表現し, コンピュータ上で動かす. そのために, コンピュータ上のモデルが, 作成者の意図するモデルになっているかどうかをチェックする「正当性の検証(verification)」が必要となる.

(3) 構築されたモデルをコンピュータ上で動かし実験を行うが, 乱数発生による確率的変動の生成等, シミュレーション実験に固有な点を理解し, 効率よく実験を進め, 得られるデータを適切な方法で分析する必要がある.



参考文献

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

[2] 森戸晋, 相澤りえ子, 貝原俊也, 『Visual SLAMによるシステムシミュレーション』, 共立出版, 1998.