シミュレーションの方法
このノートの問いがそのまま復習カードになり、忘れかけたころに出題されます。
0. どういうまとまりか
シミュレーションは、モデルを使って現実の事象を模擬的に再現し、結果を予測したり調べたりすることです。
モデルが確定的か確率的かで、動かし方が変わります。
| 確定的モデル | 確率的モデル | |
|---|---|---|
| 動かし方 | 式に値を入れて順に計算する | 乱数で偶然を作り、何回も試す |
| 結果 | 1 回で決まる | 試すたびに変わる。多く試して傾向を見る |
| 例 | 一定の利率での預金の増え方 | モンテカルロ法・待ち行列 |
分かれ目は次の 3 つ。
- 確率的モデルのシミュレーションには乱数を使い、試行回数が多いほど結果が安定する。
- 窓口の数や処理の速さを変えると、待ち時間が大きく変わる(待ち行列)。
- 結果はモデルの仮定の範囲でしか正しくない。実際と比べてモデルを評価し、改善する。
1. シミュレーションとは
根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ウ)
現実で試すと危険なこと、お金がかかりすぎること、時間がかかりすぎること・短すぎて観察できないことも、
モデルの上なら何度でも条件を変えて試せます。
シミュレーションとは何か?
モデルを使って現実の事象を模擬的に再現し、結果を予測したり調べたりすること
条件を変えて何度でも試せる。
現実で実験せず、シミュレーションで調べる理由を 3 つ挙げよ。
危険だから・費用がかかりすぎるから・時間がかかりすぎる(または短すぎる)から
災害時の避難、新しい橋の強度、数十年先の人口などは現実では試せない。
表計算ソフトでシミュレーションをするとき、時間の経過はふつうどう表すか?
1 行を 1 つの時刻(1 回・1 日など)にして、前の行の値から次の行の値を計算する式を下へ複写する
行を下にたどると、時間とともに値が変わっていくようすが分かる。
2. 乱数とモンテカルロ法
根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ウ)
確率的モデルでは、偶然の要素をコンピュータの乱数で作ります。表計算ソフトなら RAND 関数、Python なら random モジュールで、0 以上 1 未満の値などを出せます。
円周率の推定:1 辺 1 の正方形の中に点をでたらめに打ち、半径 1 の四分円の中に入った点の割合を調べます。
四分円の面積は円周率の 4 分の 1 なので、「四分円に入った割合の 4 倍」が円周率の近い値になります。
乱数とは何か?
規則性がなく、次にどの値が出るか予測できないように並んだ数
確率的モデルのシミュレーションで、サイコロの目や客の来方などの偶然を表すのに使う。
モンテカルロ法とは何か?
乱数を使って何回も試行し、その結果から答えを近似的に求める方法
計算で直接求めにくい値を、たくさんの試行の割合から推定する。
モンテカルロ法で円周率を推定するとき、1 辺 1 の正方形の中に点をでたらめに打って、何を調べるか?
半径 1 の四分円の中に入った点の割合。その4 倍が円周率の推定値になる
四分円の面積は円周率の 4 分の 1、正方形の面積は 1 だから。
モンテカルロ法で、打つ点の数(試行回数)を増やすと、結果はどうなるか?
推定値が真の値に近づき、ばらつきが小さくなる
試行回数が少ないと、偶然の偏りが結果に大きく出る。
3. 待ち行列
根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ウ)
レジや窓口に客が並ぶようすを待ち行列といいます。客の来る間隔と 1 人の処理にかかる時間を乱数で決め、
行列の長さや待ち時間がどうなるかを調べます。
待ち行列のシミュレーションで、乱数を使って決めるものは主に何か?
客の到着する間隔と1 人あたりの処理(サービス)時間
この 2 つがばらつくので、同じ窓口でも行列の長さが時間とともに変わる。
客の平均の到着間隔が、窓口 1 つの平均の処理時間より短いと、行列はどうなるか?
時間とともに長くなり続ける
処理が到着に追いつかない。窓口を増やすか、処理を速くしないと解消しない。
窓口を 1 つ増やすと、平均の待ち時間はどう変わりやすいか?
大きく短くなることが多い(混んでいるときほど効果が大きい)
どれだけ短くなるかは到着と処理のばらつき方で違うので、シミュレーションで確かめる。
4. 評価と改善
根拠: 学習指導要領 情報Ⅰ-(3)-ア-(ウ)
シミュレーションの結果は、モデルに取り入れた要素と仮定の範囲でしか正しくありません。
結果を現実のデータと比べ、ずれが大きければ、要素を足したり仮定を変えたりしてモデルを改善します。
同じ事象でも、シミュレーションの結果が違ってくるのはなぜか?
モデルに取り入れた要素や仮定(どの要素を残し、どう単純にしたか)が違うから
結果はモデルの限界を含んでいる。
シミュレーションの結果を使ってモデルを評価・改善するとは、どういうことか?
結果を実際のデータや観察と比べ、ずれの原因となる要素や仮定を見直してモデルを直すこと
モデル化・シミュレーション・評価と改善を繰り返して、モデルを現実に近づける。
練習問題
問 1 モンテカルロ法で円周率を推定した。1 辺 1 の正方形の中に点を 1000 個でたらめに打ったところ、半径 1 の四分円の中に入った点は 786 個だった。円周率の推定値を求めよ。
3.144
四分円に入った割合は 786 ÷ 1000 で 0.786。その 4 倍なので、786 ÷ 1000 × 4 = 3.144。
問 2 窓口が 1 つの店に、開店 0 分・2 分・4 分・5 分に 1 人ずつ、合わせて 4 人の客が来た。1 人の処理には 3 分かかり、前の客が終わるまで次の客は待つ。
客
到着
処理を始める
処理が終わる
1 人目
0 分
0 分
3 分
2 人目
2 分
3 分
6 分
3 人目
4 分
?
?
4 人目
5 分
?
?
4 人目の待ち時間と、4 人の平均の待ち時間を求めよ。
| 客 | 到着 | 処理を始める | 処理が終わる |
|---|---|---|---|
| 1 人目 | 0 分 | 0 分 | 3 分 |
| 2 人目 | 2 分 | 3 分 | 6 分 |
| 3 人目 | 4 分 | ? | ? |
| 4 人目 | 5 分 | ? | ? |
4 人目は 4 分、平均は 1.75 分
3 人目は 2 人目が終わる 6 分に始まり 9 分に終わる。4 人目は 9 分に始まり 12 分に終わる。
待ち時間(始める時刻と到着の差)は、1 人目から順に 0 分・1 分・2 分・4 分。
合計は 0 + 1 + 2 + 4 = 7 で、平均は 7 ÷ 4 = 1.75。到着が処理より速いので、後の客ほど待ち時間が延びていく。