FlockDrift ・ Boids Simulation
群れ は、 創発 する。
分離 ・ 整列 ・ 結合 の たった 3 つ の 局所 ルール だけ で、 司令塔 なし に ムクドリ の 大群 や 魚群 が うねる ── その 群れ (Boids) シミュレーション を、 ブラウザ で リアルタイム に。
3 規則 と、 そこ から の 創発
separation + alignment + cohesion → emergence
分離
Separation近く に いる 仲間 と ぶつから ない よう、 距離 が 近い ほど 強く 反対 方向 へ 舵 を 切る。 これ が 弱い と 1 点 に 潰れ、 強すぎる と バラバラ に 散る。 群れ が 「面」 として 厚み を 保つ ため の 反発力。
整列
Alignment知覚 範囲 内 の 仲間 の 平均 的 な 進行 方向 に、 自分 の 向き を 少しずつ 合わせる。 これ が 群れ 全体 が 同じ 方向 へ 流れ、 一斉 に 向き を 変える ような 「うねり」 を 生む 中心 の ルール。
結合
Cohesion知覚 範囲 内 の 仲間 の 平均 的 な 位置 (重心) へ 向かって 進む。 これ が 群れ を 1 つ の かたまり に まとめる。 弱める と ゆるい 雲、 強める と 密集 した 球 に なる。
創発
Emergenceこの 3 つ は すべて 「自分 の まわり 数十 px だけ を 見た 局所 ルール」 で、 群れ 全体 を 指揮 する 司令塔 は どこ に も ない。 にも かかわらず、 ムクドリ の 大群 (murmuration) の ような 複雑 で 美しい 全体 像 が 立ち上がる ── これ が 創発 (emergence)。 FlockDrift は その 様子 を リアルタイム で 見せる。
よく ある 質問
Q1
Boids (ボイド) とは?
1986 年 に Craig Reynolds が 発表 した、 鳥 の 群れ を 模した 人工生命 モデル。 各 個体 (boid = bird-oid) が 『分離 ・ 整列 ・ 結合』 の 3 つ の 単純 な ルール に 従う だけ で、 本物 の 鳥群 や 魚群 の ような 自然 な 集団 行動 が 再現 さ れる。 映画 の CG 群衆 や ゲーム の AI に も 応用 さ れて いる 古典 的 アルゴリズム。
Q2
捕食者 モード は 何 が 起きる?
「捕食者と群れ」 プリセット、 または チェック ボックス で 捕食者 を 追加 する と、 1 匹 の 捕食者 が 最寄り の 群れ を 追い、 群れ は 知覚 範囲 に 入った 捕食者 から 逃げる。 結果、 群れ が さっと 割れて 再び 集まる ── 実際 の イワシ の 群れ が 見せる 防御 行動 に 似た 動き が 創発 する。 click / ドラッグ で 捕食者 を 好きな 位置 に 動かせる。
Q3
スライダー で どう 変わる?
個体数 を 増やす ほど 群れ は 重厚 に、 知覚半径 を 広げる ほど まとまり が 強く なる。 分離 を 上げる と 風通し の よい 群れ、 整列 を 上げる と 一糸乱れぬ 流れ、 結合 を 上げる と 密集 した 球 に。 ゆらぎ を 上げる と 蛍 の ように ふわふわ する。 数値 の 組合せ で 鳥群 ・ 魚群 ・ 虫 の どれ に も 化ける。
Q4
重く ない? 何 体 まで 動く?
各 個体 が 周囲 を 見る ため 計算量 は 個体数 の 2 乗 で 増える が、 通常 の PC なら 500 体 程度 まで 滑らか に 動く。 動作 が 重い 場合 は 個体数 を 下げて ください。 GPU や 外部 ライブラリ は 使わず、 純 JavaScript + Canvas のみ で 動く。
Q5
ai-lab の 他 の シミュ と の 関係 は?
シミュレーター シリーズ の 1 つ。 物理 サンドボックス (PilePark) / 二重振り子 カオス (PendulumTrace) / マンデルブロ (FracCast) / ライフゲーム (CellDrift) / 流体 (InkTide) / N 体 重力 (StarTrail) と 並ぶ。 FlockDrift は その 中 で 『群知能 ・ 創発』 を 受け持つ 一本。 StarTrail (引力 で 集まる) と は 逆 に、 局所 ルール だけ で 集団 が まとまる 様子 を 扱う。