【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码
1 简介
传统蝗虫优化算法在处理优化问题时依然存在收敛速度慢,易陷入局部最优的不足.为此,提出了融合混沌映射和柯西变异机制的非线性蝗虫优化算法CCGOA.通过融合混沌Tent映射与反向学习机制,对种群初始化,在确保初始种群质量较优前提下,使种群尽可能均匀分布于搜索空间;利用余弦函数设计非线性自适应系数更新机制,更好均衡个体全局搜索与局部开发能力;引入柯西变异对当前最优个体进行变异扰动,避免算法陷入局部最优.通过基准函数寻优测试,证实提出的算法可以有效提升寻优精度和收敛速度.设计了特征选择算法CCGOA-FS并应用于特征选择问题求解.通过若干数据集测试,证实该算法可以有效进行最优特征子集选取,提升数据分类准确率.
2 部分代码
%_________________________________________________________________________% % Grasshopper Optimization Algorithm (GOA) source codes demo V1.0 % % % %_________________________________________________________________________%% The Grasshopper Optimization Algorithm function [TargetFitness,TargetPosition,Convergence_curve,Trajectories,fitness_history, position_history]=GOA(N, Max_iter, lb,ub, dim, fobj)tic disp('GOA is now estimating the global optimum for your problem....')flag=0; if size(ub,1)==1ub=ones(dim,1)*ub;lb=ones(dim,1)*lb; endif (rem(dim,2)~=0) % this algorithm should be run with a even number of variables. This line is to handle odd number of variablesdim = dim+1;ub = [ub; 100];lb = [lb; -100];flag=1; end%Initialize the population of grasshoppers GrassHopperPositions=initialization(N,dim,ub,lb); GrassHopperFitness = zeros(1,N);fitness_history=zeros(N,Max_iter); position_history=zeros(N,Max_iter,dim); Convergence_curve=zeros(1,Max_iter); Trajectories=zeros(N,Max_iter);cMax=1; cMin=0.00004; %Calculate the fitness of initial grasshoppersfor i=1:size(GrassHopperPositions,1)if flag == 1GrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,1:end-1));elseGrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,:));endfitness_history(i,1)=GrassHopperFitness(1,i);position_history(i,1,:)=GrassHopperPositions(i,:);Trajectories(:,1)=GrassHopperPositions(:,1); end[sorted_fitness,sorted_indexes]=sort(GrassHopperFitness);% Find the best grasshopper (target) in the first population for newindex=1:NSorted_grasshopper(newindex,:)=GrassHopperPositions(sorted_indexes(newindex),:); endTargetPosition=Sorted_grasshopper(1,:); TargetFitness=sorted_fitness(1);% Main loop l=2; % Start from the second iteration since the first iteration was dedicated to calculating the fitness of antlions while l<Max_iter+1c=cMax-l*((cMax-cMin)/Max_iter); % Eq. (2.8) in the paper%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for i=1:size(GrassHopperPositions,1)temp= GrassHopperPositions';% for k=1:2:dim S_i=zeros(dim,1);for j=1:Nif i~=jDist=distance(temp(:,j), temp(:,i)); % Calculate the distance between two grasshoppersr_ij_vec=(temp(:,j)-temp(:,i))/(Dist+eps); % xj-xi/dij in Eq. (2.7)xj_xi=2+rem(Dist,2); % |xjd - xid| in Eq. (2.7) s_ij=((ub - lb)*c/2)*S_func(xj_xi).*r_ij_vec; % The first part inside the big bracket in Eq. (2.7)S_i=S_i+s_ij;endendS_i_total = S_i;% endX_new = c * S_i_total'+ (TargetPosition); % Eq. (2.7) in the paper GrassHopperPositions_temp(i,:)=X_new'; end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GrassHopperPositionsGrassHopperPositions=GrassHopperPositions_temp;for i=1:size(GrassHopperPositions,1)% Relocate grasshoppers that go outside the search space Tp=GrassHopperPositions(i,:)>ub';Tm=GrassHopperPositions(i,:)<lb';GrassHopperPositions(i,:)=(GrassHopperPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;% Calculating the objective values for all grasshoppersif flag == 1GrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,1:end-1));elseGrassHopperFitness(1,i)=fobj(GrassHopperPositions(i,:));endfitness_history(i,l)=GrassHopperFitness(1,i);position_history(i,l,:)=GrassHopperPositions(i,:);Trajectories(:,l)=GrassHopperPositions(:,1);% Update the targetif GrassHopperFitness(1,i)<TargetFitnessTargetPosition=GrassHopperPositions(i,:);TargetFitness=GrassHopperFitness(1,i);endendConvergence_curve(l)=TargetFitness;disp(['In iteration #', num2str(l), ' , target''s objective = ', num2str(TargetFitness)])l = l + 1; endif (flag==1)TargetPosition = TargetPosition(1:dim-1); endtime=toc
3 仿真结果
4 参考文献
[1]兰娅勋. 混沌和柯西变异的蝗虫优化算法及特征选择[J]. 微电子学与计算机, 2021, 38(11):10.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码相关推荐
- 【智能优化算法-蒲公英优化器】基于蒲公英优化器求解单目标优化问题附matlab代码
1 内容介绍 群智能优化算法作为当前优化算法中的一个主要研究热点,经过近年的发展,已经发展为较为新颖的演化计算技术,受到越来越多不同领域研究工作者的关注.群智能优化算法比传统优化方法求解各种复杂优化问 ...
- 【优化求解】基于蝗虫算法求解单目标问题附matlab代码
1 简介 蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法.具体原理如下: 2 ...
- 【智能优化算法-灰狼算法】基于贪婪非分级灰狼优化器求解单目标优化问题附matlab代码
1 内容介绍 灰狼优化(GWO)算法是一种新兴的算法,它基于灰狼的社会等级以及它们的狩猎和合作策略. 该算法于 2014 年推出,已被大量研究人员和设计人员使用,原始论文的引用次数超过了许多其他算法. ...
- 【象群算法】基于象群算法求解单目标问题附matlab代码(Elephant Herding Optimization,EHO)
1 简介 象群 算 法(ElephantHerdingOptimization,EHO)是一种启发式搜索算法,源 于 对 大 象 群 体 行为的研究.该算法原理简单,易于实现,目前应用于传感器部署.土 ...
- 【优化求解】基于缎蓝园丁鸟优化算法 (SBO)求解单目标问题附matlab代码
1 简介 2 部分代码 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...
- 【樽海鞘算法】基于樽海鞘算法求解单目标问题附matlab代码(Salp Swarm Algorithm,SSA)
1 简介 2 部分代码 %_________________________________________________________________________________% Salp ...
- 【优化求解】基于鸟群算法(Bird Swarm Algorithm)求解单目标最优matlab代码
1 简介 鸟群算法( bird swarm alogrithm,BSA) 是由 Meng 等人于 2015 年提出的一种基于鸟群行为的群智能优化算法,其思想源于鸟群的飞行.觅食和警戒三个主要群体行为, ...
- 【智能优化算法-飞蛾火焰优化算法】基于动态惯性权值策略的飞蛾火焰优化算法求解单目标问题附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...
最新文章
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义边界调色板、brewer调色板、比例灰度)实战
- android launcher
- 《剑指offer》第1~11题:刷题week1[C++题解]
- ubuntu pycharm社区版安装
- Laravel——Passport OAuth
- typescirpt 知识点
- c 中oracle连接字符串,Oracle连接字符串C#
- JAVA 向文本文件中换行插入字符
- sklearn之逻辑回归和岭回归
- Fatal error: Class 'ZipArchive' not found的解决办法
- [debug] 延长Linux中sudo密码在终端的有效时间
- 无标题自用临时文档.C# | python交互
- 属性篇(2)—If you love css …
- 【电脑配置】开发人员必备,黑苹果双系统安装教程
- 计算机麦克风测试,如何进行电脑话筒测试?电脑麦克风如何设置?
- python怎么加字幕_使用moviepy为电影添加字幕
- 孙式无极桩站桩要领--林泰年
- pd.DataFrame系列
- 数字后端面试100问(校招版)
- Otter.ai创始人Sam Liang:智能记录你的生活对话