【单目标优化算法】沙猫群优化算法(Matlab代码实现)

news2024/12/26 13:11:44

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

本研究提出了一种新的元启发式算法,称为沙猫群优化(SCSO),该算法模拟了试图在自然界中生存的沙猫行为。这些猫能够检测到低于 2 kHz 的低频,并且还具有令人难以置信的挖掘猎物的能力。受这两个特征的启发,所提出的算法由两个主要阶段(搜索和攻击)组成。该算法以平衡的方式控制勘探和开发阶段的过渡,在以较少的参数和操作找到良好的解决方案方面表现良好。它是通过使用定义的自适应策略找到适当运动的方向和速度来实现的。将SCSO算法与CEC20基准函数的10个知名复数测试函数以及现代2019个复杂测试函数进行了测试,并将获得的结果与著名的元启发式算法进行了对比。根据结果,在63.3%的测试函数中找到最佳解的算法是SCSO。此外,SCSO算法还应用于焊接梁设计、拉伸/压缩弹簧设计、压力容器设计、活塞杠杆、减速器设计、三杆桁架设计和悬臂梁设计等<>个具有挑战性的工程设计问题。结果表明,SCSO在收敛率和定位全部或大部分局部/全局最优方面表现良好,优于其他比较方法。 

在现实生活中,优化意味着除了最大限度地提高效率和质量外,还意味着最大限度地减少时间和成本。事实上,有很多问题需要优化,既复杂又困难。启发式和元启发式算法是解决问题和获得优化解决方案的两种方法。启发式算法是问题依赖性的,而元启发式算法不依赖于特定问题,最优解是从随机搜索空间和预定义边界[1]中获得的。问题越大越复杂,解决起来就越困难[2]。特别是他们的时间和记忆复杂性会显着恶化。这些类型的问题中最突出的是非确定性多项式时间(NP-hard)问题。NP-hard问题可以通过精确和近似的方法解决。精确的方法保证了具有指数级时间复杂度和高成本的最佳解决方案。启发式算法和元启发式算法都是近似算法的家族,不能保证找到最优解,但得到的解可能更接近最优解,复杂度和实际执行时间更好。因此,第二组通常是首选。另一方面,考虑到启发式方法存在局部陷阱等问题,元启发式方法可以为许多NP难题提供实用且有用的解决方案,并且在实际执行时间内为这些类型的问题找到最优解方面通常表现良好[3]。

元启发式方法不会落入局部陷阱,此外,它们更加灵活,并试图通过简单的实施在更短的时间内以更少的流程成本在全球搜索领域找到最佳解决方案。特别是,元启发式算法的性能可以更成功地解决复杂问题[2]。此外,无免费午餐(NFL)[4]断言没有特定的算法为每个优化问题提供最佳解决方案。因此,开发可用于各种问题的新元启发式算法的需求很大。因此,由于其广泛的使用领域和优势,近年来,元启发式优化算法在许多科学领域变得流行[5,6,7]。一般来说,元启发式算法受到生物或物理现象[8]的启发,并试图在合理的时间内找到最佳解决方案(最大值或最小值)。

元启发式算法通常分为单解算法和基于群体(多)算法两类。在单解算法中,虽然单个解会影响输出,但整个总体都包含在基于总体的算法中。此外,元启发式算法分为进化算法、基于物理算法和群体智能算法。进化算法(EA)的灵感来自自然进化论和达尔文进化论[9]。EA 在随机搜索空间内解决问题,而 EA 是一种基于群体的方法,其中整个总体影响最佳解决方案。遗传算法 (GA) 是 EA 类别 [10] 中众所周知的算法,其灵感来自世代复制。GA 通过模仿交叉、突变和精英主义来产生新一代,以找到全局最优。差分进化(DE)算法是另一种受自然进化驱动的算法。DE算法在生成下一代的选择操作中与GA有所不同[11]。改进的量子衍生合作协同进化算法(MSQCCEA)[12]是目前的研究之一。该算法提高了全局搜索能力,不会落入局部最优陷阱。因此,已经开发出一种量子自旋方向策略,将量子演化方向从13个变为14个。将该方法应用于背包和实际机场登机口分配问题,结果表明所提算法在快速、准确的收敛速率方面具有良好的性能。禁忌搜索(TS)算法是进化算法的另一个例子[15]。进化编程(EP)的灵感来自表型、遗传和变异等行为模型[16]。基于生物地理学的优化器(BBO)[<>]和黑寡妇优化(BWO)[<>]是EA的另一个例子。

基于物理的算法是元启发式方法的另一个家族成员。这些算法受到自然界物理规则的启发,并根据假设的物理事件随机行动。在这种算法中,搜索空间和最优解遵循电磁力、引力和惯性力等物理规律。这一类别中有著名的优化算法,如引力局部搜索(GLSA)[17],引力搜索算法(GSA)[18]和大爆炸-大紧缩(BBBC)[19]。黑洞(BH)算法的灵感来自黑洞现象的事实[20],是基于物理学的另一种算法。该类别中的其他著名作品是带电系统搜索(CSS)[21],曲线空间优化[22],中心力优化(CFO)[23]和基于星系的搜索算法(GbSA)[24]。在此类别的方法中,搜索代理根据假定的物理事件随机操作。

群体智能(SI)是元启发式算法的第三类。通常,SI方法的灵感来自自然界中成群,饲养和成群的动物的社会行为。在这种算法中,搜索代理试图通过影响社交智能来找到最佳解决方案。粒子群优化(PSO)是这一类别中最著名的算法[25]。PSO的灵感来自鸟类在自然界中的运动和社会行为。粒子指示候选解决方案,算法尝试根据这些粒子从搜索空间中找到最佳解决方案。蚁群优化(ACO)是该类别中的另一种算法[26]。ACO算法模拟蚂蚁的觅食行为。自然界中蚂蚁的主要目标是找到目的地(食物)并在源头和目的地之间生成最佳(安全和最低成本)路径。在文献中,该算法已被用于解决许多类型的问题[27,28]。人工蜂群(ABC)[29]算法是另一种模仿蜜蜂社会行为的重要算法。在ABC发现中,在目的地(巢)和源(食物)之间生成了一条路径。寻找丰富的食物资源和蜜蜂体验是ABC算法中寻找最佳解决方案的重要阶段。此类别中的其他算法包括蝙蝠算法 (BA) [30]、萤火虫算法 (FA) [31]、灰狼优化 (GWO) [32] 和不同方差 [33]、鲸鱼优化算法 (WOA) [34]、蜻蜓算法 (DA) [35]、布谷鸟搜索 (CS) [36]、蝴蝶优化算法 (BOA) [37]、风驱动优化 (WDO) [38]、猫群优化 (CSO) [39],果蝇优化算法(FFOA)[40]和花授粉算法(FPA)[41],Salp群算法(SSA)[42],探路者算法(PFA)[43]及其改进版本[3],以及哈里斯鹰优化(HHO)算法[44]。此外,混合元启发式算法近年来已经变得普遍。[45,46]介绍了在这种情况下所做的两项有价值的研究。在[45]中,作者提出了一种基于DA和WDO算法的新方法。作者纠正了这两种算法的缺点,并因此证明了他们提出的方法具有快速的收敛速度和强大的全局搜索能力,并且在寻找解决方案方面是准确的。在[46]中,作者受到BOA和FPA算法的启发,提出了一种灵活的算法来解决全局优化问题。作者提出了一种在探索和开发阶段之间有效切换的新机制,因此该算法表现出平衡的行为。

元启发式算法的主要阶段是探索和开发,每种算法都有特定的策略来实现这些阶段的概念。所提出的算法中这两个阶段之间的平衡越多,成功率就越高。在这些策略中,定义的随机性和适当的系数很重要。正确设置相关系数参数以确保这两个相位之间的良好平衡非常重要[33]。探索意味着在全球范围内进行搜索。此阶段需要更多的搜索,因此相关算法从搜索空间中随机选择一个解决方案。而开发阶段在探索阶段之后,而开发阶段侧重于搜索空间上的解决方案以改进解决方案。换句话说,检查未访问的区域是否是局部最优差的潜在逃生区域。探索中搜索的随机性会影响算法,以避免在探索全局最优的局部最优上陷害。

本文提出了一种新的元启发式优化算法,该算法可能更适合于根据NFL定理解决相关阶段之间表现平衡的各种问题。此外,所提出的算法比目前其他元启发式算法具有更有利的复杂性。该算法受沙猫搜索和狩猎行为的启发,命名为沙猫群优化(SCSO)。沙猫在自然界中独居,但在所提出的算法中,沙猫被认为是一个可以被用户识别为搜索代理的群体。在所提算法的开发中,重点是沙猫寻找猎物的低频噪声检测行为。这些猫检测到低于 2 kHz 的低频,因此它们可以在可能的短时间内长距离捕捉猎物,而且几乎没有动作。此外,沙猫具有令人难以置信的挖掘猎物的能力。由于这两个奇妙的功能,确保了沙猫在自然界中具有搜索和狩猎的特殊能力。所提出的算法在探索和开发阶段也通过自适应机制保持平衡。此外,本文的主要贡献总结如下。

1.两个阶段:搜索和攻击猎物。本文提出的算法(SCSO)就包括了这两个阶段,此外,还提出了一种机制来实现探索和利用阶段的平衡。
2.算法运行时首先根据问题的规模( N pop × N d ) , ( pop = 1 , . . . , n =1,…,n=1,…,n)利用沙丘猫群创建一个候选矩阵,然后就目标函数对每个沙丘猫进行适应度评估,选择出其中最优的个体,其他的个体都朝向该个体移动。

在这里插入图片描述

 详细数学模型和文章见参考文献。

📚2 运行结果

部分代码:

function [Best_Score,BestFit,Convergence_curve]=SCSO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)
BestFit=zeros(1,dim);
Best_Score=inf;
Positions=initialization(SearchAgents_no,dim,ub,lb);
Convergence_curve=zeros(1,Max_iter);
t=0;
p=[1:360];
while t<Max_iter
    for i=1:size(Positions,1)
        Flag4ub=Positions(i,:)>ub;
        Flag4lb=Positions(i,:)<lb;
        Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
        fitness=fobj(Positions(i,:));
        if fitness<Best_Score
            Best_Score=fitness;
            BestFit=Positions(i,:);
        end
    end
    S=2;                                    %%% S is maximum Sensitivity range 
    rg=S-((S)*t/(Max_iter));                %%%% guides R
   for i=1:size(Positions,1)
        r=rand*rg;
        R=((2*rg)*rand)-rg;                 %%%%   controls to transtion phases  
        for j=1:size(Positions,2)
        teta=RouletteWheelSelection(p);
           if((-1<=R)&&(R<=1))              %%%% R value is between -1 and 1
                Rand_position=abs(rand*BestFit(j)-Positions(i,j));
                Positions(i,j)=BestFit(j)-r*Rand_position*cos(teta);
           else                 
                cp=floor(SearchAgents_no*rand()+1);
                CandidatePosition =Positions(cp,:);
                Positions(i,j)=r*(CandidatePosition(j)-rand*Positions(i,j));
            end
        end
    end
    t=t+1;
    Convergence_curve(t)=Best_Score;
end
end 

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Seyyedabbasi, A., Kiani, F. Sand Cat swarm optimization: a nature-inspired algorithm to solve global optimization problems. Engineering with Computers (2022). 

[2]高烨,陶丽丽,马苗.基于猫群优化算法的图像多阈值分割方法[J].中国体视学与图像分析,2018,23(02):125-132.DOI:10.13505/j.1007-1482.2018.23.02.001.

[3]姜天华.猫群优化算法求解柔性作业车间调度问题[J].计算机工程与应用,2018,54(23):259-263+270.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【011】pandas处理数据的作用_#py

pandas操作 1. 导入数据库2. 修改行列名2.1 修改列名2.2 修改行名 3. 按条件筛选3.1 根据条件筛选&#xff0c;提取所有信息3.2 根据条件筛选&#xff0c;提取某列或者某几列 4. 按某行某列提取信息4.1 获取信息4.2 更改具体的值 5. 合并5.1 单列并入大数据中&#xff08;方法一…

根据虚拟地址,如何求出页号和偏移量?

方法掌握 虚拟地址划分成虚拟页号和虚拟页偏移量。 物理地址同样可划分为物理页号和物理页偏移量 如何划分&#xff0c;关键点在于页面的大小。 假设给你一个十进制表示的地址20000&#xff0c;一个页面的大小为4KB&#xff0c;那么如何找出地址20000的具体位置呢&#xff1f…

消息队列介绍

一、消息队列(MQ)概述 消息队列&#xff08;Message Queue&#xff09;&#xff0c;是分布式系统中重要的组件&#xff0c;其通用的使用场景可以简单地描述为&#xff1a; 当不需要立即获得结果&#xff0c;但是并发量又需要进行控制的时候&#xff0c;差不多就是需要使用消息队…

如何获取“上帝”的系统版本

如何获取“上帝”的系统版本 在对技术支持过程中&#xff0c;每个公司都难免会遇到这样一个困扰&#xff1a;我们的程序明明在内部环境中测试的好好的&#xff0c;但是到了客户手里总会出现各种问题。 从以往累计的经验来看&#xff0c;这类问题通常和客户的系统环境有关。所…

PHP库存管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP库存管理系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据库为 mysql5.0&#xff0c;使用php语言开发。 php 库…

【redis】redis分布式锁(一)手写分布式锁1.0~6.0

redis分布式锁&#xff08;入门&#xff09; 文章目录 redis分布式锁&#xff08;入门&#xff09;前言一、面试题redis的用法&#xff1a;CAP 二、锁的种类三、一个靠谱分布式锁需要具备的条件和刚需四、分布式锁五、重点六、Base案例&#xff08;bootredis&#xff09;1.0、最…

如何使用WordPress建立在线辅导网站(3个步骤)

在线辅导网站在过去几年中变得非常流行。随着越来越多的人转向远程工作和学习&#xff0c;这个行业已成为在家赚取额外收入的绝佳方式。 此外&#xff0c;提供在线指导可以帮助您成为所在领域的权威。 如果您想提供在线辅导&#xff0c;最好的方法通常是通过您自己的辅导网站…

并发编程中的三大问题剖析与解决

java并发编程中的三大问 可见性原因分析&#xff1a;解决&#xff1a; 原子性原因分析&#xff1a;解决&#xff1a; 有序性解决&#xff1a; 首先让我们来了解一下JUC JUC&#xff08;Java Util Concurrent&#xff09;是Java提供的一个并发编程工具包&#xff0c;它解决了在多…

【Linux】进程地址空间的初步理解

目录 程序地址空间空间布局图引入物理地址与虚拟地址的概念虚拟地址空间虚拟地址与物理地址是如何对应的&#xff1f;※父子进程独立性的理解&#xff08;重点&#xff09;fork两个返回值的原理地址空间为什么要存在&#xff1f;补充理解 程序地址空间空间布局图 &#xff08;这…

IDEA 新版安装教程

目录 一、安装IDEA 1、双击安装&#xff0c;然后下一步 2、修改默认安装路径&#xff0c;自定义目录。(建议所有开发工具都放在同一个盘符) 3、改为自定义安装路径&#xff0c;下一步。&#xff08;不用使用中文或空格&#xff09; 4、创建桌面图标等 5、点击安装&#x…

02.DolphinScheduler数据源中心

文章目录 MySQLHIVE数据源使用HiveServer2使用 HiveServer2 HA Zookeeper Clickhouse MySQL 填写参数 数据源&#xff1a;选择 MYSQL数据源名称&#xff1a;输入数据源的名称描述&#xff1a;输入数据源的描述IP 主机名&#xff1a;输入连接 MySQL 的 IP端口&#xff1a;输入…

一维卷积与一维平均池化的时间复杂度

计算请参考这篇文章&#xff1a; (284条消息) 卷积神经网络的时间、空间复杂度以及数据流的变化_卷积的时间复杂度_Briwisdom的博客-CSDN博客 1. 时间复杂度 时间复杂度即模型的运行次数。 单个卷积层的时间复杂度&#xff1a;Time~O(M^2 * K^2 * Cin * Cout) //有的好奇小宝…

Spring(11. 循环依赖 - 周阳)学习笔记

上一篇 &#xff1a;10. 面试问题简析 文章目录 1. Spring AOP1.1. Aop 常用注解1.2 测试前的准备工作1.2.1 业务类1.2.2 切面类 1.3 Spring4 下的测试1.3.1 POM 文件1.3.2 创建测试类1.3.3 Aop 测试结果 1.4 Spring 5 下的测试1.4.1 POM 文件1.4.2 创建测试类1.4.3 Aop 测试结…

e签宝,「进化」在2023

精准布局生态化、统一化、智能化、信创化&#xff0c;辅以具体产品落地&#xff1b;加速产业、行业、企业、业务&#xff0c;“四业”互通互联&#xff0c;提高产业数字化渗透率。电子签“群战”时代&#xff0c;e签宝再次进化。 作者|斗斗 出品|产业家 “印章在谁手上&…

Camtasia 2023版强悍来袭,会哪些新功能呢?

Camtasia Studio 是一款专门录制屏幕动作的工具&#xff0c;它能在任何颜色模式下轻松地记录 屏幕动作&#xff0c;包括影像、音效、鼠标移动轨迹、解说声音等等&#xff0c;另外&#xff0c;它还具有即时播放和编 辑压缩的功能&#xff0c;可对视频片段进行剪接、添加转场效果…

享受简单上传体验:将Maven仓库迁移到GitHub

前言&#xff1a;我为什么放弃了Maven Central 之前我写过一篇《Android手把手&#xff0c;发布开源组件至 MavenCentral仓库》&#xff0c;文中详细介绍了如何发布组件到Maven Central中供所有开发者共用。但是最近使用下来&#xff0c;发现Sonatype JIRA 的Maven Center上传…

python接口自动化测试 requests库的基础使用

目录 简单介绍 Get请求 Post请求 其他类型请求 自定义headers和cookies SSL 证书验证 响应内容 获取header 获取cookies 简单介绍 requests库简单易用的HTTP库 Get请求 格式&#xff1a; requests.get(url) 注意&#xff1a;若需要传请求参数&#xff0c;可直接在 …

c++STL标准库排序函数std::sort使用

Qt系列文章目录 文章目录 Qt系列文章目录前言一、错误原因二、修改后的代码 前言 C sort()排序函数 C STL 标准库中的 sort() 函数&#xff0c;本质就是一个模板函数。正如表 1 中描述的&#xff0c;该函数专门用来对容器或普通数组中指定范围内的元素进行排序&#xff0c;排序…

【ML】windows 安装使用pytorch

使用pytorch需要python环境&#xff0c;建议是直接装anaconda &#xff0c;IDE用visual studio anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包 官网链接anaconda 本人下载…

(转)maven安装及配置(详细版)

1.下载&#xff1a; 方式一可以从官方下载&#xff0c;下载页面&#xff1a;http://maven.apache.org/download.cgi 方式二&#xff1a;或者题主提供的版本下载maven安装包 提取码&#xff1a;ysns 下载好后是一个压缩文件 2.安装&#xff1a; maven压缩包解压到一个没有中文&a…