人工智能自动组方实习笔记2 — 萤火虫算法

本文记录的是在实习人工智能自动组方时有关聚类分类时阅读过的一篇相关论文,虽然在最后没有使用该算法思想,但我觉得这种随机搜索最优解的方法对于很多场景都有应用,则将其整理记录下来。 如果有哪位小伙伴在做相关内容,可以发邮件联系([email protected])与我互相学习互喷互撩

萤火虫算法

萤火虫算法是一种新颖的进化算法,是根据自然界中萤火虫的发光行为所构造出的基于群体搜索的智能优化算法。该算法的基本思想是利用在一定范围内萤火虫发光低的向发光高的萤火虫移动,从而有效的实现寻找最优解。
由于萤火虫算法原理相对简单、且易于实现;而且还具有良好的全局寻优能力,能够快速地收敛于最优解等特性,现在萤火虫算法已经应用到工业优化、动态路径规划、图像处理、经济调度等领域。
在萤火虫算法中的每个个体都被看做萤火虫,亮度低的萤火虫被亮度高的萤火虫吸引,亮度越高越好。对于每个个体而言,其他个体对自身的吸引程度和发光亮度根据距离变化而变化。
在算法初始化时,将所有个体(及所有的萤火虫)随机分布在空间中,每个萤火虫的最大吸引度设置为 β 0 每个萤火虫在自己的感知范围内向最高亮度的萤火虫移动,完成初始值设置之后,FA算法循环迭代:1每个个体的吸引度更新,位置更新,目前最亮的萤火虫随机移动位置。

算法迭代

吸引度更新

在算法中,每个萤火虫都有自己的吸引度范围,初试吸引度为 β ,在空间中传播时随距离被衰减,定义 γ 为荧光的吸收率,则吸引度的更新为:

β ( γ ) = β 0 e γ R j

其中 R j 定义为两个萤火虫之间的距离, β 0 为当两个萤火虫距离 R j = 0 时的吸引度,其中
R 0 [ 0 , 1 ] , γ [ 0 , 10 ]

所在位置更新

在算法中,萤火虫 i 向萤火虫 j 移动,必须满足的条件:
- i j 的感知范围内(简化该步骤,可以将感知范围设置为全局,及每个萤火虫都可以被其他所有的萤火虫感知到)
- j 的发光亮度高于 i
则低亮度萤火虫 i 的位置移动:

x i ( t + 1 ) = x i ( t ) + β 0 e γ R j ( x j ( t ) x i ( t ) ) + α ( r 1 0.5 ) x n

其中 x i ( t ) i 个萤火虫在第 t 代时的位置向量, α [ 0 , 1 ] , r 1 [ 0 , 1 ] ,如果 r 1 < 0.5 ,则 x n x m a x x i ( t ) ,否则 x n 取值为 x i ( t ) x m i n x m a x 是在搜索空间的位子向量上限, x m i n 是搜索空间的位置向量下限。

最亮萤火虫随机移动

x b ( t + 1 ) = x b ( t ) + α ( r 2 0.5 ) x n

其中 x b ( t ) 是在 t 时刻的全局最优位置(及全局最优解), r 2 为[0,1]之间的随机数,同上若 r 2 < 0.5 ,则 x n x m a x x b ( t ) ,否则 x n 取值为 x b ( t ) x m i n x m a x 是在搜索空间的位子向量上限, x m i n 是搜索空间的位置向量下限。

吸引度选择策略

在FA算法中,萤火虫在感知范围内采取的贪婪算法的随机选择机制,如果选择了距离较远的个体,则在运动过程中时间过长,如果是选择较近但亮度较低则收敛效果不好,所以在移动时需要考虑到距离和亮度两个标准,具体策略如下:

P i j = x B ( t ) x B ( t ) + R j

每个萤火虫选择 P i j 值最高的个体移动,
其中 R j = | | x i x j | | 2 为第二范式。

算法流程

  1. 初始化问题,将个体转化为萤火虫,设置亮度函数,并初始化所有参数 β , γ , α
  2. 确定每个萤火虫两两之间的距离
  3. 计算对周围萤火虫的吸引度
  4. 对于每个萤火虫而言,找到吸引度最高的萤火虫个体,并更新位置
  5. 使最亮的萤火虫随机移动位置
  6. 如果完成迭代或者达到精度则结束,否则转第2步

猜你喜欢

转载自blog.csdn.net/qq_22235017/article/details/80940021