WindowsでTierra

はじめに

Tierraとは、トム・レイが開発した人工生命環境で、自己複製・突然変異・自然淘汰による進化をコンピュータ上で再現したものです。Windowsで動くGUIなTierraを数年前に作っていたのですが、せっかくなので公開します。

ダウンロード

windows版バイナリ(動作環境: .net framework 2.0以上)
http://www.todesking.com/files/Tierra_6854.zip

ソースはcodereposから。
http://coderepos.org/share/browser/lang/csharp/Tierra/trunk

svn checkout http://svn.coderepos.org/share/lang/csharp/Tierra/trunk/

で落とせます。

Tierraのしくみ

自己複製

Tierra世界の生命は、それぞれが「遺伝子」と呼ばれるプログラムを持っています。プログラムの目的は、自己複製、つまり子孫を残すこと。プログラムは、

  1. メモリ領域を確保
  2. 確保した領域に自分のプログラムをコピー
  3. プログラムを実行

という動作を行ないます。放っておけばどんどん増殖します。

突然変異

生命がプログラムを実行する際、ある確率でエラーが起こります。たとえばメモリ確保に失敗したり、コピーする際間違ったデータを書き込んだり。また、プログラムのあるビットが反転して意味が変わってしまうことがあります。

自然淘汰

Tierra世界において、メモリと計算資源は有限です。メモリがいっぱいになると、年老いた生命が死に、メモリに空きを作ります。プログラムを実行するのに必要な計算資源は、プログラムが短いほど多く与えられます。

メモリが有限であること、小さいほど多くの計算資源がもらえること。これらの条件は、生命のサイズを小さくする方向への淘汰圧となります。

関連リンク

Tierraについての詳しい情報は以下を参照してください
Tierra (コンピュータプログラム) - Wikipedia
http://www.nis.atr.jp/emc/tierra-doc/tierra.html

Tierra実行環境


初期画面はこのようになっています。
一番右にあるのは遺伝子のコレクションです。「80aaa」を右クリックして、新しい遺伝子をメモリプールに追加してみましょう。



中央には選択した生命の情報が表示されています。下段がその生命が持っているプログラム。命令の意味はhttp://www.nis.atr.jp/emc/tierra-doc/Inst/inst1.htmlを参照してください。




Runボタンを押すと繁殖がはじまります。黄緑色は生命本体、緑は確保されたメモリ、白は空き領域、赤は現在実行中の生命を示しています。



Windowメニューから情報ウィンドウを開くことができます。
GeneViewウィンドウでは選択された遺伝子の家系をみることができます。
CellListウィンドウでは、現在のメモリプールに存在する生命のリストを一覧表示できます(自動同期はしないのでRefleshボタンを押してください)


進化を続けたら、命令長57の種が大勢を占めるようになりました。