上部のタブで実験を切り替え、スライダーで個体の行動を変更します。別のタブに移動するとその実験は休止し、戻ると続きから再開します。個体数・地形の変更とプリセット選択は、その実験を初期化します。
操作と再現性
画面をクリック/タップすると、選択したツールが作用します。Boidsと粘菌では押したままドラッグできます。アリの餌はクリックで追加し、Shift+クリックで近くの餌を削除できます。「クリア」は追加した操作点を取り除きます(アリでは追加した餌だけを削除)。
リセットは現在の設定と同じ乱数シードで初期化します。クリックによる操作はリセットで消えます。シード欄の右のボタンで新しい初期状態を作れます。同じ設定・シード・操作順・更新回数で挙動を再現できます。グラフの横軸は実時間ではなくシミュレーション時間です。
| Space | 再生/一時停止 |
| R / N | リセット/新しいシード |
| 1 ~ 5 | モデル切り替え |
| F / Esc | 全画面表示/解除 |
| ? | この説明を開く |
実装したモデル
Boids:近傍個体との分離・整列・結合を加速度に変換します。画面の端は反対側へつながります。方向一致度は速度の単位ベクトルの平均の大きさです。群れが複数方向に分かれると、局所的には整列していても値は小さくなります。
アリ:探索個体がフェロモンを感知し、餌を持った個体が帰路にフェロモンを残します。濃度場は拡散・蒸発します。帰巣方向は既知とする簡易モデルで、組合せ最適化のACOそのものではありません。餌の在庫は有限です。
ホタル:局所結合の蔵本型位相振動子を発光として描きます。実際のホタルの生理を再現したものではありません。
dθᵢ/dt = ωᵢ + (K / nᵢ) Σⱼ sin(θⱼ − θᵢ)
同期度 R = |(1/N) Σᵢ exp(iθᵢ)|Rは全個体の位相一致度(0~1)です。局所同期では、複数集団の位相が異なるためRが低い場合があります。
PSO:自己最良位置と群れ全体の最良位置を用いて最小化します。慣性項、速度上限、境界での反射を加えています。
v ← w v + c₁ r₁(pbest − x) + c₂ r₂(gbest − x)
x ← x + vSphere・Rastrigin・Ackleyを用意しています。地形上の◇は既知の理論最適点(値0)を示す観察用ガイドで、PSOの更新には利用しません。地形をクリックすると中心が移動し、評価履歴とグラフを初期化します。1ステップ操作ではPSOは1反復を進めます。
粘菌:前方3方向の濃度感知・旋回・物質の沈着・場の拡散と減衰による粒子ベースの近似です。端は周期境界です。栄養点は濃度を供給しますが、最短経路や輸送能力は計算していません。
負荷・表示・保存
1回の更新は原則1/60シミュレーション秒です。処理落ち時は追い付き更新を制限するため、実時間に対して進行が遅くなります。PSOは1×で毎秒約12反復です。粒子を減らすか速度を下げると負荷を抑えられます。バックグラウンドのタブでは更新を止めます。OSの「視差効果を減らす」が有効な場合は一時停止で起動します。
PNG保存は、その時の画面・シード・主要設定を画像に書き出します。全画面APIが使えない環境では、ページ内の拡大表示に切り替わります。HTML・CSS・JavaScript・描画素材をすべてこのファイルに格納しています。外部フォント、画像、ライブラリ、通信は不要です。
モデルの参考文献
Boids: Craig Reynolds, Boids: Background and Update.
PSO: J. Kennedy & R. Eberhart (1995), Particle swarm optimization.
粘菌近似: Jeff Jones (2010), Characteristics of pattern formation and evolution in approximations of Physarum transport networks.
同期の背景: Synchronization — Scholarpedia.
各モデルは上記の考え方を参照した独自の簡易実装です。参考文献のリンクを開く操作だけはネット接続が必要です。