Gray-Scottモデルで人工生命を作ってみた!

Gray-Scottモデルで人工生命を作ってみた!

こんにちは、えびかずきです。

今回はGrayscottモデルを使って人工生命を作って遊んでみたので

つくった作品を紹介してみたいと思います!

開発環境

言語:
python 3.6.3
外部ライブラリ:
vispy 0.5.3
PyQt 5.10.1
numpy 1.14.15

この記事で使用したプログラムは「作って動かすALife」githubリポジトリのソースコードを改変して利用させていただいたものです。

この記事で紹介するソースコードはこちら:
https://github.com/ebikazuki/python/tree/master/grayscott_sample/program

Gray-Scottモデルとは以下4つのルールに従って変化する空間中の物質uと物質v濃度の微分方程式のことです。

Gray-Scottモデルの4つのルール:
①uとvはfickの拡散式に従って拡散する
②化学反応u+2v→3vが起こる
③化学反応v→p(消滅)が起こる
④uは濃度が低い時に自然発生する

Grayscottモデル:

\(\dfrac{\partial u}{\partial t}=D_u\Delta u-uv^2+f(1-u)\)

\(\dfrac{\partial u}{\partial t}=D_v\Delta v+uv^2-(f+k)v\)

\(D_u,D_v\):拡散係数, \(f,k\):grayscottパラメータ

\(\Delta=\dfrac{\partial^2}{\partial x^2}+\dfrac{\partial^2}{\partial y^2}\):ラプラシアン


この微分方程式のパラメータ\(f,k\)に適切な値を与えてやると、

自然界の生命にみられる特徴的な模様が描かれることが知られています。

条件:dx=0.01, dt=1, Du=2e-5, Dv=1e-5, f=0.04, k=0.06

パラメータを変えてみる

パラメータを色々変えて、どんな模様が描かれるか試してみましょう。

amorphous(f=0.04,k=0.06):

まずは上の図でもお見せしたamorphousです。
に生息するヒョウモンオトメエイという種類のエイが同じような模様を持っています。沖縄でも生息が確認されているようです。

こんな模様のサンゴもありますよね。無機的で不思議な模様ですね。

ヒョウモンオトメエイ,https://unsplash.com/photos/PEBMGRYYmrs
f=0.04,k=0.06

spot(f=0.035,k=0.065):

今度はなんともポップでかわいい模様です。

フグの仲間はこういった斑点模様の付いた種類がたくさんいますね。

フグ, https://pixabay.com/ja/photos/フグ-魚-4068751/
f=0.035,k=0.065

babble(f=0.012,k=0.05):

次ばbabbleということで、泡模様です。

またまたエイの写真を載せました。ルリホシエイという名前のエイです。

泡が踊るように広がって不思議な感じがしますね。

ルリホシエイ,https://unsplash.com/photos/iYve7aSTLcQ
f=0.012,k=0.05

stripe(f=0.022,k=0.051):

次は熱帯魚です。

Amorphousに少し似ていますが、若干波打ってストライプっぽい模様になっています。

ルリホシエイ,https://unsplash.com/photos/iYve7aSTLcQ
f=0.012,k=0.05

check(f=0.05,k=0.01):

ここまでは「作って動かすAlife」で紹介されていたものをそのまま紹介しましたが、
ここからはオリジナルです。

f=0.05,k=0.01に設定するとチェック模様を作ることができます。

動画では拡散の境界に線が生じて次第に消えていきます。

チェック模様は細かすぎでグレーに見えますが、微細な構造はちょうどチェス盤のような白黒が交互に現れるパターンになっています。

チェス盤, https://unsplash.com/photos/IsphRwNKkjc

初期値を変えてみる

パラメータ\(f,k\)の変更だけでなく、初期値を変更してみるのも楽しみ方の一つです。

下の動画では、「ALife」という手書き文字を初期のパターンに設定して、Amorphousのパラメータ条件でプログラムを走らせた結果です。

文字が広がってアート作品っぽくなりました。

逆再生にしてだんだん文字が現れてくるというような使い方も面白そうです。

生命っぽくしてみる

最後は、全面にオリジナリティー出して生命っぽいアニメーションを作ってみました。

さてこれは何のキャラクターをイメージしているでしょう?

答えはGithubの猫です!

名前は「Monalisa」というらしいですよ。

まとめ

今回はGrayscottモデルを使って、人工生命を作ってみました。

画像の中心からいろんな模様が広がって面白かったですね!

ご興味のある方はぜひ試してみてください。

参考書籍

この記事の執筆には下記の書籍を参考にさせていただきました。

作って動かすALife 実装を通した人工生命モデル理論入門 [ 岡 瑞起 ]
created by Rinker

Pythonカテゴリの最新記事