記事「バトルロイヤル最適化(BRO)」についてのディスカッション

 

新しい記事「バトルロイヤル最適化(BRO)」はパブリッシュされました:

本記事では、Battle Royale Optimizer(バトルロイヤル最適化アルゴリズム)について解説します。このアルゴリズムは、各解が近傍解と競合し、「ダメージ」を蓄積し、ある閾値を超えた場合に置き換えられ、さらに現在の最良解の周囲へと探索空間を周期的に縮小していくというメタヒューリスティックです。あわせて、擬似コードおよびCAOBROクラスのMQL5実装も紹介します。また、近傍探索、最良解への移動、適応的なデルタ区間といった主要な処理も含まれています。テスト結果としては、Hilly関数、Forest関数、Megacity関数における評価が示されており、本手法の強みと限界が明らかにされています。さらに、popSizeやmaxDamageといった重要パラメータを調整しながら実験し、検証できる基盤も提供されています。

Battle Royale Optimizer (BRO)アルゴリズムは、多くのプレイヤーが戦場に降り立ち、最終的に1人だけが生き残る仮想世界を比喩的に表現しています。これはバトルロイヤルゲームの本質そのものです。このコンセプトを、最適化問題の解法へと置き換えます。

アルゴリズムの開始時には、探索空間全体にランダムに分布した解の集団を生成します。各解は固有の「プレイヤー」として扱われ、それぞれ位置とその位置における品質(適応度)を持ちます。その後、メインとなる競争サイクルが始まり、各解は最近傍解と比較されます。これは、プレイヤー同士が戦闘で対峙する状況に相当します。

2つの解が「遭遇」すると、それぞれの品質が比較されます。より優れた解は勝者とされ、ダメージは0になります。一方、劣る解は敗者となり、1のダメージを受けます。このダメージカウンタは本アルゴリズムの重要な特徴です。敗者となった解はダメージを受けるだけでなく、集団内で既知の最良解へ向かって自身の位置を移動させることで改善を試みます。この移動は、より安全で有利な場所を見つけて生存しようとする行動を模倣しています。

ある解のダメージが一定の閾値を超えた場合、その解は「ゲームから脱落」し、集団から削除され、新たなランダム解と置き換えられます。これはバトルロイヤルにおいてプレイヤーが脱落し、次の試合で新たなプレイヤーが登場する仕組みに相当します。この仕組みにより、集団の継続的な更新が保証され、解の多様性が維持されます。


作者: Andrey Dik

 
とても面白そうなので、私が測定しているいくつかの要因の組み合わせに対する最適解を調べるために試してみるつもりだ。