群体智能优化算法之萤火虫群优化算法(Glowworm Swarm Optimization,GSO)

在这里插入图片描述

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

第七章 萤火虫群优化算法

7.1 介绍

萤火虫(Glowworms)是一群能发光的昆虫,也被称为闪电虫,它们使用一种叫做生物发光(bioluminescence)的过程来发光。然而,已经发现了许多具有类似发光行为的生物,如水母、某些细菌、原生动物、水生动物等,事实上,大约80%到90%的海洋生物是由发光生物组成的。萤火虫流行的原因是它们很容易被发现且数量巨大。

看到萤火虫在夏夜忽明忽暗地眨眼,要比看到它们的群体行为容易得多,大量的萤火虫聚集在一起形成一个群体,同时发出闪光,在目睹了这些美丽的景象之后,人们不禁想知道萤火虫这种发光和聚集行为的“原理”和“原因”。这种发光行为的原因是为了吸引它们不知情的猎物进入陷阱,并吸引配偶进行繁殖。在繁殖过程中,既可以观察到个体的求偶也可以观察到群体的交配。
萤火虫的生命周期从卵开始,然后从卵变成蛹,蛹变成幼虫,幼虫变成成虫,萤火虫只需要几周的时间就可以成年,因此,以保留物种为目标,寻找交配对象进行繁殖是当务之急。

7.1.1 闪光模式

随着进化,萤火虫已经进化到可以通过多种方式控制光的发射,从而产生不同的交配信号。它们通过改变如下参数来产生不同的信号:

  • 发光的颜色;
  • 发光的亮度;
  • 雄性闪光和雌性闪光-相位差;
  • 每次闪光持续时间;
  • 每周期闪光次数;
  • 闪光时间;
  • 连续发光或闪光脉冲序列。

Kaipa和Ghose (2017)用不同的例子来描述这些闪光模式,例如使用Lampyrus萤火虫,一种在欧洲常见的萤火虫,只有雌性才有发光的能力。她在草地上扭动着身体,把光线从一个方向扫到另一个方向,以吸引四处游荡的雄性萤火虫的注意。对于Lamprophorustenebrosus萤火虫,雄性和雌性都具有发光能力,但雌性没有翅膀,其类似于Lampyrus,利用光线吸引配偶。在一些物种中,雌性使用不同的模式,如长闪光发光,在间隔时间内并不完全熄灭。当雄性在10英尺远的地方能感觉到这种模式时,它们就会飞向雌性。这些闪光模式是物种特有的,例如在Photinus这一类萤火虫中,雄性通过在地面上爬行开始交配,发出各种各样的光,并观察附近雌性的反应信号。在Photinus consanguineus中,雄萤火虫发出两道闪光,雄萤火虫停顿一下,接着又发出两道闪光,它重复这个模式。在雄性发出第二次闪光后,雌性会在一秒钟内做出回应。在Photinus castus中,雄萤火虫发出长长的闪光,雌萤火虫立即做出回应。尽管P. consanguineus和P. castus的结构非常类似,但根据它们发光的模式不同,它们被认为是不同的物种。尽管它们经常一起飞行,但是不会出现杂交的情况,但根据它们发光的模式不同,它们被认为是不同的物种,但它们经常一起飞行。

7.1.2 群体交配

上面提到的物种有一个共同点,不管是雄性还是雌性,不管是谁在吸引另一个,都需要一个不间断的视线,这样他们才能感知到信号并做出回应。在一些视觉杂乱的地区,比如东南亚的红树林沼泽,要获得如此不间断的视线并不容易。因此,在这些地区发现的物种没有选择个体求偶。这里的萤火虫而是在树上或洞穴里成群结队,因为这样游走的萤火虫就很容易找到交配对象。如果最初没有群体,那么通过相互的光吸引,萤火虫可能会形成一个核团。在形成这些群体的过程中存在着竞争,这就导致了不止一个更大的群体,而这些更大的群体会进一步吸引附近更小的核,因为它们的平均光发射量更高,这意味着找到配偶的可能性更高。

7.2 萤火虫群优化算法

针对萤火虫和萤火虫群的行为,Krishnanand和Ghose(2005)[1]提出了萤火虫群优化算法(Glowworm Swarm Optimization,GSO),并使用于诸多应用。最初,GSO的开发目标是提供数值优化问题的解决方案,而不是确定全局最优,但是由于GSO的分散决策和移动协议,它在机器人等领域做出了更多的贡献。

最初受萤火虫启发,GSO在随机搜索空间中随机分布一组或一群代理,代理间通过其他行为机制相互影响,而这些机制在其自然界中的对应物中是不存在的。算法的基本工作基于以下三种机制:

  1. 适应度广播
    萤火虫有一种叫做荧光素(luciferin)的色素,可以使萤火虫发光。萤火虫体内荧光素的含量决定了它们在目标空间中的位置的适应度。
  2. 正趋性
    萤火虫被比自己亮的邻居吸引,因此开始向它移动。当有多个这样的邻居时,它利用概率机制来选择一个。
  3. 自适应邻域
    每个萤火虫利用一个自适应邻域来识别邻居,该邻域由一个具有可变范围rdi的局部决策域定义,该域的边界是一个硬限制的感知范围rs(0<rdi<rs)。这里可以使用一种合适的启发式方法来调节rdi。萤火虫的运动完全依赖于局部信息,每个萤火虫都会选择一个邻居,这个邻居的荧光素值大于它自己的荧光素值,然后向它靠近。这些运动建立在可用的局部信息和选择性的邻居交互的基础上,使得萤火虫群能够聚集成不相交的子群,朝着给定多峰函数的多个最优值移动并在其上相遇。

7.2.1 算法

虽然该算法被解释为寻找多峰函数的多个最优解,但可以通过简单修改用于最小化问题。最初,GSO将萤火虫随机地放置在搜索空间中,使它们分布得很好。初始时,每只萤火虫体内的荧光素含量为零。该算法的单位周期包括荧光素更新阶段、移动阶段和邻域范围更新阶段,如图1所示。

在这里插入图片描述

图1 GSO算法流程

以下为GSO算法的伪代码:

Begin
	设置维数=d
	设置萤火虫数量=g
	设步长=n
	设xi(t)为萤火虫i在时间t的位置
	for i=1 to g do Li(0)=L0
	rd=r0
	设置最大迭代次数=iter max
	设置t=1
	设置邻域阈值nt
	While(t<=iter max)
		for 每一个萤火虫i
			//更新荧光素,J(xi(t))表示萤火虫i在t时刻所在位置的目标函数值
			Li(t)=(1-ρ)Li(t-1)+γJ(xi(t))
		end
		for 每一个萤火虫i
			for 每一个萤火虫j
				//寻找萤火虫的邻居
				Ni(t)={j:||xj(t)xi(t)||<rdi(t)Li(t)<Lj(t)}
			end
			for 每一个萤火虫j∈Ni(t)
				//轮盘赌选择移动的方向
				pij(t)=[Lj(t)-Li(t)]/{sumk∈Ni(t)[Lk(t)-Li(t)]}
			end
			j=max pij(t)
			//移动,更新位置
			xi(t+1)=xi(t)+n*(xj(t)-xi(t))/(||xj(t)-xi(t)||)
			rdi(t+1)=min{rs,max{0,rdi(t)+β(nt-|Ni(t)|)}}
		end
		t=t+1
	end
end

7.3 GSO算法的数学证明

参见原文[1]。

参考文献

  1. Krishnanand, K.N. and D. Ghose. Detection of multiple source locations using a glowworm metaphor with applications to collective robotics. in Proceedings 2005 IEEE Swarm Intelligence Symposium, 2005. SIS 2005. 2005.
发布了42 篇原创文章 · 获赞 56 · 访问量 5741

猜你喜欢

转载自blog.csdn.net/hba646333407/article/details/103080327