群体智能优化算法之烟花算法(Fireworks Algorithm,FWA)

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

第十五章 烟花算法

15.1 介绍

受到烟花在夜空中爆炸产生火花并照亮周围区域这一自然现象的启发,北大教授谭营在2010年提出了烟花算法(Fireworks Algorithm,FWA)[1]。在该算法中,烟花被看作为最优化问题的解空间中一个可行解,那么烟花爆炸产生一定数量火花的过程即为其搜索邻域的过程。

15.2 FWA算法框架

烟花算法的算法流程图如图1所示。

在这里插入图片描述

图1 烟花算法流程图

烟花算法具体包括以下几个步骤:

  1. 在可行解空间中随机产生一定数量的烟花,每个烟花代表解空间中的一个可行解。
  2. 根据优化目标函数计算每个烟花的适应度值,并据此确定烟花质量的好坏,以在不同爆炸半径下产生不同数量的火花。在烟花算法中,作者使用了两种形式的火花,分别是爆炸火花和高斯变异火花。其中爆炸火花主要负责对烟花邻近区域的搜索,适应度值好的烟花在较小的邻近区域内产生较多的火花,反之,适应度值差的烟花在较大的邻近区域内产生较少的火花。相对于爆炸火花,高斯火花的引入增强了种群的多样性。
  3. 判定是否满足终止条件。如果满足则停止搜索,否则在爆炸火花、高斯变异火花和烟花中选择一定数量的个体作为烟花进入下一代的迭代。烟花算法具有局部搜索能力和全局搜索能力自调节机制。烟花算法中每个烟花的爆炸半径和爆炸火花数是不同的,适应度值差的烟花的爆炸半径较大,使其具有更大的“探索能力”——开发性。适应度值好的烟花的爆炸半径较小,使其能够在该位置周围具有更大的“挖掘能力”——利用性。此外,高斯变异火花的引入可以进一步增加种群的多样性。

15.3 算子分析

假设待求解的优化问题为:
M i n f ( x ) R , x Ω (1) {\mathop{\rm Min}\nolimits} f({\bf{x}}) \in R,{\bf{x}} \in \Omega \tag 1

其中Ω为解的可行域。

在烟花算法中,爆炸算子(即爆炸产生火花操作)、变异算子(高斯变异产生火花操作)和选择策略(即选择下一代烟花操作)是最重要的3个组成部分,直接决定烟花算法的性能优劣。

15.3.1 爆炸算子

在可行域Ω内初始化一定数量烟花,对烟花位置的适应度值进行评估。为了差异化不同位置的烟花,一般适应度值较好的烟花能够获取更多的资源,在较小的范围内产生更多的火花,具有对于该烟花位置的强大的局部搜索能力。反之,适应度值较差的烟花只能获取相对较少的资源,在较大的范围内产生数量较少的火花,具有一定的全局搜索能力。实际上该过程中模拟不同厂家生产的不同质量的烟花,如图2所示。
在这里插入图片描述

(a)质量好

在这里插入图片描述
(b)质量差

图2 不同质量的烟花燃放效果

为了达到烟花差异化的目的,即同时兼顾开发和利用,在烟花算法中,每个烟花的爆炸半径和爆炸产生的火花数目是根据其相对于烟花种群中其他烟花适应度值计算得到的。对于烟花xi,其爆炸半径Ai和爆炸火花数目Si的计算公式分别为
A i = A ^ × f ( x i ) y min + ε i = 1 N ( f ( x i ) y min ) + ε (2) {A_i} = \hat A \times \frac{{f\left( {{x_i}} \right) - {y_{\min }} + \varepsilon }}{{\sum\limits_{i = 1}^N {\left( {f\left( {{x_i}} \right) - {y_{\min }}} \right)} + \varepsilon }}\tag 2
S i = M × y max f ( x i ) + ε i = 1 N ( y max f ( x i ) ) + ε (3) {S_i} = M \times \frac{{{y_{\max }} - f\left( {{x_i}} \right) + \varepsilon }}{{\sum\limits_{i = 1}^N {\left( {{y_{\max }} - f\left( {{x_i}} \right)} \right)} + \varepsilon }}\tag 3

其中ymin=min(f(xi)),(i=1,2,…,N)为当前烟花种群中适应度最小值,ymax=max(f(xi)),(i=1,2,…,N)是当前种群中适应度最大值。 A ^ \widehat{A} 是一常数,用来调整爆炸半径大小,M也是为一常数,用来调整爆炸产生的火花数量,ε是一个机器最小量,以避免除零操作。

在式(3)中,为了限制适应度值好的烟花位置不会产生过多的爆炸火花,同时适应度值差的烟花位置不会产生过少的火花粒子,作者对于产生的火花个数进行了如下的限制:
S ^ i = {  round  ( a M ) , S i < a M  round  ( b M ) , S i > b M , a < b < 1  round  ( S i ) ,   其他  (4) \hat{S}_{i}=\left\{\begin{array}{ll}{\text { round }} & {\left(a^{*} M\right), S_{i}<a M} \\ {\text { round }} & {\left(b^{*} M\right), S_{i}>b M, a<b<1} \\ {\text { round }} & {\left(S_{i}\right), \ \text { 其他 }}\end{array}\right.\tag 4

其中a、b均为常数,round(·)是根据四舍五入原则的取整函数。

15.3.2 变异算子

为了增加爆炸火花种群的多样性,烟花算法引入了变异算子用于产生变异火花,即高斯变异火花。高斯变异火花产生的过程如下:首先在烟花种群中随机选择一个烟花xi,然后对该烟花随机选择一定数量的维度进行高斯变异操作。对于烟花xi的某一个选择得到的维度k执行高斯变异操作即为:

x ^ i k = x i k × e (5) {\hat x_{ik}} = {x_{ik}} \times e\tag 5

其中e~N(1,1),N(1,1)表示均值为1,方差为1的高斯分布。

在爆炸算子和变异算子分别产生爆炸火花和高斯变异火花过程中,产生的火花可能会超出可行域Ω的边界范围。当火花xi在维度k上超出边界,将通过式(6)的映射规则映射到一个新的位置。
x ^ i k = x L B , k + x ^ i k % ( x U B , k x L B , k ) (6) {\hat x_{ik}} = {x_{LB,k}} + \left| {{{\hat x}_{ik}}} \right|\% \left( {{x_{UB,k}} - {x_{LB,k}}} \right)\tag 6

其中xUB,k和xLB,k分别为解空间在维度k上的上边界和下边界。

15.3.3 选择策略

为使烟花种群中优秀的信息能够传递到下一代种群中,在产生爆炸火花和高斯变异火花后,算法会在候选者集合(包括烟花、爆炸火花和高斯变异火花)中选择一定数量的个体作为下一代的烟花。假设候选者集合为K,烟花种群大小为N。候选者集合中适应度值最小的个体会被确定性地选择到下一代作为烟花(精英策略),而对剩下的N-1个烟花的选择使用轮盘赌的方法在候选者集合中进行选择。对于候选者xi,其被选择概率的计算公式为:

p ( x i ) = R ( x i ) x j K R ( x j ) (7) p\left( {{x_i}} \right) = \frac{{R\left( {{x_i}} \right)}}{{\sum\limits_{{x_j} \in K} R \left( {{x_j}} \right)}}\tag 7
R ( x i ) = x j K d ( x i x j ) = x j K x i x j (8) R\left( {{x_i}} \right) = \sum\limits_{{x_j} \in K} d \left( {{x_i} - {x_j}} \right) = \sum\limits_{{x_j} \in K} {\left\| {{x_i} - {x_j}} \right\|} \tag 8

其中R(xi)为当前个体到候选者集合K除xi以外所有个体之间的距离之和。在候选者集合中,如果个体密度较高,即该个体周围有很多其他候选者个体时,该个体被选择的概率会降低。

15.4 烟花算法

在这里插入图片描述
在这里插入图片描述

参考文献

  1. Tan, Y. and Y. Zhu. Fireworks Algorithm for Optimization. in Advances in Swarm Intelligence. 2010. Berlin, Heidelberg: Springer Berlin Heidelberg.
发布了42 篇原创文章 · 获赞 56 · 访问量 5734

猜你喜欢

转载自blog.csdn.net/hba646333407/article/details/103087596
今日推荐