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

目录

[1 主要内容](#1 主要内容)

[2 部分代码](#2 部分代码)

[3 程序结果](#3 程序结果)

[4 下载链接](#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),:);
end
​
for 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

2:全局搜索阶段引入柯西变异★★ ori_value = rand(1,dim);

3 程序结果

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

测试函数F2:

测试函数F5:

4 下载链接

相关推荐
Evand J1 小时前
【MATLAB绘图教程】空间误差场图的概念及其应用,附代码
matlab·平面·绘图·定位
alphageek81 小时前
Matlab linspace函数完全指南:从基础用法到进阶技巧
开发语言·其他·matlab
xrgs_shz2 小时前
MATLAB 纹理特征提取:一文读懂 graycomatrix 与 graycoprops
人工智能·计算机视觉·matlab
2zcode3 小时前
基于MATLAB的深度学习工业表面缺陷多分类检测系统设计与实现(GUI界面+数据集+训练代码)
深度学习·matlab·分类
MATLAB代码顾问4 小时前
改进鲸鱼优化算法(IWOA)求解柔性作业车间调度问题(FJSP)——附MATLAB代码
开发语言·算法·matlab
2zcode4 小时前
基于MATLAB深度学习与传统机器学习的脑肿瘤MRI图像分类系统(GUI界面+数据集+训练代码)
深度学习·机器学习·matlab
2zcode5 小时前
基于Matlab元胞自动机模拟(CA)静态再结晶过程
开发语言·matlab·静态再结晶
yong99906 小时前
EKF-SLAM在MATLAB上的仿真实现
开发语言·matlab
MATLAB代码顾问6 小时前
混合粒子群-模拟退火算法(HPSO-SA)求解作业车间调度问题——附MATLAB代码
算法·matlab·模拟退火算法
biyezuopinvip7 小时前
分布式风电场低电压穿越故障建模与仿真
分布式·matlab·毕业设计·毕业论文·分布式风电场·低电压穿越故障·建模与仿真