果蠅優化算法(FOA)
果蠅優化算法(Fruit Fly Optimization Algorithm, FOA)是基於果蠅覓食行為的仿生學原理而提出的一種新興群體智能優化算法。
果蠅優化算法(FOA)通過模擬果蠅利用敏銳的嗅覺和視覺進行捕食的過程,FOA實現對解空間的群體迭代搜索。FOA原理易懂、操作簡單、易於實現,具有較強的局部搜索能力。
果蠅算法可應用於求解最優解:
果蠅群體迭代搜尋食物的步驟如下:
(1)隨機初始化果蠅群體位置。
Init X_axis
Init Y_axis
(2)賦予果蠅個體利用嗅覺搜尋食物的隨機距離與方向。
Xi = X_axis + Random Value
Yi = Y_axis + Random Value
(3)由於無法得知食物的位置,因此先估計與原點的距離(Dist),再計算味道濃度判定值(S),此值為距離的倒數。
Disti = sqrt(Xi^2 + Yi^2)
Si = 1 / Disti
(4)味道濃度判定值(S)代入味道濃度判定函數(或稱為Fitness function)以求出該果蠅個體位置的味道濃度(Smelli)。
Smelli = Function(Si)
(5)找出該果蠅群體中味道濃度最高的果蠅(求極大值)。
[bestSmell bestIndex] = max(Smell)
(6)保留最佳味道濃度值與x、y的坐標,此時果蠅群體利用視覺往該位置飛去。
Smellbest = bestSmell
X_axis = X(bestIndex)
Y_axis = Y(bestIndex)
(7)進入迭代尋優,重復執行步驟2-5,並判斷味道濃度是否優於前一迭代味道濃度,若是則實行步驟6。