スクリーンショット_2019-04-20_20

遺伝セルオートマトン Genelife 実装開始

今日は、昔作った Genelife というセルオートマトンルールを再実装してみました。

ソースコードは紛失していたのでイチから作り直しました。

この Genelife は複数のルールが混在した2次元セルオートマトンで、セルごとに遺伝情報とそれに対応する計算ルールがあって、セルが生まれるときに遺伝(複製と突然変異)が発生するように作っています。

昔作った Genelife では、かなり細かい調整を施して何とか面白くできたのですが、今回作ったルールでは2種類の方式を試したところまでです。

1つ目は単純に複数のルールを事前に定義しておき、どのルールが使われるかを遺伝させるという方式。先程上げた動画になっていて、StarWars ルールとコンウェイのライフゲームが混在するようになっています。他にもいくつかルールを追加しても、今の所それほど面白くなりませんでした。

2つ目は、ルールを数値化できるようにして数値を遺伝するようにして、遺伝時には数値をビット列にして稀に1ビットだけ変化する、という方式にしました。32ビットの数値を8近傍総和型のルールとして解釈する部分を実装しただけなので、とても汎用性が高いです。しかし、ランダムに数値を決定する方式では面白い結果は全く生まれませんでした。

すべてこのパターンに収束してしまいます。理由は、セルが広がりやすいパターンが見つかった(生まれた)途端にそこからラジオ的に広がって、変異が発生して少しそれが収まる、ということを繰り返しているからです。ランダムなルールではこういった拡張していくだけのルールが生まれやすいのです。なので前者のようなルールを限定したものを作ったのですが。

総和型世代セルオートマトンの特徴

Genelife では総和型世代セルオートマトンを使っています。このルールの特徴は宇宙とよく似ています。セルは量子的でエネルギーのようなものを持っています。エネルギーが伝搬し粒子や波のように状態が空間を移動します。または、エネルギーを無限に出し続ける質量の大きな形や、変化がなかったり安定した状態になることも、ルールによりますが存在します。

Genelife でそういった性質のセルオートマトンを採用しているのは、他のセルオートマトンに比べて宇宙的な性質が豊富にあるからです。2状態しかないコンウェイのライフゲームでそのような宇宙的な性質を求めると、セルオートマトン内セルオートマトンを作って表現しなければならなくなります。メタ世界が生成されるほどの複雑さが生まれることはまず無いので、ある程度宇宙的な状態が揃っている総和型世代セルオートマトンは単純なのにとても優秀なのです。

次のステップ

ここからどんなふうに面白く仕上げていくか、それはまだ全然見えていません。昔作ったものはチューニングをして意図的に作った物だったので、それでも面白かったのですが、今回はそっちを目指さず何か新しく挑戦できないか、考えています。

面白さが自分だけなのか、自分だけ面白いと思っていない段階なのか、よくわからないそんな状態より、驚くようなことを求めて行きたいです。昨日書いたように「未知への興味を満たしたい」、これを目指します。

応援してくださると嬉しいです。よろしくお願いいたします!