获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 灵感来源
  • 数学模型和优化算法
    • 初始化种群
    • 搜索猎物(探索)
    • 攻击猎物(利用)
    • 探索和利用
    • SCSO算法

沙丘猫群优化算法(Sand Cat swarm optimization,SCSO)是土耳其学者Amir Seyyedabbasi于2022年最新提出的一种模拟沙丘猫生存行为的元启发式算法。扫码关注公众号,后台回复"沙丘猫"或"SCSO"获取源码和原文。

灵感来源

沙丘猫是猫科动物中的一种,属于哺乳动物家族。它们生活在沙质和石质沙漠的恶劣环境中,如中亚撒哈拉沙漠、非洲撒哈拉沙漠和阿拉伯半岛。沙丘猫虽然和家猫在外形上差别不断,但在捕食和生存方面有着不同的生活行为。它们能够探测低于2kHz的低频,也具有难以置信的挖掘猎物的能力。作者提出的沙丘猫算法就是受这两种特性的启发,也包括两个阶段:搜索和攻击,此外,还提出一种用于平衡探索和利用的机制。

数学模型和优化算法

沙丘猫群优化模拟了沙丘猫的两个主要行为:搜寻猎物和攻击猎物。由于自然界中的沙丘猫是独立生活的,那么在提出的算法中,为了提出种群智能的概念,作者假设沙丘猫是群体性的。

初始化种群

对于ddd维优化问题,沙丘猫就是一个1×d1 \times d1×d维的表达问题解的数组,如图2。


每个变量值(x1,x2,…,xd)\left(x_{1}, x_{2}, \ldots, x_{d}\right)(x1​,x2​,…,xd​)都是浮点型,且每个xxx都必须处于上下边界之间(∀xi∈[\forall x_{i} \in[∀xi​∈[ lower, upper ]]])。

算法运行时首先根据问题的规模(Npop ×Nd),(\left(N_{\text {pop }} \times N_{d}\right),((Npop ​×Nd​),( pop =1,...,n=1,...,n=1,...,n)利用沙丘猫群创建一个候选矩阵,然后就目标函数对每个沙丘猫进行适应度评估,选择出其中最优的个体,其他的个体都朝向该个体移动。

搜索猎物(探索)

沙丘猫的猎物搜索机制依赖于低频噪声发射。每只沙丘猫的解表达为Xi=(xi1,xi2,xi3,…,xid)X_{i}=\left(x_{i 1}, x_{i 2}, x_{i 3}, \ldots, x_{i d}\right)Xi​=(xi1​,xi2​,xi3​,…,xid​)。SCSO算法得益于沙丘猫在低频探测方面的听觉能力,这样就声明了每只猫的敏感范围,前面提到,沙丘猫可以感知低于2kHz的低频,在数学模型中,根据算法的工作原理,这个值(rG→\overrightarrow{r_{G}}rG​​)将随着迭代过程的进行从2线性地降低为0,以逐渐靠近猎物而不会丢失或跳过。因此为了搜索猎物,假设沙丘猫的敏感范围为2kHz到0(等式1),SMS_MSM​模拟了沙丘猫的听觉特性,其假设为2(当然对于不同问题可以适当调整以确定代理行为的速度)。值得一提的是,控制探索和利用之间转换的主要参数是RRR,其是根据等式2获得的向量。
rG→=sM−(2×SM×iter citer Max+iter max⁡)(1)\overrightarrow{r_{G}}=s_{M}-\left(\frac{2 \times S_{M} \times \text { iter }_{\mathrm{c}}}{\text { iter }_{\mathrm{Max}}+\text { iter }_{\max }}\right)\tag{1} rG​​=sM​−( iter Max​+ iter max​2×SM​× iter c​​)(1)

R⃗=2×rG→×rand⁡(0,1)−rG→(2)\vec{R}=2 \times \overrightarrow{r_{G}} \times \operatorname{rand}(0,1)-\overrightarrow{r_{G}}\tag{2} R=2×rG​​×rand(0,1)−rG​​(2)
搜索空间在定义的边界之间随机初始化。在搜索步骤中,每个当前搜索代理的位置更新都是基于一个随机位置。这样,搜索代理就能够在搜索空间中探索新的空间。为避免陷入局部最优,每只沙丘猫的灵敏度范围是不同的,如等式3。因此,rG→\overrightarrow{r_{G}}rG​​表示常规的灵敏度范围(从2线性下降到0),而r⃗\vec{r}r是每只猫的灵敏度范围。此外,r⃗\vec{r}r用于探索或利用阶段的操作,而rG→\overrightarrow{r_{G}}rG​​用于导引参数RRR以实现在这些阶段间转移控制。

r⃗=rG→×rand⁡(0,1)(3)\vec{r}=\overrightarrow{r_{G}} \times \operatorname{rand}(0,1)\tag{3} r=rG​​×rand(0,1)(3)

其中iter c\text { iter }_{\mathrm{c}} iter c​为当前迭代,iter Max\text { iter }_{\mathrm{Max}} iter Max​为最大迭代次数。

每只沙丘猫会根据最优解(Pos⁡bc→\overrightarrow{\operatorname{Pos}_{b c}}Posbc​​)、自己当前位置(Pos⁡c→\overrightarrow{\operatorname{Pos}_{c}}Posc​​)和其灵敏度范围(r→\overrightarrow{r}r)更新自己的位置。因此沙丘猫能找到其他最好的猎物位置(等式4),该等式使得算法可以找到新的局部最优,因此新的位置位于当前位置和猎物位置之间,同时随机性保证了算法的运行成本低和复杂度低。

Pos⁡→(t+1)=r⃗⋅(Pos⁡bc→(t)−rand⁡(0,1)⋅Pos⁡c→(t))(4)\overrightarrow{\operatorname{Pos}}(t+1)=\vec{r} \cdot\left(\overrightarrow{\operatorname{Pos}_{b c}}(t)-\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right)\tag{4}Pos(t+1)=r⋅(Posbc​​(t)−rand(0,1)⋅Posc​​(t))(4)

攻击猎物(利用)

为了表达SCSO的攻击阶段,最优位置Pos⁡b→\overrightarrow{\operatorname{Pos}_{b}}Posb​​与当前位置(Pos⁡c→\overrightarrow{\operatorname{Pos}_{c}}Posc​​)的距离根据等式5计算得到。同时假设沙丘猫的灵敏度范围是一个圆,这样移动的方向就可以通过圆上的一个随机角度(θ\thetaθ)确定。由于所选的随机角度在0到360之间,其值将在−1到1之间。这样,群体中的每个成员都能够在搜索空间中沿着不同的圆周方向移动。SCSO利用轮盘选择算法为每只沙丘猫选择一个随机角度。用这种方法,沙丘猫可以接近狩猎位置,为避免陷入局部最优,采用了随机角度。SCSO两次连续迭代的位置更新过程如图3所示。

Pos⁡rnd→=∣rand⁡(0,1)⋅Pos⁡b→(t)−Pos⁡c→(t)∣Pos⁡→(t+1)=Pos⁡b→(t)−r⃗⋅Pos⁡rnd→⋅cos⁡(θ)(5)\begin{aligned} &\overrightarrow{\operatorname{Pos}_{\mathrm{rnd}}}=\left|\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{b}}(t)-\overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right| \\ &\overrightarrow{\operatorname{Pos}}(t+1)=\overrightarrow{\operatorname{Pos}_{b}}(t)-\vec{r} \cdot \overrightarrow{\operatorname{Pos}_{\mathrm{rnd}}} \cdot \cos (\theta) \end{aligned}\tag{5} ​Posrnd​​=∣∣∣​rand(0,1)⋅Posb​​(t)−Posc​​(t)∣∣∣​Pos(t+1)=Posb​​(t)−r⋅Posrnd​​⋅cos(θ)​(5)

探索和利用

探索和利用是通过自适应的rGr_GrG​和RRR保证的,这些参数允许SCSO在两个阶段之间无缝切换。由于参数RRR取决于rGr_GrG​,其波动范围也会变小。RRR是区间[−2rG,2rG][-2r_G,2r_G][−2rG​,2rG​]的随机值,而rGr_GrG​线性从2下降到0。当R的随机值为[-1,1]时,沙丘猫的下一个位置可以是当前位置与狩猎位置之间的任意位置。SCSO算法在RRR小于或等于1时强制搜索代理进行利用,否则强制搜索代理进行探索和寻找猎物,如等式6。

X⃗(t+1)={Pos⁡b→(t)−Pos⁡rnd →⋅cos⁡(θ)⋅r⃗∣R∣≤1;exploitation r⃗⋅(Pos⁡bc→(t)−rand⁡(0,1)⋅Pos⁡c→(t))∣R∣>1;exploration (6)\vec{X}(t+1)=\left\{\begin{array}{cl} \overrightarrow{\operatorname{Pos}_{b}}(t)-\overrightarrow{\operatorname{Pos}_{\text {rnd }}} \cdot \cos (\theta) \cdot \vec{r} & |R| \leq 1 ; \text { exploitation } \\ \vec{r} \cdot\left(\overrightarrow{\operatorname{Pos}_{b c}}(t)-\operatorname{rand}(0,1) \cdot \overrightarrow{\operatorname{Pos}_{c}}(\mathrm{t})\right) & |R|>1 ; \text { exploration } \end{array}\right.\tag{6} X(t+1)=⎩⎨⎧​Posb​​(t)−Posrnd ​​⋅cos(θ)⋅rr⋅(Posbc​​(t)−rand(0,1)⋅Posc​​(t))​∣R∣≤1; exploitation ∣R∣>1; exploration ​(6)

SCSO算法

智能优化算法(源码)-沙丘猫群优化(SCSO)相关推荐

  1. 【智能优化算法】基于沙猫群优化算法求解单目标优化问题附matlab代码

    1 内容介绍 这项研究提出了一种新的元启发式算法,称为沙猫群优化 (SCSO),它模仿试图在自然界中生存的沙猫行为.这些猫能够探测到低于 2 kHz 的低频,并且具有难以置信的挖掘猎物的能力.受这两个 ...

  2. 粒子群优化算法及其离散二进制粒子群优化算法总结

    粒子群优化算法及其离散二进制粒子群优化算法总结 文章目录 粒子群优化算法及其离散二进制粒子群优化算法总结 前言 一.什么是粒子群优化算法? 二.粒子群算法基本形式 标准粒子群算法 粒子群拓扑结构 离散 ...

  3. 【运筹优化】SCSO沙丘猫群优化算法求解无约束多元函数最值(Java代码实现)

    文章目录 前言 优化目标 求解结果 搜索过程可视化 java算法代码 可视化代码 前言 本文以求解二元函数最小值为例,如果需要求解多元函数,只需要修改以下变量即可: varNum:变量维度数 ub和l ...

  4. 多目标优化算法:多目标变色龙群优化算法MOCSA(提供MATLAB源码)

    变色龙简介: 变色龙,是非常奇特的爬行动物,它有适于树栖生活的种种特征和行为.避役的体长约15-25厘米,身体侧扁,背部有脊椎,头上的枕部有钝三角形突起.四肢很长,指和趾合并分为相对的两组,前肢前三指 ...

  5. 智能优化算法:多目标粒子群优化算法(MOPSO)

    目录 一.粒子群优化算法(Particle Swarm Optimization,PSO) 二.多目标优化&Pareto支配 三.多目标粒子群优化算法(Multiple Objective P ...

  6. MATLAB算法实战应用案例精讲-【智能优化算法】多目标粒子群优化(MOPSO)(补充篇)(附MATLAB和python代码实现)

    目录 前言 几个高频面试题目

  7. 【Linux 内核 内存管理】优化内存屏障 ① ( barrier 优化屏障 | 编译器优化 | CPU 执行优化 | 优化屏障源码 barrier 宏 )

    文章目录 一.优化屏障 ( 编译器优化 | CPU 执行优化 ) 二.优化屏障源码 一.优化屏障 ( 编译器优化 | CPU 执行优化 ) " 代码 " 编译成 " 可执 ...

  8. 【优化算法】猫群优化算法(CSO)【含Matlab源码 1071期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]猫群优化算法(CSO)[含Matlab源码 1071期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏M ...

  9. 免疫优化算法 matlab,基于人工免疫克隆选择算法的调度优化MATLAB源码

    人工免疫克隆选择算法是一种比较新型的智能算法,其基本算法结构与遗传算法是类似的,以下源码是为网络节点分组调度问题而设计的算法. function [BestX,BestY,AllABfarm,LC1, ...

最新文章

  1. 语言模型也不能乱说话!DeepMind发布GopherCite:讲话必须带证据
  2. 表上作业法matlab实现,高人帮忙改改,有关表上作业法的C++程序
  3. 请注意Tokyo Tyrant (ttserver)在大数据量下的不稳定
  4. java (10) 集合类
  5. 中国移动研究院2020春招技术综合JAVA在线编程题第二题
  6. spring 通过EsClientFactory注入elasticsearch
  7. 微信小程序接入腾讯地图sdk地图 用户自选位置。踩坑+代码实现
  8. Java 范例 - 线程
  9. 统计表明,睡懒觉迟到早退的人特别有创造力,这是真的吗?
  10. CUDA编程-02: 初识CUDA编程
  11. Unity 物体高亮实现
  12. c语言数独思路介绍,【数独运算器】,关于数独的解题思路,已经改进。
  13. 小程序坑录-wx.getLocation接口申请
  14. 第21章,DNS服务
  15. 【2020】win10java(jdk安装)环境变量配置和相关问题解决
  16. 无需修改bios即可让任意主板实现NVME启动
  17. 数据链路层学习之LLDP
  18. Addressable设置的要点
  19. 我的小程序新增了证件照换底色功能
  20. RIP路由项欺骗攻击实验

热门文章

  1. H264/AVC SEI和VUI
  2. 月球绘画软件测试,宇宙飞船简笔画:第一个登上月球的宇航员
  3. 树或者二叉树的度怎么算??
  4. 运算符副作用总结与例子(js)
  5. Odata数据展示_SAP刘梦_新浪博客
  6. android cmwap 切换 cmnet,Android CMWAP和CMNET 切换APN
  7. springboot+mybatis-plus在log控制台输出sql语句
  8. oracle 11g 数据泵导出 19c导入
  9. Spring Cloud学习笔记—网关Spring Cloud Gateway官网教程实操练习
  10. SpringCloud Gateway微服务网关实战与源码分析-上