本文记录的是在实习人工智能自动组方时有关聚类分类时阅读过的一篇相关论文,虽然在最后没有使用该算法思想,但我觉得这种随机搜索最优解的方法对于很多场景都有应用,则将其整理记录下来。 如果有哪位小伙伴在做相关内容,可以发邮件联系(1318525510@qq.com)与我互相学习
以下为该项目的系列文章
工作记录
萤火虫算法
FCM模糊C聚类
爬虫及python代码
数据预处理
中医分类及python代码
数据预处理python代码
基于字典的最大正向匹配
基于欧式距离的方剂推荐
基于方剂相似性的方剂推荐
GitHub地址
萤火虫算法
萤火虫算法是一种新颖的进化算法,是根据自然界中萤火虫的发光行为所构造出的基于群体搜索的智能优化算法。该算法的基本思想是利用在一定范围内萤火虫发光低的向发光高的萤火虫移动,从而有效的实现寻找最优解。
由于萤火虫算法原理相对简单、且易于实现;而且还具有良好的全局寻优能力,能够快速地收敛于最优解等特性,现在萤火虫算法已经应用到工业优化、动态路径规划、图像处理、经济调度等领域。
在萤火虫算法中的每个个体都被看做萤火虫,亮度低的萤火虫被亮度高的萤火虫吸引,亮度越高越好。对于每个个体而言,其他个体对自身的吸引程度和发光亮度根据距离变化而变化。
在算法初始化时,将所有个体(及所有的萤火虫)随机分布在空间中,每个萤火虫的最大吸引度设置为$ \beta _0 $每个萤火虫在自己的感知范围内向最高亮度的萤火虫移动,完成初始值设置之后,FA算法循环迭代:1每个个体的吸引度更新,位置更新,目前最亮的萤火虫随机移动位置。
算法迭代
吸引度更新
在算法中,每个萤火虫都有自己的吸引度范围,初试吸引度为 β \beta β,在空间中传播时随距离被衰减,定义 γ \gamma γ为荧光的吸收率,则吸引度的更新为:
β ( γ ) = β 0 ∗ e − γ R j \beta(\gamma) = \beta_0*e^{-\gamma R_j} β(γ)=β0∗e−γRj
其中 R j R_j Rj定义为两个萤火虫之间的距离, β 0 \beta_0 β0为当两个萤火虫距离 R j = 0 R_j = 0 Rj=0时的吸引度,其中
R 0 ∈ [ 0 , 1 ] , γ ∈ [ 0 , 10 ] R_0 \in [0,1],\gamma \in [0,10] R0∈[0,1],γ∈[0,10]
所在位置更新
在算法中,萤火虫 i i i向萤火虫 j j j移动,必须满足的条件:
- i i i在 j j j的感知范围内(简化该步骤,可以将感知范围设置为全局,及每个萤火虫都可以被其他所有的萤火虫感知到)
- j j