小龙虾优化算法(Crayfish Optimization Algorithm,COA)

news2024/12/24 10:21:25

小龙虾优化算法(Crayfish Optimization Algorithm,COA)

  • 前言
  • 一、小龙虾优化算法的实现
    • 1.初始化阶段
    • 2.定义温度和小龙虾的觅食量
    • 3.避暑阶段(探索阶段)
    • 4.竞争阶段(开发阶段)
    • 5.觅食阶段(开发阶段)
  • 二、小龙虾优化算法的流程
  • 三、小龙虾优化算法的在CEC2020测试结果。
    • 3.1 CEC2020部分测试函数描述
    • 3.2 CEC2020部分测试函数三维图像显示
    • 3.3 COA在CEC2020的测试效果
  • 四、matlab代码
  • 五、参考文献


前言

小龙虾优化算法(Crayfish Optimization Algorithm,COA)是2023年9月提出的一种元启发式优化算法。COA的灵感来源于小龙虾的避暑、竞争和觅食行为。这三种行为对应算法的避暑阶段、竞争阶段和觅食阶段。其中,竞争阶段和觅食阶段为小龙虾优化算法的开发阶段,避暑阶段是小龙虾优化算法的探索阶段。COA具有较好的收敛效果,在CEC2020有着较好的优化效果。


提示:本文使用的是迭代次数的代码,没有换成评价次数。
如有疑问可联系尭食

一、小龙虾优化算法的实现

小龙虾优化算法的探索和开发受温度调节,温度是一个随机数。当温度过高时,小龙虾会选择洞穴进行避暑。如果没有其他的小龙虾竞争洞穴,小龙虾会直接进入洞穴,这是小龙虾优化算法的避暑阶段。如果有其他的小龙虾竞争洞穴,则小龙虾会相互竞争,这时小龙虾优化算法的竞争阶段。当温度适宜时,小龙虾优化算法进入觅食阶段。在觅食阶段,小龙虾会根据食物的大小选择直接吃食物或者先撕碎食物再吃食物。其中,小龙虾的进食与觅食量有关。通过温度平衡算法的探索和开发能力,使小龙虾优化算法具有更好的优化效果,能够更快的寻找到一个优异的适应度值。下面是小龙虾优化算法的具体介绍。

1.初始化阶段

在多维优化问题中,每只小龙虾表示一个1× d i m dim dim的矩阵,每列矩阵为一个问题的解决方案。COA的初始化是在上下界之间随机生成 N N N组候选解 X X X N N N是种群大小、 d i m dim dim是种群维数。COA初始化如下:
X = [ X 1 , X 2 , ⋯   , X N ] (1) X = [{X_1},{X_2}, \cdots ,{X_N}]\tag{1} X=[X1,X2,,XN](1) X i , j = l b j + ( u b j − l b j ) × r a n d (2) {X_{i,j}} = l{b_j} + (u{b_j} - l{b_j}) \times rand \tag{2} Xi,j=lbj+(ubjlbj)×rand(2)
其中 l b j lb_j lbj表示第j维的下界, u b j ub_j ubj表示第j维的上界, r a n d rand rand是[0,1]的随机数。

2.定义温度和小龙虾的觅食量

温度的改变会影响小龙虾的行为,使小龙虾进行不同的阶段温度的定义如等式3所示。当温度超过30℃时,小龙虾会选择一个凉爽的地方避暑。在适当的温度下,小龙虾就会进行觅食行为。小龙虾的取食量受温度的影响。小龙虾的取食范围在15~30℃之间,25℃为最好。因此,小龙虾的摄食量可以近似于正态分布,从而使摄食量受到温度的影响。小龙虾摄食量的数学模型和不同温度对应的摄食量如下图所示。
t e m p = r a n d × 15 + 20 (3) temp = rand \times 15 + 20\tag{3} temp=rand×15+20(3)
其中, t e m p temp temp表示小龙虾所在环境的温度。
p = C 1 × ( 1 2 × π × σ ) × exp ⁡ ( − ( t e m p − μ ) 2 2 σ 2 ) (4) p = {C_1} \times ({1 \over {\sqrt {2 \times \pi } \times \sigma )}} \times \exp ( - {{{{(temp - \mu )}^2}} \over {2{\sigma ^2}}})\tag{4} p=C1×(2×π ×σ)1×exp(2σ2(tempμ)2)(4)
其中, µ µ µ是指最适合小龙虾的温度,分别用 σ σ σ C 1 C_1 C1来控制不同温度下小龙虾的摄入量.
Alt

3.避暑阶段(探索阶段)

当温度大于30度,表示温度过高。此时,小龙虾会进入洞穴避暑。洞穴的定义如下所示:
X s h a d e = ( X G + X L ) / 2 (5) {X_{shade}} = ({X_G} + {X_L})/2\tag{5} Xshade=(XG+XL)/2(5)
其中 X G X_G XG表示通过迭代次数所得到的最优位置,XL表示上一代种群更新后获得的最优位置。
小龙虾争夺洞穴是一个随机事件。在COA中,当 r a n d rand rand<0.5,这意味着没有其他的小龙虾争夺洞穴,则小龙虾直接进入洞穴避暑,如下图所示。小龙虾进入洞穴避暑如公式所示:
X i , j t + 1 = X i , j t + C 2 × r a n d × ( X s h a d e − X i , j t ) (6) X_{i,j}^{t + 1} = X_{i,j}^t + {C_2} \times rand \times ({X_{shade}} - X_{i,j}^t)\tag{6} Xi,jt+1=Xi,jt+C2×rand×(XshadeXi,jt)(6)
其中 t t t表示当前迭代次数, t + 1 t+1 t+1表示下一代迭代次数, C 2 C_2 C2为递减曲线。
C 2 = 2 − ( t / T ) (7) {C_2} = 2 - (t/T)\tag{7} C2=2(t/T)(7)
其中, T T T表示最大迭代次数。
在这里插入图片描述

4.竞争阶段(开发阶段)

当温度大于30度, r a n d rand rand≥0.5。这意味着其他的小龙虾也选择了这个洞穴。这时,它们会竞争这个洞穴,如下图所示。它们通过以下公式争夺洞穴。
X i , j t + 1 = X i , j t − X z , j t + X s h a d e (8) X_{i,j}^{t + 1} = X_{i,j}^t - X_{z,j}^t + {X_{shade}}\tag{8} Xi,jt+1=Xi,jtXz,jt+Xshade(8) z = r o u n d ( r a n d × ( N − 1 ) ) + 1 (9) z = round(rand \times (N - 1)) + 1\tag{9} z=round(rand×(N1))+1(9)
其中, z z z表示小龙虾的随机个体。
在这里插入图片描述

5.觅食阶段(开发阶段)

当温度小于等于30时,该温度适合小龙虾进食。这时,小龙虾会去寻找食物觅食。在进食的时候,小龙虾会根据食物的大小选择是否撕碎食物。如果食物大小合适,小龙虾会使用直接摄取食物。如果食物太大,小龙虾会使用鳌足撕碎食物再使用第二第三步行足交替夹取食物摄取。食物的定义为:
X f o o d = X G (10) {X_{food}} = {X_G}\tag{10} Xfood=XG(10)
食物大小的定义为:
Q = C 3 × r a n d × ( f i t n e s s i / f i t n e s s f o o d ) (11) Q = {C_3} \times rand \times (fitnes{s_i}/fitnes{s_{food}})\tag{11} Q=C3×rand×(fitnessi/fitnessfood)(11)
其中 C 3 C_3 C3为食物因子,代表最大的食物,值为常数3。 f i t n e s s i fitness_i fitnessi代表第i只小龙虾的适应度值, f i t n e s s f o o d fitness_{food} fitnessfood代表食物所在位置的适应度值。
Q > ( C 3 + 1 ) / 2 Q>(C3+1)/2 Q>(C3+1)/2,表示食物太大。这时,小龙虾会通过下面公式撕碎食物。
X f o o d = exp ⁡ ( − 1 Q ) × X f o o d (12) {X_{food}} = \exp ( - {1 \over Q}) \times {X_{food}}\tag{12} Xfood=exp(Q1)×Xfood(12)
撕碎食物后,小龙虾会使用第二第三步行足交替夹取食物摄取。为了模拟交替摄食行为,在等式中采用正弦函数和余弦函数的组合来模拟交替过程,如图所示。不仅如此,小龙虾获得的食物也与食物摄入量有关。摄食的等式如下所示:
X i , j t + 1 = X i , j t + X f o o d × p × ( cos ⁡ ( 2 × π × r a n d ) − sin ⁡ ( 2 × π × r a n d ) ) (13) X_{i,j}^{t + 1} = X_{_{i,j}}^t + {X_{food}} \times p \times (\cos (2 \times \pi \times rand) - \sin (2 \times \pi \times rand))\tag{13} Xi,jt+1=Xi,jt+Xfood×p×(cos(2×π×rand)sin(2×π×rand))(13)
Q ≤ ( C 3 + 1 ) / 2 Q≤(C3+1)/2 Q(C3+1)/2,小龙虾会直接向食物移动并进食。等式如下:
X i , j t + 1 = ( X i , j t − X f o o d ) × p + p × r a n d × X i , j t (14) X_{i,j}^{t + 1} = (X_{i,j}^t - {X_{food}}) \times p + p \times rand \times X_{i,j}^t\tag{14} Xi,jt+1=(Xi,jtXfood)×p+p×rand×Xi,jt(14)

二、小龙虾优化算法的流程

步骤1.初始化种群,计算种群的适应度值并获得 X G X_G XG X L X_L XL
步骤2.根据等式3定义小龙虾的生存环境.
步骤3.当温度大于30度且 r a n d rand rand<0.5,COA根据等式6获得新的位置并进入步骤8。
步骤4.当温度大于30度且 r a n d rand rand≥0.5,COA根据等式8获得新的位置并进入步骤8。
步骤5.当温度小于等于30时,COA进入觅食阶段,根据等式4和等式11定义摄食量 p p p和食物大小 Q Q Q
步骤6.如果Q>( C 3 C_3 C3+1)/2,根据等式12撕碎食物。之后通过等式13摄食获得新位置并进入步骤8。。
步骤7.如果Q≤( C 3 C_3 C3+1)/2,通过等式14摄食获得新位置并进入步骤8。。
步骤8.评估种群是否退出循环。如果没有返回步骤2。
步骤9.输出最佳位置的个体。

在这里插入图片描述

三、小龙虾优化算法的在CEC2020测试结果。

3.1 CEC2020部分测试函数描述

名称公式维度变量范围理论最优
F1 F 1 ( x ) = f 1 ( M ( x − o 1 ) ) + F 1 ∗ {F_1}(x) = {f_1}(M(x - {o_1})) + {F_1}* F1(x)=f1(M(xo1))+F130[-100,100]100
F2 F 2 ( x ) = f 11 ( M ( 1000 ( x − o 11 ) 100 ) ) + F 2 ∗ {F_2}(x) = {f_{11}}({\rm{M}}({{1000(x - {o_{11}})} \over {100}})) + {F_2} * F2(x)=f11(M(1001000(xo11)))+F230[-100,100]100
F3 F 3 ( x ) = f 10 ( M ( 600 ( x − o 7 ) 100 ) ) + F 3 ∗ {F_3}(x) = {f_{10}}(M({{600(x - {o_7})} \over {100}})) + {F_3}* F3(x)=f10(M(100600(xo7)))+F330[-100,100]100

3.2 CEC2020部分测试函数三维图像显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 COA在CEC2020的测试效果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、matlab代码

COA的代码已公布,可自行下载,也欢迎大家进行修改Crayfish Optimization Algorithm

五、参考文献

[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024.
[2] Jia, Heming, Honghua Rao, Changsheng Wen, and Seyedali Mirjalili. Crayfish optimization algorithm[J]. Artificial Intelligence Review. 56(Suppl 2), pp.1919-1979.

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

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

相关文章

进程地址空间 【Linux】

文章目录 进程地址空间 进程地址空间 进程地址空间&#xff0c;本质是一个描述进程可视范围的大小&#xff0c; 地址空间内一定要存在各种区域划分&#xff0c;对线性地址进行start&#xff0c;和end即可 在每一个区的_start 到_end 范围内&#xff0c;这段连续的空间中&…

Swift - Playground

文章目录 Swift - Playground1. 新建Playground2. View3. 图片4. ViewController5. Playground - 多Page6. 注释6.1 Playground的注释支持markup语法&#xff08;与markdown相似&#xff09;6.1.1 语法 Swift - Playground Playground可以快速预览代码效果&#xff0c;是学习语…

前端计算机网络之网络模型

什么是网络模型 对于前端开发者而言&#xff0c;理解网络模型的概念是非常重要的。网络模型是描述数据如何在网络中传输和处理的框架和规则&#xff0c;它有助于前端开发者更好地理解和优化应用程序与服务器之间的通信过程。 常用的两类模型 前端开发者需要了解的网络模型主…

引入线程的贪吃蛇风骚走位

1.在main函数中分别引入线程t1 和线程 t2 一个线程用来刷新界面&#xff0c;一个线程用来改变方向 2.刷新界面函数&#xff0c;无限次刷新 3. 也是无限循环while(1) 定义key 从键盘获取输入方向&#xff0c;赋值给dir; 4.在初始化函数中确定蛇向有行走为方向 5.从改变方向的函数…

c++中的链表list的模拟实现

拖更了半个月&#xff0c;我终于来填c的坑啦。上次我们说的vetcor不知道小伙伴还记得多少呢&#xff1f;今天我们要讲list的模拟实现。 目录 架构结点list表的结构 构造函数尾插push_back()尾删pop_back()计算个数&#xff1a;size()判断空empty()※迭代器问题普通迭代器迭代器…

16. Spring 事务和事务传播机制

源码位置&#xff1a;transaction 1. 事务回顾 在数据库阶段&#xff0c;想必大家都已经学习过事务了。当多个操作要么一起成功&#xff0c;要么一起失败的时候就需要将多个操作放在同一个事务中。 举个例子&#xff1a;比如用户A给用户B转账100元的业务&#xff0c;需要把用…

英文文档阅读学习atoi

文档链接&#xff1a;atoi - C Reference (cplusplus.com) 如果可以看的懂英文的可以直接看这个图&#xff0c;看不明白也没关系&#xff0c;可以看一下下面的翻译&#xff1a; 这是一些c语言的相关单词意思&#xff1a; C-string——使用空字符 0 结尾的一维字符数组 as in i…

(学习日记)2024.04.28:UCOSIII第五十二节:User文件夹函数概览(uC-LIB文件夹)第二部分

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

重学java 24.面向对象 多态

下雨了&#xff0c;跑不跑衣服都会被淋湿&#xff0c;还不如慢慢地走&#xff0c;结局已定 —— 24.4.25 多态 1.面向对象三大特性&#xff1a;封装 继承 多态 2.怎么学&#xff1a; a、不要从字面意思上理解多态这两个字&#xff0c;要从使用形式上掌握 b、要知…

【Redis 开发】Redis哨兵

哨兵 作用和原理服务状态监控选举新的master 搭建哨兵集群RedisTemplate的哨兵模式 作用和原理 Redis提供了哨兵机制来实现主从集群中的自动故障恢复&#xff1a; 哨兵也是一个集群 监控&#xff1a;会不断检查master和slave是否按预期工作自动故障恢复&#xff1a;如果mast…

开发工具-pycharm的代码自动部署服务器以及服务端python配置、项目开发环境一键启动服务

文章目录 一、pycharm的ssh配置1.本地生成ssh密钥2.密钥配置到远端服务器(1-1) 有权限ssh访问到服务器(1-2) 无权限ssh访问到服务器(1-3) 没有办法通过以上形式上传到服务器(2) 配置到authorized_keys自动访问 3.pycharm中配置ssh(1) 选择File中的settings(1) 选择Tools中的SSH…

Github创建远程仓库(项目)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

StarBright染料--星光高亮抗体 助力多色方案

星光染料是一种独特的荧光纳米粒子&#xff0c;将它与 Bio-Rad 高度验证的抗体结合&#xff0c;专为流式细胞术开发&#xff0c;为您提供卓越染色效果。星光染料使稀有群体和低密度抗原易于分辨&#xff0c;同时保持适用于任何多色实验的灵活性。 本篇将帮助你了解高亮星光染料…

springboot权限验证学习-下

上篇讲了rbac对于菜单的权限&#xff0c;下面准备完成按钮权限以及行数据和列数据权限 权限控制(按钮权限) 权限控制 操作权限就是将操作视为资源&#xff0c;比如删除操作&#xff0c;有些人可以有些人不行。于后端来说&#xff0c;操作就是一个接口。于前端来说&#xff0…

vue2使用change事件监听不了回车事件的问题

在 vue2 项目中使用 el-input 的 change 监听&#xff0c;数据不发生变化时&#xff0c;回车事件和失去焦点不生效 输入框会一直显示 只有数据发生变化时才生效 <el-input v-model"editedText" change"endEditing" ref"input"></el-inp…

校园广播系统:智能化管理提升校园安全与效率

在现代教育环境中&#xff0c;校园广播系统不再仅仅是一个播放音乐和通知的工具&#xff0c;它已经成为学校基础设施中不可或缺的一部分。根据《义务教育阶段学校信息化设备配备标准》的第8条&#xff0c;校园广播系统在学校范围内的日常运用极为广泛&#xff0c;涵盖了升旗仪式…

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(四)

第 4 章 数据库设计 4.1 数据库设计原则 4.2.数据库概念结构设计 4.3 数据库表设计 4.4.本章小结 前面内容请移步 基于 SpringCloud 的在线交易平台乐优商城的设计与实现&#xff08;三&#xff09; 相关免费源码资源 乐优商城 第 4 章 数据库设计 4.1 数据库设计原…

怎样把音频压缩?3种简单的音频压缩方法分享

怎样把音频压缩&#xff1f;在数字化时代&#xff0c;音频文件占据了大量的存储空间&#xff0c;因此音频压缩成为了许多人的需求。通过音频压缩&#xff0c;我们不仅可以减小文件大小&#xff0c;方便存储和传输&#xff0c;还可以节省设备空间&#xff0c;提升处理效率。因此…

人工智能|推荐系统——推荐大模型最新进展

近年来,大语言模型的兴起为推荐系统的发展带来了新的机遇。这些模型以其强大的自然语言处理能力和丰富的知识表示,为理解和生成复杂的用户-物品交互提供了新的视角。本篇文章介绍了当前利用大型语言模型进行推荐系统研究的几个关键方向,包括嵌入空间的解释性、个性化推荐的知…

电脑黑屏问题的4种解决方法,两分钟轻松掌握

电脑黑屏是一种让人不安的问题&#xff0c;这个问题可能是由多种原因引起的。在这个数字化的时代&#xff0c;电脑已经成为我们工作和娱乐中不可或缺的一部分。当电脑突然陷入黑屏状态&#xff0c;用户通常会感到困扰和焦虑。本文将介绍一些常见的电脑黑屏问题解决方法&#xf…