基础鲸鱼算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107559167
WOA 通常采用随机化生成初始种群策略, 但会 使初始化种群个体分布不均, 导致种群多样性较差。 已有研究
[
10
]
{ }^{[10]}
[10] 表明, 初始种群可直接影响算法的收玫 精度和收玫速度, 且种群多样性差的算法的整体性 能不佳。由于混沌序列具有随机性、遍历性好等特 点, 因此将初始种群混沌化, 可以很好地维持种群的 多样性。张强 等
[
11
]
{ }^{[11]}
[11] 已经证明反向学习初始化可以很 好地得到初始解, 因此本文利用反向学习和混沌化 2 个初始化方法的优点, 采用 Tent 混沌映射初始化种 群, 然后对已混沌化的种群进行反向学习, 最后进行 合并选优。Tent 映射公式
[
12
]
{ }^{[12]}
[12] 为
Y
(
t
+
1
)
=
{
2
Y
(
t
)
,
0
⩽
Y
(
t
)
⩽
1
2
;
2
(
1
−
Y
(
t
)
)
,
1
2
<
Y
(
t
)
⩽
1
(9)
\boldsymbol{Y}_{(t+1)}=\left\{
将混沌序列映射到原来的解空间得到混沌初始 化种群, 对其进行反向学习, 模型为
O
Y
(
t
)
=
Y
min
(
t
)
+
Y
max
(
t
)
−
Y
(
t
)
。
\boldsymbol{O}_{\boldsymbol{Y}_{(t)}}=\boldsymbol{Y}_{\min (t)}+\boldsymbol{Y}_{\max (t)}-\boldsymbol{Y}_{(t) 。}
OY(t)=Ymin(t)+Ymax(t)−Y(t)。
式中:
Y
min
(
t
)
\boldsymbol{Y}_{\min (t)}
Ymin(t) 和
Y
max
(
t
)
\boldsymbol{Y}_{\max (t)}
Ymax(t) 分别为个体的下界和上界。
将混沌种群和混沌反向学习种群合并, 计算各 自的目标函数值, 选择其中最优的
N
N
N 个个体作为新 的初始种群。
标准 WOA 中, 全局寻优和局部探索性能主要 取决于系数向量
A
\boldsymbol{A}
A, 由式 (3) 和式 (5) 可知,
A
\boldsymbol{A}
A 随着
a
\boldsymbol{a}
a 的变化而变化,而
a
a
a 随着迭代次数的增加线性递减, 导致算法整体寻优能力降低。因此, 在维持收玫因 子递减趋势的情况下, 本文提出了一种收玫因子非 线性变化策略, 表达式为
a
=
2
1
+
u
e
T
/
T
max
−
1
(11)
a=\frac{2}{1+u \mathrm{e}^{T / T_{\max }-1}} \tag{11}
a=1+ueT/Tmax−12(11)
式中:
T
T
T 为当前迭代次数;
u
u
u 为控制常数, 本文取 2 ;
T
max
T_{\max }
Tmax 为最大迭代次数。在搜索前期, 收玫因子以较慢 的速率递减; 而在搜索后期, 收玫因子以较快的速率 递减,加速收玫。
虽然非线性收玫因子在一定程度上可提升算法 性能, 但当涉及全局寻优和局部探索性能时, 该策略 却无法平衡两者。因此, 本文引入一种自适应权重 策略协调收玫因子进行全局寻优和局部探索性能平 衡, 权重公式为
W
(
t
)
=
e
T
/
T
max
−
1
(12)
W(t)=\mathrm{e}^{T / T_{\max }-1} \tag{12}
W(t)=eT/Tmax−1(12)
当前个体的位置更新和螺旋位置更新公式分别为
X
(
t
+
1
)
=
W
(
t
)
X
∗
(
t
)
−
A
D
(13)
\boldsymbol{X}(t+1)=W(t) \boldsymbol{X}^{*}(t)-\boldsymbol{A D} \tag{13}
X(t+1)=W(t)X∗(t)−AD(13)
$$
\boldsymbol{X}(t+1)=\boldsymbol{D} \mathrm{e}^{b l} \cos (2 \pi l)+(1-W(t)) \boldsymbol{X}^{*}(t), \tag{14}
$$
X ( t + 1 ) = W ( t ) X rand ( t ) − A D (15) \boldsymbol{X}(t+1)=W(t) \boldsymbol{X}_{\text {rand }}(t)-\boldsymbol{A D} \tag{15} X(t+1)=W(t)Xrand (t)−AD(15)
单纯形法是代数拓扑中的概念,通过反射、扩张、收缩等几何变换寻求问题的最优解。每一 次操作,都会用一个更好的解替换当前的最差解。
单纯形法步骤如下:
以最优化问题
min
X
∈
R
f
(
X
)
\min _{\boldsymbol{X} \in \mathrm{R}} f(\boldsymbol{X})
minX∈Rf(X) 为例, 计算最优点
g
g
g 、最差点
w
w
w 、次优点
b
b
b 的函数值, 根据最优点和最差 点计算中点位置
c
c
c, 基本操作如下。
1)反射操作
计算反射点
r
=
c
+
α
(
c
−
w
)
r=c+\alpha(c-w)
r=c+α(c−w), 其中
α
\alpha
α 为反射系 数, 本文取 1 。
2)扩展操作
如果
w
>
c
w>c
w>c, 则计算扩张点
e
=
c
+
γ
(
r
−
c
)
e=c+\gamma(r-c)
e=c+γ(r−c), 其 中
γ
\gamma
γ 为扩展系数,本文取 2 。如果
e
>
g
e>g
e>g, 则用扩张点代
替最差点, 否则用反射点替代最差点。
3) 压缩操作
如果
g
>
r
g>r
g>r, 说明反射方向有误, 进行向内压缩操 作
t
=
c
+
β
(
w
−
c
)
t=c+\beta(w-c)
t=c+β(w−c), 其中
β
\beta
β 为压缩系数, 本文取
0.5
0.5
0.5 。 如果
t
>
w
t>w
t>w, 则用压缩点替代最差点。如果
w
<
r
<
g
w
因此, 反射操作能使最差点搜索所有可行解; 扩张 操作能使最优值点向距最差点更远的反方向搜索。如 果当前最优值点为极值点, 扩张操作能使该点跳出局 部极小值处; 收缩操作则能使较差点收缩到更好的位 置, 提高算法的局部搜索能力和寻优能力。
对标准 WOA 进行以上策略改进后, 得到的 CSWOA 伪代码如下:
设置种群规模 N N N, 利用所描述的混沌反向学 习方法产生初始化鲸鱼种群;
计算每个个体的适应度值, 并记录当前最优 个体及位置;
while
(
t
<
t
max
)
\left(t
for i = 1 i=1 i=1 to N N N do
根据式 (11) 计算控制参数 a a a 的值;
更新其他参数
A
、
C
、
l
\boldsymbol{A} 、 \boldsymbol{C} 、 l
A、C、l 和
p
p
p 的值;
7 ) if
(
p
<
0.5
)
(p<0.5)
(p<0.5) do
if
(
∣
A
∣
<
1
)
(|\boldsymbol{A}|<1)
(∣A∣<1) do
9)根据式 (13) 更新当前个体的位置;
else if ( ∣ A ∣ ⩾ 1 ) (|\boldsymbol{A}| \geqslant 1) (∣A∣⩾1) do
在群体中随机选择一个个体 ( X X X (rand));
根据式 (15) 更新当前个体的位置;
end if
else if
(
p
⩾
0.5
)
(p \geqslant 0.5)
(p⩾0.5) do
15)根据式 (14) 更新当前个体的位置;
end if
end for
根据单纯形法优化较差解;
19)计算群体中个体的适应度值;
20)更新当前最优个体及位置;
t = t + 1 t=t+1 t=t+1
end while
[1]张潮,冯锋.混沌策略和单纯形法改进的鲸鱼优化算法[J].中国科技论文,2020,15(03):293-299.