提出了一种受混沌动力学启发的新颖的基于种群的元启发式算法,称为混沌进化优化(CEO)。CEO的主要灵感来自二维离散忆阻映射的混沌进化过程。通过利用忆阻映射的超混沌特性,对CEO算法进行数学建模,引入进化过程的随机搜索方向。该算法于2025年3月最新发表在中科院1区SCI期刊 Chaos, Solitons & Fractals。(if=5.3)
混沌进化优化(CEO)
对所提出的CEO算法进行了数学建模。CEO的整体框架类似于DE算法,包括变异、交叉和选择操作。关键区别在于变异算子的设计,其中CEO采用二维离散忆阻超混沌映射来为每个个体提供变异方向。
3.1 变异操作
CEO 作为一种基于种群的进化算法,利用以下统一搜索框架作为其变异操作符:
x t + 1 = x t + a ⋅ d t x_{t+1} = x_t + a \cdot d_t xt+1=xt+a⋅dt
其中 x t x_t xt 和 x t + 1 x_{t+1} xt+1 分别是当前个体和变异个体;a 是搜索步长, d t d_t dt是进化方向,生成自动态映射公式(Eq. 2)。
CEO 的主要思想是利用二维记忆混沌超高效映射的超混沌特性,如公式(Eq. 2)所示,用来为种群提供进化方向。需要强调的是,为了使得所提出的 CEO 算法能够有效利用 Eq. 2 的超混沌特性,CEO 中选出的两个个体 x t x_t xt 和 y t y_t yt 必须映射到 [ − 0.5 , 0.5 ] [-0.5, 0.5] [−0.5,0.5]和 [ − 0.25 , 0.25 ] [-0.25, 0.25] [−0.25,0.25]范围内,如 Eq.(4)所示。
x ′ = x − l b u b − l b − 0.5 x' = \frac{x - lb}{ub - lb} - 0.5 x′=ub−lbx−lb−0.5
y ′ = y − l b u b − l b − 0.25 y' = \frac{y - lb}{ub - lb} - 0.25 y′=ub−lby−lb−0.25
其中 x ′ x' x′ 和 y ′ y' y′ 是映射后的混沌位置,值分别在 [ − 0.5 , 0.5 ] [-0.5, 0.5] [−0.5,0.5]和 [ − 0.25 , 0.25 ] [-0.25, 0.25] [−0.25,0.25]区间内; l b lb lb 和 u b ub ub是当前种群变量的下界和上界。
N 个混沌候选个体 x c h a o s x_{chaos} xchaos和 y c h a o s y_{chaos} ychaos 可以通过应用公式 Eq.(2)生成,具体伪代码如下:
1: 对于
n
=
1
n = 1
n=1 到N做
x
c
h
a
o
s
(
n
)
←
k
⋅
e
−
cos
n
π
−
1
⋅
x
t
x_{chaos}(n) \gets k \cdot e^{- \cos n \pi} - 1 \cdot x_t
xchaos(n)←k⋅e−cosnπ−1⋅xt
y
c
h
a
o
s
(
n
)
←
y
t
′
+
x
t
y_{chaos}(n) \gets y'_{t} + x_t
ychaos(n)←yt′+xt
2: 结束
在上述伪代码中,N 代表混沌样本的数量。因此,通过应用公式(Eq. 2),可以生成 N 个混沌候选个体
x
c
h
a
o
s
=
x
c
h
a
o
s
1
…
x
c
h
a
o
s
N
和
y
c
h
a
o
s
=
y
c
h
a
o
s
1
…
y
c
h
a
o
s
N
x_{chaos} = x_{chaos1} \dots x_{chaosN}和y_{chaos} = y_{chaos1} \dots y_{chaosN}
xchaos=xchaos1…xchaosN和ychaos=ychaos1…ychaosN,这些混沌个体可以被映射回实际位置
x
c
h
a
o
s
′
=
x
c
h
a
o
s
1
′
…
x
c
h
a
o
s
N
′
和
y
c
h
a
o
s
′
=
y
c
h
a
o
s
1
′
…
y
c
h
a
o
s
N
′
x_{chaos'} = x_{chaos1'} \dots x_{chaosN'} 和 y_{chaos'} = y_{chaos1'} \dots y_{chaosN'}
xchaos′=xchaos1′…xchaosN′和ychaos′=ychaos1′…ychaosN′,如 Eq.(5)所示。
x
c
h
a
o
s
′
=
x
c
h
a
o
s
∗
⋅
0.5
⋅
u
b
−
l
b
+
l
b
x_{chaos'} = x_{chaos}^* \cdot 0.5 \cdot ub - lb + lb
xchaos′=xchaos∗⋅0.5⋅ub−lb+lb
y
c
h
a
o
s
′
=
y
c
h
a
o
s
∗
⋅
0.25
⋅
2
⋅
u
b
−
l
b
+
l
b
y_{chaos'} = y_{chaos}^* \cdot 0.25 \cdot 2 \cdot ub - lb + lb
ychaos′=ychaos∗⋅0.25⋅2⋅ub−lb+lb
显然,基于
x
c
h
a
o
s
′
x_{chaos'}
xchaos′ 和
y
c
h
a
o
s
′
y_{chaos'}
ychaos′,可以生成 N 个进化方向,分别用于个体
x
t
x_t
xt 和
y
t
y_t
yt,如公式(6)所示:
d
x
t
n
=
x
c
h
a
o
s
′
n
−
x
t
d_{x_t}^n = x_{chaos'}^n - x_t
dxtn=xchaos′n−xt
d
y
t
n
=
y
c
h
a
o
s
′
n
−
y
t
d_{y_t}^n = y_{chaos'}^n - y_t
dytn=ychaos′n−yt
其中KaTeX parse error: Can't use function '\)' in math mode at position 16: n = 12 \dots N \̲)̲;\( d_{x_t}^n 和…是 x t x_t xt和 y t y_t yt的进化方向。综上所述,通过结合公式(3)、(6),CEO 的变异操作符可以通过公式(7)推导出:
x t + 1 = x t + a ⋅ x c h a o s ′ n − x t x_{t+1} = x_t + a \cdot x_{chaos'}^n - x_t xt+1=xt+a⋅xchaos′n−xt
y t + 1 = y t + a ⋅ y c h a o s ′ n − y t y_{t+1} = y_t + a \cdot y_{chaos'}^n - y_t yt+1=yt+a⋅ychaos′n−yt
其中,a 是搜索步长,亦称为缩放因子,它是一个位于区间 [0, 1] 内的随机数。显然,可以为个体 x t 和 y t x_t 和y_t xt和yt 生成 N 个变异个体。
可以看出,公式(7)具有强大的全局探索能力,但这可能导致算法收敛速度较慢。因此,为了进一步提高算法的局部开发能力,公式(8)用于在当前种群中搜索最佳解,以加快算法的收敛速度。
x t + 1 = B e s t t + a ⋅ x c h a o s ′ n − x t x_{t+1} = Best_t + a \cdot x_{chaos'}^n - x_t xt+1=Bestt+a⋅xchaos′n−xt
y t + 1 = B e s t t + a ⋅ y c h a o s ′ n − y t y_{t+1} = Best_t + a \cdot y_{chaos'}^n - y_t yt+1=Bestt+a⋅ychaos′n−yt
其中 B e s t t Best_t Bestt是当前种群的最佳解。
3.2 交叉操作
变异之后,CEO 采用一个二项交叉操作符作用于 x t p + 1 和 y t p + 1 x_t^{p+1}和 y_t^{p+1} xtp+1和ytp+1,分别生成试验向量 x t r i a l n = x t r i a l 1 , x t r i a l 2 , … , x t r i a l n 和 y t r i a l n = y t r i a l 1 , y t r i a l 2 , … , y t r i a l n x_{trial}^n = x_{trial1}, x_{trial2}, \dots, x_{trialn}和y_{trial}^n = y_{trial1}, y_{trial2}, \dots, y_{trialn} xtrialn=xtrial1,xtrial2,…,xtrialn和ytrialn=ytrial1,ytrial2,…,ytrialn,具体交叉过程如下:
x t r i a l n = { x t n + r , if r a n d ≤ C r x t r a n d , otherwise x_{trial}^n = \begin{cases} x_t^{n} + r, \quad \text{if} \quad rand \leq C_r \\ x_t^{rand}, \quad \text{otherwise} \end{cases} xtrialn={xtn+r,ifrand≤Crxtrand,otherwise
其中,Dim 是优化问题的维度,j 是在 [1, Dim]区间内随机选择的整数,r 是每次为每个生成的随机数。 C r C_r Cr是交叉控制参数,在 CEO 中,每次迭代中, C r C_r Cr 值为在区间 [0, 1] 内的随机数。
3.3 选择操作
对于 x t 和 y t x_t和y_t xt和yt,可以生成试验向量 x t r i a l n 和 y t r i a l n x_{trial}^n和y_{trial}^n xtrialn和ytrialn。CEO 采用贪心准则选择生成的实验向量。选择操作符如下所示:
x t + 1 = { x t r i a l , if f ( x t r i a l ) ≤ f ( x t ) x t , otherwise x_{t+1} = \begin{cases} x_{trial}, \quad \text{if} \quad f(x_{trial}) \leq f(x_t) \\ x_t, \quad \text{otherwise} \end{cases} xt+1={xtrial,iff(xtrial)≤f(xt)xt,otherwise
y t + 1 = { y t r i a l , if f ( y t r i a l ) ≤ f ( y t ) y t , otherwise y_{t+1} = \begin{cases} y_{trial}, \quad \text{if} \quad f(y_{trial}) \leq f(y_t) \\ y_t, \quad \text{otherwise} \end{cases} yt+1={ytrial,iff(ytrial)≤f(yt)yt,otherwise
其中 x t r i a l n 和 y t r i a l n x_{trial}^n和y_{trial}^n xtrialn和ytrialn是试验向量的最佳解。
完整代码领取:
https://github.com/Running-Wolf1010/CEO