基于量子位Bloch坐标编码自适应的改进正余弦算法-附代码
基于量子位Bloch坐标编码自适应的改进正余弦算法
文章目录
摘要:提出了一种基于量子位Bloch坐标编码自适应的改进后正弦余弦算法(ASCA),利用量子位Bloch坐标编码进行种群初始化,并利用惯性权重对算法进行改进。
1.正余弦算法
基础正余弦算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107762654
2.改进正余弦算法
2.1 群体初始位置的Bloch坐标编码方案.
直接采用量子位的 Bloch 坐标作为编码. 设
p
i
p_i
pi 为群体中第
i
i
i 个候选解,其编码方案如下:
p
i
=
∣
cos
φ
i
1
sin
θ
i
1
⋯
cos
φ
i
n
sin
θ
i
n
sin
φ
i
1
sin
θ
i
1
⋯
sin
φ
i
n
sin
θ
i
n
cos
θ
i
1
⋯
cos
θ
i
n
∣
(10)
p_i=\left|\begin{array}{l|l|l|} \cos \varphi_{i 1} \sin \theta_{i 1} & \cdots & \cos \varphi_{i n} \sin \theta_{i n} \\ \sin \varphi_{i 1} \sin \theta_{i 1} & \cdots & \sin \varphi_{i n} \sin \theta_{i n} \\ \cos \theta_{i 1} & \cdots & \cos \theta_{i n} \end{array}\right|\tag{10}
pi=∣
∣cosφi1sinθi1sinφi1sinθi1cosθi1⋯⋯⋯cosφinsinθinsinφinsinθincosθin∣
∣(10)
式中
:
φ
i
j
=
2
π
×
r
,
θ
i
j
=
π
×
r
,
r
: \varphi_{i j}=2 \pi \times r, \theta_{i j}=\pi \times r, r
:φij=2π×r,θij=π×r,r 为
[
0
,
1
]
[0,1]
[0,1] 区间的随机 数;
i
=
1
,
2
,
⋯
,
N
;
j
=
1
,
2
,
⋯
,
n
;
N
i=1,2, \cdots, N ; j=1,2, \cdots, n ; N
i=1,2,⋯,N;j=1,2,⋯,n;N 为群体规模;
n
n
n 为优化空间的维数.
每个攸选解同时占据空间的 3 个位置, 即同时 代表以下 3 个优化解, 分别为
X
X
X 解、
Y
Y
Y 解和
Z
Z
Z 解.
P
i
x
=
(
cos
φ
i
1
sin
θ
i
1
,
⋯
,
cos
φ
i
n
sin
θ
i
11
)
(
11
)
P
i
y
=
(
sin
φ
i
1
sin
θ
i
1
,
⋯
,
sin
φ
i
j
sin
θ
i
r
)
(
12
)
P
i
z
=
(
cos
θ
i
1
,
cos
θ
i
2
,
⋯
,
cos
θ
i
m
)
(
13
)
\begin{gathered} P_{i x}=\left(\cos \varphi_{i 1} \sin \theta_{i 1}, \cdots, \cos \varphi_{i n} \sin \theta_{i 11}\right) &(11)\\ P_{i y}=\left(\sin \varphi_{i 1} \sin \theta_{i 1}, \cdots, \sin \varphi_{i j} \sin \theta_{i r}\right) &(12)\\ P_{i z}=\left(\cos \theta_{i 1}, \cos \theta_{i 2}, \cdots, \cos \theta_{i m}\right)&(13) \end{gathered}
Pix=(cosφi1sinθi1,⋯,cosφinsinθi11)Piy=(sinφi1sinθi1,⋯,sinφijsinθir)Piz=(cosθi1,cosθi2,⋯,cosθim)(11)(12)(13)
侯选解
p
i
p_i
pi 上的第
j
j
j 个量子位的 Bloch 坐标记 为
[
x
i
j
,
y
i
j
,
z
i
j
]
T
\left[x_{i j}, y_{i j}, z_{i j}\right]^{\mathrm{T}}
[xij,yij,zij]T, 优化问题中每个解空间第
j
j
j 维的 取值范围为
[
a
j
,
b
j
]
\left[a_j, b_j\right]
[aj,bj], 则由单位空间
I
n
=
[
−
1
,
1
]
n
I^n=[-1,1]^n
In=[−1,1]n 映射到优化问题解空间的变换公式为:
X
i
x
j
=
1
2
[
b
i
(
1
+
x
i
j
)
+
a
j
(
1
−
x
i
j
)
]
(
14
)
X
i
y
j
=
1
2
[
b
j
(
1
+
y
i
j
)
+
a
j
(
1
−
y
i
j
)
]
(
15
)
X
i
z
j
=
1
2
[
b
j
(
1
+
z
i
j
)
+
a
j
(
1
−
z
i
j
)
]
(
16
)
\begin{aligned} &X_{i x}^j=\frac{1}{2}\left[b_i\left(1+x_{i j}\right)+a_j\left(1-x_{i j}\right)\right] &(14)\\ &X_{i y}^j=\frac{1}{2}\left[b_j\left(1+y_{i j}\right)+a_j\left(1-y_{i j}\right)\right] &(15)\\ &X_{i z}^j=\frac{1}{2}\left[b_j\left(1+z_{i j}\right)+a_j\left(1-z_{i j}\right)\right]&(16) \end{aligned}
Xixj=21[bi(1+xij)+aj(1−xij)]Xiyj=21[bj(1+yij)+aj(1−yij)]Xizj=21[bj(1+zij)+aj(1−zij)](14)(15)(16)
因此,苺个候选解对应优化问题的 3 个解.在所 有的侯选解中选择
N
N
N 个适应度值较小的个体作为 初始群体.
此种编码方式能扩展搜索空间的遍历性, 增加 群体的多样性,进而改善群体的质量,加快算法收敛 速度.
2.2 引入惯性权重
在SCA算法中,为了增强局部开发能力,提高算法的收敛精度和收敛速度,引入惯性权重 w对算法进行改进,加入的惯性权重为:
w
=
w
′
−
(
w
′
−
w
′
′
)
×
(
t
T
max
)
1
/
t
(17)
w=w^{\prime}-\left(w^{\prime}-w^{\prime \prime}\right) \times\left(\frac{t}{T_{\max }}\right)^{1 / t} \tag{17}
w=w′−(w′−w′′)×(Tmaxt)1/t(17)
式中:
w
′
w^{\prime}
w′ 和
w
′
′
w^{\prime \prime}
w′′ 分别为惯性权重的最大值和最小值.
w
w
w 随着迭代次数的增加而递减, 使得迭代前期 有利于全局探索, 迭代后期有利于局部寻优, 由于引 进的
w
w
w 减小的幅度较大, 更有利于算法进行局部开 发, 提高算法的收敛精度和收敛速度.
改进后的位置更新公式如下:
X
i
t
+
1
=
{
w
X
i
t
+
r
1
×
sin
r
2
×
∣
r
3
P
i
t
−
X
i
i
t
∣
,
0
<
r
i
<
0.5
w
X
i
t
+
r
1
×
cos
r
2
×
∣
r
3
P
i
t
−
X
i
i
t
∣
,
0.5
⩽
r
4
<
1
(18)
X_i^{t+1}=\left\{\begin{array}{c} w X_i^t+r_1 \times \sin r_2 \times\left|r_3 P_i^t-X_{i i}^t\right|, \\ 0<r_i<0.5 \\ w X_i^t+r_1 \times \cos r_2 \times\left|r_3 P_i^t-X_{i i}^t\right|, \\ 0.5 \leqslant r_4<1 \end{array}\right.\tag{18}
Xit+1=⎩
⎨
⎧wXit+r1×sinr2×∣r3Pit−Xiit∣,0<ri<0.5wXit+r1×cosr2×∣r3Pit−Xiit∣,0.5⩽r4<1(18)
ASCA 算法流程如下: (1)初始化算法参数, 包括 群体规模
N
N
N 、最大迭代次数
T
max
T_{\max }
Tmax 、惯性权重的最大 值
w
′
w^{\prime}
w′ 和最小值
w
′
′
w^{\prime \prime}
w′′; (2) 初始化群体位置, 采用量子位 Bloch 球面对每个候选解进行编码, 最后映射到优 化问题的解空间, 然后计算群体中每个个体的适应 度值, 根据适应度值的大小进行排序, 最后选取
N
N
N 个适应度值较小的个体作为初始群体; (3) 计算
N
N
N 个个体的适应度值, 选择适应度值最小的个体位置 作为最优位置; (4)根据
r
4
r_4
r4 值的大小, 选择式 (18) 中 的正弦或余弦数学模型来更新下一代的位置; (5)若 达到最大迭代次数, 则算法结束, 输出最优个体, 即 算法找到的最优解, 否则返回(3).
3.实验结果
4.参考文献
[1]魏锋涛,张洋洋,黎俊宇,史云鹏.基于动态分级策略的改进正余弦算法[J].系统工程与电子技术,2021,43(06):1596-1605.