基于交叉算子和非均匀变异算子的飞蛾扑火优化算法
文章目录
- 基于交叉算子和非均匀变异算子的飞蛾扑火优化算法
- 1.飞蛾扑火优化算法
- 2. 改进飞蛾扑火优化算法
- 2.1 交叉算子
- 2.2 非均匀变异算子
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
摘要:针对飞蛾扑火优化算法收敛速度慢以及计算后期易收敛到局部最优解的问题,提出了一种基于遗传算法交叉算子和非均匀变异算子的改进方法。该方法在飞蛾围绕火焰飞行的计算过程中,采用交叉算子和变异算子对火焰位置进行扰动以生成新的火焰,当新火焰的适应度值优于原火焰时则替换原火焰,以提高算法的随机性,防止算法过快陷入局部最优解。
1.飞蛾扑火优化算法
2. 改进飞蛾扑火优化算法
2.1 交叉算子
改进方案使用的交叉算子类似于均匀交叉算 子。但不同的是依次针对火焰矩阵的每一维随机 选择 对火焰进行交叉运算, 每次交叉运算将火焰 对应维度的元素互换并重新计算适应度值, 当新火 焰的适应度值优于原火焰时则替代原火焰, 从而使 其有一定概率跳出局部最优解。交叉运算具体流 程如图 1 所示。其中,
表示火焰位置的维度。
为常数, 表示进行
2.2 非均匀变异算子
本文选择非均匀变异算子对火焰位置进行扰动,以使火焰在求解初期能在较大范围内搜索并在后期对局部区域进行精细搜索。非均匀算子可表 示如下:
其中, 表示火焰矩阵中第
个火焰第
维的元 素。
为当前迭代次数。
和
分别表示搜 索空间每一维度的最大值和最小值。
为区间
之间的随机数。
可表示如下:
其中, 为最大迭代次数,
为决定非均匀度的参 数。在使用非均匀变异算子对火焰位置进行扰动 时, 依次针对每个火焰随机选择
个维度进行扰 动, 每次扰动产生的新火焰优于原火焰时则替换原 火焰。变异运算流程如图 2 所示。其中,
表示火 焰总数量。
为常数, 表示进行
3.实验结果
4.参考文献
[1]张保东,张亚楠,郭黎明,江进礼,赵严振.基于交叉算子和非均匀变异算子的飞蛾扑火优化算法[J].计算机与数字工程,2020,48(11):2622-2627.
5.Matlab代码
6.Python代码