一、理论基础
Jiang和Li在2017年受到天牛规食及寻偶行为的启发,提出了天牛须搜索算法(Beetle antennae search algorithm, BAS)。天牛在空气中捕获食物及潜在配偶的味道,根据天牛两侧天牛须检测到的气味浓度前进。该算法复杂度低,且不需要知道梯度信息等就能实现优化的目的。
1、算法原理
在寻找食物过程中,天牛幵不知道食物的具体位置,它通过头上的左右两个触角对周围环境中气味的浓度进行捕获。倘若天牛探测到左侧触角感知的浓度更大,便向左侧前进;反之,则向右侧前进。通过这一简单原理,天牛最终能有效的寻找到食物。
该算法用数学模型表示的寻优步骤如下:
(1)天牛在任意位置时,头的朝向都是随机的。在维度
D
D
D中,天牛朝向向量表示并归一化为
b
→
=
r
a
n
d
(
D
,
1
)
∣
r
a
n
d
(
D
,
1
)
∣
(1)
\overrightarrow b=\frac{rand(D,1)}{|rand(D,1)|}\tag{1}
b=∣rand(D,1)∣rand(D,1)(1)
(2)天牛左右须
x
l
e
f
t
x_{left}
xleft、
x
r
i
g
h
t
x_{right}
xright位置可用天牛质心位置
x
m
x^m
xm和两须距离
d
m
d^m
dm表示为
x
r
i
g
h
t
=
x
m
+
d
m
⋅
b
→
x
r
i
g
h
t
=
x
m
−
d
m
⋅
b
→
(2)
\begin{aligned}x_{right}=x^m+d^m\cdot\overrightarrow b\\x_{right}=x^m-d^m\cdot\overrightarrow b\end{aligned}\tag{2}
xright=xm+dm⋅bxright=xm−dm⋅b(2)
(3)依据适应度函数
f
(
x
)
f(x)
f(x)计算天牛两侧触须的气味浓度,即
f
(
x
l
e
f
t
)
f(x_{left})
f(xleft)和
f
(
x
r
i
g
h
t
)
f(x_{right})
f(xright)。为了模仿天牛探测机制,生成以下位置更新迭代模型
x
m
=
x
m
−
1
+
δ
m
⋅
b
→
⋅
s
i
g
n
(
f
(
x
r
i
g
h
t
−
x
l
e
f
t
)
)
(3)
x^m=x^{m-1}+\delta^m\cdot\overrightarrow b\cdot sign(f(x_{right}-x_{left}))\tag{3}
xm=xm−1+δm⋅b⋅sign(f(xright−xleft))(3)其中,
δ
m
\delta^m
δm为
m
m
m时刻(迭代次数)的搜索步长。
(4)天牛步长
δ
\delta
δ与两须距离
d
d
d的更新规则如下,当然,也可以取一个特定的值,依实际情况而定。
d
m
=
d
e
⋅
d
m
−
1
+
0.01
(4)
d^m =d_e\cdot d^{m-1}+0.01\tag{4}
dm=de⋅dm−1+0.01(4)
δ
m
=
δ
e
⋅
δ
m
−
1
(5)
\delta^m =\delta_e\cdot\delta^{m-1}\tag{5}
δm=δe⋅δm−1(5)其中,
d
e
d_e
de和
δ
e
\delta_e
δe分别表示
d
d
d和
δ
\delta
δ的递减因子。
由于算法寻优过程中,仅有单只天牛,并非种群,故而算法所需参数少, 代码简单,计算量也远小于其他算法,复杂度低,但也因此而失去了种群多样性,算法的单一性使得其易陷入局部极值。
2、算法伪代码
二、仿真实验
基本测试函数如表1所示,函数维度均为2。种群规模
N
=
30
N = 30
N=30,最大迭代次数
M
a
x
_
i
t
e
r
=
1000
Max\_iter=1000
Max_iter=1000。
迭代曲线依次显示如下:
三、参考文献
[1] Jiang X, Li S. BAS: Beetle Antennae Search Algorithm for Optimization Problems[J]. International Journal of Robotics and Control, 2017, 1(1).