摽梅之年网

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

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

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

文章目录

  • 基于量子位Bloch坐标编码自适应的改进正余弦算法
    • 1.正余弦算法
    • 2.改进正余弦算法
      • 2.1 群体初始位置的Bloch坐标编码方案.
      • 2.2 引入惯性权重
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.python代码

摘要:提出了一种基于量子位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φi1​sinθi1​sinφi1​sinθi1​cosθi1​​⋯⋯⋯​cosφin​sinθin​sinφin​sinθin​cosθ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φi1​sinθi1​,⋯,cosφin​sinθi11​)Piy​=(sinφi1​sinθi1​,⋯,sinφij​sinθ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′′)×(Tmax​t​)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|, \\ 0ASCA 算法流程如下: (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代码

未经允许不得转载:摽梅之年网 » 基于量子位Bloch坐标编码自适应的改进正余弦算法-附代码