同じ初期配置、同じ環境。群れの「方向の決め方」を変えて観察する。
追従個体が1体の進行方向を参照
近くの個体同士で方向を合わせる
外部ライブラリ、画像、フォント、通信を使わない、Canvas 2Dによる1ファイルの実験です。図形の移動はあらかじめ決めた動画ではなく、個々の状態から毎ステップ計算しています。
両側は同じ個体数・初期位置・初期速度・障害物・シードから開始します。同じIDには同じ時刻に同じ乱数由来の角度変化を加えます。ただし、その時点の位置や向きが異なるため、結果の軌跡は一致しません。「撹乱を加える」は全稼働個体の向きを一度だけランダムに回します。
整列度は、各個体の速度を単位ベクトルにして合計した長さを、稼働個体数で割った値です。
100%は全員が同じ方向、0%に近いほど方向が相殺されています。整然と円を描く群れでも、全体の整列度が低くなることがあります。最大群の割合は、近傍半径以内のつながりをたどって得られる最大の連結集団が、稼働個体に占める割合です。半径を変更するだけでも値は変わります。障害物による通信遮断はモデル化していません。
まず数秒観察し、リーダーを除去します。次に撹乱を加えて回復のしかたを比較します。画面をクリックすると両側の同じ座標に障害物を置けます。円を再クリックすると削除します(最大8個、重なり配置は不可)。障害物の追加で内部に入った個体は、表面へ移されます。
リセットは現在のパラメータ・障害物・シードを保ったままやり直します。サイコロはシードを変えます。個体数の変更も再スタートし、その他のパラメータ変更はその時点から反映されます。停止中でも操作は適用されます。
このデモから、中央集権と分散型の一般的な優劣は結論できません。左の通信は距離・遅延・容量の制約がなく、右には共通の目的地を与えていません。故障検出、リーダー交代、情報伝達の遅延、現実の無線通信も省略しています。除去後に左を停止させる演出はしていません。目的地到達率や実機の安全性を評価するモデルではありません。
Space:再生 / 停止、R:同じ条件でリセット、L:1体ずつ除去、D:撹乱、C:障害物を消去、?:この説明。CanvasにフォーカスしてEnterを押すと中央の障害物を切り替えます。PNG保存はその時点の比較画像を作成します。
シミュレーションは1/60秒の固定時間刻み、近傍探索は空間グリッド方式、履歴グラフは0.25秒ごとに更新します。速度設定はシミュレーション時間の進み方を変えます。極端に遅い端末では実時間より進みが遅くなる場合があります。タブが非表示の間は進行を止めます。OSの「視差効果・動きを減らす」設定が有効な場合は、停止状態で開きます。