自分の記憶と、群れの発見。そのふたつを手掛かりに、よりよい解を探す。
直前の速度を引き継ぎます。強くすると広く動き続け、弱くすると速度が減衰します。
これまで自分が訪れた中で、最も評価のよかった位置を記憶し、探索の手掛かりにします。
全粒子が発見した最良位置を参照します。集まりすぎると、局所解に停滞する場合もあります。
ひとつの粒子が、ひとつの候補解 (x, y) です。各位置で関数を評価し、値が小さくなる場所を探します。粒子は正解の座標も関数の勾配も使わず、過去の評価結果を使います。
(x, y)
r₁ と r₂ は、粒子・次元・反復ごとに独立して生成する [0, 1) の擬似乱数です。1反復の開始時点の gBest を全粒子が参照する同期更新です。各軸の速度を探索幅の12%で制限し、境界で反射して速度を半減させます。
アニメーションは反復間の位置を滑らかに補間します。関数の評価は離散的な反復位置でのみ行います。背景は対数圧縮した評価値と等高線です。収束グラフの縦軸は対数目盛で、0 および 10⁻¹² 未満は表示上 10⁻¹² に揃えます。カードとCSVは実際の計算値を保持します。
「群れの広がり」は、粒子の重心からの二乗平均平方根距離を、探索領域の対角長で割った値です。小さいことは、最適解の発見を意味しません。「最適値付近」の判定は、既知の最小値0に対して最良評価値が10⁻⁶以下かどうかで行い、表示にだけ使用します。
すべて最小値は0。描画範囲と計算の境界は同じです。背景の輝度は関数ごとに正規化されるので、異なる関数間で同じ明るさが同じ評価値を意味するわけではありません。
リセットは同じシードで初期化します。同じ関数・粒子数・係数・操作履歴なら同じ計算結果になります。再生速度と表示設定は計算結果を変えません。プリセットと係数の変更は途中から反映され、関数と粒子数の変更は再初期化します。CSVには各反復の係数、粒子数、シード、最良値、平均値、広がりを記録します。
Space 再生/停止 N 1ステップ R リセット Esc 説明を閉じる
更新式:PySwarms 公式ドキュメント(global-best PSO)テスト関数:Simon Fraser University — Optimization Test FunctionsこのHTMLは独自のJavaScript実装です。参考リンクを開かない限り外部通信は行いません。