BioErrorLog Tech Blog

試行錯誤の記録

人工生命"Tierra"を動かす | ALife

Tom Rayの人工生命"Tierra"を実行する方法を整理します。

はじめに

こんにちは、@bioerrorlogです。

人工生命Tierraは、CPU timeをエネルギーとし、メモリ空間で繁殖する人工生命です。 1990年代にThomas S. Rayによって開発された、非常に有名なモデルですね。

前回はTierraのソースコードの在処を探しました:

人工生命Tierraのソースコードはどこにあるのか | ALife - BioErrorLog Tech Blog

今回はいよいよ、Tierraを動かしてみようと思います。

※ 本手順に従ってTierraを実行している様子を動画にしました:


実行環境

Linux環境を想定しています。
本記事での作業環境はこちら:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:    20.04
Codename:   focal

参考: WindowsにLinux仮想環境を構築する - BioErrorLog Tech Blog

実行手順

Tom Rayのホームページで配布されているソースコードは、そのままでは不具合が多く残っており上手く動作しません。

今回使う↓のコードには、既にLinux動作用に修正を当ててあります。

github.com

オリジナルのソースコードを見たい方は、v6.02-originalブランチをご覧ください。


Tierraの実行は、Tierraそのものの実行フロントエンド(Beagle)の実行の二段階に大別できます(※)。

それぞれ順番にやっていきましょう。


※ 厳密には、フロントエンドとしてbasicとBeagleが選べるような実装になっています。 が、Beagleでしか上手く動作しなかったのでそちらを使います。 今回使うコードは、そのままBeagleを使えるよう設定/不具合を修正済みです。

Tierraの実行

まずは下記コマンドで、Tierraそのものを実行します:

# 必要なライブラリをインストール
sudo apt install libncurses-dev libxt-dev libxaw7-dev x11-apps

# ソースコードをclone
git clone https://github.com/bioerrorlog/Tierra.git

# ビルド
cd Tierra/tierra
./configure
make clean
make

# gb (gene bank)生成
cd ./gb0
../arg c 0080.gen 0080aaa.tie
../arg x 0080.gen aaa
cp 0080.gen 0080gen.vir

# Tierraを実行
cd ..
HOSTNAME=localhost ./tierra si0

↓のようにTerminalで処理が実行され続けていれば成功です。

Tierra実行中のTerminalの様子

各コマンドを軽く説明します。

# 必要なライブラリをインストール
sudo apt install libncurses-dev libxt-dev libxaw7-dev x11-apps

# ソースコードをclone
git clone https://github.com/bioerrorlog/Tierra.git

最初のこの部分は前準備です。 Tierraの実行に必要なライブラリをインストールし、Tierraコードをcloneしてきます。


# ビルド
cd Tierra/tierra
./configure
make clean
make

# gb (gene bank)生成
cd ./gb0
../arg c 0080.gen 0080aaa.tie
../arg x 0080.gen aaa
cp 0080.gen 0080gen.vir

この部分で、Tierra実行ファイル/設定ファイルを生成しています。

gene bankというのは、soup (Tierraが活動するメモリ領域のこと)に最初に播種されるTierraのゲノム配列の設定ファイル群です。 ここでは各設定で初期値となっている0080aaaを使っています。


# Tierraを実行
cd ..
HOSTNAME=localhost ./tierra si0

このコマンドを実行すると、いよいよTierraが起動します。

環境変数HOSTNAMEを設定しているのは、このTierraバージョンがNetモード(インターネットを介してTierraを実行するモード)に対応しているためです。 今回はNetモードではなくローカルでTierraを起動したいので、localhostに設定します。

実行ファイルtierraに渡しているsi0というのは、soupの設定ファイルです。 Tierraが活動するメモリ領域: soup の法則(どのくらいの頻度でTierraが死亡するか、など)を調整するパラメータをここで渡します。

フロントエンド/Beagleの起動

Tierraが上手く起動できたら、次はフロントエンド(Beagle)を起動します。

新規Terminalを開き、下記コマンドを実行します。

# Beagle Explorerのビルド
cd ../Bglclnt/
make -f Makefile.Bgl clean
make -f Makefile.Bgl

# Beagle Explorerを起動
HOSTNAME=localhost ./bgl-GUI_X11-Linux

Beagleクライアントをビルドし、実行しています。 環境変数HOSTNAMEを指定しているのは、先述のTierra実行時と同じ理由です。

↓のようなウィンドウが表示されれば成功です。

Tierraのフロントエンドウィンドウ

Tierraを触って遊ぶ

無事Tierra/フロントエンド共に起動できたら、ぜひいろいろ触って遊んでみましょう。

Tierraといえば、各creatureのゲノム長が表示されたカラフルな画面が有名です。 これは、Window > Overviewで表示することができます。

その他、soupの統計情報を表示したり、特定creatureのゲノムを表示したりもできます。

詳しくは動画をご覧ください:

おわりに

以上、人工生命Tierraを実行する手順をまとめました。

Tierraは非常に有名な人工生命モデルですが、実際に実行してみたという情報はあまり見当たりません。

前回ソースコードを探すところから始め、今回コードを手に入れたものの不具合が多発し、修正には苦労しました。 (先人の軌跡を大いに参考にさせていただきました。)

この記事が、Tierraを実行してみたいと思った方のお役に立てば幸いです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

www.bioerrorlog.work

参考

GitHub - bioerrorlog/Tierra: Tierra - Tom Ray's Artificial Life

Tierra home page

Documentation for the Tierra Simulator

Tierra

Tom Ray’s Tierra | AI 2020

Evolution, Ecology, and Optimization of Digital Organisms | Santa Fe Institute

I have always been fascinated with alife, the first one I created was something ... | Hacker News

Tierra (computer simulation) - Wikipedia

Apply tierra2011.patch · Mortal/tierra@92ff9f2 · GitHub