ホタルアルゴリズム

提供: testwiki
ナビゲーションに移動 検索に移動

ホタルアルゴリズム: Firefly Algorithm)とは、数理最適化において Xin-She Yang によって提案された、 ホタルの発光現象をもとにしたメタヒューリスティクスのひとつである[1]

概要

ホタルの発光は、他のホタルを引き付ける信号システムとして機能している。Xin-She Yangは、このホタルアルゴリズムを次のように仮定した:

  1. すべてのホタルは性別を持たず、個々のホタルは他のすべてのホタルに引き付けられる。
  2. 魅力はそれらの明るさに比例し、どの2つのホタルにとっても、明るくない方はより明るい方に引き付けられ、移動する。ただし、強度(見かけ上の明るさ)は、互いの距離が大きくなるにつれて減少する。
  3. 与えられたホタルより明るいホタルがいなければ、そのホタルはランダムに動く。

ホタルの明るさは目的関数と関連付けられる。

アルゴリズム

ホタルアルゴリズムは疑似コードを用いて次のように記述される。

Begin
   1) 目的関数: テンプレート:Nowrap
   2) ホタル テンプレート:Nowrapの初期状態を生成;
   3) 光の強さ テンプレート:Mvarテンプレート:Nowrapと関連付けられるように定義
      (例えば, 最大化問題では, テンプレート:Nowrap
   4) 吸収係数 テンプレート:Mvar を定義
 
   While (t < 世代数)
      for i = 1 : n (すべての n 匹のホタル)
         for j = 1 : i (n 匹のホタル)
            テンプレート:Nowrap
               テンプレート:Nowrapによって距離 r で 魅力度 を変化
               ホタルi を ホタルj に移動;                
               新たな解を評価し、光の強さ テンプレート:Mvar を更新;
            end if 
         end for j
      end for i
      ホタルを順位付けし、現在の最良のホタルを見つける
   end while

   結果や視覚化の後処理

end

ループあたりの目的関数評価の数は、上記の擬似コードがn * nであることを示唆していても、ホタルごとに1つの評価である(YangのMATLABコードに基づく)。 したがって、目的関数評価の総数は(世代数)*(ホタルの数)となる。

2つのホタル 𝐱i𝐱jの任意のペアの主となる更新式は、以下のように表される:

  𝐱it+1=𝐱it+βexp[γrij2](𝐱jt𝐱it)+αtϵt 

ここで、αtはステップ数を制御するパラメータで、ϵtはガウス分布などの分布から描かれたベクトルである。

γ0である特殊なケースでは、標準的な粒子群最適化と同じである。 実際、内側のループ(jのループ)を消去し、明るさ Ijを現在の最適解 g*に置き換えると、標準的な粒子群最適化と同じになる。

問題点

一般的に、自然に触発されたメタヒューリスティクスは、精巧なメタファーの背後にある目新しさのなさを隠しているとして、研究界で批判を集めている。 ホタルアルゴリズムは、定着している粒子群最適化とほとんど同じであると批判されている[2][3][4]

脚注

テンプレート:脚注ヘルプ テンプレート:Reflist

関連項目

外部リンク

  • [1]本に含まれているMatlabプログラムファイル: Xin-She Yang, Nature-Inspired Metaheuristic Algorithms, Second Edition, Luniver Press(2010)