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

人工生命 "Lenia" を触って遊びます。

はじめに

"Lenia" という美しい人工生命モデルがあります。

まずは、以下のデモ動画を見てみて下さい。

顕微鏡を覗いているような、本当に"何か"が生きているかのような動きが美しいですね。

今回は、この人工生命"Lenia"を手元で動かして遊んでみます。

環境

Windows 10
Python 3.7.6
Git bash

で作業しました。

人工生命 "Lenia" を動かす

Leniaとは

Lenia is a system of continuous cellular automata, a form of artificial life. It was derived from Conway's Game of Life by making everything smooth, continuous and generalized.

Lenia Portalより

(意訳) Leniaは、連続値セルオートマトンの人工生命です。 コンウェイのライフゲームから、あらゆる要素をスムーズで連続的に汎化して作られています。

とのことで、ライフゲームベースの時空間的に連続な人工生命モデルとして、Bert Chan氏が作成したものです。

論文もあるので、詳細はこちらを参照ください。

Lenia - Biology of Artificial Life

Lenia and Expanded Universe | Artificial Life Conference Proceedings | MIT Press

Leniaを動かす

それではLeniaを動かしていきます。

github.com

Python, Matlab, Javascriptなど複数の言語がサポートされていますが、今回はPythonバージョンを動かしてみます。

# ソースコードをclone
$ git clone https://github.com/Chakazul/Lenia.git

# Pythonバージョンのディレクトリに移動
$ cd Lenia/Python

# virtualenvがインストールされていない場合はインストールする
$ pip install virtualenv

# 仮想環境作成
$ virtualenv .venv

# 仮想環境有効化
$ source .venv/Scripts/activate

# パッケージインストール
$ pip install -r requirements.txt

これで準備は完了です。

いよいよLeniaを実行してみます。

$ python LeniaND.py 

f:id:BioErrorLog:20210911133444p:plain

このようにLeniaのウィンドウが表示されれば成功です。

いろんなLenia

ウィンドウ上部のタブからパラメータを操作すると、いろいろな形態を表現することが出来ます。

いくつか例を紹介します。

f:id:BioErrorLog:20210911135440p:plain

f:id:BioErrorLog:20210911135556p:plain

f:id:BioErrorLog:20210911135911p:plain

f:id:BioErrorLog:20210911140233p:plain

f:id:BioErrorLog:20210911140016p:plain

非常に多様な形態が創発されて面白いですね。

ぜひいろいろ遊んでみてください。

おわりに

今回は、人工生命 "Lenia" を動かして遊びました。

セルオートマトンは古くより研究されてきた分野と思いますが、このLeniaのようにいかにも"生き物っぽい"動きを目の当たりにすると、この分野の奥深さを実感します。

人工生命のモデルは面白そうなものがたくさんあるので、いろいろと触ってみたいものです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考

GitHub - Chakazul/Lenia: Lenia - Mathematical Life Forms

Lenia Portal

Lenia - Biology of Artificial Life

Lenia and Expanded Universe | Artificial Life Conference Proceedings | MIT Press

Stanford Seminar - Lenia: Biology of Artificial Life | YouTube

Bert Chan