zl程序教程

您现在的位置是:首页 >  后端

当前栏目

智能优化算法:卷积优化算法-2023 附代码

算法智能代码 优化 2023 卷积
2023-09-14 09:06:11 时间

智能优化算法:卷积优化算法 2023

摘要:将二维卷积运算引入智能优化算法的种群位置更新过程,提出一种新的智能优化算法,即卷积优化算法(Convolution Optimization Algorithm,COA)。 该算法主要包括卷积搜索和解质量增强 2 种机制:在卷积搜索过程中,分别定义纵向卷积核、横向卷积核和区域卷积核,依次进行二维卷积运算并更新种群的位置向量,然后将 3 种卷积核更新后的种群的位置向量进行随机权重或等比例权重相加,进一步更新种群的位置向量;在解质量增强过程中,对最优解的搜索空间逐维进行带非惯性权重的高斯变异,并对最优解进行扰动,从而提高算法的局部搜索能力。

1.卷积优化算法

COA 主要包括卷积搜索和解质量增强 2 种机制,其中:卷积搜索机制的是通过矩阵卷积运算增强搜索趋势并加快收敛速度,从而在搜索空间中获得更好的位置;解质量增强机制通过提高解的质量,避免每次迭代中出现局部最优。

1.1 种群初始化

C O A \mathrm{COA} COA 中, 个体的位置向量 X p ( p = 1 , 2 , ⋯ \boldsymbol{X}_p(p=1,2, \cdots Xp(p=1,2,, n n n ) 为优化问题的候选解, 定义 X p \boldsymbol{X}_p Xp 用于在 d d d 维空间 中搜索,其中 d d d 为决策变量的维度。这样, 在卷积 优化算法中, 种群的位置向量 X \boldsymbol{X} X 由维度为 d d d n n n 个个体组成, 则种群的位置向量 X \boldsymbol{X} X n × d n \times d n×d 阶矩阵 构成,有
X = [ X 1 ⋮ X n ] = [ x 11 ⋯ x 1 d ⋮ ⋮ x n 1 ⋯ x n d ] (1) \boldsymbol{X}=\left[\begin{array}{c} \boldsymbol{X}_1 \\ \vdots \\ \boldsymbol{X}_n \end{array}\right]=\left[\begin{array}{ccc} x_{11} & \cdots & x_{1 d} \\ \vdots & & \vdots \\ x_{n 1} & \cdots & x_{n d} \end{array}\right] \tag{1} X= X1Xn = x11xn1x1dxnd (1)
C O A \mathrm{COA} COA 中, 种群的位置向量 X X X 的适应度值为
F X = [ f ( X 1 ) ⋮ f ( X n ) ] = [ f ( [ x 11 x 12 ⋯ x 1 d ] ) ⋮ f ( [ x n 1 x n 2 ⋯ x n d ] ) ] (2) \boldsymbol{F}_X=\left[\begin{array}{c} f\left(\boldsymbol{X}_1\right) \\ \vdots \\ f\left(\boldsymbol{X}_n\right) \end{array}\right]=\left[\begin{array}{rrrr} f\left(\left[\begin{array}{rrrr} x_{11} & x_{12} & \cdots & x_{1 d} \end{array}\right]\right) \\ & \vdots & & \\ f\left(\left[\begin{array}{rrrr} x_{n 1} & x_{n 2} & \cdots & x_{n d} \end{array}\right]\right) \end{array}\right]\tag{2} FX= f(X1)f(Xn) = f([x11x12x1d])f([xn1xn2xnd]) (2)
式中: f ( X p ) f\left(\boldsymbol{X}_p\right) f(Xp) 表示适应度函数, 也称目标函数。
C O A \mathrm{COA} COA 中,初始种群的位置向量 X 0 \boldsymbol{X}^0 X0 d d d 维搜 索空间中随机生成, 每个个体的位置向量 X p 0 \boldsymbol{X}_p^0 Xp0 的初始 化可定义为
X p 0 = l p + r a n d ⋅ ( u p , l p ) (3) \boldsymbol{X}_p^0=\boldsymbol{l}_p+\mathrm{rand} \cdot\left(\boldsymbol{u}_p, \boldsymbol{l}_p\right)\tag{3} Xp0=lp+rand(up,lp)(3)
式中: l p \boldsymbol{l}_p lp 为一个 1 × d 1 \times d 1×d 阶矩阵, 为第 p p p 个个体的下限; u p \boldsymbol{u}_p up 为一个 1 × d 1 \times d 1×d 阶矩阵, 为第 p p p 个个体的上限; rand 为 [ 0 , 1 ] [0,1] [0,1] 之间的随机数。

1.2 卷积搜索机制

卷积搜索过程分为纵向卷积位置更新、横向卷积位置更新、区域卷积位置更新和综合位置更新 4个步骤。

1.2.1 纵向卷积位置更新

定义纵向卷积核为
K L = 2 × rand ⁡ ( k , 1 ) − I L (4) \boldsymbol{K}_{\mathrm{L}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{L}}\tag{4} KL=2×rand(k,1)IL(4)
式中: K L \boldsymbol{K}_{\mathrm{L}} KL 为一个 k × 1 k \times 1 k×1 阶矩阵, 为纵向卷积核, 其中 k k k 为纵向卷积核的高, 1 为纵向卷积核的宽; rand ⁡ ( k , 1 ) \operatorname{rand}(k, 1) rand(k,1) 为一个 k × 1 k \times 1 k×1 阶矩阵,每个元素为 [ 0 , 1 ] [0,1] [0,1] 之间的随机 数; I L \boldsymbol{I}_{\mathrm{L}} IL 为一个 k × 1 k \times 1 k×1 阶矩阵, 所有元素为 1 。 定义纵向卷积为
X L t = X t ∗ K L (5) \boldsymbol{X}_{\mathrm{L}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{L}}\tag{5} XLt=XtKL(5)
式中: t t t 为当前迭代次数; X t X^t Xt 为一个 n × d n \times d n×d 阶矩阵, 为 第 t t t 代种群的位置向量; X L t X_{\mathrm{L}}^t XLt 为一个 n × d n \times d n×d 阶矩阵, 为 第 t t t 代纵向卷积位置更新后的种群的位置向量。
比较 X L t \boldsymbol{X}_{\mathrm{L}}^t XLt X t \boldsymbol{X}^t Xt 中每个个体位置的适应度值的大 小,择优替换掉 X t \boldsymbol{X}^t Xt 中个体位置, 则有
X p t = { X L p t , f ( X L p t ) < f ( X p t ) ; X p t ,  else 。 (6) \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{Lp}}^t, f\left(\boldsymbol{X}_{\mathrm{Lp}}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } 。 \end{array}\right.\tag{6} Xpt={XLpt,f(XLpt)<f(Xpt);Xpt, else (6)
式中: X p t \boldsymbol{X}_p^t Xpt 为第 t t t 代种群的第 p p p 个个体位置; X L p t \boldsymbol{X}_{\mathrm{L} p}^t XLpt 为 第 t t t 代纵向卷积位置更新后的种群的第 p p p 个个体 位置。

1.2.2 横向卷积位置更新

定义横向卷积核为
K T = 2 × rand ⁡ ( k , 1 ) − I T (7) \boldsymbol{K}_{\mathrm{T}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{T}} \tag{7} KT=2×rand(k,1)IT(7)
式中: K T \boldsymbol{K}_{\mathrm{T}} KT 为一个 1 × k 1 \times k 1×k 阶矩阵, 为横向卷积核, 其中 1 为横向卷积核的高, k k k 为横向卷积核的宽; rand ⁡ ( 1 , k ) \operatorname{rand}(1, k) rand(1,k) 为一个 1 × k 1 \times k 1×k 阶矩阵,每个元素为 [ 0 , 1 ] [0,1] [0,1] 之间的随机 数; I T \boldsymbol{I}_{\mathrm{T}} IT 为一个 1 × k 1 \times k 1×k 阶矩阵,所有元素为 1 。
定义横向卷积为
X T t = X t ∗ K T (8) \boldsymbol{X}_{\mathrm{T}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{T}} \tag{8} XTt=XtKT(8)
式中: X T t \boldsymbol{X}_{\mathrm{T}}^t XTt 为一个 n × d n \times d n×d 阶矩阵, 为横向卷积更新后的 种群的位置向量。
比较 X T t \boldsymbol{X}_{\mathrm{T}}^t XTt X t \boldsymbol{X}^t Xt 中每个个体位置的适应度值的大 小,择优替换掉 X t \boldsymbol{X}^t Xt 中个体位置,则有
X p t = { X T p t , f ( X T p t ) < f ( X p t ) ; X p t ,  else  (9) \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{T}_p}^t, f\left(\boldsymbol{X}_{\mathrm{T}_p}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right.\tag{9} Xpt={XTpt,f(XTpt)<f(Xpt);Xpt, else (9)
式中: X T p t X_{\mathrm{T}_p}^t XTpt 为第 t t t 代横向卷积位置更新后的种群的第 p p p 个个体位置。

1.2.3 区域卷积位置更新

定义区域卷积核为
K R = 2 × rand ⁡ ( k , 1 ) − I R (10) \boldsymbol{K}_{\mathrm{R}}=2 \times \operatorname{rand}(k, 1)-\boldsymbol{I}_{\mathrm{R}} \tag{10} KR=2×rand(k,1)IR(10)
式中: K R \boldsymbol{K}_{\mathrm{R}} KR 为一个 k × k k \times k k×k 阶矩阵, 为区域卷积核, 其中 k k k 为区域卷积核的高和宽; rand ⁡ ( k , k ) \operatorname{rand}(k, k) rand(k,k) 为一个 k × k k \times k k×k 阶 矩阵,每个元素为 [ 0 , 1 ] [0,1] [0,1] 之间的随机数; I R \boldsymbol{I}_{\mathrm{R}} IR 为一个 k × k k \times k k×k 阶矩阵,所有元素为 1 。
定义区域卷积为
X R t = X t ∗ K R (11) \boldsymbol{X}_{\mathrm{R}}^t=\boldsymbol{X}^t * \boldsymbol{K}_{\mathrm{R}} \tag{11} XRt=XtKR(11)
式中: X R t \boldsymbol{X}_{\mathrm{R}}^t XRt 为一个 n × d n \times d n×d 阶矩阵, 为区域卷积更新后的 种群的位置向量。
比较 X R t \boldsymbol{X}_{\mathrm{R}}^t XRt X t \boldsymbol{X}^t Xt 中每个个体位置的适应度值的大 小,择优替换掉 X t X^t Xt 中个体位置, 则有
X p t = { X R p t , f ( X R p t ) < f ( X p t ) ; X p t ,  else  (12) \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{R} p}^t, f\left(\boldsymbol{X}_{\mathrm{R} p}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right. \tag{12} Xpt={XRpt,f(XRpt)<f(Xpt);Xpt, else (12)
式中: X R p t X_{\mathrm{R} p}^t XRpt 为第 t t t 代区域卷积位置更新后的种群的第 p p p 个个体位置。

1.2.4 综合位置更新

在综合位置更新阶段, 将第 t t t 代纵向卷积更新 后的种群的位置向量 X L t X_{\mathrm{L}}^t XLt, 第 t t t 代横向卷积更新后的 种群的位置向量 X T t X_{\mathrm{T}}^t XTt 和第 t t t 代区域卷积更新后的种 群的位置向量 X R t \boldsymbol{X}_{\mathrm{R}}^t XRt, 采用随机权重或等比例权重相加 合并为 X s t \boldsymbol{X}_{\mathrm{s}}^t Xst, 即
X S t = r 1 × X L t + r 2 × X T t + r 3 × X R t r 1 + r 2 + r 3 (13) \boldsymbol{X}_{\mathrm{S}}^t=\frac{r_1 \times \boldsymbol{X}_{\mathrm{L}}^t+r_2 \times \boldsymbol{X}_{\mathrm{T}}^t+r_3 \times \boldsymbol{X}_{\mathrm{R}}^t}{r_1+r_2+r_3} \tag{13} XSt=r1+r2+r3r1×XLt+r2×XTt+r3×XRt(13)
式中: r 1 、 r 2 、 r 3 r_1 、 r_2 、 r_3 r1r2r3 均为 [ 0 , 1 ] [0,1] [0,1] 之间的随机数, 特别地, 可 以令 r 1 = r 2 = r 3 r_1=r_2=r_3 r1=r2=r3, 以便进行等比例权重相加。
比较 X s t \boldsymbol{X}_{\mathrm{s}}^t Xst X t \boldsymbol{X}^t Xt 中每个个体位置的适应度值的大 小,择优替换掉 X t X^t Xt 中个体位置, 则有
X p t = { X s p t , f ( X s p p t ) < f ( X p t ) ; X p t ,  else  (14) \boldsymbol{X}_p^t=\left\{\begin{array}{l} \boldsymbol{X}_{\mathrm{sp}}^t, f\left(\boldsymbol{X}_{\mathrm{spp}}^t\right)<f\left(\boldsymbol{X}_p^t\right) ; \\ \boldsymbol{X}_p^t, \text { else } \end{array}\right. \tag{14} Xpt={Xspt,f(Xsppt)<f(Xpt);Xpt, else (14)
式中: X s p t X_{\mathrm{s} p}^t Xspt 为第 t t t 代综合位置更新后的种群的第 p p p 个 个体位置。
最后, 计算 X t \boldsymbol{X}^t Xt 中所有个体位置的适应度值, 并根据适应度值的大小进行排序, 选出最优 解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst

1.3 解质量增强机制

C O A \mathrm{COA} COA 中,解质量增强机制是对最优解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst d d d 维搜索空间逐维进行带非惯性权重的高斯变异, 对最优解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst 进行扰动, 从而提高算法的局部搜 索能力。
对最优解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst d d d 维搜索空间逐维进行带非惯性权重的高斯变异, 则有
X n b s ( q ) t = ω ⋅ X q t + randn ⁡ ⋅ X b s ( q ) t (15) \boldsymbol{X}_{\mathrm{nbs}(q)}^t=\omega \cdot \boldsymbol{X}_q^t+\operatorname{randn} \cdot \boldsymbol{X}_{\mathrm{bs}(q)}^t \tag{15} Xnbs(q)t=ωXqt+randnXbs(q)t(15)
式中: X b s ( q ) t = [ x 1 q x 2 q ⋯ x n q ] T \boldsymbol{X}_{\mathrm{bs}(q)}^t=\left[\begin{array}{llll}x_{1 q} & x_{2 q} & \cdots & x_{n q}\end{array}\right]^{\mathrm{T}} Xbs(q)t=[x1qx2qxnq]T 为一个 n × 1 n \times 1 n×1 阶 矩阵, 为最优解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst d d d 维搜索空间中的第 q ( q = 1 q(q=1 q(q=1, 2 , ⋯   , d ) 2, \cdots, d) 2,,d) 维的位置; ω = 1 − ( t /  iter  max  ) 2 \omega=1-\left(t / \text { iter }_{\text {max }}\right)^2 ω=1(t/ iter max )2, 其中 iter max  _{\text {max }} max  为最大迭代次数; randn 为一个满足均值为 0 , 方差 为 1 的标准正态分布的随机数; X n b s ( q ) t X_{\mathrm{nbs}(q)}^t Xnbs(q)t 为一个 n × 1 n \times 1 n×1 阶矩阵, 为对最优解 X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst 的第 q q q 维进行带非惯性权重 高斯变异后的第 q q q 维位置。
令对第 q q q 维进行带非惯性权重高斯变异后的个 体位置为 X ( q )  nbs  t \boldsymbol{X}_{(q) \text { nbs }}^t X(q) nbs t, 比较 X ( q )  nbs  t \boldsymbol{X}_{(q) \text { nbs }}^t X(q) nbs t X b s t \boldsymbol{X}_{\mathrm{bs}}^t Xbst 的适应度值的大 小,择优替换掉 X b s t X_{\mathrm{bs}}^t Xbst 的个体位置,则有
X b s t = { X ( q ) n b s t , f ( X ( q ) n b s t ) < f ( X b s t ) ; X b s t ,  else 。 (16) \boldsymbol{X}_{\mathrm{bs}}^t= \begin{cases}\boldsymbol{X}_{(q) \mathrm{nbs}}^t, & f\left(\boldsymbol{X}_{(q) \mathrm{nbs}}^t\right)<f\left(\boldsymbol{X}_{\mathrm{bs}}^t\right) ; \\ \boldsymbol{X}_{\mathrm{bs}}^t, & \text { else } 。\end{cases} \tag{16} Xbst={X(q)nbst,Xbst,f(X(q)nbst)<f(Xbst); else (16)
C O A \mathrm{COA} COA 运行过程的伪代码如下:
输人: 种群大小为 n n n, 个体位置的维度为 d d d, 最大 迭代次数为 iter max  _{\text {max }} max , 卷积核参数为 k k k 和适应度函数为 f ( X p ) ( p = 1 , 2 , ⋯   , n ) f\left(\boldsymbol{X}_p\right)(p=1,2, \cdots, n) f(Xp)(p=1,2,,n)
输出:最优解及其位置
1 : 初始化种群, 计算每个个体位置的适应度值, 选出最优个体的适应度值及其位置
2 : While t ⩽ t \leqslant t iter max  _{\text {max }} max  do
3 : 在纵向卷积位置更新阶段, 由式 (4)- (6) 更 新种群的位置向量
4 : 在横向卷积位置更新阶段, 由式 (7)- (9) 更 新种群的位置向量
5 : 在区域卷积位置更新阶段, 由式 (10)-(12) 更新种群的位置向量
6 : 在综合位置更新阶段, 由式 (13)、(14) 更新 种群的位置向量
7 : 计算种群个体位置的适应度值, 选出最优解
8 : for q = 1 q=1 q=1 to d d d do
9 : 在解增强阶段, 由式 (15)、(16) 更新最优解 及其位置
10 : end for
11 : 更新全局最优解及其位置
12 : t = t + 1 12: t=t+1 12:t=t+1
13 : end while

2.实验结果

在这里插入图片描述

3.参考文献

[1]陈克伟,魏曙光,张嘉曦.基于二维卷积运算的智能优化算法[J].装甲兵学报,2023,2(01):102-108.

4.Matlab

5.Python