改进算法|混合策略改进的蝴蝶优化算法

目录

1 主要内容

2 部分代码

3 程序结果

4 程序链接


1 主要内容

程序主要对蝴蝶算法(BOA)进行改进,参考文献《基于改进蝴蝶优化算法的冗余机器人逆运动学求解》,有如下改进策略:

  • 改进1:采用反向学习策略构建精英种群,提高种群质量

  • 改进2:在全局搜索阶段,引入柯西变异,增强算法跳出局部最优的能力

  • 改进3:引入随机惯性权重改变前一位置对当前位置更新的影响,确保能跳出局部最优

1.1 改进详细模型

 改进惯性权重方法比较常见,不同的非线性函数能够得到不同的优化方法,程序中采用sin函数构造惯性权重的进化曲线,当然大家在编程过程中也可以采用其他非线性函数,如Sigmoid函数(见下图),甚至可以用分段方式提高算法的创新性。

转自《一种改进惯性权重的混沌粒子群优化算法》—谷晓琳

2 部分代码

function [fmin,best_pos,Convergence_curve]=IBOA(n,N_iter,Lb,Ub,dim,fobj)p=0.8; % probabibility switch,开关概率power_exponent=0.1; % 幂指数sensory_modality=0.01; % 感觉因子%Initialize the positions of search agents% Sol=initialization(n,dim,Ub,Lb);% ★★改进1:反向学习种群初始化★★Sol_forward=initialization_for(n,dim,Ub,Lb);Sol_backward=initialization_back(Sol_forward,n,dim,Ub,Lb);Sol_all=[Sol_forward;Sol_backward];for i = 1:2*n    Sol_all_fitness(i)=fobj(Sol_all(i,:));end[~,sorted_indexes]=sort(Sol_all_fitness);for i = 1:n    Sol(i,:)=Sol_all(sorted_indexes(i),:);endfor i=1:n    Fitness(i)=fobj(Sol(i,:));end% Find the current best_pos[fmin,I]=min(Fitness);best_pos=Sol(I,:);S=Sol; % Start the iterations -- Butterfly Optimization Algorithm for t=1:N_iter                for i=1:n% Loop over all butterflies/solutions                   %Calculate fragrance of each butterfly which is correlated with objective function,计算与目标函数相关的每只蝴蝶的香味          Fnew=fobj(S(i,:));          FP=(sensory_modality*(Fnew^power_exponent)); % 每只蝴蝶的香味          %Global or local search          if rand<p              % ★★改进2:全局搜索阶段引入柯西变异★★              ori_value = rand(1,dim);

3 程序结果

混合策略改进蝴蝶算法提供了23种测试函数,可以通过main程序修改测试函数,程序Get_Functions_detailsPRO有具体每个测试函数的公式,下面得到F2和F5两种测试函数下的原始算法和改进算法收敛性对比。

测试函数F2:

测试函数F5:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

电力程序小学童

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

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

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

打赏作者

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

抵扣说明:

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

余额充值