【智能算法】樽海鞘群算法(SSA)原理及实现

这篇具有很好参考价值的文章主要介绍了【智能算法】樽海鞘群算法(SSA)原理及实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

樽海鞘算法,智能算法,算法


1.背景

2017年,Mirjalili受到樽海鞘集群行为启发,提出了樽海鞘群算法(Salp Swarm Algorithm, SSA)。

2.算法原理

2.1算法思想

樽海鞘算法,智能算法,算法

樽海鞘集群是领导者-追随者类型算法,整体以链式行为向食物移动。移动过程中,领导者进行全局探索,而追随者则充分进行局部探索。

2.2算法过程

领导者位置更新
x 1 = { F + c 1 ( ( u b − l b ) c 2 + l b ) c 3 ≥ 0 F − c 1 ( ( u b − l b ) c 2 + l b ) c 3 < 0 x^1=\begin{cases}\quad F+c_1\left(\left(ub-lb\right)c_2+lb\right)&c_3\geq0\\F-c_1\left(\left(ub-lb\right)c_2+lb\right)&c_3<0&\end{cases} x1={F+c1((ublb)c2+lb)Fc1((ublb)c2+lb)c30c3<0
其中, x 1 , F x^1,F x1,F分别代表领导者位置和食物位置。参数 c 1 c_1 c1在算法中起到平衡全局探索和局部开发作用:
c 1 = 2 e − ( 4 l L ) 2 c_1=2e^{-\left(\frac{4l}L\right)^2} c1=2e(L4l)2
参数 c 2 , c 3 c_2,c_3 c2,c3为[0,1]随机数,其实是为了增强随机性。
追随者位置更新
由Newton运动定律,樽海鞘应满足:
x i = 1 2 a t 2 + ν 0 t x^i=\frac12at^2+\nu_0t xi=21at2+ν0t
由于迭代次数是离散的,考虑到 ν 0 = 0 \nu_0=0 ν0=0,因此可表述为:
x i = 1 2 ( x i + x i − 1 ) x^{i}=\frac{1}{2}\big(x^{i}+x^{i-1}\big) xi=21(xi+xi1)
🤣这里感觉有点问题:
a = d v d t v = d x d t a=\frac{dv}{dt} \\ v=\frac{dx}{dt} a=dtdvv=dtdx
t t t是离散且间隔为1时,此时 a = v 2 − v 1 , v 2 = x 2 − x 1 a=v_2-v_1,v2=x_2-x_1 a=v2v1,v2=x2x1,进一步有 a = x 2 − 2 x 1 + x 0 a=x_2-2x_1+x_0 a=x22x1+x0
伪代码
樽海鞘算法,智能算法,算法

3.代码实现

% 樽海鞘群优化算法
function [Best_pos, Best_fitness, Iter_curve, History_pos, History_best] = SSA(pop, maxIter, lb, ub, dim,fobj)
%input
%pop 种群数量
%dim 问题维数
%ub 变量上边界
%lb 变量下边界
%fobj 适应度函数
%maxIter 最大迭代次数
%output
%Best_pos 最优位置
%Best_fitness 最优适应度值
%Iter_curve 每代最优适应度值
%History_pos 每代种群位置
%History_best 每代最优个体位置
%% 初始化种群
for i=1:dim
    SalpPositions(:,i) = lb(i)+rand(pop,1).*(ub(i) - lb(i));                          % Initial population
end
if size(ub,2)==1
    ub=ones(dim,1)*ub;
    lb=ones(dim,1)*lb;
else
    ub=ub';
    lb=lb';
end
%% 记录
Iter_curve = zeros(1,maxIter);
Best_pos=zeros(1,dim);
Best_fitness=inf;
%% 计算适应度
for i=1:size(SalpPositions,1)
    SalpFitness(1,i)=fobj(SalpPositions(i,:));
end
%% 记录
[sorted_salps_fitness,sorted_indexes]=sort(SalpFitness);
for newindex=1:pop
    Sorted_salps(newindex,:)=SalpPositions(sorted_indexes(newindex),:);
end

Best_pos=Sorted_salps(1,:);
Best_fitness=sorted_salps_fitness(1);

%% 迭代
l=2; 
while l<maxIter+1
    
    c1 = 2*exp(-(4*l/maxIter)^2); % Eq. (3.2)
    
    for i=1:size(SalpPositions,1)
        
        SalpPositions= SalpPositions';
        
        if i<=pop/2
            for j=1:1:dim
                c2=rand();
                c3=rand();
                % Eq. (3.1)
                if c3<0.5 
                    SalpPositions(j,i)=Best_pos(j)+c1*((ub(j)-lb(j))*c2+lb(j));
                else
                    SalpPositions(j,i)=Best_pos(j)-c1*((ub(j)-lb(j))*c2+lb(j));
                end
            end
            
        elseif i>pop/2 && i<pop+1
            point1=SalpPositions(:,i-1);
            point2=SalpPositions(:,i);
            
            SalpPositions(:,i)=(point2+point1)/2; % % Eq. (3.4) in the paper
        end
        
        SalpPositions= SalpPositions';
    end
    
    for 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)<Best_fitness
            Best_pos=SalpPositions(i,:);
            Best_fitness=SalpFitness(1,i);
            
        end
    end
    
    Iter_curve(l)=Best_fitness;
    History_pos{l} = SalpPositions;
    History_best{l} = Best_pos;
    l = l + 1;
end
end

樽海鞘算法,智能算法,算法

4.参考文献

[1] Mirjalili S, Gandomi A H, Mirjalili S Z, et al. Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems[J]. Advances in engineering software, 2017, 114: 163-191.文章来源地址https://www.toymoban.com/news/detail-849597.html

到了这里,关于【智能算法】樽海鞘群算法(SSA)原理及实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【9种优化算法比较】CGO、SCA、GWO、CSA、SSA、HHO、WOA、PSO、TSO智能优化算法比较(Matlab代码实现)

     👨‍🎓 个人主页: 研学社的博客   💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述

    2024年02月08日
    浏览(58)
  • 【Matlab】智能优化算法_麻雀搜索算法SSA

    麻雀通常是群居的鸟类,有很多种类。它们分布在世界的大部分地区,喜欢生活在人类生活的地方。此外,它们是杂食性鸟类,主要以谷物或杂草的种子为食。众所周知,麻雀是常见的留鸟。与其他许多小鸟相比,麻雀有很强的智慧,有很强的记忆力。请注意,有两种不同类

    2024年02月15日
    浏览(65)
  • 【智能算法】果蝇算法(FOA)原理及实现

    2011年,Pan受到果蝇搜索食物自然行为的启发,提出了果蝇优化算法(Fruit Fly Optimization Algorithm,FOA)。 2.1算法思想 果蝇根据 气味 确定食物位置,食物的距离影响气味的浓度。每次搜寻果蝇的位置会根据气味最浓的果蝇位置附近进行随机游走。 2.2算法过程 群体位置初始化 : 这

    2024年03月10日
    浏览(47)
  • 时序预测 | Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测

    预测效果 基本介绍 1.Matlab实现SSA-ESN基于麻雀搜索算法(SSA)优化回声状态网络(ESN)的时间序列预测(完整源码和数据); 2.数据集为excel,单列时间序列数据集,运行主程序main.m即可,其余为函数文件,无需运行; 3.SSA优化的参数为:三个参数,储备池规模,学习率,正则化系数

    2024年04月17日
    浏览(50)
  • 人工智能 Agent 简介:核心原理 / 数学公式 / 实现算法 / 代码实例

    人工智能Agent(AI Agent)是一个自动化的系统,它可以感知其环境并根据其感知进行决策以实现特定的目标。这些Agent可以是简单的程序,如搜索引擎的爬虫,也可以是复杂的系统,如自动驾驶汽车。AI Agent的主要目标是通过学习和优化来提高其性能。 AI Agent的实现原理主要基

    2024年02月12日
    浏览(55)
  • 【SSA-LSTM】基于麻雀算法优化LSTM 模型预测研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 1.1 麻雀搜索算法 1.2 长短期记忆神经网络 📚2 运行结果

    2023年04月26日
    浏览(68)
  • 分类预测 | Matlab实现SSA-ELM麻雀优化算法优化极限学习机分类预测

    分类效果 基本描述 1.MATLAB实现SSA-ELM麻雀优化算法优化极限学习机分类预测(Matlab完整源码和数据) 2.优化参数为权值和阈值; 3.直接替换数据即可使用,保证程序可正常运行。 4.程序语言为matlab,程序可出分类效果图,迭代优化图,混淆矩阵图。 运行环境matlab2018b及以上。 5

    2024年02月07日
    浏览(49)
  • 时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测

    预测效果 基本介绍 Matlab实现SSA-XGBoost时间序列预测,麻雀算法优化极限梯度提升树,优化最大迭代次数,深度,学习率; 1.data为数据集,单变量时间序列数据集。 2.MainSSAXGBoostTS.m为主程序文件,其他为函数文件,无需运行; 3.评价指标R2、MAE、MAPE、MSE、MBE; 4.注意程序和数据

    2024年02月11日
    浏览(48)
  • 分类预测 | Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测

    分类效果 基本描述 1.Matlab实现SSA-CNN-SVM麻雀算法优化卷积支持向量机分类预测(完整源码和数据) 2.优化参数为:学习率,批量处理大小,正则化参数。 3.图很多,包括分类效果图,混淆矩阵图。 4.附赠案例数据可直接运行main一键出图~ 注意程序和数据放在一个文件夹,运

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包