Advertisement

萤火虫算法

阅读量:

1.算法原理

萤火虫之间通过闪光来进行信息的交互,同时也能起到危险预警的作用。而闪光遵循两个物理定律:

光强(I)与距离(r)成反比,形式为I_{lpha 1}/r^{2}光强随距离的增加而降低;

空气会吸收部分光线,导致光强度呈指数下降。

为了方便算法的描述,萤火虫算法可基于以下三个规则来制定:

假定所有萤火虫都是雌雄同体的,因此任何萤火虫都可以被其他性别如何交配;

吸引力与萤火虫的光强成正比;

萤火虫的光强要由优化的成本函数决定。

2.光强和吸引力

从三个规则可看出,萤火虫算法的设计考虑了两个问题:光强的变化和与距离成反比的吸引力的形成。因此,萤火虫的吸引力可以通过其闪光强度来确定,而闪光强度又与目标函数相关。

对于最大优化问题,萤火虫在某一位置 x 的亮度 I 可以设定与目标函数 f(x)成正比,即 I(x)∝f(x)。但吸引力是相对的,它应该是由其他萤火虫所感受或断定的,因此该值会因萤火虫 i 和萤火虫 j 之间的距离 不同而不同,同光强一样,也会受到空气吸收程度的影响。光强 I(r)的的变化遵循平方反比律I=I_{s}/r^{2}, I_{s} 为光源处的强度。对于给定的具有固定光吸收系数 amma的介质(如空气),光强 I 与距离 r 有关,即

(1)
I= I_{0} e^{-amma r }

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

(2)
I= I_{0} e^{-amma r^{2} }

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

(3)
eta = eta _{0} e^{-amma r^{2} }
eta _{0}是r=0处的吸引力。

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

(4)
eta = eta _{0} e^{-amma r^{m} },

3.距离和移动

任意两只萤火虫 i 和 j 在其位置 和 上的距离为笛卡尔距离:

(5)
r_{ij} = arallel X_{i}- X_{j} arallel= qrt{ umimits_{k=1}^d ^{2} }

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

(6)
X_{i}= X_{i}+ eta {0} e^{-amma r{ij}^{2} }+lpha

式中第二项是吸引力的作用,第三项为随机扰动项,α 为步长,rand 为[0,1]之间均匀分布的随机函数。在绝大多数应用中,可以设定eta _{0}=1 ,lpha n ,也可以设定随机项服从正态分布 N(0,1) 或其他分布。此外,如果数值范围在不同维度上相差很大,如在一个维度上范围为-10^{5}10^{5} ,另一个维度上范围为[-0.001,0.01],需要首先根据领域问题的实际取值范围确定各个维度上的缩放系数 S_{k} ( k = 1 , … , d ),然后使用 lpha S _{k}替​α。

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

全部评论 (0)

还没有任何评论哟~