現実から何を残し、何を捨てるか
現実を細部までそっくり再現しようとすると、必要な情報も計算量も増え、かえって目的に合わないことがあります。そこで最初に、「何を知りたいのか」を決め、その答えに影響する要素を選びます。これがモデル化の中心です。地図が建物の材質を省いて道路や駅を目立たせるように、よいモデルは目的に合わせて情報を絞ります。省略することは欠点ではなく、扱いたい関係を見えやすくするための操作です。
モデルの表し方は数式だけではありません。図、表、文章による規則、実物を縮小した模型、プログラムなどもモデルになります。時間とともに状態が変わる現象なら、「現在の状態」と「次の状態を決める規則」を用意すると、変化を順に計算できます。一方、駅から目的地までの経路を考えるなら、地点と道を線で結んだ図が適しています。同じ現実でも、目的が違えば残す要素と表現方法も変わります。
仮定を置いてから結果を現実へ戻すまで
モデル化とシミュレーションは、一度計算して終わる作業ではありません。おおむね次のような往復で進みます。
- 調べたい問題と、結果を判断する基準を明確にします。
- 関係しそうな要素を選び、変数や規則として表します。
- 最初の値や、「途中で規則は変わらない」といった仮定を定めます。
- モデルを動かし、条件ごとの結果を記録します。
- 実際の観測値や既知の性質と比べ、ずれの原因を調べます。
- 必要なら要素、規則、値を修正して、もう一度実行します。
この流れは、問題の発見、解決案の実行、評価、改善を繰り返す問題解決の手順ともつながります。コンピュータで実行する場合、状態を更新する順序や繰り返しをアルゴリズムとして記述します。モデルが妥当かを確かめる「検証」と、現実の目的に対して役立つかを確かめる作業の両方が大切です。
行列のでき方を小さなモデルで追う
窓口に並ぶ行列を考えると、モデルの役割が見えます。着いた人が列の最後に並び、窓口が空いたら先頭の人を受け付ける、という規則を決めます。到着する間隔、受付にかかる時間、窓口の数を入力とし、待ち時間や列の長さを出力として記録します。窓口を増やした場合や、到着が集中した場合を比べれば、条件の違いが結果へどう影響するかを調べられます。
到着や受付の時間が毎回同じとは限らないため、一定の範囲や確率に従う乱数を使う場合もあります。同じ条件で何度も試し、結果の分布や平均的な傾向を見る方法です。乱数を利用して繰り返し計算する考え方は、モンテカルロ法にもつながります。ただし、乱数を使えば現実的になるとは限りません。どのような確率を設定したか、その設定が観測データに合っているかを説明できる必要があります。
シミュレーションの数字は「仮定つきの答え」
出力が細かな数値で表示されても、それだけで正しい予言になるわけではありません。結果は、モデルに入れたデータ、規則、初期状態、仮定から導かれたものです。重要な要素を省いたモデルや、現実と合わない入力を使ったモデルからは、もっともらしく見えても信頼できない結果が出ます。プログラムに誤りがあれば、モデルの考え方が正しくても計算結果は崩れます。
確かめる方法の一つは、入力を少しずつ変えて、出力がどの程度変わるかを見ることです。わずかな入力差で結果が大きく変わるなら、その入力値を慎重に決める必要があります。また、過去の一部のデータで値を調整し、別のデータでも現象を再現できるかを確認すると、特定のデータだけに合わせすぎていないかを調べられます。
結果を伝えるときは、単一の数値だけでなく、設定した条件、考慮しなかった要素、結果の幅も示します。二つの量が一緒に変化しても、それだけで原因と結果が決まるわけではない点は、相関関係と因果関係を読むときと同じ注意が必要です。シミュレーションは意思決定を支える材料であり、判断そのものを自動的に正解にする装置ではありません。
実は「同じ現象のモデル」は一つではない
一つの現象に唯一の完成モデルがある、という考え方は正確ではありません。人の移動を調べる場合でも、一人ひとりを別々の主体として表す方法と、地域ごとの人数の変化としてまとめる方法があります。前者は個々の行動規則を表しやすく、後者は全体の増減を扱いやすいという違いがあります。目的や利用できるデータ、必要な詳しさによって、適切なモデルは変わります。
模型、路線図、天気図、ゲーム内の物理的な動きも、現実や考え方の一部を選んで表したものです。つまりモデル化は、研究用の特別な数式だけに限られません。身近な図や仕組みに対して「何が残され、何が省かれているか」を考えると、そのモデルが得意な判断と、任せてはいけない判断を見分けやすくなります。