zl程序教程

您现在的位置是:首页 >  其他

当前栏目

基于量子位Bloch坐标编码自适应的改进正余弦算法-附代码

编码算法代码 基于 改进 适应 坐标 量子
2023-09-14 09:06:12 时间

基于量子位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θi1cosφ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(1xij)]Xiyj=21[bj(1+yij)+aj(1yij)]Xizj=21[bj(1+zij)+aj(1zij)](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(ww′′)×(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×r3PitXiit,0<ri<0.5wXit+r1×cosr2×r3PitXiit,0.5r4<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.

5.Matlab代码

6.python代码