【智能优化算法】樽海鞘群算法(Salp Swarm Algorithm,SSA)

devtools/2024/9/25 15:23:19/

樽海鞘群算法(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科研小白的个人公众号(即文章下方二维码),并回复智能优化算法本公众号致力于解决找代码难,写代码怵。各位有什么急需的代码,欢迎后台留言~不定时更新科研技巧类推文,可以一起探讨科研,写作,文献,代码等诸多学术问题,我们一起进步。


http://www.ppmy.cn/devtools/23644.html

相关文章

笔记:能量谱密度与功率谱密度(二)

目录 一、ESD与PSD的定义、单位、性质 二、对ESD与PSD的直观理解 三、总结&#xff1a; 某物理量的“分布”在离散系统中&#xff0c;各点(纵坐标含义&#xff09;的物理意义仍然是该物理量&#xff0c;而在连续系统中&#xff0c;各点&#xff08;纵坐标含义&#xff09;的物…

【C++初阶】string

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

php基本语法介绍

PHP是一种广泛使用的服务器端脚本语言&#xff0c;特别适合于Web开发。以下是PHP的一些基本语法介绍&#xff1a; 标记&#xff1a; PHP代码被包含在<?php和?>标记之间。这些标记告诉服务器开始和结束PHP代码块。 <?php // PHP代码在这里 ?>注释&#xff1a;…

【第27章】spring-spel进阶版

文章目录 前言准备4.3. Language Reference4.3.1. Literal Expressions4.3.2. Properties, Arrays, Lists, Maps, and Indexers4.3.3. Inline Lists4.3.4. Inline Maps4.3.5. Array Construction4.3.6. Methods4.3.7. Operators4.3.8. Types4.3.9. Constructors4.3.10. Variabl…

模拟找D盘的文件

需求&#xff1a;有这样一个需求&#xff0c;通过找D盘中图片&#xff0c;然后进行预览。当点击的是文件夹则能进入到下一级&#xff0c;如果点击的是图片则进行显示预览。java部分看不懂&#xff0c;就粘贴了一部分。 前端代码; css部分&#xff1a; <style>#files bu…

社区矫正手机智能管控平台

社区矫正一直是司法领域的重要工作之一&#xff0c;但长期以来&#xff0c;由于人员配备不足、矫正人员流动性大等问题&#xff0c;管理难度较大。然而&#xff0c;随着科技的不断发展&#xff0c;手机终端管控应用平台&#xff08;MDM&#xff09;的出现&#xff0c;为社区矫正…

Docker 部署与操作

一 国内&#xff1a; 中国电信天翼云 提供包括云主机在内的全方位云计算服务&#xff0c;侧重于安全合规和企业级服务。 利用电信的网络优势&#xff0c;提供稳定可靠的基础设施服务。 中国联通沃云 提供包括云主机在内的多项云计算服务&#xff0c;适合不同行业和场景。 …

ASP.NET集成客户关系管理的企业网站的设计与开发

摘 要 企业要在激烈的市场竞争中立于不败之地&#xff0c;就必须找一种全新的管理理念和管理手段&#xff0c;对其内部和外部资源进行有效的整合。新一代ERP产品正在向客户端和供应端延伸&#xff0c;客户端的延伸即是客户关系管理。对于每个企业来说客户管理的完善程度将直接…