torus)をシミュレートするプログラムを作ってみました。動作このプログラムでは、魚とサメの二種類の生物を扱います。魚(上の画面の水色の四角)は、画面上を上下左右の空いたところにランダムに移動し、一定時間ごとに繁殖します。サメ(上の画面の紫の四角)は、画面上の上下左右に魚がいれば、そのうちのランダムに選んだ一匹を食べ、魚がいたところに移動します。上下左右に魚がいなければ、上下左右の空いたところにランダムに移動します。サメもまた、一定時間ごとに繁殖します。画面は、上下と左右がそれぞれつながっていて、トーラス状になっています。タイトルのWaTorというのも、[1]によればそこから付けられた名前のようです。画面の大きさは、ここでは、64×64のセルからなっています。設定できるパラメータは、魚について2つ、サメについて5つあります。魚の方は、魚の初期数と、繁殖の間隔、サメの方は、サメの初期数、繁殖の間隔、初期エネルギー、魚を食べたときに選られるエネルギー、貯えられる最大のエネルギーです。これらをうまく選ぶと、魚もサメも全滅せず、その数が時間とともに大きく振動する様子が見られます。難しいところはないと思いますが、パラメータは[設定|パラメータ]メニューで設定し、実行・停止は[実行]メニューで行います。パラメータを設定すると、シミュレーションの経過時間が0に戻ります。備考Delphi4の実行時パッケージを使ったものをご希望の方はお知らせください。短時間で力技で実装したので、CPUパワーがないと苦しいかもしれません。縦横ともに128セルにしようと思っていたのですが、そういう訳で遅すぎるのでこの大きさにしています。パラメータも、[1]を参考に適当に決めたところうまくいったので、そのまま採用しています。画面をぼぉ〜っと眺めているうちに、個体数の増減の様子をグラフにしてみようという気になり、そのためのデータをログに出力するよう改造しました。メニューの[ファイル|ログ出力]をチェックすると、実行形式と同じディレクトリにwator.csvという名前でログファイルを作成し、時間、魚の数、サメの数をCSV形式で出力します。このようにして作成したログファイルをExcelで読み込み、グラフにすると次のようになります。時間と共に、魚、サメの数が振動していることが分かります。このデータの前半を、横軸に魚の数、縦軸にサメの数をとる散布図にしてみると、下図のようになります。赤い印のところから始まり、まず魚が増加しグラフは右に伸びていきます。ある程度までいくと、サメが増加し始め魚は食べられて減少し、グラフは左上に伸びます。魚の数がある程度まで減少するとサメが死んでいきグラフは下に伸びます。サメがある程度まで減ると魚が増加し始めグラフは右に伸びます。これを繰り返すことで、魚、サメの数が振動しています。