クラゲ検索 (JS) アルゴリズム (MATLAB コードを含む)

最初に声明をさせてください。記事は私の個人公式アカウントのプッシュから直接コピーして貼り付けたものであるため、インテリジェントな最適化アルゴリズムに興味のある友人は、私の個人公式アカウント「ヒューリスティックアルゴリズムの議論」をフォローしてください時々、公式アカウントでさまざまなインテリジェントな最適化アルゴリズム、古典的なアルゴリズム、または近年提案された新しいインテリジェントな最適化アルゴリズムを MATLAB コードを添付して共有します。

Jellyfish Search (JS) アルゴリズムは、2021 年に提案された新しい群知能最適化アルゴリズムです。クラゲの探索行動のシミュレーションには、クラゲの現在の追跡、クラゲのコロニー内での動き (能動的および受動的)、およびこれらの動きを切り替えるためのタイミング制御メカニズムが含まれていました。著者らは、テストに包括的なベンチマーク関数のセットを使用し、それらを一連の工学構造問題に適用します。他のヒューリスティック アルゴリズムと比較して、JS は最高のパフォーマンスを発揮するだけでなく、目的関数の評価が最小限で済み、強力な最適化能力と速い収束速度という特徴を備えています。

Chou JS、Truong D N. 海洋のクラゲの行動にヒントを得た新しいメタヒューリスティック オプティマイザー[J]。応用数学と計算、2021、389: 125535。

写真

01
インスピレーションの源

クラゲは、世界中のさまざまな深さと温度の水中に生息しています。釣鐘のような形をしており、クラゲの中には直径が1cm未満のものもあります。さまざまな色、サイズ、形があります。ほとんどのクラゲは海洋環境を好みます。食べる方法は2つあり、1. 触手を使って口に食べ物を送り込む、2. 触手を使って水中の小さなプランクトンをろ過し、繊毛の働きで口腔手根溝を通って口に送る。また、図 1 に示すように、1. 海流によって運ばれてくる餌を食べる (受動的)、2. 触手を使って獲物を刺して動けなくする (能動的) という 2 つの捕食方法があります。

写真

図1 クラゲは触手を使って獲物を狩る

クラゲは自分の動きをコントロールすることができます。彼らの下面は傘のように互いに閉じており、ボディスプレー反射を使用して前に進みます。その能力にもかかわらず、それらのほとんどは海流や潮の動きに依存して水中を漂います。条件が良好な場合、クラゲはクラゲブルームとして知られる群れを形成します。クラゲは壊れやすい生き物であり、クラゲの潮流を維持する鍵は、クラゲが座礁しないように海流に対するクラゲの相対的な方向を維持することです。

クラゲ自身の動きと海流の動きによってクラゲ潮流が形成され、海のどこでも見ることができます。クラゲが行く場所によって餌の量が変わります。したがって、餌の比率を比較して、最適な位置を決定します。著者は、海中のクラゲの探索行動と動きに触発されて、JS アルゴリズムを提案します。図 2 は、アルゴリズムの一般的な手順を示しています。

写真

図2 海洋におけるクラゲの生息行動

02
アルゴリズム設計

クラゲ検索アルゴリズムは、クラゲが海流に従って個体群内を移動する方法 (能動的および受動的な動き) と、これらの動きを切り替えるためのタイミング制御メカニズムをシミュレートすることにより、数学的モデルを確立します。

まず、JS アルゴリズムの 3 つの理想化ルール (モデルの仮定) について説明します。

1. クラゲは集団内で海流に従うか単独で移動し、両者の動きは時間制御機構によって切り替えられます。

2. 海では、クラゲが食べ物を探しているとき、より多くの食べ物がある場所に引き寄せられます。

3. 見つかった食物の量は、場所と対応する目的関数によって決まります。

これら 3 つの基準に基づいて、JS アルゴリズムは次のように説明されます。

写真

写真

03
計算プロセス

JS アルゴリズムの計算フローチャートを図 3 に示します。
 

写真

図3 JSの計算処理

04
実験シミュレーション

ここでは、JS アルゴリズムのパフォーマンスの簡単なテストを示します。まず、関数の最適化には JS が使用され、アルゴリズムの MATLAB プログラムは元のリファレンスに従って厳密にコーディングされます。また、母集団サイズはN = 50 に設定され、ベンチマーク機能では CEC2005 テスト セット、CEC2013 テスト セット、CEC2014 テスト セット、CEC2017 テスト セット、CEC2020 最適化機能テスト セットが使用されます。シミュレーション結果はここに簡単に表示され、それ以上の分析は行われません。

まず、グローバル探索とローカル開発のための JS アルゴリズムのバランス能力をテストしてみましょう。図 4 に示すように、CEC2005 テスト関数 f7 上の JS アルゴリズムの探索開発率曲線です。

写真

図 4 CEC2005 f7 での JS 探索と開発のパーセント変化曲線

次に、CEC2005 のマルチモーダル関数 Ackley (f10) を例として、30 次元環境における JS アルゴリズムの収束効果を示します。私は以前にも、海洋における他の動物アルゴリズムに関するいくつかの問題を取り上げてきました。たとえば、クジラ最適化アルゴリズム (WOA) とその優れたバリアント (MATLAB コードを含む)、サルプ群れアルゴリズム (SSA) (MATLAB コードを含む)バショウカジキ最適化 (SFO ) などです。 ) アルゴリズム (MATLAB コードを含む)Rooster Optimization Algorithm (ROA) (MATLAB コードを含む)Beluga Optimization (BWO) アルゴリズム (MATLAB コードを含む)

誰が「海の兄弟」なのかを知るための比較アルゴリズムとして使用してください。図 5 に示すように、最大​​反復数T は1000 に設定され、それらの収束パフォーマンスが比較されます。

写真

図 5 CEC2005 f10 での 6 つの比較アルゴリズムの収束曲線

ここでも、CEC2013 テスト セットの単峰関数 F5 を例として取り上げ、30 次元環境における JS アルゴリズムの収束効果を示します (図 6 を参照)。(誤差曲線が描かれていることに注意してください)

写真

図 6 CEC2013 F5 での JS の誤差収束曲線

次に、CEC2014 テスト セットの混合関数 F19 を例として、30 次元環境における JS アルゴリズムの収束効果を図 7 に示します。(誤差曲線が描かれていることに注意してください)

写真

図 7 CEC2014 F19 での JS の誤差収束曲線

次に、図 8 に示すように、CEC2017 テスト セットのマルチモーダル関数 F4 を例として、30 次元環境における JS アルゴリズムの収束効果を示します。(誤差曲線が描かれていることに注意してください)

写真

図 8 CEC2017 F4 での JS の誤差収束曲線

最後に、図 9 に示すように、CEC2020 最適化関数テスト セットの複合関数 F9 を例として、10 次元環境における JS アルゴリズムの収束効果を示します。(誤差曲線が描かれていることに注意してください)

写真

図9 CEC2020最適化関数F9におけるJSの誤差収束曲線

さらに、JS アルゴリズムは、以前にプッシュされた 2 フェーズ アルゴリズム アプリケーション コンテンツなど、複雑なエンジニアリング制約の最適化問題に適用できます。

アルゴリズム アプリケーション: DBO アルゴリズムに基づくエンジニアリング最適化設計 (フェーズ 1) (MATLAB コードを含む)

アルゴリズム アプリケーション: エンジニアリング最適設計 (フェーズ 2) (MATLAB コードを含む)

ここでは、圧力容器設計の問題を例として、JS アルゴリズムの解決効果を示します。アルゴリズム選択の比較: ハイイロオオカミの最適化 ( GWO )、ハリスホークの最適化 ( HHO )、スナネコの群れの最適化 ( SCSO )、フンコロガシの最適化 ( DBO )、アライグマの最適化 ( COA )。収束曲線を図 10 に示します。

写真

図10 圧力容器設計問題における6つの比較アルゴリズムの目的関数の収束曲線

05
MATLAB コード

 

公式アカウントには、ヒューリスティックアルゴリズムの議論がありますので、ご注意ください。

おすすめ

転載: blog.csdn.net/jieyanping/article/details/131727804