Boids / Particle Life
局所ルールを持つエージェント集団から群れ行動や自己組織化が創発する、マルチエージェント系ALifeの2つの代表モデル。
使い方
- モード切り替え:BoidsとParticle Lifeを切り替えられます。それぞれ全く違う仕組みですが、同じ「多数のエージェント+近傍だけを見る局所ルール」という枠組みを共有しています。
- キャンバス上のドラッグ:マウス位置の周囲に反発力を発生させます。群れを散らしたり、Particle Lifeの構造を突いて壊してみたりできます。
- 🎲 ルールをランダム化(Particle Lifeのみ):種類間の相互作用行列を全く新しいランダム値に差し替えます。同じ種類数・同じ力の強さでも、行列が変わるだけで群れる・追いかけ合う・膜状に固まる・完全に散逸する、など挙動がガラリと変わります。
Boids(Craig Reynolds, 1986)
各個体は近傍の仲間だけを見て、次の3つのベクトルを合成した加速度で動きます。
- Separation(分離):近すぎる仲間から離れる方向に押し返される
- Alignment(整列):近傍の平均速度に自分の速度を合わせようとする
- Cohesion(結合):近傍の重心に向かって引き寄せられる
Boidsの歴史的な新しさは、群れ全体を指揮する中央制御が一切無いのに、この3つの単純な局所ルールだけから、まるで本物の鳥や魚の群れのような、滑らかで生物的な集団運動が創発する、と示した点にあります。1986年当時、群れの動きはトップダウンにスクリプトされるのが普通でしたが、Reynoldsはボトムアップな創発だけで同じ現象を再現しました。
パラメータをいじって、3つの力のバランスがどう群れの性格を変えるか試してみてください。Separationを強くしすぎると散り散りに、Cohesionを強くしすぎると1つの塊に潰れます。
Particle Life
F(r) = Atype(i),type(j)·(1 − |2r−1−β| / (1−β)) (β ≤ r < 1)
F(r) = 0 (r ≥ 1)
Particle Lifeは、Boidsのような「群れ行動」を明示的に作り込むのではなく、色(種類)ごとに異なる引力・斥力の行列だけをランダムに与える、もっと下のレイヤーのモデルです。近すぎると必ず反発し(潰れて重なるのを防ぐ)、少し離れた距離では種類の組み合わせごとに決まった符号・強さで引き合ったり反発したりします。
このモデルの面白さは、同じ数式・同じパラメータレンジのまま、行列の中身をランダムに変えるだけで、全く性質の違う"生態系"が生まれることです。ある行列では群れがクラスターを作って静止し、別の行列では一方が他方を延々追いかけ回す「捕食者-被食者」的な運動が生まれ、また別の行列では膜のような構造や、細胞質流動のように内部を撹拌し続ける塊が生まれます。単純な物理法則から多様な"生態"が生まれる様子を、ボタン一つで何度も引き直して観察できます。
2つのモデルの位置づけ
Boidsは「群れる」という結果を出すために3つのルールを意図的に設計したモデルです。一方Particle Lifeは、ルール自体をランダムに生成し、その帰結として偶然「群れる」「追いかける」「固まる」といった行動が生まれるかどうかを観察する、より探索的なモデルです。ALIFE研究の文脈で言えば、Boidsは「デザインされた創発」、Particle Lifeは「無数にありうるルール空間からの偶然の創発」という、対照的な2つのアプローチを代表しています。
参考文献
- C. W. Reynolds, "Flocks, Herds, and Schools: A Distributed Behavioral Model," SIGGRAPH, 1987.
- Boids — Craig Reynolds公式ページ
- Introducing Particle Life — Physion