スタートページWeb教材一覧オペレーションズリサーチ

シミュレーション

キーワード

シミュレーション、物理的シミュレーション、論理的シミュレーション、連続型シミュレーション、離散型シミュレーション、モンテカルロ法


シミュレーションとは

シミュレーション(Simulation)とは、模擬実験のことです。現実社会で実際に実験するのが困難なとき、現実社会の現象を抽象化したシステムモデルを作り、それを用いて、計画、設定、予測、教育などを行う方法です。

シミュレーションは、大きく物理的シミュレーション論理的シミュレーションに区分されます。物理的シミュレーションとは、フライトシミュレータや実験プラントのように、物理的な装置を作成して実験するものです。ここでは取り扱いません。
 論理的シミュレーションとは、一般にコンピュータプログラム(モデル)を作り実験する分野です。あまりにも条件が複雑で、数学的な解析の手段では解が得られないときに、実際にモデルにデータを与えて結果を求め、条件や数値をいろいろ変化させたときの結果を検討することによって、現実に近づこうという方法です。
 論理的シミュレーションは自然科学計算の分野で広く活用されます。典型的なものに、気象予測シミュレーションや原子炉運転シミュレーションなどがあります。
 しかし、ここではORの分野に限定した事項に絞ります。

モンテカルロ法

乱数を使って多数の実験を行い、その結果から解を推測する方法をモンテカルロ(有名な賭場)法といいます。後述の連続型/離散型シミュレーションでも元データが確率的に与えられることが多く、モンテカルロ法の一種だといえます。

モンテカルロ法は、数学で解法を知らない(複雑である)問題に利用されることもあります。
 例えば積分や幾何を使わずに、π(円周率)の値を求めることにしましょう。πは単位円 x2+y2≦1 の面積であることは知っているとします。正方形(0≦x≦1、0≦y≦1)の面積は1で、その内部でのx2+y2≦1 の面積はπ/4になります。
 2つ1組の乱数、0≦x≦1、0≦y≦1をN回発生させ、x2+y2≦1を満足した組がM回だったとしたら、π/4の近似値はM/N、すなわち、π≒4M/Nとなります。Nを十分に大きくすれば、3.14に近い値が得られます。

実例

ORの分野では、典型的な性質の問題には、PERT、LP、待ち行列など多様な技法があります。これらも現実社会の現象を抽象化してコンピュータでのモデルを作り、それを用いて研究するのですから、シミュレーションだといえます。
 しかし、これらの手法が適用できる問題であれば、定式化や解の求め方については確立した方法があり、実務的に利用できます。ORでのシミュレーションとは、問題が複雑であり、このような技法が適用できないときに用いられます。
 大きく連続型シミュレーション離散型シミュレーションがあります。

連続型シミュレーション

システム・ダイナミクスをコンピュータに取り込んだモデルを、連続型シミュレーションといいます。
 システム・ダイナミクスとは、「将来(t+⊿t)におけるある要素(人口など)の値は、現在(t)におけるその要素(人口)と、他の多数の要素(収入、物価、政策など)の値の要素間因果関係から得られるフロー(出生率など)から算出できるので、それにより将来予測をする技法です。
 すなわち、連続型シミュレーションは、多数の微分方程式をモデル化したものです。

連続型シミュレーションの古典的代表例に、1972年にローマクラブが発表した「成長の限界」レポートがあります。膨大な要素に関するデータを駆使して、「このまま成長を続けると、エネルギーの化石燃料が枯渇するだけでなく、自然破壊が急速に進み、地球が人類の生存に適さなくなる。それを防ぐために、成長そのものを止める必要がある」と警告しました。これに用いたのが、DYNAMOという連続型シミュレーション言語でした。

実例

離散型シミュレーション

スーパーなどでの客の到着とレジ処理時間による待ち時間の計算などは、待ち行列の理論が確立しています。
 しかし、窓口が多段階になると、このような理論化はかなり複雑になります。例えば病院外来での所要時間は、診療までの待ち時間、カルテ発行の待ち時間、支払窓口での待ち時間などがあります。院外処方ならば薬局での待ち時間があります。診療科目により混雑していたり診療時間がかかることもあります。診療の前後にレントゲン検査や血液採取があるかもしれません。すべての患者が同じ薬局に行くとは限りません・・・。

このような問題では、各窓口のモデルを作り、到着した各患者に名前を付け、それらの各窓口での到着と離脱の状況を記録するという方法になります。多数の患者を発生させて統計的な数値を得ます。

離散型シミュレーションの古典的な例では、急行電車の問題があります。電車が客、各駅が窓口で乗降客数がサービス時間になります。
 従来は各駅停車だけだったのに、急行電車を導入したとき、急行の停車駅、追越駅(複々線では追越区間)の検討です。
 ラッシュアワーには、急行への乗客が多く停車時間が長くなるので遅れが生じます。多降客駅の手前では急行の停車駅を増やす(各駅停車と同じにする)ほうが、乗客が各駅停車に分散され、かえって時間短縮になるとか。

汎用機時代にはGPSSという言語があり、簡単にモデル作成ができたのですが、Javascriptと同様な環境でのソフトウェアを見つけられないでいます。

実例