t分布与螺旋黏菌搜索的混沌自适应秃鹰搜索算法(CBBES)-附代码

t分布与螺旋黏菌搜索的混沌自适应秃鹰搜索算法(CBBES)


摘要:针对秃鹰搜索算法搜索精度低、收敛速度慢及易于陷入局部最优的不足,提出t分布与螺旋黏菌搜索的混沌自适应秃鹰搜索算法。首先引入混沌Bernoulli映射进行种群初始化,丰富种群多样性;然后在搜索空间猎物阶段利用螺旋黏菌搜索策略依搜索进程动态修正位置更新方式,提高算法全局搜索能力和收敛精度;在俯冲捕获猎物阶段引入自适应惯性权重策略平衡算法全局搜索与局部开发,提高算法求解精度;最后利用t分布随机扰动策略依概率对种群个体变异,增加算法跳离局部最优、找到全局最优的概率。

1.秃鹰优化算法

基础秃鹰优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/113775430

2.改进秃鹰优化算法

2.1 种群初始化策略

混沌 Bernoulli 映射公式为:
y k + 1 = { y k / ( 1 − μ ) , 0 < y k ≤ 1 − μ ( y k − 1 + μ ) / μ , 1 − μ < y k < 1 (14) y_{k+1}=\left\{\begin{array}{l} y_k /(1-\mu), 0<y_k \leq 1-\mu \\ \left(y_k-1+\mu\right) / \mu, 1-\mu<y_k<1 \end{array}\right.\tag{14} yk+1={ yk/(1μ),0<yk1μ(yk1+μ)/μ,1μ<yk<1(14)
式中, μ \mu μ 为混沌参数, 一般 μ = 0.4 \mu=0.4 μ=0.4

因此, 改进算法将利用混沌 Bernoulli 映射实现种群初始化。将生成的 Bernoulli 混沌序列重新映 射到算法的搜索空间内, 具体方式为:
x i , j = l b j + y i , j × ( u b j − l b j ) (15) x_{i, j}=l b_j+y_{i, j} \times\left(u b_j-l b_j\right)\tag{15} xi,j=lbj+yi,j×(ubjlbj)(15)
式中: x i , j x_{i, j} xi,j 为个体 i i i 在维度 j j j 上的位置, y i , j y_{i, j} yi,j 为式(14)生成的个 体 i i i 在维度 j j j 上的混沌值, l b j l b_j lbj u b j u b_j ubj 为个体 i i i 在维度 j j j 上的位 置边界, j = 1 , 2 , … , d , d j=1,2, \ldots, d, d j=1,2,,d,d 为位置维度。

2.2 螺旋黏菌搜索策略

标准 BES 算法中, 个体在搜索空间内的猎物时容易出 现种群聚集情况, 这样逐步聚集的方式虽然有助于提高算法 的收玫速度, 但种群逐步聚集的状态下, 会逐渐降低算法的 种群多样性, 增加陷入局部最优的概率。黏菌优化算法 S M A [ 23 ] \mathrm{SMA}^{[23]} SMA[23] 在搜索目标位置时利用了黏菌静脉宽度随食物浓度 情况变化的方式指引种群的搜索区域, 具有优异的全局搜索 能力, 其位置更新方式为:
X n e w = X b (  iter  ) + v b ⋅ ( W ⋅ X A (  iter  ) − X B (  iter  ) ) (17) X_{n e w}=X_b(\text { iter })+v_b \cdot\left(W \cdot X_A(\text { iter })-X_B(\text { iter })\right) \tag{17} Xnew=Xb( iter )+vb(WXA( iter )XB( iter ))(17)
式中, X new  X_{\text {new }} Xnew  为个体的新位置, X b ( X_b( Xb( iter ) ) ) 为 iter 次迭代时适应度 最优个体位置, X A ( X_A( XA( iter ) 、 X B ( ) 、 X_B( )XB( iter ) ) ) 为随机选取个体 A 、 B A 、 B AB 的位 置, v b v_b vb 为控制参数, W W W 为黏菌质量, 可视为一种权重参数。 为了提升秃鹰搜索空间猎物的精度, 引入黏菌优化算法 的搜索策略至 BES 的搜索空间猎物阶段中, 充分利用上一 代种群个体位置信息, 并同时利用改进的螺旋搜索算子, 提 高 BES 算法的目标搜索能力。将搜索空间猎物位置更新公 式定义为:
P i ,  new  = P best  (  iter  ) + x ( i ) ⋅ rot ⁡ ( v ) ⋅ ( W ⋅ P Z (  iter  ) − P i (  iter  ) ) + y ( i ) ⋅ rot ⁡ ( v ) ⋅ ( W ⋅ P i (  iter  ) − P mean  (  iter  ) ) (18) \begin{aligned} & P_{i, \text { new }}=P_{\text {best }}(\text { iter })+x(i) \cdot \operatorname{rot}(v) \cdot\left(W \cdot P_Z(\text { iter })-P_i(\text { iter })\right) \\ & +y(i) \cdot \operatorname{rot}(v) \cdot\left(W \cdot P_i(\text { iter })-P_{\text {mean }}(\text { iter })\right) \end{aligned}\tag{18} Pi, new =Pbest ( iter )+x(i)rot(v)(WPZ( iter )Pi( iter ))+y(i)rot(v)(WPi( iter )Pmean ( iter ))(18)
式中, P Z ( P_Z( PZ( iter ) ) ) 为迭代 iter 时随机选择个体 Z Z Z 的位置, P best  ( P_{\text {best }}( Pbest ( iter ) ) ) 为当前种群最优位置, P mean  ( P_{\text {mean }}( Pmean ( iter ) ) ) 为迭代 iter 时种群平均位 置, rot ⁡ ( v ) \operatorname{rot}(v) rot(v) 为螺旋搜索算子, 定义为:
rot ⁡ ( v ) = e n v cos ⁡ ( 2 π v ) (19) \operatorname{rot}(v)=e^{n v} \cos (2 \pi v) \tag{19} rot(v)=envcos(2πv)(19)
式中, n n n 为对数螺旋曲线常量, v v v 为正态分布随机量, 定义 为:
v =  rand  ⋅ arctan ⁡ h ( 1 − 1 / T max ⁡ ) (20) v=\text { rand } \cdot \arctan h\left(1-1 / T_{\max }\right) \tag{20} v= rand arctanh(11/Tmax)(20)
权重参数 W W W 定义为:
W ( S I ( i ) ) = { 1 + r ⋅ log ⁡ ( f min  − S ( i ) f min  − f max  + 1 ) , i = C 1 − r ⋅ log ⁡ ( f min  − S ( i ) f min  − f max  + 1 ) , i = O S I ( i ) = sort ⁡ ( S ) (21) W(S I(i))=\left\{\begin{array}{l} 1+r \cdot \log \left(\frac{f_{\text {min }}-S(i)}{f_{\text {min }}-f_{\text {max }}}+1\right), i=C \\ 1-r \cdot \log \left(\frac{f_{\text {min }}-S(i)}{f_{\text {min }}-f_{\text {max }}}+1\right), i=O \\ S I(i)=\operatorname{sort}(S) \end{array}\right. \tag{21} W(SI(i))= 1+rlog(fmin fmax fmin S(i)+1),i=C1rlog(fmin fmax fmin S(i)+1),i=OSI(i)=sort(S)(21)
式中, r ∈ [ 0 , 1 ] r \in[0,1] r[0,1] 为随机量, f min  f_{\text {min }} fmin  为种群最优适应度, S ( i ) S(i) S(i) 为个 体 i i i 适应度, f max  f_{\text {max }} fmax  为种群最差适应度, S I ( i ) S I(i) SI(i) 为个体 i i i 的适应度 排序, i = C i=C i=C 为适应度排列前一半个体, i = O i=O i=O 为适应度排列后 一半个体。

2.3 自适应惯性权重策略

惯性权重 w w w 首次使用是在粒子群算法中, 目标是平衡 算法全局搜索与局部开发能力。对于智能优化算法的迭代过 程而言, 早期迭代应以较大权重增强算法的全局搜索能力, 后期迭代应以较小权重提升算法的局部开发能力。尤其在算 法处理多峰值函数过程中, 若无法在全局搜索过程中确定最 优解, 局部开发能力过强则可能导致算法陷入局部最优。对 于秃鹰搜索算法而言, 在迭代后期, 秃鹰对猎物发动攻击仅 限于较小的局部范围内, 为了使该阶段的秃鹰保持一定的全 局搜索能力, 利用自适应惯性权重对秃鹰位置进行调节, 提 升算法的收敛精度。利用以下自适应非线性惯性权重更新方 式:
w i (  iter  ) = { w max ⁡ − w max ⁡ − w min ⁡ T max ⁡ × f i (  iter  ) − f min ⁡ (  iter  ) f max ⁡ (  iter  ) − f min ⁡ (  iter  ) , f i (  iter  ) < f avg  (  iter  ) w min ⁡ + w max ⁡ − w min ⁡ T max ⁡ × f i (  iter  ) − f min ⁡ (  iter  ) f max ⁡ (  iter  ) − f min ⁡ (  iter  ) , f i (  iter  ) ≥ f avg  (  iter  ) (22) w_i(\text { iter })=\left\{\begin{array}{l} w_{\max }-\frac{w_{\max }-w_{\min }}{T_{\max }} \times \frac{f_i(\text { iter })-f_{\min }(\text { iter })}{f_{\max }(\text { iter })-f_{\min }(\text { iter })} \\ , f_i(\text { iter })<f_{\text {avg }}(\text { iter }) \\ w_{\min }+\frac{w_{\max }-w_{\min }}{T_{\max }} \times \frac{f_i(\text { iter })-f_{\min }(\text { iter })}{f_{\max }(\text { iter })-f_{\min }(\text { iter })} \\ , f_i(\text { iter }) \geq f_{\text {avg }}(\text { iter }) \end{array}\right.\tag{22} wi( iter )= wmaxTmaxwmaxwmin×fmax( iter )fmin( iter )fi( iter )fmin( iter ),fi( iter )<favg ( iter )wmin+Tmaxwmaxwmin×fmax( iter )fmin( iter )fi( iter )fmin( iter ),fi( iter )favg ( iter )(22)
式中, w min  、 w max  w_{\text {min }} 、 w_{\text {max }} wmin wmax  为惯性权重的最小值和最大值, f min  ( f_{\text {min }}( fmin ( iter ) ) ) f max ⁡ ( f_{\max }( fmax( iter ) ) ) 表示适应度最小值和最大值, f avg  ( f_{\text {avg }}( favg ( iter ) ) ) 表示种群适应 度均值, f i ( f_i( fi( iter ) ) ) 表示个体 i i i 的适应度值。
将惯性权重 w ( w( w( iter ) ) ) 引入俯冲捕获猎物阶段中, 秃鹰的位 置更新方式为:
P i ,  new  = rand ⁡ × P best  + x 1 ( i ) × ( w i (  iter  ) × P i − c 1 × P mean  ) + y 1 ( i ) × ( w i (  iter  ) × P i − c 2 × P best  ) (23) \begin{aligned} & P_{i, \text { new }}=\operatorname{rand} \times P_{\text {best }}+x_1(i) \times\left(w_i(\text { iter }) \times P_i-c_1 \times P_{\text {mean }}\right) \\ & +y_1(i) \times\left(w_i(\text { iter }) \times P_i-c_2 \times P_{\text {best }}\right) \end{aligned}\tag{23} Pi, new =rand×Pbest +x1(i)×(wi( iter )×Pic1×Pmean )+y1(i)×(wi( iter )×Pic2×Pbest )(23)

2.4 t 分布随机扰动

为了进一步避免 BES 算法在迭代后期陷入局部最优, 引入 t t t 分布对秃鹰个体位置进行变异扰动。此时, 位置变异 方式为:
P i ∗ = P i + P i × t (  iter  ) (26) P_i^*=P_i+P_i \times t(\text { iter })\tag{26} Pi=Pi+Pi×t( iter )(26)
式中, P i P_i Pi 为秃鹰个体 i i i 的位置, P i ∗ P_i^* Pi t t t 分布变异后的个体 i i i 的新位置, t ( t( t( iter ) ) ) 为自由度参数 iter 时的 t t t 分布算子。
基于 t t t 分布的位置扰动机制能够充分利用当前种群的有 效信息。迭代早期, iter 较小, 代表自由度参数较小, 模型 接近柯西分布, 此时 t ( t( t( iter ) ) ) 对个体 P i P_i Pi 的扰动作用较大, 算法 具备更强的全局搜索能力, 能够避免个体在局部位置聚集; 在算法迭代后期, iter 较大, 即自由度参数较大, t t t 分布接 近高斯分布, 此时分布算子对 P i P_i Pi 的扰动减弱, 能够提升局 部开发能力和收玫精度; 而在算法迭代的中期阶段, 因为 t t t 分布是在逐步地从柯西分布转换至高斯分布, 所以可以集合 两种分布的优点, 更好地使算法在全局搜索与局部开发间取 得均衡。
此外, 为了保留一定原始种群的信息, 秃鹰个体是否进 行 t t t 分布变异取决于变异概率 Pro。若随机生成变量 r ∈ [ 0 , 1 ] r \in[0,1] r[0,1] 大于等于 Pro, 则对个体进行 t t t 分布变异; 否则, 则保留原 始个体位置, 即:
P i ,  new  = { P i ∗ , r ≥  Pro  P i , r <  Pro  (27) P_{i, \text { new }}=\left\{\begin{array}{l} P_i^*, r \geq \text { Pro } \\ P_i, r<\text { Pro } \end{array}\right.\tag{27} Pi, new ={ Pi,r Pro Pi,r< Pro (27)

3.实验结果

在这里插入图片描述

4.参考文献

[1]张海玉,贾润亮.t分布与螺旋黏菌搜索的混沌自适应秃鹰搜索算法[J/OL].小型微型计算机系统:1-12[2023-06-14].http://kns.cnki.net/kcms/detail/21.1106.TP.20230518.1419.010.html

5.Matlab代码

6.python代码

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/131865881