記事「母集団最適化アルゴリズム:細菌採餌最適化(BFO)」についてのディスカッション

 

新しい記事「母集団最適化アルゴリズム:細菌採餌最適化(BFO)」はパブリッシュされました:

大腸菌の採餌戦略は、科学者にBFO最適化アルゴリズムの作成を促しました。このアルゴリズムには、最適化に対する独自のアイデアと有望なアプローチが含まれており、さらに研究する価値があります。

細菌採餌最適化(Bacterial Foraging Optimization、BFO)アルゴリズムは、非常に複雑または不可能な数値関数の最大化/最小化問題の近似解を見つけるために使用できる魅力的な最適化手法です。このアルゴリズムは、分散最適化および制御のための大域的最適化アルゴリズムとして広く認識されています。BFOは、大腸菌の社会的採餌行動に触発されています。BFOは、いくつかの適応分野で発生する現実世界の最適化問題を解決する際の有効性について、すでに研究者の注目を集めています。大腸菌の採餌戦略の背後にある生物学は、独自の方法でエミュレートされ、単純な最適化アルゴリズムとして使用されます。

大腸菌やサルモネラ菌などの細菌は、地球上で最も成功している生物の1つです。これらの機敏な細菌は、鞭毛と呼ばれる半硬質の付属物を持ち、それを使ってねじり運動で自分自身を推進します。すべての鞭毛が反時計回りに回転すると、プロペラ効果が生じ、細菌は多かれ少なかれ直線的な方向に移動します。この場合、細菌は遊泳と呼ばれる動きをします。すべての鞭毛は同じ方向に回転します。



親のクローン

図1:複製:元の細菌(動きベクトルの保存)とクローン細菌(動きベクトルの変更)への分割、
回転:細菌の動きのベクトルの変化

作者: Andrey Dik

 

これらのすべての最適化アルゴリズムを、パラメータが5つ以上あり、組み合わせの数が多い、より多くの実データでテストするのが良いだろう。

 
Aliaksandr Hryshyn #:

これらのすべての最適化アルゴリズムを、パラメータが5つ以上 あり、組み合わせの数が多い、より多くの実データでテストするのが良いだろう。

テストには3種類のテスト関数(平滑、極値 "針 "付き平滑、離散)が使用され、それぞれの関数は10、50、1000の パラメータでテストされる(合計9テスト)。

step0は16桁目までの精度が2倍であることを意味し、1000個のパラメータに対して0.000000000001のステップであることを意味する。

大雑把に計算すると、10e10^1000となり、約10e16000となる。

 

パラメータの数だ:

input int    Test1FuncRuns_P    = 5;     //テストに含まれる関数の数
input int    Test2FuncRuns_P    = 25;    //テストの関数数
input int    Test3FuncRuns_P    = 500;   //テストに含まれる関数の数

これは母集団のサイズである:

input int    BatsNumber_P       = 50;    //コウモリの数

エポック数が計算されます:

int epochCount = NumbTestFuncRuns_P / BatsNumber_P;

コードからすべて正しく理解できただろうか?

 
Aliaksandr Hryshyn #:

1- パラメーターの数:

2.母集団の大きさ:

3.エポック数を推定します:

コードからすべて正しく理解できましたか?

1.いいえ、テスト関数は2次元です:

input int    Test1FuncRuns_P    = 5;     //テストに含まれる関数の数
ロシア語では5つのテスト関数を意味するので、2倍する - 10最適化されたパラメータ

25 - 50 最適化されたパラメータ

500 - 1000最適化パラメータ

2.はい。

3.エポック数の見積もりは、FF実行の総数が同じになるように行われ、アルゴリズムの母集団サイズの選択に依存しない。

 

そうか、ありがとう。

一連の記事のこれらのアルゴリズムはすべてパラレル可能です。これは使えると思う。ただ、最適化する関数が複雑で、実数と整数の両方のパラメータをダイナミックに持ち、範囲も異なるので、問題を解いてからでないといけない。

 
Aliaksandr Hryshyn #:

なるほど、ありがとう。

他のアルゴリズムは見ていないのですか?これは使えると思う。ただ、最適化される関数が複雑で、実数と整数の両方のパラメーターをダイナミックに持ち、範囲も異なるから、問題を解いた後で解決する必要があるんだ。


そうだね。
 
よくやった👏。
 
Lorentzos Roussos #:
よくやった👏。
ありがとう!)