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


文章目录

  • 基于三重动态调整的花授粉算法
  • 1.花授粉算法
  • 2. 改进花授粉算法
  • 2.1 动态概率 P
  • 2. 2 新型动态因子 ω
  • 2.3 正弦余弦步长因子 μ
  • 3.实验结果
  • 4.参考文献
  • 5.Matlab代码
  • 6.Python代码



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

1.花授粉算法

2. 改进花授粉算法

2.1 动态概率 P

为了平衡 FPA算法的全局搜索和局部搜索, 使 算法更加灵活, 将固定转换概率 基于三重动态调整的花授粉算法-附代码_搜索 更改为随着迭 代次数自适应变化的动态转换概率 基于三重动态调整的花授粉算法-附代码_迭代_02, 即
基于三重动态调整的花授粉算法-附代码_迭代_03
基于三重动态调整的花授粉算法-附代码_迭代_04 由式 (4) 计算得到, 即
基于三重动态调整的花授粉算法-附代码_概率论_05
式中: 基于三重动态调整的花授粉算法-附代码_概率论_06基于三重动态调整的花授粉算法-附代码_搜索_07 分别为 基于三重动态调整的花授粉算法-附代码_概率论_08 的最大值与最小值; 基于三重动态调整的花授粉算法-附代码_搜索_09 为 当前迭代次数, 基于三重动态调整的花授粉算法-附代码_机器学习_10 为最大迭代次数。根据文献 基于三重动态调整的花授粉算法-附代码_机器学习_11 。在迭代初期, 基于三重动态调整的花授粉算法-附代码_概率论_12 的取 值较大, 所以算法侧重于全局搜索, 有效地增强了全 局搜索能力, 使得种群中的个体更靠近最优解; 随着 迭代深入, 基于三重动态调整的花授粉算法-附代码_概率论_12

2. 2 新型动态因子 ω

为了提高 FPA 算法跳出局部最优的能力, 在式
(1) 给出的算法模型基础上引入新型动态因子 基于三重动态调整的花授粉算法-附代码_机器学习_14, 调节种群迭代过程中搜索个体对当前母系花 粉位置信息的依赖性。新型动态因子 基于三重动态调整的花授粉算法-附代码_算法_15 的计算公式 如(5) 式所示:
基于三重动态调整的花授粉算法-附代码_机器学习_16
式中:
基于三重动态调整的花授粉算法-附代码_迭代_17
计算得 基于三重动态调整的花授粉算法-附代码_算法_18 的取值范围为 基于三重动态调整的花授粉算法-附代码_搜索_19, 即
基于三重动态调整的花授粉算法-附代码_概率论_20
迭代前期动态因子 基于三重动态调整的花授粉算法-附代码_算法_15 值较小, 削弱母系花粉位 置对算法的影响, 让花粉更自由地以 Levy 飞行在搜 索空间内大范围地进行搜索, 增加全局搜索的能 力。迭代后期,动态因子 基于三重动态调整的花授粉算法-附代码_算法_15 减小, 使跳出局部最优的 能力得到增强。改进后的异花授粉公式为
基于三重动态调整的花授粉算法-附代码_概率论_23

2.3 正弦余弦步长因子 μ

花授粉算法局部搜索机制中步长因子 基于三重动态调整的花授粉算法-附代码_概率论_24基于三重动态调整的花授粉算法-附代码_概率论_25, 1) 中的随机数, 算法迭代到后期容易导致求解精度 低, 易陷入局部最优等问题, 所以本文提出了正弦余 弦步长因子 基于三重动态调整的花授粉算法-附代码_迭代_26
基于三重动态调整的花授粉算法-附代码_机器学习_27
基于三重动态调整的花授粉算法-附代码_机器学习_28 由式(9) 计算可得, 即
基于三重动态调整的花授粉算法-附代码_概率论_29
式中: 基于三重动态调整的花授粉算法-附代码_机器学习_30基于三重动态调整的花授粉算法-附代码_机器学习_31

改进后的自花授粉公式为:
基于三重动态调整的花授粉算法-附代码_概率论_32
1)初始化算法中各个参数。初始化花粉种群 规模 基于三重动态调整的花授粉算法-附代码_算法_33 、最 大迭代次数 基于三重动态调整的花授粉算法-附代码_概率论_34, 根据式 (3) 定义异花授 粉和自花授粉转换概率 基于三重动态调整的花授粉算法-附代码_概率论_12
2) 初始化花粉种群。寻找当前最优花粉和其 所处地位置 基于三重动态调整的花授粉算法-附代码_机器学习_36, 并计算出其适应度值 基于三重动态调整的花授粉算法-附代码_迭代_37
3) 进入主循环过程, 随机产生一个迶机数 rand(•), 如果 基于三重动态调整的花授粉算法-附代码_机器学习_38, 则按照式 (7) 进行异 花授粉, 更新当前花粉位置; 否则, 根据式 (10) 进行 自花授粉,并更新花粉位置。
4) 判断是否更新个体。如果 基于三重动态调整的花授粉算法-附代码_迭代_39 基于三重动态调整的花授粉算法-附代码_搜索_40, 则选择接受新的解, 并传粉 基于三重动态调整的花授粉算法-附代码_搜索_41 至新位置 基于三重动态调整的花授粉算法-附代码_迭代_42; 否则, 转至步骤3)。
5) 与最优花粉进行比较, 如果 基于三重动态调整的花授粉算法-附代码_迭代_43 基于三重动态调整的花授粉算法-附代码_迭代_37, 则替换之前最优花粉 基于三重动态调整的花授粉算法-附代码_机器学习_36基于三重动态调整的花授粉算法-附代码_搜索_46
6) 若当前花粉不是种群中最后一个花粉, 则选 择下一个花粉, 并返回步骤 4); 否则, 转至步骤 7)。
7) 满足算法的终止条件 (达到最大迭代次数), 则进行步骤 8); 否则进入步骤 3), 继续进入下-代 捜索。
8) 输出最优的花粉个体 基于三重动态调整的花授粉算法-附代码_算法_47 和全局最优解 基于三重动态调整的花授粉算法-附代码_搜索_48

3.实验结果

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

4.参考文献

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

5.Matlab代码

6.Python代码