融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法-附代码
融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法
文章目录
- 融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法
- 1.海鸥优化算法
- 2. 改进海鸥优化算法
- 2.1 改进型 Logistics 混沌映射的种群初始化
- 2.2 参数 A 改进
- 2.3 正弦余弦算子
- 2.4 自适应 t 分布变异策略
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.python代码
摘要:针对基本海鸥算法存在的缺陷,提出一种融合改进Logistics混沌和正弦余弦算子的自适应t分布海鸥算法(ISOA)。首先,采用改进Logistics混沌映射初始化种群,使海鸥更加均匀地分布于初始解空间;其次,在海鸥位置更新方式中引入正弦余弦算子来协调算法的局部搜索和全局搜索,同时加入改进的参数A加快算法收敛速度;然后,引入自适应t分布变异策略,在最优解位置进行扰动变异产生新解,增强算法跳出局部最优的能力;
1.海鸥优化算法
基础海鸥优化算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/107535864
2. 改进海鸥优化算法
2.1 改进型 Logistics 混沌映射的种群初始化
在海鸥算法中, 海鸥初始种群由随机生成。由于混沌具 有遍历性和随机性的特点, 可以使用混沌映射进行种群初始 化。与随机生成的种群相比较, 混沌映射生成的初始种群具 有更好的多样性, 初始解更均匀地分布在搜索空间, 可以有 效避免算法早熟和陷入局部最值, 从而提高算法的收敛速度 与精度。
Logistics 混沌映射作为最经典的混沌映射方式之一, 具 有随机性、遍历性、强发散性等特点而被广泛应用于群智能 算法的种群初始化。Logistics 混沌映射函数如公式(9)所示:
xn+1=4xn(1−xn)xn∈(0,1),n=1,2,⋯(9)x_{n+1}=4 x_n\left(1-x_n\right) \quad x_n \in(0,1), n=1,2, \cdots \tag{9} xn+1=4xn(1−xn)xn∈(0,1),n=1,2,⋯(9)
Logistics 混沌映射被广泛应用于改进群智能优化算法, 但是其仍存有分布不够均匀等缺陷。因此本文拟采用一种改进型 Logistics 映射(ILM)来初始化海鸥种群。设定目标优 化函数为:
minf(x1,x2,x3,⋯xn),ai<xi<bi(10)\min f\left(x_1, x_2, x_3, \cdots x_n\right), a_i<x_i<b_i \tag{10} minf(x1,x2,x3,⋯xn),ai<xi<bi(10)
通过公式(11)得到均匀化级联混沌序列 [yn]:\left[\mathrm{y}_{\mathrm{n}}\right]:[yn]:
{xn+1′=4xn′(1−xn′)yn′=1πarcsin(2xn+1′−1)−12xn+1=4yn′(1−yn′)yn=1πarcsin(2xn+1−1)−12(11)\left\{\begin{array}{c} x_{n+1}^{\prime}=4 x_n^{\prime}\left(1-x_n^{\prime}\right) \\ y_n^{\prime}=\frac{1}{\pi} \arcsin \left(2 x_{n+1}^{\prime}-1\right)-\frac{1}{2} \\ x_{n+1}=4 y_n^{\prime}\left(1-y_n^{\prime}\right) \\ y_n=\frac{1}{\pi} \arcsin \left(2 x_{n+1}-1\right)-\frac{1}{2} \end{array}\right. \tag{11} ⎩⎨⎧xn+1′=4xn′(1−xn′)yn′=π1arcsin(2xn+1′−1)−21xn+1=4yn′(1−yn′)yn=π1arcsin(2xn+1−1)−21(11)
海鸥的初始位置由 [yn]\left[y_n\right][yn] 经过式(12)进行线性变换得到。
Zi=ai+(bi−ai)xn(12)Z_i=a_i+\left(b_i-a_i\right) x_n \tag{12} Zi=ai+(bi−ai)xn(12)
其中, aia_iai 和 bib_ibi 表示优化变量区间的最小值和最大值。
2.2 参数 A 改进
海鸥算法通过引入 fcf_cfc 控制变量 A\mathrm{A}A 的频率, 使变量 A\mathrm{A}A 的 值随迭代从 2 线性降低至 0,fc0, f_c0,fc 通常设置为 2 。但是算法收 敛过程是非线性的, 因此线性收敛的参数 A\mathrm{A}A 并不能完全适 用于 SOA 的搜索过程。因此本文引入一种新型非线性递减 的改进参数 A\mathrm{A}A, 为提高算法的全局搜索能力引入符合 beta 分布的随机调整数对 A\mathrm{A}A 进行局部扰动, 避免算法陷入局部 最优 [17]{ }^{[17]}[17] 。新型非线性递减的参数 A\mathrm{A}A 如公式(13)所示:
A=(Ainitial −Afinal )÷(1+e(20t/Tmax)−10)+σ∗betarnd(p,q)(13)\left.\mathrm{A}=\left(A_{\text {initial }}-A_{\text {final }}\right) \div\left(1+e^{\left(20 t / T_{\max }\right.}\right)-10\right)+\sigma *betarnd(p, q) \tag{13} A=(Ainitial −Afinal )÷(1+e(20t/Tmax)−10)+σ∗betarnd(p,q)(13)
其中 Ainitial A_{\text {initial }}Ainitial 表示 A\mathrm{A}A 的初始值, Afinal A_{\text {final }}Afinal 表示终止值, t\mathrm{t}t 为当前迭代次数, TmaxT_{\max }Tmax 为最大迭代次数。 σ\sigmaσ 为收敛调整因 子, 经多次实验发现 σ=0.1\sigma=0.1σ=0.1 时效果最好, betarnd为 MATLAB 中的随机数生成器, 可以生成符合 beta 分布的随机数。
2.3 正弦余弦算子
为了促进最优海鸥个体信息在种群中的传递,提高海鸥算法的性能,本文引入正弦余弦算子用以改变海鸥算法的迭代方式,即在迭代过程中改变原有迭代方式,按照相同的概率对海鸥个体进行正弦或者余弦操作, 改进迭代方式如公式 (14)所示:
Pst+1={r1sinr2⋅Dst⋅XYZ+Pbstr3>0.5r1cosr2⋅Dst⋅XYZ+Pbstr3≤0.5(14)P_s^{t+1}= \begin{cases}r_1 \sin r_2 \cdot D_s^t \cdot X Y Z+P_{b s}^t & r_3>0.5 \\ r_1 \cos r_2 \cdot D_s^t \cdot X Y Z+P_{b s}^t & r_3 \leq 0.5\end{cases} \tag{14} Pst+1={r1sinr2⋅Dst⋅XYZ+Pbstr1cosr2⋅Dst⋅XYZ+Pbstr3>0.5r3≤0.5(14)
其中 r1=a−t×(a/Tmax),r1r_1=\mathrm{a}-\mathrm{t} \times\left(\mathrm{a} / \mathrm{T}_{\max }\right), r_1r1=a−t×(a/Tmax),r1 的值取决于常数 a\mathrm{a}a, 本文 a\mathrm{a}a 的取值为 2 。较大的 r1r_1r1 值可以提高算法的全局搜索能力, 而较小的 r1r_1r1 值则有利于算法的局部开发, 同时随着迭代次数 的增加 r1r_1r1 的取值逐渐变小, 对算法的搜索和开发能力进行了 平衡。 r2r_2r2 在区间 [0,2π][0,2 \pi][0,2π] 之间随机取值, 定义了当前解接近 或者远离最优解的距离; r3r_3r3 是 [0,1][0,1][0,1] 内的随机数, 并以相同 的概率切换正弦和余弦算子。
引入正弦余弦算子完美契合了海鸥算法的寻优机制, 进 一步平衡算法的全局搜索和局部开发能力。一部分海鸥遵循 新的迭代方式远离最优解, 扩大了搜索空间, 增加了海鸥种 群的多样性, 避免原有寻优机制存在的盲点。而另一部分海 鸥以更快的速度接近最优解, 以较少的迭代达到更佳的寻优 效果, 提高了算法的收敛速度。正弦余弦算子的融入, 丰富 了海鸥种群的多样性, 提高了算法的收敛速度和精度, 极大 提升了算法的性能。
2.4 自适应 t 分布变异策略
在智能优化算法中引入柯西变异和高斯变异已被证实 可以有效提升算法性能。其中柯西变异可以丰富种群多样 性, 而高斯变异可以使算法获得良好的局部搜索能力。柯西 分布和高斯分布都是 t\mathrm{t}t 分布的两种特殊形式, 随着迭代次数 的增加, 自由度参数 t\mathrm{t}t 的增长, t\mathrm{t}t 分布曲线由开始的符合柯 西分布逐渐接近高斯分布。
在最优解位置附近生成符合 t\mathrm{t}t 分布变异的新解, 可以同 时结合高斯分布和柯西分布的优点。算法迭代初期, 自由度 参数 t 取值较小, 这时候 t\mathrm{t}t 分布主要呈现出柯西分布的特点, 丰富了种群的多样性, 有效提升算法的全局搜索能力; 在迭 代进行到中后期时, 自由度参数 t\mathrm{t}t 取值较大, t\mathrm{t}t 分布无限接 近高斯分布, 增强的是算法局部开发能力, 提高其收玫精度。 为了在前期丰富种群多样性的同时, 在后期保留海鸥种群的 精英解, 这里同时引入自适应参数 ω\omegaω 。在迭代前期 ω\omegaω 可以取 较大的值, 利用 t\mathrm{t}t 分布变异产生的新解增加种群多样性。随 着迭代次数的增加算法逐渐接近最优解, 自适应参数 ω\omegaω 控 制 t\mathrm{t}t 分布对新解的影响逐步降低, 充分保留了海鸥种群的精 英解。符合 t\mathrm{t}t 分布变异的新解和 ω\omegaω 的表达式如公式(15)和(16) 所示:
Pnews t=Pbst+ω⋅TD(t)⋅Pbst(15)ω=a+(b−a)⋅T−tT(16)\begin{aligned} P_{\text {news }}^t &=P_{b s}^t+\omega \cdot T D(t) \cdot P_{b s}^t &(15)\\ \omega &=\mathrm{a}+(b-a) \cdot \frac{T-t}{T} &(16) \end{aligned} Pnews tω=Pbst+ω⋅TD(t)⋅Pbst=a+(b−a)⋅TT−t(15)(16)
式中 TD(t)T D(t)TD(t) 表示自由度参数为 t\mathrm{t}t 的 t\mathrm{t}t 分布, a=0.1,b=1\mathrm{a}=0.1, \mathrm{~b}=1a=0.1, b=1, T\mathrm{T}T 为最大迭代次数。
按照一定的概率接受自适应 t\mathrm{t}t 分布变异的新解, 随机生成一个参数 pe∈[0,1]p e \in[0,1]pe∈[0,1], 新的最优海鸥位置确定如公式(17) 所示:
Pbest ={Pbspe>0.5Pnews pe≤0.5(17)P_{\text {best }}=\left\{\begin{array}{lc} P_{b s} & p e>0.5 \\ P_{\text {news }} & p e \leq 0.5 \end{array}\right. \tag{17} Pbest ={PbsPnews pe>0.5pe≤0.5(17)
这样算法进行迭代寻优时, 通过概率 pep epe 确定最优解时 会有两种选择: 一是继续按照原算法进行选择的最优解, 维 持种群多样性的同时保留了精英解; 二是选择了自适应 t\mathrm{t}t 分 布变异扰动后产生的新解, 其结合了高斯分布和柯西分布的 优点。
改进海鸥算法(ISOA)的具体执行步骤如下:
步骤 1:海鸥种群根据公式(11)、(12)进行初始化;
步骤 2: 设置算法中的参数 A,B,Tmax,A\mathrm{A}, \mathrm{B}, \mathrm{T}_{\max }, \mathrm{A}A,B,Tmax,A 的初始值 Ainitial A_{\text {initial }}Ainitial 和终止值 Afinal A_{\text {final }}Afinal 。设置 u=1,v=1,rd\mathrm{u}=1, \mathrm{v}=1, r_du=1,v=1,rd 在 [0,1][0,1][0,1] 内随机 取值, θ\thetaθ 在 [0,2π][0,2 \pi][0,2π] 内随机取值。其中 A\mathrm{A}A 的表达式如公式 (13);
步骤 3: 计算适应度值 PSP_SPS, 使用适应度函数计算每只海 鸥的适应度值, 海鸥最优位置为 PbstP_{b s}^tPbst;
步骤 4:根据公式(1)、(3)、(5)计算海鸥的位 置 DStD_S^tDSt;
步骤 5:根据公式(6)、(7)、(14)计算海鸥新的 攻击位置 PSt+1P_S^{t+1}PSt+1;
步骤 6: 更新最佳海鸥位置和适应值;
步骤 7:根据公式 (15) 对最优位置进行扰动;
步骤 8: 根据公式 (17) 确定最优位置;
步骤 9: 判断是否达到结束条件, 若是则进行下一步, 否则跳转步骤(2)。
步骤 10: 程序结束, 输出最优结果。
3.实验结果
4.参考文献
[1]毛清华,王迎港.融合改进Logistics混沌和正弦余弦算子的自适应t分布海鸥算法[J/OL].小型微型计算机系统:1-9[2021-11-16].http://kns.cnki.net/kcms/detail/21.1106.TP.20211019.1549.006.html.
5.Matlab代码
6.python代码
总结
以上是生活随笔为你收集整理的融合改进 Logistics 混沌和正弦余弦算子的自适应 t 分布海鸥算法-附代码的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【MSP430】基于MSP430G255
- 下一篇: 软件测试 质量管控,软件测试之质量管理入