1000匹のダンサーが「友人」と「敵」と踊る:ボイドの群知能
Dancing with friends and enemies: boids' swarm intelligence

Wolfram Communityの投稿では、1000個のパーティクルが「友人」に向かって大きく、「敵」から小さく離れるという単純なルールで、複雑で美しい渦巻き模様を描くシミュレーションを紹介。各パーティクルはランダムに友人と敵を選び、定期的に変更。収縮項を加えて無限の拡散を防ぎ、近接時の力をゼロにすることで凝集を防ぐ。この「ダンス」は、鳥や魚の群れのマクロな行動が単純な局所ルールから生まれることを示す。投稿には、2D/3DのManipulate、リング状の配置、100万パーティクルのProcessingでの再現など、多数のバリエーションが寄せられている。
私が「無駄な娯楽」と呼ぶものを、社会科学者(社会物理学者を含む)は「真剣な研究」と呼ぶ。
- markstock
SWが含めた微調整は、同様のシミュレーションではかなり一般的なものだ:
1) 引力-斥力のペアは「ボイド」シミュレーションの典型で、原子に働くレナード-ジョーンズ力にも見られる(ただし減衰率のべき乗は異なる);
2) 粒子間距離がゼロに近づくにつれて力をゼロにすることは、各粒子を特異点ではなく「雲」として扱うことで、渦粒子法では「正則化」、重力法では「プラマー軟化」と呼ばれる;その主な利点は、(i != j) の条件を不要にすることでSIMDと並列化に適することだ;そして
3) ゆっくりとした収縮(各粒子の位置に (1-epsilon) を掛ける)は、ジェネラティブ・デジタルアーティストが、視覚的な活動が指示された点からあまり離れすぎないようにするために使うテクニックだ。
このシミュレーションのユニークな点は、ごく少数(ここではN=2)の近傍粒子への(計算効率の良い)依存性だ。リアルタイムシミュレーションを1万〜5万粒子に制限する典型的なO(N^2)が、O(N)になる。
- yehoshuapw
(新しいバージョンで)遠くの塊が分離したままなのに、大きな群れから何か小さなものがそこに到達すると、すべてがそれに合流する様子がとても興味深い。
- Honali
ここで気に入っているのは、ボイドの背後にある主な前提の一つである局所性を捨てた後も、興味深い振る舞いが生き残ることだ。