设计思想
果蝇优化算法(Fruit fly Optimization Algorithm, FOA)模拟果蝇寻找食物的过程,分为嗅觉搜寻和视觉搜寻两阶段进行迭代求解。该算法有许多变种,包括改进型、修改型和多目标型等。
基本的果蝇优化算法设想这样一个最小化问题:
minf(X) s.t. xj∈[LBj,UBj]
初始情况下,随机生成种群的位置Δ=(δ1,δ2,⋯,δn),随后分为嗅觉搜寻和视觉搜寻两阶段。在嗅觉搜寻阶段中,在搜索空间中Δ附近随机生成种群规模PS个食物源{X1,X2,⋯,XPS},其中Xi=(xi,1,xi,2,⋯,xi,n) . 在视觉搜寻阶段,取Xbest=argminf(Xi),若Xbest优于Δ则Δ取为Xbest,进行下一次迭代。
在经历最大迭代次数Itermax次迭代后,所得Δ即为求解最终值。
性能分析
基本FOA算法的主要缺点包括:容易陷入局部最优解;收敛能力较差。
对于第一点,FOA算法模型仅考虑一个初始种群位置,后续的搜索则是基于这一位置进行随机生成的,可见如果步长和初始位置的选择不好,会导致算法陷入局部最优。
对于第二点,FOA算法在搜索空间中以全向扩散进行搜索,在维数较高的空间需要种群具有相当规模才能有较为可观的收敛能力,但这又导致了对性能需求的激增。