Java教程

智能优化算法:变色龙算法 -附代码

本文主要是介绍智能优化算法:变色龙算法 -附代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

智能优化算法:变色龙算法

文章目录

  • 智能优化算法:变色龙算法
    • 1.算法原理
      • 1.1初始化
      • 1.2 搜索猎物
      • 1.3 变色龙眼睛旋转
      • 1.4 捕获猎物
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab
    • 4.Matlab

摘要:变色龙算法(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​+yt​​i(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​−yt​​i(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

这篇关于智能优化算法:变色龙算法 -附代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!