地図/力学/エージェント

近くの仲間だけを見る

群れの一羽は、外の目標でなく近くにいる仲間を見て次の向きを決める。全体を見渡す個体はいない。各自が半径いくらの近所だけを見て、三つのことをする。ぶつからないよう離れ、向きを合わせ、近所の真ん中へ寄る。

boids(bird-oid object)。分離・整列・結合の三規則で群れを作る手法で、Craig Reynolds が 1986 年に発表した。各個体は半径内の近所だけを見て、分離(近すぎる相手から離れる)・整列(近所の平均速度へ向きを合わせる)・結合(近所の重心へ寄る)の三つを足し合わせて操舵する。中央の管制はなく、局所ルールだけから群れ全体のうねりが立つ。局所の相互作用から大域の秩序が生まれる動きが創発

三規則を一度に乗せるとどれが効いているか分かれないので、整列だけを取り出す。各個体が半径 radius 以内の仲間の速度を平均し、その平均の向きへ自分の速度を少しずつ寄せる。

近所の速度を足して n で割った ax / n, ay / n が平均の向き。そこから自分の速度を引いた差に 0.05 を掛けて足すので、向きは一気に揃わず毎フレーム少しずつ寄る。最初ばらばらだった矢印がだんだん同じ向きへ揃って、ゆるい流れになる。係数 0.05 を上げると一気に揃って固まり、下げると揃いきらず散る。radius を広げると近所が大きくなって群れがひとつに繋がる。速度の大きさは毎フレーム 1.3 に正規化しているので、揃うのは向きだけで速さは一定になる。

整列に、dx/d/d で距離が近いほど強く押し返す分離と、近所の重心へ寄る結合を足すと boids になる。ぶつからず、向きが揃い、ばらけすぎない。三つの綱引きの釣り合いで群れの密度が決まる。近所を総当たりで探しているので、点を増やすと比較の回数が二乗で増えて重くなる。