情報ラボ > シミュレーション
実際に試すのが難しいことを、コンピュータの中で再現して調べます。
回数を増やすと、それぞれの目が出る割合はどうなるでしょうか。
正方形の中にでたらめに点を打ち、円の中に入った割合から円周率を推定します。
一辺が1の正方形の面積は 1、半径1の四分円の面積は π/4 です。 でたらめに点を打てば、円の中に入る割合は面積の比、つまり π/4 に近づきます。 したがって、割合を4倍すれば円周率が求められます。
実際に試すのが難しいことを、模型やコンピュータの中で再現して調べることをシミュレーションといいます。
なぜ必要なのでしょうか。理由はいくつかあります。実際に試すと危険なもの(自動車の衝突試験)、費用がかかりすぎるもの(新しい橋の設計)、時間がかかりすぎるもの(100年後の気候)、そもそも試せないもの(地震や津波の被害予測)。こうした場面で、シミュレーションが力を発揮します。
また、条件を変えて何度でも繰り返せるという利点もあります。「レジを1台増やしたらどうなるか」を、実際の店で試すことはできませんが、計算の中でなら何度でも試せます。
シミュレーションのモデルは、大きく2つに分かれます。
| 種類 | 特徴 | 例 |
|---|---|---|
| 確定的モデル | 同じ条件なら必ず同じ結果 | 物体の落下、電気回路 |
| 確率的モデル | 偶然の要素を含み、毎回結果が変わる | レジの行列、感染症の広がり |
確率的モデルでは、乱数を使って偶然を再現します。何度も繰り返して平均をとることで、傾向をつかみます。
でたらめな数を乱数といいます。サイコロの目やコインの裏表は、身近な乱数です。
コンピュータで乱数を作るには、計算式を使います。ある数から次の数を計算し、それがでたらめに見えるようにするのです。しかし計算で作る以上、本当にでたらめではありません。そのため擬似乱数と呼ばれます。
擬似乱数には、同じ出発点(シード)から始めれば同じ列が得られるという性質があります。一見欠点のようですが、実験を再現できるという点では利点にもなります。
サイコロを6回振っても、各目が1回ずつ出るとは限りません。しかし6000回振れば、それぞれおよそ1000回ずつに近づきます。
試行回数を増やすほど、実際の割合が理論上の確率に近づく。これを大数の法則といいます。シミュレーションで何度も繰り返すのは、この性質を利用するためです。
乱数を使って答えを求める方法を、モンテカルロ法といいます。カジノで有名な地名にちなんだ名前です。
代表的な例が、円周率の推定です。手順は驚くほど単純です。
なぜこれで円周率が出るのでしょうか。一辺1の正方形の面積は1、その中に入る半径1の四分円の面積は π/4 です。点をでたらめに打てば、円の中に入る割合はこの面積比に近づきます。
上のツールで実際に試せます。点が少ないうちは値がふらつきますが、増やすと3.14に近づいていきます。
ここで注意すべき点があります。モンテカルロ法の精度は、試行回数の平方根に比例してしか上がりません。
つまり、精度を10倍にするには試行回数を100倍にする必要があります。1桁精度を上げるだけで、計算量が100倍になるのです。効率がよい方法とはいえません。
それでもモンテカルロ法が使われるのは、複雑な問題でも手順が単純なままだからです。次元が増えても、点を打って数えるという手順は変わりません。金融商品の価格計算や、粒子の動きの解析など、他の方法では手に負えない問題で活躍しています。
レジやATM、電話の受付。人が並んで待つ場面は、シミュレーションのよい題材です。
ここには、直感に反する性質があります。サービスの能力が足りているのに、行列ができるのです。
たとえば、1時間に50人来る店で、1台のレジが1時間に60人さばけるとします。計算上は余裕があります。しかし実際には行列ができます。お客さんが均等に来るわけではなく、たまたま集中する時間があるからです。
混雑の度合いは、利用率(来る割合 ÷ さばける割合)で決まります。利用率が1に近づくと、待ち時間は急激に長くなります。0.5から0.6への変化より、0.9から0.95への変化のほうが、体感の悪化は大きいのです。
だから店側は、余裕を持ってレジを配置します。上のツールで、レジの台数と混み具合を変えて確かめられます。
便利な道具ですが、注意点もあります。
第一に、モデルは現実そのものではないということです。何を考慮し、何を無視するかは人が決めます。重要な要素を落としていれば、結果は現実と食い違います。
第二に、入力が正しくなければ出力も正しくないという点です。もっともらしい数字が出てきても、前提となるデータが不正確なら意味がありません。
第三に、確率的モデルでは1回の結果だけを見てはいけないことです。偶然に左右されるので、何度も繰り返して傾向を見る必要があります。
シミュレーションの結果は、判断の材料であって答えそのものではありません。結果をどう解釈するかは、使う人の責任です。