失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码

【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码

时间:2019-03-21 12:43:56

相关推荐

【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码

1 简介

传统蝗虫优化算法在处理优化问题时依然存在收敛速度慢,易陷入局部最优的不足.为此,提出了融合混沌映射和柯西变异机制的非线性蝗虫优化算法CCGOA.通过融合混沌Tent映射与反向学习机制,对种群初始化,在确保初始种群质量较优前提下,使种群尽可能均匀分布于搜索空间;利用余弦函数设计非线性自适应系数更新机制,更好均衡个体全局搜索与局部开发能力;引入柯西变异对当前最优个体进行变异扰动,避免算法陷入局部最优.通过基准函数寻优测试,证实提出的算法可以有效提升寻优精度和收敛速度.设计了特征选择算法CCGOA-FS并应用于特征选择问题求解.通过若干数据集测试,证实该算法可以有效进行最优特征子集选取,提升数据分类准确率.

2 部分代码

%_________________________________________________________________________%% Grasshopper Optimization Algorithm (GOA) source codes demo V1.0 %% %%_________________________________________________________________________%% The Grasshopper Optimization Algorithmfunction[TargetFitness,TargetPosition,Convergence_curve,Trajectories,fitness_history,position_history]=GOA(N,Max_iter,lb,ub,dim,fobj)ticdisp('GOA is now estimating the global optimum for your problem....')flag=0;ifsize(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 grasshoppersGrassHopperPositions=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 grasshoppersfori=1:size(GrassHopperPositions,1)ifflag==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 populationfornewindex=1:NSorted_grasshopper(newindex,:)=GrassHopperPositions(sorted_indexes(newindex),:);endTargetPosition=Sorted_grasshopper(1,:);TargetFitness=sorted_fitness(1);% Main loopl=2;% Start from the second iteration since the first iteration was dedicated to calculating the fitness of antlionswhilel<Max_iter+1c=cMax-l*((cMax-cMin)/Max_iter);% Eq. (2.8) in the paper%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%fori=1:size(GrassHopperPositions,1)temp=GrassHopperPositions';% for k=1:2:dim S_i=zeros(dim,1);forj=1:Nifi~=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;fori=1:size(GrassHopperPositions,1)% Relocate grasshoppers that go outside the search spaceTp=GrassHopperPositions(i,:)>ub';Tm=GrassHopperPositions(i,:)<lb';GrassHopperPositions(i,:)=(GrassHopperPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;% Calculating the objective values for all grasshoppersifflag==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 targetifGrassHopperFitness(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]. 微电子学与计算机, , 38(11):10.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

如果觉得《【蝗虫算法】基于混合柯西变异和均匀分布改进蝗虫优化算法求解单目标优化问题matlab代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。