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

小龙虾优化算法(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.mfbz.cn/a/580306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Github进行fork后如何与原仓库同步[解决git clone 太慢的问题]

前言 fork了一个仓库以后怎么同步源仓库的代码&#xff1f; 先说一下git clone太慢的问题&#xff0c;可以通过代理拉取代码&#xff0c;具体请看&#xff1a; https://gitclone.com/ 步骤 1、执行命令 git remote -v 查看你的远程仓库的路径。 以一个实际例子说明&#x…

场外个股期权开户新规及操作方法

场外个股期权开户新规 场外个股期权开户新规主要涉及对投资者资产实力、专业知识、风险承受能力和诚信记录的要求。以下是根据最新规定总结的关键要点&#xff1a; 来源/&#xff1a;股指研究院 资产门槛&#xff1a;投资者需具备一定的资产实力&#xff0c;确保在申请开户前…

Maven | 依赖

Maven项目结构 Pom代码 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.…

Android 14设置android:importantForAutofill=“no“无效

密码输入框EditText不希望弹出Google的是否保存密码弹出框&#xff0c; 直接设置了android:importantForAutofill"no"&#xff0c; android:inputType"textPassword|textNoSuggestions"在安卓12手机上有效&#xff0c;但是在安卓14上面就不行了&#xff0…

前端高并发的出现场景及解决方法——技能提升——p-limit的使用

最近在写后台管理系统的时候&#xff0c;遇到一个场景&#xff0c;就是打印的页面需要根据传入的多个id&#xff0c;分别去请求详情接口。 比如id有10个&#xff0c;则需要调用10次详情接口获取到数据&#xff0c;最后对所有的数据进行整合后页面渲染。 相信大家或多或少都遇到…

MF(推荐系统的矩阵分解技术)论文笔记

论文概述 推荐系统的矩阵分解技术可以为用户提供更为准确的个性化推荐&#xff0c;对比传统的近邻技术&#xff0c;矩阵分解技术可以纳入更多信息&#xff0c;如隐式反馈、时间效应和置信度 近邻技术&#xff1a;基于用户或物品之间的相似性进行推荐&#xff0c;当用户之间已…

基于单片机的羽毛球计分器(含proteus仿真和程序)

目录 完整文本及仿真、程序可私信我获取 前言 第一章 设计任务及方案 1.1 设计任务 1.2 总体设计分析 1.3 功能模块方案设计 1.4 方案确定 第二章、硬件设计 2.1 AT89C51 单片机芯片介绍 2.1.1 主要特性 2.1.2 管脚说明 2.1.3 元件清单 2.2 电路介绍 2…

艾体宝案例 | 使用Redis和Spring Ai构建rag应用程序

随着AI技术的不断进步&#xff0c;开发者面临着如何有效利用现有工具和技术来加速开发过程的挑战。Redis与Spring AI的结合为Java开发者提供了一个强大的平台&#xff0c;以便快速构建并部署响应式AI应用。探索这一整合如何通过简化的开发流程&#xff0c;让开发者能够更专注于…

国产统信UOS桌面操作系统安装GeoScenePro的详细教程

前提 在国产操作系统 统信UOS桌面操系统 中安装 GeoScenePro&#xff0c;本教程仅作为技术测试、并非是官方教程。欢迎沟通学习。 1、环境准备 统信UOS生态社区 - 打造操作系统创新生态https://www.chinauos.com/resource/download-professional 前往统信官网下载统信…

Vue开发者工具Vue.js devtools Vue开发者工具安装步骤前端开发工具免费附带教程

下载地址&#xff1a; 链接: https://pan.baidu.com/s/1JaGvhS4NoD8lL07n2ScE9A 密码: 9rfs 安装步骤&#xff1a; 以谷歌浏览器为例 第一步&#xff1a;打开Chrome的拓展程序 如图 第二步&#xff1a; 将下载好的拓展程序拖入即可&#xff0c;如下图 第三步&#xff1a;…

多传感器时间同步详解

多传感器时间同步 每个传感器都有自己的时钟源不同传感器具有不同的采样频率另外数据传输、camera曝光等都会产生不可控的延迟 为了有效融合多个传感器的感知数据&#xff0c;必须进行时间同步 在自动驾驶中&#xff0c;需要用到很多传感器的数据&#xff08;Lidar&#xff0…

实时通讯技术 WebRTC 介绍

WebRTC WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音对话或视频对话的技术。 历史 2010年5月&#xff0c;Google以6820万美元收购VoIP软件开发商Global IP Solutions的GIPS引擎&#xff0c;并改为名为“WebRTC”。WebRTC使用…

震惊!某省图书馆竟然可以注册后直接访问知网并下载文章?

四川省图书馆 使用说明 1.点击进入https://portal.sclib.org/interlibSSO/main/main.jsp 显示如下&#xff1a; 2.关注四川省图书馆公众号并注册 3.点击馆外登录并使用刚注册的用户名密码登录 显示如下&#xff1a; 4.登录成功后跳转至首页并点击cnki即可正常使用

Elasticsearch概念 使用docker安装Elasticsearch和kibana

目录 一、Elasticsearch概念 倒排索引和正向索引 正向和倒排 二、ES安装 三、安装 kibana 四、IK分词器 下载ES中文分词器 扩展或停用词条 一、Elasticsearch概念 倒排索引和正向索引 正向索引 就像在mysql数据中搜索非主键字段的内容&#xff0c;就需要逐条数据的去查…

数组和指针经典笔试题讲解下

目录 创作不易&#xff0c;如对您帮助&#xff0c;还望一键三连&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 题目一&#xff1a; 题目二&#xff1a; 题目三&#xff1a; 题目四&#xff1a; 题目五&#xff1a; 题目六&#xff1a; 题目七&#xff1a; 创作…

python中如何用matplotlib写柱状图

#代码 import matplotlib.pyplot as plt import numpy as npspecies ("Adelie", "Chinstrap", "Gentoo") penguin_means {Bill Depth: (18.35, 18.43, 14.98),Bill Length: (38.79, 48.83, 47.50),Flipper Length: (189.95, 195.82, 217.19),…

智能外呼文书送达系统,智慧检务解决方案

在全民数字化改革中&#xff0c;司法体制改革不断推进的大背景下&#xff0c;合肥高新技术产业开发区人民检察院的内设机构改革已完成落地&#xff0c;刑事案件审查办理迎来了重大改变&#xff0c;需要检察官对现有办案方式方法做出相应的调整&#xff0c;将主要精力从大量的重…

【AIGC调研系列】Sora级别的国产视频大模型-Vidu

Vidu能够达到Sora级别的标准。Vidu被多个来源认为是国内首个Sora级别的视频大模型[2][3][4]。它采用了团队原创的Diffusion与Transformer融合的架构U-ViT&#xff0c;能够生成长达16秒、分辨率高达1080P的高清视频内容[1][6]。此外&#xff0c;Vidu的一致性、运动幅度都达到了S…

无人机+集群组网+单兵图传:空地一体化组网技术详解

空地一体化组网技术是一种结合了无人机、集群自组网和单兵图传等多种技术的先进通信解决方案。这种技术方案的主要目的是在前线事故现场和后方指挥中心之间建立一个高效、稳定的通信链路&#xff0c;以确保信息的实时传输和指挥的顺畅进行。 首先&#xff0c;前端视频采集部分&…

面试经典150题——求根节点到叶节点数字之和

​ 1. 题目描述 2. 题目分析与解析 2.1 思路一——DFS 理解问题&#xff1a; 首先要理解题目的要求&#xff0c;即对于给定的二叉树&#xff0c;我们需要找出从根节点到所有叶子节点的所有路径&#xff0c;然后将每一条路径上的数字组成一个整数&#xff0c;最后求出这些整数…
最新文章