基于三重动态调整的花授粉算法-附代码

该博客介绍了一种改进的花授粉算法,通过动态概率调整、新型动态因子和正弦余弦步长因子,旨在解决传统花授粉算法的收敛速度慢、局部最优问题。算法通过自适应搜索策略和跳出局部优势机制,有效增强全局搜索和精细搜索能力。
摘要由CSDN通过智能技术生成

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


摘要:针对花授粉算法存在的收敛速度慢、易陷入局部最优及收敛精度低等缺点,提出了基于三重动态调整的改进花授粉算法。采用动态转换概率切换算法的搜索模式,在全局搜索更新机制中引入新型动态因子,并在局部开发更新机制中引入正余弦步长因子。

1.花授粉算法

基础花授粉算法的具体原理参考,我的博客:https://blog.csdn.net/u011835903/article/details/108346554

2. 改进花授粉算法

2.1 动态概率 P

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

2. 2 新型动态因子 ω

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

2.3 正弦余弦步长因子 μ

花授粉算法局部搜索机制中步长因子 ε \varepsilon ε ( 0 (0 (0, 1) 中的随机数, 算法迭代到后期容易导致求解精度 低, 易陷入局部最优等问题, 所以本文提出了正弦余 弦步长因子 μ \mu μ
μ = { r 1 sin ⁡ r 2 r 3 > 0.5 r 1 cos ⁡ r 2 r 3 ⩽ 0.5 (9) \mu= \begin{cases}r_{1} \sin r_{2} & r_{3}>0.5 \\ r_{1} \cos r_{2} & r_{3} \leqslant 0.5\end{cases} \tag{9} μ={r1sinr2r1cosr2r3>0.5r30.5(9)
r 1 r_{1} r1 由式(9) 计算可得, 即
r 1 = a − a t t max ⁡ (10) r_{1}=a-a \frac{t}{t_{\max }} \tag{10} r1=aatmaxt(10)
式中: a = 1 ; r 2 ∈ [ 0 , 2 π ] ; r 3 a=1 ; r_{2} \in[0,2 \pi] ; r_{3} a=1;r2[0,2π];r3 [ 0 , 1 ] [0,1] [0,1] 之间的 随 机数。

改进后的自花授粉公式为:
X i t + 1 = X i t + μ ( X j t − X k t ) (11) \boldsymbol{X}_{i}^{t+1}=\boldsymbol{X}_{i}^{t}+\mu\left(\boldsymbol{X}_{j}^{t}-\boldsymbol{X}_{k}^{t}\right) \tag{11} Xit+1=Xit+μ(XjtXkt)(11)
1)初始化算法中各个参数。初始化花粉种群 规模 N N N 、最 大迭代次数 T max ⁡ T_{\max } Tmax, 根据式 (3) 定义异花授 粉和自花授粉转换概率 P a P_{a} Pa
2) 初始化花粉种群。寻找当前最优花粉和其 所处地位置 g b g_{\mathrm{b}} gb, 并计算出其适应度值 f ( g b ) f\left(g_{\mathrm{b}}\right) f(gb)
3) 进入主循环过程, 随机产生一个迶机数 rand(•), 如果 rand ⁡ ( ⋅ ) > P a \operatorname{rand}(\cdot)>P_{a} rand()>Pa, 则按照式 (7) 进行异 花授粉, 更新当前花粉位置; 否则, 根据式 (10) 进行 自花授粉,并更新花粉位置。
4) 判断是否更新个体。如果 f ( x i t + 1 ) < f\left(\boldsymbol{x}_{i}^{t+1}\right)< f(xit+1)< f ( x i t ) f\left(\boldsymbol{x}_{i}^{t}\right) 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\left(\boldsymbol{x}_{n}\right)< f(xn)< f ( g b ) f\left(g_{\mathrm{b}}\right) f(gb), 则替换之前最优花粉 g b g_{\mathrm{b}} gb x n x_{n} xn
6) 若当前花粉不是种群中最后一个花粉, 则选 择下一个花粉, 并返回步骤 4); 否则, 转至步骤 7)。
7) 满足算法的终止条件 (达到最大迭代次数), 则进行步骤 8); 否则进入步骤 3), 继续进入下-代 捜索。
8) 输出最优的花粉个体 x n \boldsymbol{x}_{n} xn 和全局最优解 f ( x n ) ∘ f\left(\boldsymbol{x}_{n}\right)_{\circ} f(xn)

3.实验结果

请添加图片描述

4.参考文献

[1]洪露,贺兴时,杨新社.基于三重动态调整的花授粉算法[J].西安工程大学学报,2021,35(02):97-103.

5.Matlab代码

6.Python代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能算法研学社(Jack旭)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值