【智能算法】清道夫优化算法(CFO)原理及实现

devtools/2024/9/22 16:40:04/

目录

    • 1.背景
    • 2.算法原理
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.背景

2024年,W Zhang受到清道夫自然行为启发,提出了清道夫优化算法(Cleaner Fish Optimization Algorithm, CFO)。

在这里插入图片描述

在这里插入图片描述

2.算法原理

2.1算法思想

CFO模拟了清道夫在进行“清洁服务”时的移动行为,以及雌鱼变性为雄鱼的行为,并定义了两种位置更新模式。此外,还提出了一种两代循环操作策略来实现优化过程。

在这里插入图片描述

2.2算法过程

CFO采用三次混沌映射算法进行初始化,保持了算法的多样性,提高了算法的全局搜索能力:
r k + 1 , j = 4 r k , j 3 − 3 r k , j , − 1 < r 1 , j < 1 , r k , j ≠ 0 k = 1 , 2 , . . . , N − 1. j = 1 , 2 , . . . , d (1) \begin{aligned}&r_{k+1,j}=4r_{k,j}^3-3r_{k,j},\quad-1<r_{1,j}<1,\quad r_{k,j}\neq0\\&k=1,2,...,N-1.\quad j=1,2,...,d\end{aligned}\tag{1} rk+1,j=4rk,j33rk,j,1<r1,j<1,rk,j=0k=1,2,...,N1.j=1,2,...,d(1)

种群初始化:
X i , j = l b i , j + ( u b i , j − l b i , j ) ⋅ ( r i , j + 1 2 ) (2) X_{i,j}=lb_{i,j}+(ub_{i,j}-lb_{i,j})\cdot\left(\frac{r_{i,j}+1}2\right)\tag{2} Xi,j=lbi,j+(ubi,jlbi,j)(2ri,j+1)(2)

CFO 提出了两代循环策略:分别是目标追踪和性别转换。一代采用目标追踪更新模式以实现“清洁服务”。而在下一代中,前三分之二的个体采用目标追踪更新模式,其他个体采用性别转换更新模式。

目标追踪

清道夫目标追踪行为:
X i , j t + 1 = X i , j t + V i , j t (2) X_{i,j}^{t+1}=X_{i,j}^t+V_{i,j}^t\tag{2} Xi,jt+1=Xi,jt+Vi,jt(2)
清道夫速度:
V i , j t + 1 = V i , j t + ( X i , j t − X b e s t , j ) ⋅ f (3) V_{i,j}^{t+1}=V_{i,j}^t+(X_{i,j}^t-X_{best,j})\cdot f\tag{3} Vi,jt+1=Vi,jt+(Xi,jtXbest,j)f(3)
f为每个个体对应的频率:
f = f m i n + ( f m a x − f m i n ) ⋅ r 1 (4) f=f_{min}+(f_{max}-f_{min})\cdot r_1\tag{4} f=fmin+(fmaxfmin)r1(4)
其中fmin, fmax分别为最小和最大频率。它们分别被设置为0和10。为了增强算法的探索能力,引入了随机行走策略:
X i , j = { X b e s t , j + 0.1 ⋅ r a n d ⋅ α t , i f r 2 < r X i , j t , o t h e r w i s e (5) X_{i,j}=\begin{cases}X_{best,j}+0.1\cdot rand\cdot\alpha^{t},&if\quad r_{2}<r\\X_{i,j}^{t},&otherwise&&\end{cases}\tag{5} Xi,j={Xbest,j+0.1randαt,Xi,jt,ifr2<rotherwise(5)
参数表述为:
α t + 1 = 0.97 × α t (6) \alpha^{t+1}=0.97\times\alpha^t\tag{6} αt+1=0.97×αt(6)
α \alpha α表示清道夫的清洁能力,也表示随着迭代次数的增加,清道夫的清洁能力下降。r为自适应参数:
r = 1 − e − γ ⋅ t (7) r=1-e^{-\gamma\cdot t}\tag{7} r=1eγt(7)

性别转换

在鱼类群体中,当雄性死亡时,雌性可能会改变性别,成为新的雄性。基于这种行为,本文提出了性别转换更新模式:
X i , j t + 1 = w ⋅ X i , j t + r 3 ⋅ ( X i , j t − X b e s t , j ) (8) X_{i,j}^{t+1}=w\cdot X_{i,j}^t+r_3\cdot(X_{i,j}^t-X_{best,j})\tag{8} Xi,jt+1=wXi,jt+r3(Xi,jtXbest,j)(8)
w为自适应权值,用于平衡探索和开发:
w = ( w m a x − w m i n ) e t T + w m i n (9) w=(w_{max}-w_{min})^{e^{\frac tT}}+w_{min}\tag{9} w=(wmaxwmin)eTt+wmin(9)

鱼类种群行为

清道夫是群居动物,为了表现这种行为,引入了准反射反向学习策略:
X i , j = r 4 × ( X i , j t − u b i , j + l b i , j 2 ) − u b i , j + l b i , j 2 (10) X_{i,j}=r_{4}\times\left(X_{i,j}^{t}-\frac{ub_{i,j}+lb_{i,j}}{2}\right)-\frac{ub_{i,j}+lb_{i,j}}{2}\tag{10} Xi,j=r4×(Xi,jt2ubi,j+lbi,j)2ubi,j+lbi,j(10)

流程图

在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Zhang W, Zhao J, Liu H, et al. Cleaner fish optimization algorithm: a new bio-inspired meta-heuristic optimization algorithm[J]. The Journal of Supercomputing, 2024: 1-39.

5.代码获取

资源清单


http://www.ppmy.cn/devtools/42149.html

相关文章

SVDD(Singing Voice Deepfake Detection,歌声深度伪造检测)挑战2024

随着AI生成的歌声快速进步&#xff0c;现在能够逼真地模仿自然人类的歌声并与乐谱无缝对接&#xff0c;这引起了艺术家和音乐产业的高度关注。歌声与说话声不同&#xff0c;由于其音乐性质和强烈的背景音乐存在&#xff0c;检测伪造的歌声成为了一个特殊的领域。 SVDD挑战是首个…

【Python】语句与众所周知【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在之前的基础上进行的维护 目录 条…

2024kali linux上安装java8

1 kali下载Java 8安装包 访问Oracle官网或其他可信的Java下载站点&#xff0c;如华为云的开源镜像站&#xff08;例如&#xff1a;https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz&#xff09;。 确保下载的是与你的Kali Linux系统架构&#xf…

docker无法映射/挂载根目录

docker无法映射&#xff08;挂载&#xff09;根目录下的文件夹只能映射家目录 最近想要使用nas-tools做做刮削&#xff0c;电影存在一个机械磁盘里&#xff0c;机械磁盘被挂载到/data1下&#xff0c;发现一个很奇怪的问题&#xff0c;docker只能挂载成功home目录下的文件夹&am…

集成了Gemini的Android Studio,如虎添翼

今天将Android Studio升级到最新版&#xff08;Jellyfish&#xff09;。发现在new features中有一条&#xff1a; Code suggestions with Gemini in Android Studio 打开路径为&#xff1a; View > Tool Windows > Gemini 支持多国语言&#xff0c;英文、中文都能正确理解…

高效协同,智慧绘制:革新型流程图工具全解析

流程图&#xff0c;作为一种直观展示工作过程和系统运作的工具&#xff0c;在现代办公和项目管理中发挥着不可或缺的作用。 其优势在于能够清晰、直观地呈现复杂的过程和关系&#xff0c;帮助人们快速理解并掌握关键信息。同时&#xff0c;流程图也广泛应用于各种场景&#xf…

使用可接受gitlab参数的插件配置webhook

jenkins配置 安装Generic Webhook Trigger 配置远程触发令牌 勾选Print post content和Print contributed variables用于打印值 配置gitlab 选择新增webhook 配置webhook http://JENKINS_URL/generic-webhook-trigger/invoke,将JENKINS_URL修改成自己的jenkins地址 先保存…

Qt信号和槽

信号和槽 什么是信号和槽 connect(发送对象&#xff0c;信号&#xff0c;接收对象&#xff0c;槽函数)&#xff0c;其中发送信号和槽函数需要用 SIGNAL() 和 SLOT() 来进行声明。 本质是什么 发送对象 就是发送信号的对象&#xff0c;比如按钮。 信号 就是特定的对象发送…