智能优化算法:天牛须搜索算法

往期内容:

智能优化算法(一):海鸥算法原理及Matlab代码
智能优化算法(二):海鸥算法之改进篇
智能优化算法(三):基于量子的鸽群优化算法
智能优化算法(四):基于Powell优化的鸽群优化算法

一、前言

       天牛须算法 (Beetle Antennae search algorithm, BAS) 是由Jiang等于2017年提出的一种智能优化算法,与其他仿生类算法不同,天牛须算法是一种单体搜索算法,具有原理简单、参数少、计算量少等优点,在处理低维优化目标时具有非常大的优势,例如:时间复杂度低、搜索能力较强,用李佳琪的话就是:“Oh,My God!用它,用它,用它”。
       原文链接:https://download.****.net/download/qq_38643813/13150658不要积分,免费下载!

二、算法简介

智能优化算法:天牛须搜索算法
       天牛须搜索算法模仿自然界中天牛觅食行为。在天牛觅食过程中,食物会产生特殊气味,吸引天牛向着食物前进。天牛通过其两只触角对空气中的食物气味进行感知,且根据食物距离两只触角的距离远近不同,两只触角所感知的气味浓度也有所差异。当食物处于天牛左侧时,左侧触角感知的气味浓度强于右侧触角感知的气味浓度,天牛根据两只触角所感知的浓度差,向着浓度强的一侧随机前进。通过一次次迭代,最终找到食物的位置。
智能优化算法:天牛须搜索算法

三、算法原理

3.1 算法模型

       BAS算法主要是通过在不停的左右触角气味浓度比对中前进,同其他算法相比,原理十分简单。
       在进行两只触角气味浓度计算之前,需要对其进行一系列准备工作,在 D D D维空间中天牛的位置为 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,... ,x_n) X=(x1,x2,...,xn),天牛左右两只触角的位置被定义为如下公式所示模型:
{ X r = X + l ∗ d ⃗ X l = X − l ∗ d ⃗ \left\{ \begin{array}{l} {X_r} = X + l * \vec d\\ {X_l} = X - l * \vec d \end{array} \right. {Xr=X+ld Xl=Xld 上式中, l l l表示天牛质心与触须的距离; d ⃗ \vec d d 表示随即单位向量,需对其进行归一化操作: d ⃗ = r a n d s ( D , 1 ) ∥ r a n d s ( D , 1 ) ∥ 2 \vec d = \frac{{rands(D,1)}}{{{{\left\| {rands(D,1)} \right\|}_2}}} d =rands(D,1)2rands(D,1)根据左右两根触角感知的气味浓度差进行对比,判断天牛下一步的位置: X t + 1 = X t + δ t ∗ d ⃗ ∗ s i g n [ f ( X r ) − f ( X l ) ] {X_{t + 1}} = {X_t} + {\delta _t} * \vec d * sign\left[ {f\left( {{X_r}} \right) - f\left( {{X_l}} \right)} \right] Xt+1=Xt+δtd sign[f(Xr)f(Xl)]式中, t t t表示当前的迭代次数; f ( . ) f(.) f(.)表示适应度函数; δ t \delta _t δt表示第 t t t次迭代时的探索步长, s i g n ( . ) sign(.) sign(.)函数为符号函数,各个变量的具体定义为: δ t + 1 = δ t ∗ e t a {\delta _{t + 1}} = {\delta _t} * eta δt+1=δteta
智能优化算法:天牛须搜索算法
       到这里,天牛须算法的原理基本就介绍完毕了,是不是非常简单?需要注意的是,在处理不同的优化目标时公式3的 + + +不是固定的,根据优化的目标为最大值或者最小值,适当对其进行改变。

3.2 算法流程

输入:种群数量、解空间维度、最大迭代次数、初始步长;
输出:极值点g_best;
Step1:初始化步长衰减因子、狩猎空间,位置信息X
Step2:根据公式(2)进行归一化处理;
Step3:根据公式(1)确定天牛的左须与右须位置;
Step4:根据公式(3)更新天牛的位置
Step5 :计算天牛位置的适应度函数值并存储,更新步长;
Step6 :判断是否达到迭代终止条件,若是则输出全局最优解,否则跳转至Step2

总结

       到目前为止,天牛须算法的应用已经比较广泛了。目前,在路径规划、图像处理、PID参数整定、组合优化、任务分配等方面已经开始被使用。
       但是,BAS算法也存在一些缺点,收敛速度慢、在处理多维复杂问题时,往往会出现搜索失败的情况!换句话说,在多维问题(4维以上),BAS算法不具备良好的优化能力!
       那是否就不能将BAS算法用于多维复杂问题的处理呢?当然可以!下一期,我们来详细谈一下,如何对BAS算法进行改进,解决其在多维复杂问题处理时表现出的缺陷。

Matlab代码链接:https://mianbaoduo.com/o/bread/YZWUkppr

原创不易,请各位看官支持一下点个赞吧!拜谢