基于三重动态调整的花授粉算法

一、理论基础

1、花授粉算法

请参考这里

2、改进后的花授粉算法

(1)动态概率 P α P_\alpha Pα

为了平衡FPA算法的全局搜索和局部搜索,使算法更加灵活,将固定转换概率0.8更改为随着迭代次数自适应变化的动态转换概率 P α P_\alpha Pα,即 P α = w max ⁡ − ( w max ⁡ − w min ⁡ ) α (1) P_\alpha=w_{\max}-(w_{\max}-w_{\min})\alpha\tag{1} Pα=wmax(wmaxwmin)α(1) α \alpha α由式(2)计算得到,即 α = sin ⁡ ( π 2 t t max ⁡ ) (2) \alpha=\sin(\frac\pi2\frac{t}{t_{\max}})\tag{2} α=sin(2πtmaxt)(2)其中, w max ⁡ w_{\max} wmax w min ⁡ w_{\min} wmin分别为 w w w的最大值与最小值; t t t为当前迭代次数, t max ⁡ t_{\max} tmax为最大迭代次数。本文取 w max ⁡ = 0.9 , w min ⁡ = 0.2 w_{\max}=0.9,w_{\min}=0.2 wmax=0.9,wmin=0.2。在迭代初期, P α P_\alpha Pα的取值较大,所以算法侧重于全局搜索,有效地增强了全局搜索能力,使得种群中的个体更靠近最优解;随着迭代深入, P α P_\alpha Pα的值越来越小,使算法更倾向局部精细的搜索,有利于算法后期快速找到最优解。

(2)新型动态因子 ω \omega ω

为了提高FPA算法跳出局部最优的能力,在异花授粉及全局搜索过程基础上引入新型动态因子 ω \omega ω,调节种群迭代过程中搜索个体对当前母系花粉位置信息的依赖性。新型动态因子 ω \omega ω的计算公式如(3)式所示: ω = ω 1 ϑ (3) \omega=\omega_1\vartheta\tag{3} ω=ω1ϑ(3)其中: ω 1 = − t t max ⁡ lg ⁡ t t max ⁡ (4) \omega_1=-\frac{t}{t_{\max}}\lg\frac{t}{t_{\max}}\tag{4} ω1=tmaxtlgtmaxt(4)计算得 ω 1 \omega_1 ω1的取值范围为 [ 0 , 0.3679 ] [0,0.3679] [0,0.3679],即 ϑ = ω max ⁡ ω 1 max ⁡ = 2.7181 (5) \vartheta=\frac{\omega_{\max}}{\omega_{1\max}}=2.7181\tag{5} ϑ=ω1maxωmax=2.7181(5)迭代前期动态因子 ω \omega ω值较小,削弱母系花粉位置对算法的影响,让花粉更自由地以Levy飞行在搜索空间内大范围地进行搜索,增加全局搜索的能力。迭代后期,动态因子 ω \omega ω减小,使跳出局部最优的能力得到增强。改进后的异花授粉公式为 X i t + 1 = ω X i t + L ( X i t − g best ) (6) \boldsymbol X_i^{t+1}=\omega\boldsymbol X_i^t+L(\boldsymbol X_i^t-\boldsymbol g_{\text{best}})\tag{6} Xit+1=ωXit+L(Xitgbest)(6)

(3)正弦余弦步长因子 μ \mu μ

花授粉算法局部搜索机制中步长因子 ε \varepsilon ε ( 0 , 1 ) (0,1) (0,1)中的随机数,算法迭代到后期容易导致求解精度低、易陷入局部最优等问题,所以本文提出了正弦余弦步长因子 μ \mu μ μ = { r 1 sin ⁡ r 2 r 3 > 0.5 r 1 cos ⁡ r 2 r 3 ≤ 0.5 (7) \mu=\begin{dcases}r_1\sin r_2\quad r_3>0.5\\r_1\cos r_2\quad r_3≤0.5\end{dcases}\tag{7} μ={r1sinr2r3>0.5r1cosr2r30.5(7) r 1 r_1 r1由式(8)计算可得,即 r 1 = a − a t t max ⁡ (8) r_1=a-a\frac{t}{t_{\max}}\tag{8} r1=aatmaxt(8)其中, a = 1 a=1 a=1 r 2 ∈ [ 0 , 2 π ] r_2\in[0,2\pi] r2[0,2π] r 3 r_3 r3 [ 0 , 1 ] [0,1] [0,1]之间的随机数。
图1为步长因子随迭代时间 t t t变化图。由图1可知:若迭代初期出现自花授粉的过程,较大的步长因子,使得算法前期具有较好的跳出局部最优的能力;随着迭代次数增加,动态概率 P α P_\alpha Pα逐渐减小,使得算法后期主要进行自花授粉过程;在算法后期,随着迭代次数的增加,正余弦步长因子的精度数量级也不断增加,有效地提高了算法的求解精度。改进后的自花授粉公式为 X i t + 1 = ω X i t + μ ( X j t − X k t ) (9) \boldsymbol X_i^{t+1}=\omega\boldsymbol X_i^t+\mu(\boldsymbol X_j^t-\boldsymbol X_k^t)\tag{9} Xit+1=ωXit+μ(XjtXkt)(9)
在这里插入图片描述

图1 步长因子 μ \mu μ变化图

(4)实现步骤

1)初始化算法中各个参数。初始化花粉种群规模 N N N、最大迭代次数 t max ⁡ t_{\max} tmax, 根据式(1)定义异花授粉和自花授粉转换概率 P α P_\alpha Pα
2)初始化花粉种群。寻找当前最优花粉和其所处位置 g best \boldsymbol g_{\text{best}} gbest,并计算出其适应度值 f ( g best ) f(\boldsymbol g_{\text{best}}) f(gbest)
3)进入主循环过程,随机产生一个随机数 rand ( ⋅ ) \text{rand}(\cdot) rand() ,如果 rand ( ⋅ ) > P α \text{rand}(\cdot)>P_\alpha rand()>Pα,则按照式(6)进行异花授粉,更新当前花粉位置;否则,根据式(9)进行自花授粉,并更新花粉位置。
4)判断是否更新个体。如果 f ( x i t + 1 ) < f ( x i t ) f(\boldsymbol x_i^{t+1})<f(\boldsymbol x_i^t) f(xit+1)<f(xit),则选择接受新的解,并传粉 x i t \boldsymbol x_i^t xit至新位置 x i t + 1 \boldsymbol x_i^{t+1} xit+1;否则,转至步骤3)。
5)与最优花粉进行比较,如果 f ( x n ) < f ( g best ) f(\boldsymbol x_n)<f(\boldsymbol g_{\text{best}}) f(xn)<f(gbest),则替换之前最优花粉 g best \boldsymbol g_{\text{best}} gbest x n \boldsymbol x_n xn
6)若当前花粉不是种群中最后一个花粉,则选择下一个花粉,并返回步骤4);否则,转至步骤7)。
7)满足算法的终止条件(达到最大迭代次数),则进行步骤8); 否则进入步骤3), 继续进入下一代搜索。
8)输出最优的花粉个体 x n \boldsymbol x_n xn和全局最优解 f ( x n ) f(\boldsymbol x_n) f(xn)

二、实验仿真与分析

为了验证算法的有效性与可行性,从Benchmarks测试函数中选取了7个典型函数进行测试,并从4个方面分析其性能。测试函数与算法参数见表1和表2,表1中测试函数最优值均为0。

表1 测试函数

在这里插入图片描述

表2 算法参数

在这里插入图片描述

下图分别为4种算法在f1~f7函数中的收敛曲线图,各函数维数均为10。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述函数仿真结果显示如下:

函数:F1
HLFPA:最差值: 8.8818e-16,最优值:8.8818e-16,平均值:8.8818e-16,标准差:0
CS:最差值: 0.00083503,最优值:8.9338e-07,平均值:8.4758e-05,标准差:0.00016489
FPA:最差值: 0.21249,最优值:5.6861e-06,平均值:0.007517,标准差:0.038726
ASCSA:最差值: 1.1551,最优值:8.8818e-16,平均值:0.038505,标准差:0.2109
函数:F2
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 10.8355,最优值:3.8114,平均值:6.4537,标准差:1.5912
FPA:最差值: 21.8917,最优值:8.0443,平均值:15.1446,标准差:3.4885
ASCSA:最差值: 4.9748,最优值:0,平均值:1.8241,标准差:1.3086
函数:F3
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 0.10313,最优值:0.019826,平均值:0.050199,标准差:0.017413
FPA:最差值: 0.1937,最优值:0.071688,平均值:0.11488,标准差:0.026984
ASCSA:最差值: 0.12792,最优值:0.0098647,平均值:0.054473,标准差:0.028505
函数:F4
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 1.2995e-15,最优值:2.8301e-17,平均值:2.2139e-16,标准差:2.5651e-16
FPA:最差值: 8.8805e-13,最优值:1.0486e-14,平均值:2.4168e-13,标准差:1.9036e-13
ASCSA:最差值: 4.1769e-49,最优值:1.2888e-54,平均值:3.6513e-50,标准差:9.8592e-50
函数:F5
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 7.9977e-07,最优值:9.6521e-08,平均值:3.1238e-07,标准差:1.7591e-07
FPA:最差值: 4.4359e-05,最优值:2.4913e-06,平均值:1.1455e-05,标准差:9.5835e-06
ASCSA:最差值: 6.3044e-35,最优值:7.8977e-38,平均值:1.415e-35,标准差:1.9181e-35
函数:F6
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:5.4689e-12
FPA:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:2.5058e-10
ASCSA:最差值: 0.043671,最优值:0.043671,平均值:0.043671,标准差:2.9306e-11
函数:F7
HLFPA:最差值: 0,最优值:0,平均值:0,标准差:0
CS:最差值: 1.1875e-06,最优值:3.5101e-08,平均值:2.6133e-07,标准差:2.473e-07
FPA:最差值: 0.016674,最优值:0.0010201,平均值:0.0057926,标准差:0.0045047
ASCSA:最差值: 0.095589,最优值:0.00035807,平均值:0.024449,标准差:0.024883

实验结果表明,改进后的FPA算法具有较快的收敛速度、较高的寻优精度,且适用于高维复杂函数求解问题。

三、参考文献

[1] 洪露, 贺兴时, 杨新社. 基于三重动态调整的花授粉算法[J]. 西安工程大学学报, 2021, 35(2): 97-103.
[2] 李荣雨, 戴睿闻. 自适应步长布谷鸟搜索算法[J]. 计算机科学, 2017, 44(5): 235-240.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心️升明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值