第五十一弹——天牛群优化算法&&三杆桁架优化设计问题
引言
本期为大家介绍天牛群优化算法(Beetle Swarm Optimization Algorithm,BSO)。该算法由中国海洋大学的Tiantian Wang等人与2019年提出,主要通过将个体拓展为团体的方式对天牛须算法进行改编,以此提升算法的优化性能。
天牛群优化算法
在自然界中,大多数昆虫有一个不断变化的化学感觉系统,可以感知各种环境刺激并指导它们的行为。昆虫的触角是重要的化学受体,主要用来提供嗅觉和触觉,有些甚至具有听觉功能。它们可以帮助昆虫交流、寻找异性、寻找食物和选择产卵地点:
想必大家在生活中都见过天牛,我觉得可以这样形容他:白点长须翩翩舞,梭身黑甲踩不烂。小时候路旁的树上有很多洞洞,我一度以为是战争时期打到树上的弹孔。。。后来才知道是天牛干的,当时也就产生了一个疑问:你住在树里干嘛要长这么长的须子?
其实它的天线有两个基本功能:一是探测周围环境。例如,当遇到障碍物时,触角可以感知其大小、形状和硬度。二是通过摆动身体的天线来捕捉食物的气味或寻找潜在的伴侣。当在天线的一侧检测到较高浓度的气味时,天牛将朝同一方向旋转,否则它将转向另一侧。根据这个简单的原理,它们可以有效地找到食物。
下面来说一下算法的正文部分。作者考虑到初始位置的选择极大地影响优化的效率和有效性,所以对原有的天牛须算法进行相应改编:
首先作者将其所有的天牛分为几个小组,在后面的更新中会涉及到组间的交流。天牛的位置更新方式为:
其中i 为个体编号,s 为当前维度,k 为当前迭代次数。 \lambda 为一常数,\xi 表示天牛位置移动的增加度:
这里 \delta 为步长,后面有两个Xrs,我认为作者是笔误了,应该是Xls、Xrs:
Xls、Xrs分别表示天牛左须和右须的引导位置,d= \delta /c2。结合粒子群优化算法的思想,BSO算法中的个体速度更新方式为:
没错,就鸡儿一模一样。式中c1=0.95、c2=5,r1、r2 均为[0,1]内的随机数,Pis 为最优个体位置,Pgs 为当前小组g 中的最优个体位置。注意,原文中并没有提到速度的限制,所以在测试时我仿照粒子群优化算法设为搜索空间的0.4倍。惯性权值 \omega 采取线性更新:
这里 wmax=0.9,wmin=0.4,K 为最大迭代次数。如此一来算法在迭代初期能搜索到更大的范围,并尽快找到最优解区域。随着速度逐渐降低,天牛逐渐进入局部搜索阶段,以获得更准确的最优区域。图3为文中展示的BSO算法对于某一问题在2D、3D空间下的求解过程:
至此,算法迭代伪代码为:
性能测试
本次我们选择三杆桁架设计问题对BSO算法进行测试。三杆桁架设计问题是土木工程领域中的另一个结构优化问题,在该问题中,为了使受应力、挠度和屈曲约束的重量最小,需要对两个杆长进行操作:
其约束条件为:
为进一步展现BSO算法的性能,再选取工字钢优化问题进行对比。这两个问题的描述可以参考上一弹黑寡妇优化算法:
可以看出,BSO算法在求解此类工程优化问题中具有一定的优势。
总结
总体来看,除了左须右须位置部分,其他的模块与粒子群优化算法相似度较高,所以抛开天牛这一概念我们可以认为其就是个增强版粒子群优化算法,不过性能的相对提升还是有目共睹的。