基础正余弦算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107762654
假设总迭代次数为
T
T
T, 将整个进化过程划分成
k
k
k 段, 每个过程迭代次数分别设置为
T
1
,
T
2
,
⋯
,
T
k
T_1, T_2, \cdots, T_k
T1,T2,⋯,Tk, 并满 足
T
1
+
T
2
+
⋯
+
T
k
=
T
T_1+T_2+\cdots+T_k=T
T1+T2+⋯+Tk=T. 在每段进化过程, 群体可 以采用不同的控制因子, 多尺度控制因子定义如式 (15) 所示.
a
(
t
)
=
f
(
λ
i
,
β
i
,
T
i
)
,
i
∈
k
(15)
a(t)=f\left(\lambda_i, \beta_i, T_i\right), i \in k \tag{15}
a(t)=f(λi,βi,Ti),i∈k(15)
其中
λ
i
\lambda_i
λi 和
β
i
\beta_i
βi 分别表示控制因子的起始值和终止 值;
T
i
T_i
Ti 表示在第
i
i
i 段的迭代次数;
f
(
.
)
f(.)
f(.) 为定义的函数, 可为线性函数或非线性函数. 本文设计了两阶段多 尺度控制因子如式 (16) 所示.
a
(
t
)
=
{
λ
1
(
1
−
t
T
1
)
+
β
1
,
t
<
T
1
λ
2
(
1
−
t
−
T
1
T
−
T
1
)
,
t
≥
T
1
(16)
a(t)=\left\{
当
t
<
T
1
t
MSCA 利用多尺度控制因子参数值的设置可以 实现算法的局部搜索, 但是群体的学习榜样
(
X
t
∗
)
\left(X_t^*\right)
(Xt∗) 受
r
2
r_2
r2 的影响, 使得群体无法及时跟踪到
X
t
∗
X_t^*
Xt∗, 从而降低 收玫速度. 为了保持快速的收玫速度, MSCA 采用双 种群策略, 即主群和协助群. 主群中采用多尺度控制 因子学习策略; 协助群专注对已有最优解的利用学 习. 协助群局部学习算法的思想来源于 PSO 算法. 在 PSO 算法中粒子同时学习群体最优粒子 gbest 和个 体历史最优粒子 pbest, 最终收敛于
g
b
e
s
t
g b e s t
gbest 和 pbest 的 算术平均点. 为了加快收玫速度, 本文设计的局部学 习算法直接学习种群 gbest 和个体 pbest 的算术平均 点. 更新方程如下:
X
t
+
1
(
i
)
=
{
X
t
(
i
)
+
b
(
t
)
⋅
ξ
(
X
t
(
i
)
−
0.5
(
G
t
+
P
t
(
i
)
)
)
,
f
(
G
t
)
>
f
(
X
t
∗
)
X
t
(
i
)
+
b
(
t
)
⋅
ξ
(
X
t
(
i
)
−
0.5
(
X
t
∗
+
P
t
(
i
)
)
)
,
f
(
G
t
)
≤
f
(
X
t
∗
)
(17)
X_{t+1}(i)=\left\{
式中的
ξ
\xi
ξ 是服从
[
0
,
1
]
[0,1]
[0,1] 分布的随机数.
b
(
t
)
b(t)
b(t) 为学习 步长,
X
t
∗
X_t^*
Xt∗ 表示主群群体最优个体.
G
t
G_t
Gt 表示协助群 群体最优个体.
P
t
P_t
Pt 为个体历史最优粒子.
b
(
t
)
=
b(t)=
b(t)=
2
(
1
−
t
/
T
)
+
2
2(1-t / T)+2
2(1−t/T)+2, 式中
T
T
T 为总迭代次数.
主群和协助群独立进化, 当主群种群的最优解适应度值大于协助群的最优解适应度值时, 协助群不再学习自身的最优解而是学习主群的最优解.
MSCA 算法具体步骤如下.
MSCA 算法具体步骤如下.
步骤 1: 种群初始化. 种群
S
=
S
m
∪
S
s
\mathrm{S}=\mathrm{S}_m \cup \mathrm{S}_s
S=Sm∪Ss, 其中
S
m
S_m
Sm 为主群,
S
s
S_s
Ss 为协助群. 设
S
m
S_m
Sm 种群规模为
N
1
,
S
s
N 1, S_s
N1,Ss 种群 规模为
N
2
,
N
2
<
N
1
N 2, N 2
步骤 2: 计算
S
m
S_m
Sm 和
S
s
S_s
Ss 个体的适应度
f
(
X
i
)
f\left(X_i\right)
f(Xi), 并 分别将
S
m
S_m
Sm 和
S
s
S_s
Ss 适应度最大的个体赋值给
S
m
S_m
Sm 群体 最优个体
X
∗
X^*
X∗ 和
S
s
S_s
Ss 群体最优个体
G
G
G;
步骤 3: 对于
X
i
∈
S
m
(
i
=
1
,
…
.
.
N
1
)
X_i \in S_m(i=1, \ldots . . N 1)
Xi∈Sm(i=1,…..N1), 按照 (1) 式 和 (17) 式产生个体
X
i
X_i
Xi 的新位置
f
(
X
i
n
e
w
)
f\left(X_i{ }^{n e w}\right)
f(Xinew). 如果适 应度
f
(
X
i
n
e
w
)
>
f
(
X
i
)
f\left(X_i{ }^{n e w}\right)>f\left(X_i\right)
f(Xinew)>f(Xi), 则将
X
i
←
X
i
n
e
w
X_i \leftarrow X_i{ }^{n e w}
Xi←Xinew;
步骤 4: 如果
f
(
X
∗
)
>
f
(
G
)
,
G
←
X
∗
f\left(X^*\right)>f(G), G \leftarrow X^*
f(X∗)>f(G),G←X∗; 否则跳转 步骤 5 ;
步骤 5: 对于
X
i
∈
S
s
(
i
=
1
,
…
,
N
2
)
\mathrm{X}_i \in \mathrm{S}_s(i=1, \ldots, N 2)
Xi∈Ss(i=1,…,N2), 按照 (18) 式产生个体
X
i
X_i
Xi 的新位置
f
(
X
i
n
e
w
)
f\left(X_i{ }^{n e w}\right)
f(Xinew). 如果适应度
f
(
X
i
n
e
w
)
>
f
(
X
i
)
f\left(X_i{ }^{n e w}\right)>f\left(X_i\right)
f(Xinew)>f(Xi), 则将
X
i
←
X
i
n
e
w
X_i \leftarrow X_i{ }^{n e w}
Xi←Xinew;
步骤 6: 判断是否达到最大迭代次数
T
T
T, 如若满 足条件则停止迭代, 将
G
\mathrm{G}
G 作为结果输出, 否则转至步 骤 3 .
[1]申元霞,张学锋,方馨,汪小燕.多尺度正余弦优化算法[J/OL].控制与决策:1-10[2021-10-27].https://doi.org/10.13195/j.kzyjc.2021.0513.