一种改进的蝴蝶优化算法
文章目录
- 一种改进的蝴蝶优化算法
- 1.蝴蝶优化算法
- 2. 改进蝴蝶优化算法
- 2.1 差分进化算法
- 2.2 精英策略
- 3.实验结果
- 4.参考文献
- 5.Matlab代码
- 6.Python代码
摘要:本文针对基本的蝴蝶优化算法存在收敛速度慢、精度低和易陷入局部最优等缺陷,提出一种改进的蝴蝶优化算法.首先通过实验分析参数对算法的影响,其次融入差分进化策略和精英策略。
1.蝴蝶优化算法
2. 改进蝴蝶优化算法
2.1 差分进化算法
差分进化算法是 Storn 和 Price 在 1995 年首次提出的优化方法, 该算法是一类基于群体 的自适应全局优化算法, 与遗传算法非常类似, 它整个进化过程包括变异、交叉和选择.
变异操作: 在每一次迭代中其变异过程是通过在种群中选择 3 个不同的个体, 通过式 (6) 产生新的个体:
其中, 控制变异的概率. 交叉操作: 新个体
与当前个体
通过式 (7) 交叉操作形成个体
.
其中, 之间的交叉率, rand 为
之间的随机数. 选择操作: 经过变异和交叉生成的个体
和目标个体
通过式 (8) 更新种群.
2.2 精英策略
在最优解附近产生符合正态分布的随机数. 使用如下式 (9):
式 (9) 中 best 为当前最优解,
没有充分利用种群个体之间的交互信息. 针对 BOA 的不足, 再结合差分进化算法 和精英策略的优势形成 IBOA, 具体实施的伪代码如下:
步骤 1 初始化各参数及种群空间并求解当前空间最优值 fmin 及最优解 best.
步骤 2 for : Ngen
for 表示种群数目
利用式 (1) 计算
If rand 表示全局和局部之间的概率转换
利用公式 (2) 计算
else
利用公式 (3) 计算
end
计算 Fnew, if Fnew fmin, 则替换原来的最优值 fmin 及最最优解 best.
融入差分进化算法
重新计算 Fnew, if Fnew fmin, 则替换原来的最优值 fmin 及最最优解 best. 利用式 (9) 进行局部搜索
重新计算 Fnew, if Fnew fmin, 则替换原来的最优值 fmin 及最最优解 best. 利用公式 (4) 调整变量 c
end
end
步骤 3 输出最优值 fmin 及最最优解 best.
3.实验结果
4.参考文献
[1]谢聪,封宇.一种改进的蝴蝶优化算法[J].数学的实践与认识,2020,50(13):105-115.
5.Matlab代码
6.Python代码