神经网络----萤火虫算法

这周新学的萤火虫算法,写个笔记加深理解,嘤嘤嘤。

1、自然界中的萤火虫;
2、萤火虫算法简介;
3、基本GSO算法;
4、基本FA算法;

1.自然界中的萤火虫

萤火虫生理结构十分特殊,它腹部的末端内充满了许多含磷的发光质及发光酵素,这些含磷的发光质及发光酵素,会在萤火虫腹的部发出一闪一闪的微弱亮光。萤火虫发出的亮光,主要是为了发送信号,萤火虫在求偶、警戒、诱捕等都是用这种方式。

2.算法简介

遵循原则
1、用待解决问题的目标函数值作为判断解优劣的标准;
2、目标函数值被称为发光亮度,值越大,代表 发光亮度越高,因此此解位置越好;
3、发光亮度决定该解的越高,因此此解位置越好;
3、发光亮度决定该解的 吸引度,亮度越高,吸引度越大,可吸引视线范围内比其亮度弱的萤火虫向其移动;
4、亮度和吸引度与距离成反比,随着距离的增加而减小。

1. 萤火虫优化算法(Glowworm Swarm Optimization, GSO)是一种新型的群智能优化算法。该算法模拟自然界萤火虫的发光特性,通过比较荧光素值的大小达到交流信息的目的,从而实现问题的优化。该算法具有参数较少、操作简单且稳定性较好等优点。是一种新型的群智能优化算法。该算法模拟自然界萤火虫的发光特性,通过比较荧光素值的大小达到交流信息的目的,从而实现问题的优化。该算法具有参数较少、操作简单且稳定性较好等优点。
2. 萤火虫算法(Firefly Algorithm)是一种启发式算法,灵感来自于萤火虫闪烁的行为。萤火虫的闪光,其主要目的是作为一个信号系统,以吸引其他的萤火虫。

算法基本思想
根据上述规则,可见每只萤火虫均在其搜索区域内寻找亮度更高的伙伴,并向伙伴移动,实现位置优化,最后找到最优解。

1、利用待求解问题的目标函数计算出每一个点的函数值,用以代表点的光亮度;
2、每一个点在其视野范围(圆形区域)内选择亮度更高的伙伴,并向其靠近,实现位置进化;
3、优胜劣汰,将位置不好的解淘汰;
4、进行第二步。

3.基本GSO算法

1、GSO算法寻优的简要思想
荧光素值 :根据目标函数计算的值
感知半径:每一个点能搜索到的范围的半径个体只能在自己的感知范围内寻找优秀个体,当个体在自身搜索范围内寻找到了荧光素值更大的个体,则向该个体移动。

2、所需基本变量和常数
设m为种群规模;N表示待求解问题的维数;t表示当前时刻; l_{i}(t)表示t时刻萤火虫i的荧光素值,当t=0时,荧光素值相等 l_{i}(0)=C。对于萤火虫 i,在N维空间中,其位置向量Xi定义为Xi=(xi1,xi2,....xiN).
萤火虫的感知半径:每只萤火虫都发出一定量的荧光素用来吸引周围的萤火虫个体,并且每只萤火虫都有各自的感知域(搜索范围),感知域的大小由感知半径决定。在此萤火虫i的感知半径为r_{d}^{i} ,感知域范围为:0<=r_{d}^{i}<=r_{s}^{i} ,萤火虫i在自己的感知域内寻找比自己荧光素值更大的个体。

GSO算法的四个阶段

(1)荧光素值更新
萤火虫i在时刻t的荧光素值计算如下:

其中\rho:荧光素衰减因子;\gamma:荧光素更新率;:萤火虫i在时刻t所处位置对应的目标函数值(亮度)。

(2)寻找最亮个体
设定萤火虫i的邻域集为N_{i}(t) ,定义如下:

dij=萤火虫i和j之间的欧氏距离.

若萤火虫i有多个邻居,它会根据荧光素值的概率比例从邻域集中随机选择一个邻居,i朝j移动的概率为:

(3)萤火虫位置更新
假设萤火虫i向j移动,移动之后的i要进行位置更新:
S: 移动的步长;δ:预先设定的距离阈值。
(4)感知半径更新
感知半径的大小会受到邻域内个体数量的影响,邻 域内萤火虫密度越小,它的感知半径会加大,以便 找到更多邻居;反之,它的感知半径会缩小。位置 改变之后,它的感知半径随之改变,更新公式如下: 其中\beta:恒定参数;nt:具体的阈值参数,用来控制在时刻t萤火虫i 的邻域集中萤火虫个体数目。
 

GSO算法流程为:

(1)初始化各个参数;
(2)随机初始化m只萤火虫在目标函数搜索范围内的位置X(0);
(3)计算荧光素值:
(4)for i in range(m):
1)萤火虫i在其感知半径 r_{d}^{i}内,选择荧光素值比自己高的个 体组成其邻域集 N_{i}(t)
2)计算萤火虫i向j移动的概率:
3)用轮盘赌的方法选择j并使i向其移动,更新i的位置:
5)判断算法是否达到指定代数,如果未达到转向步骤3),如果达到转向步6)。
6)输出结果,程序结束。

4.FA算法

(1)萤火虫的亮度
萤火虫的发光亮度如下定义:(I~1/r^2)
I0:萤火虫的最大亮度;
rij:萤火虫i和j之间的距离(定义为欧氏距离);
γ:给定传播媒介的光吸收系数。
(2)萤火虫的吸引度
萤火虫的吸引度如下定义: (β~I~1/r^2)
β0:最大吸引度
(3)萤火虫位置更新
萤火虫i被j吸引之后,朝着j移动,所以要更新i的 位置如下:
简单算法流程:
当t<gen时
1)for i=1 to m
for j=1 to m
计算i和j之间的发光亮度I
萤火虫i从其余m-1只萤火虫中找出亮度最大的萤火虫j,如果j的
亮度大于i的亮度,则i被吸引朝着j移动。用移动公式计算i的新位置,
并计算新位置的目标函数值。如果新位置的目标函数值大于旧位置,
就用新位置代替旧位置,反之仍然处在旧位置。
2)依据目标函数值对m只萤火虫进行排序,找到当前最优解,如果
当前最优解比g*还要好,就将其赋值给g*,否则g*不变。
当t>gen时
输出g*,算法结束。
 
 
 
 

 

  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值