Blind Painter
はじめに
BlindPainterはALife Game Jam 2019で作成した人工生命系/ジェネラティブアートです。
作品のコンセプトを "収束しない進化" と設定し、常に移り変わって寡占にならない人工生命系を実装しました。
コンセプト
イベントの "ever changing -変わり続ける-" というテーマと "人工生命" というワードから、作品のコンセプトを "収束しない進化" と設定しました。
人工生命系の製作においては、自己複製の最適解におちいって変化しなくなってしまう問題がよく発生します。
"収束しない進化" というコンセプトはこの問題を回避して変化し続ける = 観察していて飽きない人工生命系を目指すものとして設定しました。
仕様
"収束しない進化" というコンセプトを実現し、さらに今回は試行錯誤の時間がとれないということを考えて、人工生命は凝った作りにせず、コンセプトの実現に注力した仕様を策定しました。
人工生命の仕様
簡単に実現できるように以下の仕様としました。
- 各生命は遺伝子をもつ
- 生殖するまで生き延びたものが子孫を残す
- 無性生殖で、遺伝子をコピーする際に確率で突然変異する
- 感覚器官や移動器官は実装せず、ランダムに動き回るのみ
"収束しない進化" の実現
収束しない = 最適解におちいらない というコンセプトを実現するには以下の方法が考えられます。
a. 最適解が存在しない系を設定する
b. 現実的な時間で求められないような最適解を設定する
c. 最適解を移動させる
aは実現できるか不明なので除くとして、bとcのうち設計しやすいcの方針を採用しました。
具体的には「餌にできる種を遺伝子に設定することにより、周囲に存在する種によって最適戦略が変わる」という仕組みです。
実装
遺伝子
「餌にできる種を遺伝子に設定する」という仕様を実現するために、遺伝子には「自分自身を示す情報」と「餌がなんであるかを示す情報」を格納する必要があります。
# コラム
遺伝子設計で面白いのは、現実の遺伝子は生命の表現型を表現する役割が第一であるのに対して、
この人工生命の遺伝子はそれ単体では何も表現せず他者との関係性のみを記述するもので
あるということですね。
他者のいない状況では何の情報ももたず何かの役に立つこともありません。
淘汰
淘汰を起こすために、リソースを奪い合うゼロサムゲームを設定します。
今回は各生命がエネルギーをもち、エネルギーは移動で減り捕食で奪えるという仕組みにしました。
また、それだけだと系全体のエネルギー量が減少する一方になるため、日光のメタファーである"餌"を出現させるようにしました。
この仕様のもとでエネルギーのサイクルは
1. 餌の出現によって系にエネルギーが追加される
2. 餌を捕食することで生命がエネルギーを獲得する
3. 生命が別の生命を捕食することでエネルギーが移動する
4. 生命の移動、繁殖によりエネルギーが系から失われる
ということになります。
BlindPainter
狙い通り、ひとつの遺伝子(種)に収束しない進化系を実現できました。
一種類の種が繁栄すると、増えた種を捕食する種に有利な状況になる = 増えた種に不利な状況になるため、状況が安定せず収束しないようです。
また、生命の移動の軌跡を表示することで動く油絵のようなジェネラティブアートが生まれました。
人工生命をベースにしているため「収束しない」という基本属性を引き継いでおり、勢力が常に移り変わる様子が映し出されています。
課題
一見コンセプトと矛盾しますが、この作品には「安定した生態系が生まれない」という課題があります。
BlindPainterは特定の種族が寡占することはありませんが、大局的に見ると「種族が常に移り変わる」という点は変化しません。
系としてのバリエーションが増えるためには、大局的には均一化しない一方で、局所的には安定した生態系が存在できる必要があり、今後はそちらの改善も行いたいところです。
まとめ
BlindPainterは生命同士の関係性を遺伝子で定義することにより、"収束しない進化" のコンセプトを実現しました。
また、人工生命を絵画に落とし込むことでジェネラティブアートとして表現しました。
BlindPainterはGitHubにホスティングしてあり、以下のリンクから動かすことができます。
Art in the Science Award
人工生命に関する国際会議 ALife2020 にて、シンプルな仕組みでありながら複雑なふるまいを創発できるアイデアを評価されて Art in the Science Award を受賞しました。
この記事が気に入ったらサポートをしてみませんか?