最初に挙げた例はいろいろなものが渾然としていて、シミュレーションを勉強すると言われて も、なにが目的なのかよく分からないでしょう。少し整理しておきます。
8.2.1 物理的シミュレーションと数値的シミュレーション
火災実験やコンサートホールのミニチュア模型を作って実際の状況、あるいは実際に近い状況 を実現させてみるというやり方は物理的(実体的)シミュレーションと呼ばれています。訓練の ためだけに実際に飛行機を飛ばすのは金がもったいない、もし訓練中に墜落してしまったら大変 だ、というように、実物を使ったのでは費用がかかる、危険が多い、などという場合、このよう な物理的(実体のある)装置(モデル)を使って模擬実験を行なうことがあります。
• ヒヒの心臓をゴリラに移植してみて、拒絶反応を調べる。
• 大量の土石で人工的な崖を作り、シャワーで水を注ぎ、雨量がどれくらいになったら崩壊 が始まるのか、どのような地形で崩壊が起きやすいかを調べる。
• イラクで自爆テロに会ったとしたら、どのような対処の方法が適切か、いろいろなケース を想定して実地訓練してみる。(シミュレーションという言葉は「図上演習」と翻訳され て昔から軍隊用語として使われていたようです)
• シートベルト、エアバッグの安全性を確かめるために、実物に人形を載せて壁にぶつけて みる
• 飛行機の設計で機体の模型を風洞と呼ばれる実験設備に入れて、空気の流れがどのように 起きるかを調べてみる(風洞実験)
等々。
一般にはかなり大掛かりな実験になるので、よほど計画・目的がはっきりした場合でないと、
うかつには手が出せません。しかし、実際にやってみることができるということは、特に複雑な 自然界を相手にするような場合に、大きなメリットがあります。
このような物理的シミュレーションにたいして、多くの場合は、コンピュータを使ったが実験 が行なわれます。おにぎりの仕入れ量を決定するのに、予想される需要量を発生させて、Excel を使って計算実験したり、ランダム回答法の推定法の確からしさを乱数実験したようなもので す。このような模擬実験の方法を数値的シミュレーションといいます。
物理的シミュレーションの例として挙げたものでも、たとえばコンサートホールの例では、実 際のホールの形状をコンピュータに覚えさせて、音源から発する音波の広がる様子を時間的に
「計算」して行くことはある程度可能なので、数値的シミュレーションで済ませてしまうことが
多いようです。経営システム工学でシミュレーションといえば、ほとんどの場合はこちらの数値 的シミュレーションを指します。
8.2.2 確定的シミュレーション(と確率的シミュレーション)
将来の複雑な出来事といっても、いろいろありますが、メカニズムはすべて分かっているの だけれどその動きが複雑なので動きがつかめない、というような複雑さがあります。たとえば、
震度6の地震の揺れに対して都庁ビルがどのように揺れるのかを知りたい、というような場合 です。建物の揺れは完全に物理的な現象ですから、ある刺激(力)に対する個々の点の反応は 偏微分方程式によって記述できます。実際には建物をジャングルジム状の格子点の集まりに分 解して(ワイヤーフレームモデル、あるいはメッシュモデルといいます)各点毎にその隣接点 との関係を偏微分方程式で記述します。その方程式を時間的に解き進めることによって建物の 揺れが時間的にどう収まっていくかが「分かり」ます。( http://www.bosai.go.jp/hyogo/ddt-pj/soil/subsoil1/soilthema5.htm)
大都市大震災軽減化特別プロジェクト
あるいはまた、テニスのラケットでボールをヒットしたときのラケット、ボールの歪む様子を 計算して、構造計算では分からない性質を調べたりする場合にもこのようなシミュレーションの 方法が用いられます。ラケットを細かいメッシュに分割し、ボールもメッシュ状にして、各頂点 の動きを記述する偏微分方程式を立て、それを数値的に解いて行くのです。
ワイヤーフレームモデルのもっとも壮大なものは地球シミュレータでしょう。地球環境の変化 を解明し、予測するために地球全体を3次元のメッシュで覆います。そして、大気や海水、地殻変 化に関する情報を集め、それらの動きが周りの状況にどうやって影響されるかを、やはり偏微分方 程式で記述し、それらを数値的に解くのです。スーパーコンピュータを同時に何台も動かすよう な計算をしても、まだ足りないくらいの計算量が必要になります(http://www.jamstec.go.jp)。 その結果を平面地図に表示したものの例が次の図です。
これらはいずれも、因果関係が近似的にせよ、式の形ではっきりとらえることができる場合で す。ただ規模が大きいために、解が式の形で求められないので、コンピュータを使って数値的な 解を求め、実際にはどうなっているかを知ることが必要となるのです。このように、すべてのか らくりが分かっているのに、実際にはどうなるのか計算してみないと分からない、ということは たくさんあります。このような問題をコンピュータを使って解くことを確定的シミュレーショ ンといいます。上のように状態(変量)が本来連続的に変化して行くものである場合は連続型シ ミュレーションとも呼ばれています。
8.2.3 数値微分法
連続型のシミュレーションの例として、ヒット商品の普及の仕方を簡単な数式モデルで記述し たバスモデル(バスは人の名前)について説明します。最近はなかなかヒット商品が出にくいと 言われていますが、例えば、ワンセグケータイとか、ゲーム機Wiiなどが当てはまるかもしれま せん。X(t)を時点tにおいてその商品を持っている人の割合としましょう。つまりその商品の 普及率です。商品を買う場合、自分の意思で買う人と、他の人が持っているのを見て買う人の2 種類がいると仮定します。自分の意思で買う人を革新者、他の持っている人に影響されて買う人 を模倣者と呼ぶことにします。革新者は常に一定の割合pで購入し、模倣者は普及率X(t)に比 例(×q)して購入する、と仮定すると、X(t)に関して次の式が導かれます。
dtdX(t)
1−X(t) =p+qX(t)
これは微分方程式ですから、数学の力を使って解く必要があります。ここではそれをシミュレー ションで調べる方法を考えます。
導関数を平均変化率で近似すると
X(t+ ∆t)−X(t)
∆t ≈(p+qX(t)) (1−X(t)
と表されるので、≈を等号で置き換えて近似的に以下の式が成り立つことが分かります。
X(t+ ∆t) =X(t) + (p+qX(t)) (1−X(t)∆t ここで、
xn=X(n∆t) とおくと、
xn+1=xn+ (p+qxn) (1−xn)∆t
という数列の漸化式が得られます。これならば、適当な初期値x0を与えてExcelで計算が出来 そうです。このようにして、微分方程式を近似的に解く方法は数値微分法と呼ばれます。
練習8.1 (1)x0= 0.01, p= 0.01, q = 0.5,∆t= 0.1として、上の数列{x0, x1, ..., x100}を計算 し、Excelでグラフを描きなさい。(2)p= 0.05, q = 0.5とした場合にどうなりますか。二つの グラフを重ねて表示しなさい。(3)p= 0.05, q= 0.8とした場合にどうなりますか。三つのグラ フを重ねて表示しなさい。(4)x0の値を変えたときにどのような影響があるか、調べなさい。
考察:
例 8.8(ランチェスターの法則)マーケティング戦略の中で市場占拠率の重要性を説明する時に
「ランチェスターの法則」という言葉が出てきます。100の力を持つ相手に対して110の力でぶ つかるよりは120の力でぶつかった方が効果がより大きくなる、50の力しかない場合は倍の努 力ではだめ、3倍4倍の努力をしないと勝てない、というような規模の効果を数量評価するモデ ルです。
規模の効果に着目したランチェスターさんは、この現象を戦争になぞらえて、簡単な連立微分 方程式を用いたクリアな説明に成功したのです。A企業(軍)とB企業(軍)が競争(戦争)す るとしたらどちらが勝ち残るか、という問題設定にします。A軍のある時刻tにおける兵員数を x(t)、B軍のある時刻tにおける兵員数をy(t)とします。両者がぶつかったときの各軍の損傷の 大きさは相手の人数に比例して大きくなる、という仮定を立てると、次のような微分方程式がで
きます。 dx(t)
dt =−b×y(t),dy(t)
dt =−a×x(t) a, bはそれぞれ、A軍、B軍の一人あたりの殺傷力のようなものです。
この場合もバスモデル同様、微分を平均変化率で置き換えます。
dx(t)
dt ≈x(t+ ∆t)−x(t)
∆t
という近似を使うと、上の連立微分方程式は次のように書き換えることができます。
x(t+ ∆t)≈x(t)−b×y(t)∆t y(t+ ∆t)≈y(t)−a×x(t)∆t
この式を使えば、尺取り虫のように、x(t), y(t)の値を∆t刻みに計算で求めて行くことが出来そ うです。
すなわち、xn=x(n∆t), yn=y(n∆t)とおくと、
xn+1=xn−byn∆t yn+1=yn−axn∆t
となりますから、x0, y0に適当な初期値を仮定すると、バスモデルと同様に計算が出来ます。
確定的シミュレーションのもう一つのタイプとして、組み合わせ最適化のように、計算量が膨 大な問題を解く方法があります。たとえば数理計画法で出てくるスケジューリングの問題がそう です。あるいはOSのプログラム(ソフトウェア)のように、個々のモジュールごとに動作確認 はできても、全体としてコンパイルしたとき、正常に動くかどうか確信が持てない場合など、な るべく多くのテストデータを流してシステムが正しく動くことを確認するとか、最適解に近い値 を求める、というようなシミュレーションの使われ方もあります。
練習8.2(ランチェスターの法則)Excelを使って、次の連立微分方程式を数値微分しなさい。
dx(t)
dt =−by(t),dy(t)
dt =−ax(t)
ただし、初期値はx(0) =x0, y(0) = 1000、「殺傷力」はa=a0, b= 1として、(x0, a0)の与え 方によって、勝ち負けがどうなるか、どちらかが絶滅するまでの時間がどうなるかを調べるため の実験をしなさい。
練習8.3 猟犬が獲物(ウサギ)を追いかけるものとします。ウサギはB 地点からA地点の巣 に向かってまっしぐらに一定スピードで走ります。最初C地点にいる猟犬はウサギを追いかけ て常に最短距離を走るものとしましょう。三角形ABCはBCを底辺とする直角二等辺三角形 になっているとし、ウサギのスピードが毎秒a、猟犬のスピードが毎秒b、A地点とB 地点の 距離がLであるとき、ウサギが巣へうまく逃げ込むことができるのはどういう場合でしょうか。
Excelを使って計算し、散布図グラフを使って追いかける様子を表示させて下さい。