智能优化算法:变色龙算法 -附代码
作者:互联网
智能优化算法:变色龙算法
文章目录
摘要:变色龙算法(Chameleon Swarm Algorithm,CSA)是于2021年提出的一种新型智能优化算法。主要模拟了变色龙在树木、沙漠和沼泽附近寻找食物时动态行为。具有寻优能力强,收敛速度快,精度高等特点。
1.算法原理
该算法对变色龙寻找食物的行为步骤进行数学建模和实现,其中包括将眼睛旋转近360度进行猎物定位、用高速发射的粘性舌头捕获猎物。
1.1初始化
该算法与其他优化算法一样,在搜索范围内随机初始化。
1.2 搜索猎物
变色龙的搜索猎物的方式可以用下式表示:
y
t
+
1
i
,
j
=
{
y
t
i
,
j
+
p
1
(
P
t
i
,
j
−
G
t
j
)
r
2
+
p
2
(
G
t
j
−
y
t
i
,
j
)
r
1
,
r
i
≥
P
p
y
t
i
,
j
+
μ
(
(
u
j
−
l
j
)
r
3
+
l
b
j
)
s
g
n
(
r
a
n
d
−
0.5
)
,
r
i
<
P
p
(1)
y_{t+1}^{i,j}=\begin{cases} y_t^{i,j}+p_1(P_t^{i,j}-G_t^j)r_2+p_2(G_t^j-y_t^{i,j})r_1,r_i\geq Pp\\ y_t^{i,j}+\mu((u^j-l^j)r_3+l_b^j)sgn(rand-0.5),r_i<Pp \end{cases}\tag{1}
yt+1i,j={yti,j+p1(Pti,j−Gtj)r2+p2(Gtj−yti,j)r1,ri≥Ppyti,j+μ((uj−lj)r3+lbj)sgn(rand−0.5),ri<Pp(1)
式中,
y
∗
(
∗
t
)
、
y
(
t
+
1
)
y*(*t)、y(t+1)
y∗(∗t)、y(t+1)为变色龙
i
i
i 在维度
j
j
j中当前、下一步的位置;
G
G
G为当前最优个体位置;
P
P
P为变色龙
i
i
i 迄今为止的最好位置;
p
1
p_1
p1、
p
2
p_2
p2是控制勘探能力的两个参数;
r
1
r_1
r1、
r
2
r_2
r2、
r
3
r_3
r3,
r
i
r_i
ri均为[0,1]内的随机数,
P
p
=
0.1
Pp=0.1
Pp=0.1表示变色龙感知猎物的概率。
u
、
l
=
l
b
u、l=lb
u、l=lb分别表示第
j
j
j维的上、下限。
s
g
n
(
r
a
n
d
−
0.5
)
sgn(rand-0.5)
sgn(rand−0.5)为1或-1,主要影响勘探和开发方向。
μ
μ
μ的计算方式为:
μ
=
γ
e
(
−
α
t
/
T
)
β
(2)
\mu=\gamma e^{(-\alpha t/T)^\beta} \tag{2}
μ=γe(−αt/T)β(2)
其中
γ
、
α
、
β
γ、α、β
γ、α、β分别为1、3.5、3,
t
t
t 为当前迭代次数,
T
T
T为最大迭代次数。
1.3 变色龙眼睛旋转
此阶段模拟变色龙通过眼睛旋转定位猎物时的位置更新:
y
t
+
1
i
=
y
r
t
i
+
y
t
‾
i
(3)
y_{t+1}^i=yr_t^i+\overline{y_t}^i \tag{3}
yt+1i=yrti+yti(3)
式中
y
‾
\overline{y}
y为变色龙在位置旋转前的各维度平均位置,
y
(
t
+
1
)
y(t+1)
y(t+1)为旋转后的坐标,
y
r
yr
yr为旋转中心坐标:
y
r
t
i
=
m
∗
y
c
t
i
(4)
yr_t^i = m*yc_t^i \tag{4}
yrti=m∗ycti(4)
这里
y
c
yc
yc为定心坐标:
y
c
t
i
=
y
t
i
−
y
t
‾
i
(5)
yc_t^i=y_t^i-\overline{y_t}^i \tag{5}
ycti=yti−yti(5)
m
m
m表示变色龙位置旋转的旋转矩阵:
m
=
R
(
θ
,
V
z
1
⃗
,
V
z
2
⃗
)
(6)
m=R(\theta,\vec{V_{z_1}},\vec{V_{z_2}})\tag{6}
m=R(θ,Vz1
,Vz2
)(6)
其中
V
z
1
⃗
,
V
z
2
⃗
\vec{V_{z_1}},\vec{V_{z_2}}
Vz1
,Vz2
为坐标空间中的两个正交向量,
R
R
R指定义的各轴中的旋转矩阵; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-450pusw8-1643266415535)(https://www.zhihu.com/equation?tex=%5Ctheta)] 是变色龙眼睛的旋转角:
θ
=
r
s
g
n
(
r
a
n
d
−
0.5
)
∗
18
0
o
(7)
\theta = rsgn(rand-0.5)*180^o \tag{7}
θ=rsgn(rand−0.5)∗180o(7)
这里
r
r
r为[0,1]内一随机值,所以这样就可以将角度限定在[-180°,180°]内。
1.4 捕获猎物
变色龙的舌头落向猎物时的速度定义为:
v
t
+
1
i
,
j
=
w
v
t
i
,
j
+
c
1
(
G
t
j
−
y
t
i
,
j
)
r
1
+
c
2
(
P
t
i
,
j
−
y
t
i
,
j
)
r
2
(8)
v_{t+1}^{i,j}=wv_t^{i,j}+c_1(G_t^j-y_t^{i,j})r_1+c_2(P_t^{i,j}-y_t^{i,j})r_2\tag{8}
vt+1i,j=wvti,j+c1(Gtj−yti,j)r1+c2(Pti,j−yti,j)r2(8)
其中
G
G
G为当前最优个体位置;
P
P
P为变色龙迄今为止的最好位置;
c
1
=
c
2
=
1.75
c1=c2=1.75
c1=c2=1.75控制着
G
、
P
G、P
G、P对弹舌速度的影响;
w
w
w的更新方式为:
w
=
(
1
−
t
/
T
)
(
ρ
(
t
/
T
)
)
(9)
w=(1-t/T)^{(\rho \sqrt(t/T))}\tag{9}
w=(1−t/T)(ρ(
t/T))(9)
这里
ρ
=
1
ρ=1
ρ=1是控制开发能力的参数。当变色龙的舌头向猎物投射时,其位置隐含地表示变色龙的位置,可根据第三运动方程计算:
y
t
+
1
i
,
j
=
y
t
i
,
j
+
(
(
v
t
i
,
j
)
2
−
(
v
t
−
1
i
,
j
)
2
)
/
(
2
a
)
(10)
y_{t+1}^{i,j}=y_t^{i,j}+((v_t^{i,j})^2-(v_{t-1}^{i,j})^2)/(2a)\tag{10}
yt+1i,j=yti,j+((vti,j)2−(vt−1i,j)2)/(2a)(10)
式中
a
a
a为弹舌的加速度:
a
=
2590
∗
(
1
−
e
−
l
o
g
(
t
)
)
(11)
a=2590*(1-e^{-log(t)})\tag{11}
a=2590∗(1−e−log(t))(11)
算法伪代码如下:
1: Pp ← 0.1 (the position update probability)
2: r 1 , r 2 , r 3 , r i are random numbers between 0 and 1
3: u and l are the upper and lower bounds of the search area
4: d ← dimension of the problem
5: y i t is the center of the current position of chameleon i at iteration t
6: yr i t is the rotating centered coordinates of chameleon i at iteration t which can be defined using Eq. (4)
7: Randomly initialize the position of a swarm of n chameleons in the search space.
8: Initialize the velocity of dropping chameleons’ tongues
9: Evaluate the position of the chameleons
10: while (t < T) do
11: Define the parameter μ using Eq. (6)
12: Define the inertia weight ω using Eq. (9)
13: Define the acceleration rate a using Eq. (11)
14: for i = 1 to n do
15: for j = 1 to d do
16: do Eq(1)
17: end for
18: end for
19: for i = 1 to n do
20: do Eq(5)
21: end for
22: for i = 1 to n do
23: for j = 1 to d do
24: do Eq(8),(10)
25: end for
26: end for
27:Adjust the chameleons’ positions according to u and l
28:Evaluate the new positions of the chameleons
29:Update the position of the chameleons
30:t=t+1
31:end while
2.实验结果
3.参考文献
[1] Braik M S . Chameleon Swarm Algorithm: A Bio-inspired Optimizer for Solving Engineering Design Problems[J]. Expert Systems with Applications, 2021, 174(1):114685.
4.Matlab
for Solving Engineering Design Problems[J]. Expert Systems with Applications, 2021, 174(1):114685.
4.Matlab
标签:do,猎物,代码,0.5,算法,tag,变色龙 来源: https://blog.csdn.net/u011835903/article/details/122717804