樽海鞘群算法(Salp Swarm Algorithm,SSA)是期刊“Advances in Engineering Software ”(中科院二区,IF 7.0)的2017年智能优化算法
01.引言
樽海鞘群算法(Salp Swarm Algorithm,SSA),用于解决单目标的优化问题。SSA的主要灵感来自海鞘在海洋中导航和觅食时的群体行为。在几个数学优化函数上对这两种算法进行了测试,以观察和证实它们在寻找优化问题的最优解方面的有效行为。数学函数的结果表明,SSA算法能够有效地改善初始随机解,并向最优收敛。结果表明,该算法能较好地逼近Pareto最优解,具有较高的收敛性和覆盖率。
02.优化算法简单流程
03.论文中算法对比图
04.部分代码
function [FoodFitness,FoodPosition,Convergence_curve]=SSA(N,Max_iter,lb,ub,dim,fobj)%樽海鞘群算法
if size(ub,1)==1ub=ones(dim,1)*ub;lb=ones(dim,1)*lb;
end
Convergence_curve = zeros(1,Max_iter);
%Initialize the positions of salps
SalpPositions=initialization(N,dim,ub,lb);
FoodPosition=zeros(1,dim);
FoodFitness=inf;
%calculate the fitness of initial salps
for i=1:size(SalpPositions,1)SalpFitness(1,i)=fobj(SalpPositions(i,:));
end
[sorted_salps_fitness,sorted_indexes]=sort(SalpFitness);
for newindex=1:NSorted_salps(newindex,:)=SalpPositions(sorted_indexes(newindex),:);
end
FoodPosition=Sorted_salps(1,:);
FoodFitness=sorted_salps_fitness(1);
%Main loop
l=2; % start from the second iteration since the first iteration was dedicated to calculating the fitness of salps
while l<Max_iter+1c1 = 2*exp(-(4*l/Max_iter)^2); % Eq. (3.2) in the paperfor i=1:size(SalpPositions,1)SalpPositions= SalpPositions';if i<=N/2for j=1:1:dimc2=rand();c3=rand();%%%%%%%%%%%%% % Eq. (3.1) in the paper %%%%%%%%%%%%%%if c3<0.5 SalpPositions(j,i)=FoodPosition(j)+c1*((ub(j)-lb(j))*c2+lb(j));elseSalpPositions(j,i)=FoodPosition(j)-c1*((ub(j)-lb(j))*c2+lb(j));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%endelseif i>N/2 && i<N+1point1=SalpPositions(:,i-1);point2=SalpPositions(:,i);SalpPositions(:,i)=(point2+point1)/2; % % Eq. (3.4) in the paperendSalpPositions= SalpPositions';endfor i=1:size(SalpPositions,1)Tp=SalpPositions(i,:)>ub';Tm=SalpPositions(i,:)<lb';SalpPositions(i,:)=(SalpPositions(i,:).*(~(Tp+Tm)))+ub'.*Tp+lb'.*Tm;SalpFitness(1,i)=fobj(SalpPositions(i,:));if SalpFitness(1,i)<FoodFitnessFoodPosition=SalpPositions(i,:);FoodFitness=SalpFitness(1,i);endendConvergence_curve(l)=FoodFitness;l = l + 1;
end
04.本代码效果图
获取代码请关注MATLAB科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。