自然なアルゴリズム。 Bee Swarmアルゴリズムの実装

前回の記事では 、ミツバチの群れの行動のアルゴリズムと、最適化と合成の問題を解決するためのそのアプリケーションについて説明しました。 C ++とOpenGLを使用して、このアルゴリズム自体を2次元空間に実装し、「蜂」の群れを表示するプログラムを作成しました。



次の機能がテスト機能として選択されました。











目的関数には明確に定義された最小値があり、ハチのかなりの半分が3番目のステップで飛ぶ。



さまざまな設定のプロセス自体の小さなビデオ:

PNPへのアトラクション(個人の最高のポジション)-0.5。 GNPへのアトラクション(グローバルベストポジション)-0.5。 慣性重量-0.5。 群れの中の蜂-60。わかりやすくするために、各ステップの前に500msの遅延を設定します。





PNPの魅力は0.1です。 GNPへのアトラクション-0.7。 慣性重量-0.3。 群れの中の蜂-60。





ここで、タスクはより複雑になります。



関数は非常に振動しています。







PNPへのアトラクション-0.3。 GNPの魅力-0.3。 慣性重量-0.3。 群れの中の蜂-60。





そして、さらに難しいタスク。



境界線が拡張されます。





PNPへのアトラクション-0.3。 GNPの魅力-0.3。 慣性重量-0.3。 群れの中の蜂-60。





停止基準



停止基準は、遺伝的アルゴリズムと比較するとより明確ですが、ここにも落とし穴があります。 たとえば、2番目の関数の場合、多くのローカルミニマムがあり、グローバルミニマムに非常に近い値です。 7秒目には、GNPがグローバルな最小値ではなく、わずか12秒で入ってきたことがわかります。



そして、最適化問題についての結論として



ここでの特別なポイントは、目的関数の構築です。 与えられた基準に従って、最適化オブジェクトの品質を正しく評価する必要があります。 美を評価する法律を制定すれば、芸術作品を作成できます。

目的関数を計算する代わりに、経験も可能です。 たとえば。 ソファとキッチンの信号が最大になるように、部屋にWi-Fiポイントを設定する必要があります。 部屋の境界を設定します。 その後、アルゴリズムは、信号を配置してチェックする必要があるポイントを通知します。 キッチンとソファの信号を測定し、これらのデータに基づいて目的関数の値を各位置に割り当てます。 また、壁からの距離(シャンデリアの下に吊ることはできません)、スイッチおよびソケットからの距離、風水も含めることができます。そして、ラップトップとポイントで数時間走り回った後、どこでそれを修正するかがわかります必要ありません。

もちろん、例はワイルドですが、実際の生活を指します。 最適化手法は目的関数の選択に影響しないことを強調します。



PSメソッドのパフォーマンスは、次回だけでなく次回も考慮されます

MCIは勾配降下法と比較されます。 そして、助けたい人がいるなら、あなたは歓迎されています、あなたの候補者を前に出してください。



PPSコメントのないプログラムコードはここで見ることができます



All Articles