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動作用に修正を当ててあります。
オリジナルのソースコードを見たい方は、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で処理が実行され続けていれば成功です。
各コマンドを軽く説明します。
# 必要なライブラリをインストール 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といえば、各creatureのゲノム長が表示されたカラフルな画面が有名です。
これは、Window
> Overview
で表示することができます。
その他、soupの統計情報を表示したり、特定creatureのゲノムを表示したりもできます。
詳しくは動画をご覧ください:
おわりに
以上、人工生命Tierraを実行する手順をまとめました。
Tierraは非常に有名な人工生命モデルですが、実際に実行してみたという情報はあまり見当たりません。
前回ソースコードを探すところから始め、今回コードを手に入れたものの不具合が多発し、修正には苦労しました。 (先人の軌跡を大いに参考にさせていただきました。)
この記事が、Tierraを実行してみたいと思った方のお役に立てば幸いです。
[関連記事]
参考
GitHub - bioerrorlog/Tierra: Tierra - Tom Ray's Artificial Life
Documentation for the Tierra Simulator
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