萤火虫算法
1.算法原理
萤火虫之间通过闪光来进行信息的交互,同时也能起到危险预警的作用。而闪光遵循两个物理定律:
光强(I)与距离(r)成反比,形式为
光强随距离的增加而降低;
空气会吸收部分光线,导致光强度呈指数下降。
为了方便算法的描述,萤火虫算法可基于以下三个规则来制定:
假定所有萤火虫都是雌雄同体的,因此任何萤火虫都可以被其他性别如何交配;
吸引力与萤火虫的光强成正比;
萤火虫的光强要由优化的成本函数决定。
2.光强和吸引力
从三个规则可看出,萤火虫算法的设计考虑了两个问题:光强的变化和与距离成反比的吸引力的形成。因此,萤火虫的吸引力可以通过其闪光强度来确定,而闪光强度又与目标函数相关。
对于最大优化问题,萤火虫在某一位置 x 的亮度 I 可以设定与目标函数 f(x)成正比,即 I(x)∝f(x)。但吸引力是相对的,它应该是由其他萤火虫所感受或断定的,因此该值会因萤火虫 i 和萤火虫 j 之间的距离 不同而不同,同光强一样,也会受到空气吸收程度的影响。光强 I(r)的的变化遵循平方反比律
,
为光源处的强度。对于给定的具有固定光吸收系数
的介质(如空气),光强 I 与距离 r 有关,即
(1)

为原始光强,为了避免
在r=0时除以0,采用一种考虑平方反比律和吸收的综合近似表达方式:
(2)

吸引力(β)是距离和吸收系数的函数,因萤火虫的吸引力与光强成正比,所以有:
(3)

是r=0处的吸引力。
在具体实现中,吸引力函数 β(r)可以是任意形式的单调递减函数:
(4)

3.距离和移动
任意两只萤火虫 i 和 j 在其位置 和 上的距离为笛卡尔距离:
(5)

萤火虫会向着比它更亮的其他萤火虫移动:
(6)

式中第二项是吸引力的作用,第三项为随机扰动项,α 为步长,rand 为[0,1]之间均匀分布的随机函数。在绝大多数应用中,可以设定
,也可以设定随机项服从正态分布 N(0,1) 或其他分布。此外,如果数值范围在不同维度上相差很大,如在一个维度上范围为
到
,另一个维度上范围为[-0.001,0.01],需要首先根据领域问题的实际取值范围确定各个维度上的缩放系数
( k = 1 , … , d ),然后使用
替α。
4算法伪代码
Input: Objective function f(x), number of decision variables
(D), parameters bounds [L, U]
Output: Optimal candidate solution
1. Initialize parameters: Population size (N), γ , β0, α
2. Initialize a set of random fifireflflies xi , {1, · · · , N}
3. Compute light intensity f (xi) for all fifireflflies
4. Defifine the light absorption coeffificient (γ )
5. while t<MaXGen do
6. for i ← 1 to N do
7. for j ← 1 to N do
8. Compute the distance rij between two fifire flflies xi
and xj using Euclidean distance in Eq.(4)
9. if light intensity f (xi) < f (xj) then
Less-brighter fifireflfly moves towards more-brighter
fifireflfly
10. Compute attractiveness varies with absorption
parameter (γ ) and distance (rij) using Eq.(3)
11. Move fifireflfly xi towards fifireflfly xj using Eq.(5)
12. Update new solution xi(new) and its light intensity
f (xi) (new)
13. end if
14. end for
15. end for
16. Sort light intensity of the fifireflflies to update the best
solution
17. t = t + 1
18. end while
