森林火災と疫病
モデルを作る
確率を使ったセルオートマトンを用いた"森林火災"のモデルを考える。ここでは、簡略版として、以下の
規則を使おう。
- 森林は格子状の二次元空間で、格子の上に適当な密度で木が生えている
- 空き地からは、各ステップごとに確率pで新たな木が生える
- 木は落雷などによって、各ステップごとに確率qで燃えはじめる
- 燃えていない木の周囲に一本でも燃えている木があれば、確率rで燃え移る
- 燃えている木は、1ステップ後に燃えつきて、その場所は空き地になる
本当の森林火災に近い状況は、pとqが極めて小さく、それに比べてrが大きいような状況だろう。
このモデルでは、それ以外に、あまり現実的ではない状況も考えることができる。
関連するものとして、"疫病伝播"のモデルがある。
ここでは、やはり簡略版として、次の規則を使おう
- 格子状の二次元空間を考え、全ての格子点の上に居住者がいる
- 隣に感染者がいれば、免疫のないものは各ステップで確率pで感染する
- 感染者は感染後nステップで回復する。これも確率で決めてもいいが、ここでは簡単のため、
必ずnステップで回復するとしよう。回復したものは、免疫保持者となる。
- 免疫保持者は回復後mステップで免疫を失う。これも簡単のため、必ずmステップとしよう
- 初期状態では、居住者のうち確率qで感染者が、確率rで免疫保持者がいる
このモデルは居住者が動き回らないので、人間というよりは、畑の作物のようなものの疫病伝播モデルと
いえるかもしれない。
プログラムの例と解説はここをクリック。
はじめに
準備
以下のURLから、forest.tarとepidemics.tarというファイルをダウンロードしてください。
http://www.cp.cmc.osaka-u.ac.jp/~kikuchi/kougi/simulation/forest.tar
http://www.cp.cmc.osaka-u.ac.jp/~kikuchi/kougi/simulation/epidemics.tar
例によって、これを適当なディレクトリで展開すると、
実行プログラムと、入力データファイルのサンプルができます。
入力データファイル
森林火災の入力データファイルは2行からなり、
0.001 0.00001 0.1 0.8 12345
5000 10
|
のようなものです。
一行めは、
p q r 初期密度 乱数初期値
二行めは
シミュレーションするステップ数 何ステップごとに画面を表示するか
です。毎ステップ画面を表示すると、実行時間がかさみます。
疫病伝播の入力データファイルは2行からなり、
0.03 10 10 0.01 0 12345
5000 10
|
のようなものです。
一行めは、
p n m q r 乱数初期値
二行めは
シミュレーションするステップ数 何ステップごとに画面を表示するか
です。毎ステップ画面を表示すると、実行時間がかさみます。
実行
森林火災は、入力データファイルをfo.inとすれば
で実行します。
実行すると、数値も出力されますが、これは
ステップ数 燃えていない木の数 燃えている木の数
の順です。
この出力をfo.outというファイルに格納したければ
としてください。
疫病も同様で、入力ファイルをepi.inとすれば
で実行します。
数値される数値は
ステップ数 感染者数 免疫保持者数
の順です。