【技術本】作って動かすALife―実装を通した人工生命モデル理論入門
https://amzn.to/4kEamBX
【技術本】作って動かすALife―実装を通した人工生命モデル理論入門
へポスト
人工生命「Artificial Life」をテーマに、生命の定義を模してコンピュータ上で動きをシミュレートしようとする試み。
主に以下の内容を学ぶことができる。
[Pythonで実装、動作確認できるALife]
・Gray-Scottモデル
パラメータで様々な自然界の生物の外皮を模した模様パターンの生成過程が見れる
・1次元セルラー・オートマトン
ドットをセルとしたライフゲーム(ドットを一つのセルと見立てる)
左右隣同士のドットパターンで、自分のドットの有無を決定づけて変化させる
パラメータにより、線形、非線形、それらを交えた模様を作り出す
・2次元セルラー・オートマトン
ドットをセルとしたライフゲーム
自分の周り(上下左右、または斜めも含む)のドットの有無で自分のドットの有無を決定づけて変化させる
微生物が発生して、派生、消滅を繰り返すようなアニメーションを作り出す
・SCLモデル
原子核の周りの細胞膜が穴が開いたり修復されて閉じたりを繰り返すようなアニメーションを作り出す
生命は、固定的(鉱物)すぎず、かつ流動的すぎず、ある程度形作りながら、内部の物質を循環させるものである、という定義のもと作り出されたモデル
・Gray-Scottモデルの化学反応系
細胞の倍々の分裂を模したシミュレート
・ボイドモデル
生命としての群れの動きをシミュレート
分類:ぶつからないように離れる
整列:周りの個体と同じ方向に動く
結合:周りの個体の中心方向に向かうよう向きを揃える
・ボイドモデル2
餌を導入して、群れの移動方向に目標を与えたモデル
・ブライテンベルク・ビークル
ルンバのような、障害物をセンサーでよけて2次元画面を移動する
・サブサンプション
上記ルンバの機能を、有限オートマトンを利用して複数の状態を遷移できるシミュレーション
[状態]
avoid層:衝突を回避する
wander層:ランダムに動き回る
explore層:目的の方向に向かう
記述順から上位層、下位層となり、上位層が下位層の包含構造となっている。
・エージェントモデル
ニューラルネットワークを利用したエージェントモデル
画面上の餌を探して移動する
学習によって進化し、様々な餌の模索軌道が生まれる
・相互作用のシミュレーション
エージェントモデルを進化させ、集団にした場合の相互のふるまいのシミュレーション
[Python以外で動作確認できるALife]
・フォンノイマンの自己複製オートマトン
Gollyというアプリでノイマンの万物製造機の自己複製のプロセスを確認できる
上記、実践内容以外にも、様々な研究者による理論、試みが散りばめられていて、内容を補完してくれている。
単に数値、数式を駆使した見かけ上のシミュレートに留まらず、博物学者、生物学者から、分子生物学者、化学学者などの見解を基に、究極的には全てにおける生命の仕組みをコンピュータ上に落とし込もうとしている点が、非常に魅力的で興味深い。
まさに、シミュレートでなく、エミュレートを目指している。
その追究の過程で明らかになる仕組みや、まだ解明し切れていない現象が創造力をかき立てもする。
理系エンジニアに限らず、何かものを作っているクリエーターにも刺さる内容だと思います。
※注意点
P114 ブライテンベルク・ビークル
動作には、「pillow」モジュールが必要
右記を実行: pip install pillow
へポスト