基于黄金莱维引导机制的阿基米德优化算法(MSAOA)-附代码

基于黄金莱维引导机制的阿基米德优化算法(MSAOA)

文章目录

  • 基于黄金莱维引导机制的阿基米德优化算法(MSAOA)
    • 1.阿基米德优化算法
    • 2. 改进阿基米德优化算法
      • 2.1 变区间初始化策略
      • 2.2 黄金莱维引导机制
      • 2.3 自适应波长算子
    • 3.实验结果
    • 4.参考文献
    • 5.Matlab代码
    • 6.Python代码

摘要:针对标准阿基米德优化算法(AOA)在求解优化问题时存在全局探索能力弱、收敛速度慢和求解精度低等问题,提出一种多策略阿基米德优化算法(MSAOA)。首先,利用变区间初始化策略,使得初始种群尽可能地靠近全局最优解,从而提高初始解的质量;其次,提出黄金莱维引导机制,以提高算法在迭代后期的种群多样性;最后,在维持种群多样性的前提下,引入自适应波长算子,以达到提高算法搜索效率的目的。

1.阿基米德优化算法

基础阿基米德优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/119999874

2. 改进阿基米德优化算法

2.1 变区间初始化策略

初始化种群的好坏一定程度上决定了算法的性能, 初始 种群在解空间中的细微不同,都可能影响算法进化方向。 A O A \mathrm{AOA} AOA 的初始种群在搜索空间中随机产生, 导致初始种群分 布不均匀, 搜索范围有限。为了解决以上问题, 获得好的初 始种群, 本文利用变区间初始化策略来提取搜索空间中有用 信息以保证种群向全局最优解靠近。
对于优化问题:
min ⁡ f ( t ) , t i ∈ [ L B i , U B i ] ; i ∈ 1 , 2 , ⋯   , n (13) \min f(t), t_i \in\left[L B_i, U B_i\right] ; i \in 1,2, \cdots, n\tag{13} minf(t),ti[LBi,UBi];i1,2,,n(13)
式中: L B L B LB (Lower Bound) 表示搜索空间中的搜索下限; U B U B UB (Upper Bound) 表示搜索空间中的搜索上限。变区间初始化策略对就是通过不断缩短 [ L B , U U B ] [\boldsymbol{L B}, U \boldsymbol{U B}] [LB,UUB], 将初始种群逼近到式 (13) 中近似最优解的附近。
首先在中间取一个中点 l \boldsymbol{l} l
l = L B + 0.5 ( U B − L B ) (14) \boldsymbol{l}=\boldsymbol{L B}+0.5(\boldsymbol{U B}-\boldsymbol{L} B) \tag{14} l=LB+0.5(UBLB)(14)
生成两个个体:
{ x 1 = ( a ) x 2 = ( b ) (15) \left\{\begin{array}{l} x_1=(a) \\ x_2=(b) \end{array}\right.\tag{15} {x1=(a)x2=(b)(15)
式中 a \boldsymbol{a} a b \boldsymbol{b} b 分别为:
{ a = L B + rand ⁡ ( l − L B ) b = l + rand ⁡ ( U B − l ) (16) \left\{\begin{array}{l} \boldsymbol{a}=\boldsymbol{L} \boldsymbol{B}+\operatorname{rand}(\boldsymbol{l}-\boldsymbol{L} \boldsymbol{B}) \\ \boldsymbol{b}=\boldsymbol{l}+\operatorname{rand}(\boldsymbol{U} \boldsymbol{B}-\boldsymbol{l}) \end{array}\right.\tag{16} {a=LB+rand(lLB)b=l+rand(UBl)(16)
计算 f ( x 1 ) f\left(\boldsymbol{x}_1\right) f(x1) f ( x 2 ) f\left(\boldsymbol{x}_2\right) f(x2) 并比较它们大小, 若 f ( x 1 ) > f ( x 2 ) f\left(x_1\right)>f\left(\boldsymbol{x}_2\right) f(x1)>f(x2), 则有 x ∗ ∈ [ l , U B ] \boldsymbol{x}^* \in[\boldsymbol{l}, \boldsymbol{U B}] x[l,UB], 从而将潜在的最优解位置收缩到 [ l , U B ] [\boldsymbol{l}, U \boldsymbol{B}] [l,UB] 内 ; 然 后依次迭代,不断缩短搜索区间, 并将搜索空间 [ L B , U B ] [\boldsymbol{L B}, U \boldsymbol{B}] [LB,UB] 分 割成 n − 1 n-1 n1 个子区间, 把初始种群聚集到问题(13)的最优解 附近。

2.2 黄金莱维引导机制

其次, 本文引人正弦函数与单位圆之间的关系 [ 19 ] { }^{[19]} [19], 使得 种群能遍历正弦函数上的所有点, 即单位圆上的所有点。个 体位置更新公式为:
X new  t + 1 = X t × ∣ sin ⁡ ( R 1 ) ∣ + R 2 × sin ⁡ ( R 1 ) × s ⊕  dis  (19) \begin{aligned} & \boldsymbol{X}_{\text {new }}^{t+1}=X^t \times\left|\sin \left(R_1\right)\right|+R_2 \times \sin \left(R_1\right) \times s \oplus \text { dis } \end{aligned}\tag{19} Xnew t+1=Xt×sin(R1)+R2×sin(R1)×s dis (19)

 dis  = ∣ θ 1 × X best  t − θ 2 × X i t ∣ (20) \begin{aligned} & \text { dis }=\left|\theta_1 \times X_{\text {best }}^t-\theta_2 \times X_i^t\right| \end{aligned}\tag{20}  dis = θ1×Xbest tθ2×Xit (20)

式中: R 1 ∈ [ 0 , 2 π ] R_1 \in[0,2 \pi] R1[0,2π] 的随机数, R 1 R_1 R1 和莱维步长 s s s 共同决定搜索半 径; R 2 ∈ [ 0 , π ] R_2 \in[0, \pi] R2[0,π] 的随机数,决定个体的位置更新方向; θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 是 引人的黄金分割系数 τ \tau τ, 其目的是缩小搜索空间, 使得算法 在每次迭代都会对能产生优秀解的区域进行充分搜索,从而 加快了算法收敛速度。公式中具体参数表达式如下所示:
{ θ 1 = − π + 2 π × ( 1 − τ ) θ 2 = − π + 2 π × τ τ = ( 5 − 2 ) / 2 (21) \left\{\begin{array}{l} \theta_1=-\pi+2 \pi \times(1-\tau) \\ \theta_2=-\pi+2 \pi \times \tau \\ \tau=(\sqrt{5}-2) / 2 \end{array}\right.\tag{21} θ1=π+2π×(1τ)θ2=π+2π×ττ=(5 2)/2(21)
最后, 虽然对目标个体使用黄金莱维引导机制, 能让算 法跳出局部最优,但并不能保证新的个体位置优于原目标个 体位置, 因此在引导机制后加人贪婪机制, 通过比较个体位 置更新前后个体适应度后再决定是否更新目标位置, 以保留 适应度较好的个体。贪婪机制具体操作表达式如下:
X i t + 1 = { X i t + 1 ,  fit  ( X i t + 1 ) > f i t ( X new  t + 1 ) X new  t + 1 ,  fit  ( X i t + 1 ) ⩽  fit  ( X new  t + 1 ) (22) X_i^{t+1}= \begin{cases}X_i^{t+1}, & \text { fit }\left(X_i^{t+1}\right)>f i t\left(X_{\text {new }}^{t+1}\right) \\ X_{\text {new }}^{t+1}, & \text { fit }\left(X_i^{t+1}\right) \leqslant \text { fit }\left(X_{\text {new }}^{t+1}\right)\end{cases}\tag{22} Xit+1={Xit+1,Xnew t+1, fit (Xit+1)>fit(Xnew t+1) fit (Xit+1) fit (Xnew t+1)(22)

2.3 自适应波长算子

受到浸泡在液体中运动物体会导致水平面发生波动现 象启发, 本文提出了自适应波长算子: 达到自身平衡(适应度 较好) 的个体, 引起波动较小, 从而具有较长的波长; 还远末 达到自身平衡(适应度较差) 的个体运动会引起的较大波动, 从而具有较短的波长。
A O A \mathrm{AOA} AOA 中, 由于缺乏多样性的操作, 当 A O A \mathrm{AOA} AOA 进化到一定 的程度时, 导致 AOA 很难从自身适应度获取收益。因此结 合浸泡在液体中运动物体的物理现象, 本文提出自适应波长 算子增强个体学习效率, 提高算法寻优精度。
λ i = α − ( f ( X i ) − f min ⁡ + ε ) / ( f max ⁡ − f min ⁡ + ε ) (23) \lambda_i=\alpha^{-\left(f\left(X_i\right)-f_{\min }+\varepsilon\right) /\left(f_{\max }-f_{\min }+\varepsilon\right)}\tag{23} λi=α(f(Xi)fmin+ε)/(fmaxfmin+ε)(23)
式中: λ i \lambda_i λi 表示第 i i i 个体运动引起的波长系数; f ( X i ) f\left(X_i\right) f(Xi) 表示当前 迭代中第 i i i 个个体的适应度值; f min ⁡ f_{\min } fmin f max  f_{\text {max }} fmax  分别表示当前迭代 中最优适应度值和最差适应度值; α \alpha α 为衰减因子, ε \varepsilon ε 为一个非 常小的有理数, 以防止分母为 0 的情况。最后将自适应波长 系数融合到密度因子, 得到新密度因子更新公式为:
d i l + 1 = 1.5 × exp ⁡ ( ( t max  − t ) / t max  ) − λ i ( t / t max ⁡ ) (24) d_i^{l+1}=1.5 \times \exp \left(\left(t_{\text {max }}-t\right) / t_{\text {max }}\right)-\lambda_i\left(t / t_{\max }\right)\tag{24} dil+1=1.5×exp((tmax t)/tmax )λi(t/tmax)(24)
式中 d i t + 1 d_i^{t+1} dit+1 表示在 t + 1 t+1 t+1 代中第 i i i 个个体的密度因子。新的密度 因子的大小会根据个体自身适应度动态变化: 适应度接近最 优适应度的个体, A O A \mathrm{AOA} AOA 保持原来的密度因子的性质; 而适应 度较差的个体, 密度因子接近最大值, 使当前个体拥有较长 的步长, 快速向最优解靠近。

基于黄金莱维引导机制的阿基米德优化算法(MSAOA)-附代码_第1张图片

3.实验结果

基于黄金莱维引导机制的阿基米德优化算法(MSAOA)-附代码_第2张图片

4.参考文献

[1]陈俊,何庆,李守玉.基于黄金莱维引导机制的阿基米德优化算法[J].计算机应用,2022,42(09):2807-2815.

5.Matlab代码

6.Python代码

你可能感兴趣的:(智能优化算法改进,算法,人工智能,机器学习)