- 融合动态概率阈值和自适应变异的鲸鱼优化算法
- 1.鲸鱼优化算法
- 2. 改进鲸鱼优化算法
- 2.1 Fuch混沌反向学习策略初始种群
- 2.2 动态调整概率阈值
- 2.3 可变权重策略
- 2.4自适应变异策略
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
摘要:针对基本鲸鱼优化算法在非线性优化问题中存在的收敛精度低、易陷入局部最优解的问题,提出一种融合动态概率阈值和自适应变异的鲸鱼优化算法.首先,利用 Fuch混沌和反向学习生成均匀的初始种群;其次,设计基于双曲余弦函数的动态调整概率阈值以协调算法全局搜索与局部开采能力,采用可变权重对鲸鱼位置更新公式修正,提高收敛速度和精度;最后,对鲸鱼精英个体引入自适应变异策略,以避免算法陷入局部最优解而搜索停滞。 1.鲸鱼优化算法
基础鲸鱼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107559167
2. 改进鲸鱼优化算法 2.1 Fuch混沌反向学习策略初始种群WOA算法采用随机方法初始种群个体, 使得 种群初始分布不均匀, 容易导致算法陷入局部最优. 研究结果表明, 采用混沌初始化和方向学习初始化 种群均可生成多样性较好的初始可行解. 混沌映射 所具有随机性、遍历性等优点, 能够保持种群多样 性. 反向学习通过搜索反向解和当前解可以获得较 好的初始种群, 进而提高收玫速度. 因此, 本文利用 这两种初始化方法优点, 提出了基于 Fuch 混沌
[
10
]
{ }^{[10]}
[10] 和反向学习的种群初始化策略, 其中, Fuch 混沌映 射数学表达式如下:
s
k
+
1
=
cos
(
1
/
s
k
2
)
,
s
k
≠
0
,
s
∈
Z
+
,
k
=
1
,
2
,
⋯
,
K
max
(10)
s_{k+1}=cos left(1 / s_{k}^{2}right), s_{k} neq 0, s in Z^{+}, k=1,2, cdots, K_{max } tag{10}
sk+1=cos(1/sk2),sk=0,s∈Z+,k=1,2,⋯,Kmax(10)
式中, k k k 为迭代次数; K max K_{max } Kmax 是混沌迭代最大次数.
2.2 动态调整概率阈值鲸鱼优化算法在气泡网攻击猎物(开采阶段), 采用固定的概率阈值
0.5
0.5
0.5, 通过在
[
0
,
1
]
[0,1]
[0,1] 之间生成的 值与概率阈值比较, 选择收缩包围或螺旋更新位置 受食行为. 这种等概率机制选择方式并末考虑算法 迭代过程种群多样性变化, 使得算法可能在迭代前 期收敛速度慢, 迭代后期陷入局部最优. 因此, 本文 引入基于双曲余弦规律变化的自适应调整选择概率 阈值策略, 使得鲸鱼个体在不同搜索期有较大概率 选择到适合当前种群多样性变化的受食行为, 以协 调算法全局探索和局部开发的能力, 提高算法收玫 精度, 数学表达式为:
a
t
h
=
{
γ
(
2.2
−
0.2
(
cosh
(
π
t
/
T
)
)
β
,
t
⩽
T
max
2
γ
(
cosh
(
π
t
/
T
)
)
β
−
0.02
,
t
>
T
max
2
(11)
a t h=left{begin{array}{l} gammaleft(2.2-0.2(cosh (pi t / T))^{beta}, t leqslant frac{T_{max }}{2}right. \ frac{gamma}{(cosh (pi t / T))^{beta}}-0.02, t>frac{T_{max }}{2} end{array}right.tag{11}
ath={γ(2.2−0.2(cosh(πt/T))β,t⩽2Tmax(cosh(πt/T))βγ−0.02,t>2Tmax(11)
式中,
β
∈
[
2
,
2.5
]
;
γ
∈
[
0
,
0.5
]
beta in[2,2.5] ; gamma in[0,0.5]
β∈[2,2.5];γ∈[0,0.5] 分别为调节因子;
t
t
t 为当前的迭代次数;
T
max
T_{max }
Tmax 为最大迭代次数.
综上分析, 可将式 (7) 修改为:
X
(
t
+
1
)
=
{
X
∗
(
t
)
−
A
⋅
D
,
if
p
⩽
a
t
h
D
⋅
e
i
x
⋅
cos
(
2
π
l
)
+
X
∗
(
t
)
,
if
p
>
a
t
h
(12)
begin{aligned} &X(t+1)= left{begin{array}{l} X^{*}(t)-A cdot D, quad text { if } p leqslant a t h \ D cdot e^{i x} cdot cos (2 pi l)+X^{*}(t), text { if } p>a t h end{array}right. end{aligned}tag{12}
X(t+1)={X∗(t)−A⋅D, if p⩽athD⋅eix⋅cos(2πl)+X∗(t), if p>ath(12)
由式(2)和式(6)可以看出,在每次迭代中,产生新的个体位置仅决定于当前目标个体位置和全局最优个体位置.因此,容易导致算法陷入局部最优.针对这一问题,本文受粒子群算法启发,本文设计可变权重,动态修改当前最优解位置,即在鲸鱼个体在搜索初期,采用较大权重对当前最优解位置进行扰动,扩充搜索领域,以更大概率靠近最优位置,在迭代后期以较小权重扰动当前最优位置,达到最优解领域精细搜索和快速收敛的目的.式(13)给出了权重计算公式:
w
i
(
t
)
=
{
w
a
v
g
−
(
w
a
v
g
−
w
min
)
(
ln
f
(
t
)
a
v
g
−
ln
f
(
t
)
i
)
ln
f
(
t
)
a
v
g
−
ln
f
(
t
)
min
,
if
f
(
t
)
i
<
f
(
t
)
a
v
g
−
0.5
(
1
+
cos
(
t
2
T
max
2
)
)
+
0.5
(
ln
f
(
t
)
i
−
ln
f
(
t
)
a
v
g
−
)
ln
f
(
t
)
a
v
g
−
ln
f
(
t
)
a
v
g
−
,
if
f
(
t
)
a
v
g
⩽
f
(
t
)
i
⩽
f
(
t
)
a
v
g
+
w
a
v
g
+
(
w
max
−
w
a
v
g
)
(
ln
f
(
t
)
i
−
ln
f
(
t
)
a
v
g
+
)
ln
f
(
t
)
max
−
ln
f
(
t
)
a
v
g
,
if
f
(
t
)
i
>
f
(
t
)
a
v
g
+
(13)
begin{aligned} &w_{i}(t)= begin{cases} &w_{a v g}-left(w_{a v g}-w_{min }right) frac{left(ln f(t)_{a v g}-ln f(t)_{i}right)}{ln f(t)_{a v g}-ln f(t)_{min }}, &text { if } f(t)_{i}
式中,
f
(
t
)
max
、
f
(
t
)
min
f(t)_{text {max }} 、 f(t)_{text {min }}
f(t)max 、f(t)min 和
f
(
t
)
a
v
g
f(t)_{a v g}
f(t)avg 分别是当代种群个 体适应度函数的最大值; 最小值和平均值;
f
(
t
)
a
v
g
−
f(t)_{a v g-}
f(t)avg− 为当代所有比
f
(
t
)
a
v
g
f(t)_{a v g}
f(t)avg 小的鲸鱼个体适应度函数平 均值;
f
(
t
)
a
v
g
−
f(t)_{a v g-}
f(t)avg− 为当代所有比
f
(
t
)
a
v
g
f(t)_{a v g}
f(t)avg 大的鲸鱼个体 适应度函数平均值;
f
(
t
)
i
f(t)_{i}
f(t)i 为第
t
t
t 代第
i
i
i 个鲸鱼个体 的适应度函数值. 结合上述分析, 本文将改进的位置 更新公式定义为:
X
(
t
+
1
)
=
w
(
t
)
i
X
∗
(
t
)
−
A
⋅
D
,
if
p
⩽
a
t
h
(14)
X(t+1)=w(t)_{i} X^{*}(t)-A cdot D, text { if } p leqslant a t h \ tag{14}
X(t+1)=w(t)iX∗(t)−A⋅D, if p⩽ath(14)
X ( t + 1 ) = D ⋅ e k ⋅ cos ( 2 π l ) + w ( t ) i X ∗ ( t ) , if p > a t h (15) X(t+1)=D cdot e^{k} cdot cos (2 pi l)+w(t)_{i} X^{*}(t),text { if } p>a t h tag{15} X(t+1)=D⋅ek⋅cos(2πl)+w(t)iX∗(t), if p>ath(15)
2.4自适应变异策略在 WOA 算法的迭代后期, 由于群体中所有鲸 鱼个体均依据式 (6) 向最优个体移动, 逐渐聚集于当 前最优解领域, 致使群体多样性损失, 则 WOA 算法 易陷入局部最优而搜索停滞. 为了降低算法早熟收 玫和陷入局部最优的概率, 本文提出了一种随迭代 次数动态调整的柯西与高斯混合变异机制, 对当前 种群中适应度值最好的前
S
mathrm{S}
S 个最优个体进行自适应 变异操作, 并从变异前后的精英个体中选择最优个 体进入下一次迭代, 其具体表达式如下:
u
k
,
j
(
t
+
1
)
=
x
k
,
j
∗
(
t
)
(
1
+
λ
1
cauch
y
(
0
,
σ
2
)
+
λ
2
Gauss
(
0
,
σ
2
)
)
(16)
u_{k, j}(t+1)=x_{k, j}^{*}(t)left(1+lambda_{1} text { cauch } yleft(0, sigma^{2}right)+right.left.lambda_{2} operatorname{Gauss}left(0, sigma^{2}right)right)tag{16}
uk,j(t+1)=xk,j∗(t)(1+λ1 cauch y(0,σ2)+λ2Gauss(0,σ2))(16)
式中,
x
k
,
j
∗
x_{k, j}^{*}
xk,j∗ 为第
k
∈
[
1
,
S
]
k in[1, S]
k∈[1,S] 个最优个体在第
t
t
t 代时第
j
j
j 维空间位置; cauch
y
(
0
,
σ
2
)
yleft(0, sigma^{2}right)
y(0,σ2) 为满足柯西分布的随机 变量; gauss
(
0
,
σ
2
)
left(0, sigma^{2}right)
(0,σ2) 为满足高斯分布的随机变量;
u
k
,
j
(
t
+
1
)
u_{k, j}(t+1)
uk,j(t+1) 表示变异后位置;
λ
1
=
1
−
t
5
/
T
5
,
λ
2
=
lambda_{1}=1-t^{5} / T^{5}, lambda_{2}=
λ1=1−t5/T5,λ2=
t
5
/
T
5
t^{5} / T^{5}
t5/T5 为动态调整参数; 标准差
σ
sigma
σ 取值为:
σ
=
{
1
,
if
f
(
X
k
∗
)
<
f
(
X
l
∗
)
,
k
,
l
∈
[
1
,
S
]
,
k
≠
l
exp
(
f
(
X
k
∗
)
−
f
(
X
l
∗
)
∣
f
(
X
k
∗
)
∣
+
η
)
,
otherwise
,
(17)
sigma=left{begin{array}{l} 1, text { if } fleft(X_{k}^{*}right)
算法流程:
Step1 : 设置种群规模 N N N, 维度 D D D, 迭代次数最大 次数 T max T_{text {max }} Tmax , 迭代次数初值 t = 1 t=1 t=1;
Step2 : 利用 Fuch 混沌反向学习策略生成初始 鲸鱼种群, 并计算群体中每个个体的适应度值,记录 当前最优鲸鱼个体位置
X
(
t
)
∗
X(t)^{*}
X(t)∗,根据式 (5) 计算
a
a
a 的 值, 依次更新参数
A
,
C
A, C
A,C.
Step3 : 根据式 (11) 计算动态概率阈值 ath.
Step4 : 如果
∣
A
∣
⩾
1
|A| geqslant 1
∣A∣⩾1, 依据式 (9) 更新当前鲸鱼 个体位置, 否则, 如果
p
⩽
a
t
h
p leqslant a t h
p⩽ath, 按照式 (12) 更新当 前每个鲸鱼个体位置, 否则, 依据式 (15) 更新当前 每个鲸鱼个体位置,计算当前所有鲸鱼个体的适应 度值, 进行排序, 更新当 前最优鲸 鱼个体位置
X
(
t
)
∗
X(t)^{*}
X(t)∗.
Step 5 : 在当前种群中选择适应度值最好的前 S S S 个精英个体,依据式 (16) 对精英个体实施自适应 变异.
Step6 : 对变异前后的精英个体适应度值进行比 较,采取贪婪选择策略,选取适应度值更优的精英个 体进入下一次迭代;
Step
7
:
t
=
t
+
1
7: t=t+1
7:t=t+1, 若
t
<
T
max
t [1]毕孝儒,牟琦,龚尚福.融合动态概率阈值和自适应变异的鲸鱼优化算法[J].微电子学与计算机,2019,36(12):78-83+88.



