智能优化算法:浣熊优化算法-附代码

news2024/9/24 7:23:34

智能优化算法:浣熊优化算法

文章目录

  • 智能优化算法:浣熊优化算法
    • 1.浣熊优化算法
      • 1.1 初始化
      • 1.2 阶段一:狩猎和攻击(探索阶段)
    • 2.实验结果
    • 3.参考文献
    • 4. Matlab

摘要:浣熊优化算法(Coati Optimization Algorithm(COA)),是于2022年提出的一种基于浣熊行为的优化算法,该算法通过模拟浣熊猎食行为来进行寻优,具有寻优能力强,收敛速度快等特点

1.浣熊优化算法

1.1 初始化

与其他优化算法类似,在寻优空间里随机初始化种群:
x i , j = l b j + r ⋅ ( u b j − l b j ) (2) x_{i, j}=l b_j+r \cdot\left(u b_j-l b_j\right) \tag{2} xi,j=lbj+r(ubjlbj)(2)
其中 x i , j x_{i,j} xi,j为个体, l b j lb_j lbj为寻优下边界, u b j ub_j ubj为寻优上边界, r r r为[0,1]之间的随机数。

1.2 阶段一:狩猎和攻击(探索阶段)

在搜索空间中更新coatis种群的第一阶段是基于模拟它们攻击鬣蜥(Iguana)时的策略进行建模的。在这一策略中,一群coatis爬上树去够一只鬣蜥并吓唬它。其他几只coatis在树下等待,直到鬣蜥摔倒在地。鬣蜥落地后,coatis攻击并猎杀它。这种策略导致coatis移动到搜索空间的不同位置,这表明了COA在解决问题空间的全局搜索中的探索能力。

在COA设计中,假设种群中最好成员的位置是鬣蜥的位置。也有人假设,一半的鬣蜥爬上树,另一半等待鬣蜥掉到地上。因此,使用等式(4)对从树上升起的涂层的位置进行数学模拟。
X i P 1 : x i , j P 1 = x i , j + r ⋅ (  Iguana  j − I ⋅ x i , j ) ,  for  i = 1 , 2 , … , ⌊ N 2 ⌋ a n d j = 1 , 2 , … , m . (4) X_i^{P 1}: x_{i, j}^{P 1}=x_{i, j}+r \cdot\left(\text { Iguana }_j-I \cdot x_{i, j}\right), \text { for } i=1,2, \ldots,\left\lfloor\frac{N}{2}\right\rfloor \\and j=1,2, \ldots, m. \tag{4} XiP1:xi,jP1=xi,j+r( Iguana jIxi,j), for i=1,2,,2Nandj=1,2,,m.(4)
鬣蜥摔倒在地后,它被放置在搜索空间中的一个随机位置。基于这个随机位置,地面上的涂层在搜索空间中移动,这是使用等式(5)和(6)模拟的。

 Iguana  G :  Iguana  a j G = l b j + r ⋅ ( u b j − l b j ) , j = 1 , 2 , … , m ,  (5) \begin{aligned} & \text { Iguana }^G: \text { Iguana } a_j^G=l b_j+r \cdot\left(u b_j-l b_j\right), j=1,2, \ldots, m \text {, } \end{aligned}\tag{5}  Iguana G: Iguana ajG=lbj+r(ubjlbj),j=1,2,,m(5)

X i p 1 : x i , j P 1 = { x i , j + r ⋅ (  Iguana  j j G − I ⋅ x i , j ) , F Iguana  G < F i , x i , j + r ⋅ ( x i , j −  Iguana  j G ) ,  else,   for  i = ⌊ N 2 ⌋ + 1 , ⌊ N 2 ⌋ + 2 , … , N  and  j = 1 , 2 , … , m .  (6) \begin{aligned} & X_i^{p 1}: x_{i, j}^{P 1}=\left\{\begin{array}{cl} x_{i, j}+r \cdot\left(\text { Iguana } j_j^G-I \cdot x_{i, j}\right), & F_{\text {Iguana }}^G<F_i, \\ x_{i, j}+r \cdot\left(x_{i, j}-\text { Iguana }_j^G\right), & \text { else, } \end{array}\right. \\ & \text { for } i=\left\lfloor\frac{N}{2}\right\rfloor+1,\left\lfloor\frac{N}{2}\right\rfloor+2, \ldots, N \text { and } j=1,2, \ldots, m \text {. } \\ & \end{aligned}\tag{6} Xip1:xi,jP1={xi,j+r( Iguana jjGIxi,j),xi,j+r(xi,j Iguana jG),FIguana G<Fi, else,  for i=2N+1,2N+2,,N and j=1,2,,m(6)

如果更新后的个体更优则更新当前个体,否则保持原状:
X i = { X i P 1 , F i P 1 < F i X i ,  else.  (7) X_i=\left\{\begin{aligned} X_i^{P 1}, & F_i^{P 1}<F_i \\ X_i, & \text { else. } \end{aligned}\right. \tag{7} Xi={XiP1,Xi,FiP1<Fi else. (7)
这里 X i P 1 X_i^{P1} XiP1是更新后的新位置, I g u a n a Iguana Iguana为猎物鬣蜥的位置, r r r为[0,1]之间的随机数。I为随机选择的1或者2。

1.3 阶段二:逃离捕食者(开发阶段)

更新coatis在搜索空间中的位置的过程的第二阶段是基于coatis遇到捕食者和逃离捕食者时的自然行为进行数学建模的。当捕食者攻击一只coatis时,它会从自己的位置逃跑。Coati在这一战略中的举措使其处于接近当前位置的安全位置,这表明了COA在本地搜索中的局部搜索能力。

为了模拟这种行为,基于等式(8)和(9),在每个coatis所在的位置附近生成随机位置。
l b j local  = l b j t , u b j local  = u b j t ,  where  t = 1 , 2 , … , T (8) \begin{gathered} l b_j^{\text {local }}=\frac{l b_j}{t}, u b_j^{\text {local }}=\frac{u b_j}{t}, \text { where } t=1,2, \ldots, T \end{gathered}\tag{8} lbjlocal =tlbj,ubjlocal =tubj, where t=1,2,,T(8)

X i P 2 : x i , j P 2 = x i , j + ( 1 − 2 r ) ⋅ ( l b j local  + r ⋅ ( u b j local  − l b j local  ) ) , i = 1 , 2 , … , N , j = 1 , 2 , … , m (9) \begin{gathered} X_i^{P 2}: x_{i, j}^{P 2}=x_{i, j}+(1-2 r) \cdot\left(l b_j^{\text {local }}+r \cdot\left(u b_j^{\text {local }}-l b_j^{\text {local }}\right)\right), \\ i=1,2, \ldots, N, j=1,2, \ldots, m \end{gathered}\tag{9} XiP2:xi,jP2=xi,j+(12r)(lbjlocal +r(ubjlocal lbjlocal )),i=1,2,,N,j=1,2,,m(9)

其中t 为迭代次数,如果更新后的个体更优则更新当前个体,否则保持原状:
X i = { X i P 2 , F i P 2 < F i X i ,  else  (10) X_i=\left\{\begin{aligned} X_i^{P 2}, & F_i^{P 2}<F_i \\ X_i, & \text { else } \end{aligned}\right.\tag{10} Xi={XiP2,Xi,FiP2<Fi else (10)

算法流程图如下:

在这里插入图片描述

2.实验结果

在这里插入图片描述

3.参考文献

[1]Dehghani Mohammad,Montazeri Zeinab,Trojovská Eva,Trojovský Pavel. Coati Optimization Algorithm: A new bio-inspired metaheuristic algorithm for solving optimization problems[J]. Knowledge-Based Systems,2023,259.

uristic algorithm for solving optimization problems[J]. Knowledge-Based Systems,2023,259.

4. Matlab

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

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

相关文章

Mysql的可重复读解决了幻读问题吗

针对快照读&#xff08;普通 select 语句&#xff09;&#xff0c;是通过 MVCC 方式解决了幻读&#xff0c;因为可重复读隔离级别下&#xff0c;事务执行过程中看到的数据&#xff0c;一直跟这个事务启动时看到的数据是一致的&#xff0c;即使中途有其他事务插入了一条数据&…

开关电源基础02:基本开关电源拓扑(3)-拓扑分析

说在开头&#xff1a;关于薛定谔的波动方程&#xff08;1&#xff09; 当年毛头小子海森堡在哥廷根求学的时候&#xff0c;埃尔文.薛定谔已经是瑞士苏黎世大学的著名教授了。跟其他那些小天才&#xff08;定位精度&#xff1a;25岁5岁&#xff09;相比&#xff0c;薛定谔只能用…

使用 Python 查找本月的最后一天

文章目录 使用 Python 中的日历库查找月份的最后一天使用 Python 中的 DateTime 模块查找该月的最后一天从每个月的第一天减去一天以找到该月的最后一天使用存储在数组中的预加载日期使用 for 循环查找该月的最后一天打印日历年所有月份的最后一天以查找该月的最后一天 使用 Ar…

Kafka生产者原理

消息发送流程介绍 Producer创建时&#xff0c;会创建⼀个sender线程并设置为守护线程。⽣产消息时&#xff0c;内部其实是异步的&#xff1b;⽣产的消息先经过拦截器->序列化器->分区器&#xff0c;然后将消息缓存在缓冲区&#xff08;该缓冲区也是在Producer创建时创建…

关于clash退出后,华硕电脑连不上网了

关于clash退出后&#xff0c;华硕电脑连不上网了 问题记录 问题记录 昨天因为overleaf老断网&#xff0c;然后我就挂了一下clash&#xff08;第一次用&#xff0c;不怎么懂&#xff09;&#xff0c;后来直接关闭退出了。 今天早上突然浏览器的网页&#xff08;微软自带、华硕…

挑战14天学完Python----初识Python语法

往期文章 Java继承与组合 你知道为什么会划分数据类型吗?—JAVA数据类型与变量 10 &#xff1e; 20 && 10 / 0 0等于串联小灯泡?—JAVA运算符 你真的知道怎样用java敲出Hello World吗&#xff1f;—初识JAVA 目录 往期文章前言1.温度转换实例2. 程序格式框架2.1 高…

ATT汇编快速学习

说明 文档来源 https://flint.cs.yale.edu/cs421/papers/x86-asm/asm.html 使用AT&T语法; 原文档是intel语法翻译过来的; 内容 基于32位, x86的硬件环境; 指令仅仅介绍常用, 即还有很大一部分的指令并没有支持; 编译器(汇编器) GAS(GNU assembler: 即gnu组织提供; 使…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 5 Link Analysis

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 5 Link Analysis Terms: words or other strings of characters other than white space. An inverted index is a data structure that makes it easy, given a term, to find (pointers to) a…

【数码】收音机,德生PL380使用教程与注意事项

文章目录 1、主界面功能介绍&#xff08;注意闹钟和自动关机&#xff09;2、电池和电池模式的匹配3、收音机天线与信号&#xff0c;耳机与噪音F、参考资料 1、主界面功能介绍&#xff08;注意闹钟和自动关机&#xff09; 红色的按钮&#xff1a;power 按一下开机&#xff0c;按…

DJYOS开源往事一:djyos爱好者大南山相聚写实

前言&#xff1a;DJYOS开源社区成立于2009年&#xff0c;后因为专注技术方向和垂直产业化等原因&#xff0c;2015年后关闭开源社区。斗转星移&#xff0c;DJYOS开源社区虽然关闭&#xff0c;但是DJYOS开源和精神依然在&#xff0c;转眼DJYOS发布十四年了。记录一下DJYOS开源往事…

Qt Plugin插件开发

一、Qt 插件机制 .1 Qt 插件简介 插件是一种遵循一定规范的应用程序接口编写出来的程序&#xff0c;定位于开发实现应用软件平台不具备的功能的程序。插件与宿主程序之间通过接口联系&#xff0c;就像硬件插卡一样&#xff0c;可以被随时删除&#xff0c;插入和修改&#xff…

2.2.4 Linux安装模式下,磁盘分区的选择(重要)

目录树结构 &#xff08;directory tree&#xff09; 整个Linux系统最重要的地方就是在于目录树架构。 所谓的目录树架构&#xff08;directory tree&#xff09;就是以根目录为主&#xff0c;然后向下呈现分支状的目录结构的一种文件架构。 所以&#xff0c;整个目录树架构最重…

Midjourney-Discord入门+高手指引手册

上一篇我们说了如何注册和订阅&#xff0c;今天我们来讲一讲相关的细节&#xff0c;首先我们来一个概览图&#xff0c;先有个大致的印象。 概览图 生成的四张图片&#xff0c;类似于Demo&#xff0c;从左至右&#xff0c;从上至下&#xff0c;1,2,3,4放大按钮U1&#xff0c;U2…

【旋转编码器如何工作以及如何将其与Arduino一起使用】

在本教程中,我们将学习旋转编码器的工作原理以及如何将其与Arduino一起使用。您可以观看以下视频或阅读下面的书面教程。 1. 概述 旋转编码器是一种位置传感器,用于确定旋转轴的角度位置。它根据旋转运动产生模拟或数字电信号。 有许多不同类型的旋转编码器按输出信号或传感…

三个令人惊艳超有用的 ChatGPT 项目,开源了!

自 3 月初 Open AI 开放 ChatGPT API 以来&#xff0c;GitHub 上诞生的开源项目数量之多&#xff0c;着实多得让我眼花缭乱、应接不暇。 今天&#xff0c;我将着重挑选几个对日常工作、生活、学习帮助较大的 ChatGPT 开源项目&#xff0c;跟大家分享下&#xff0c;希望对你有所…

Illustrator如何使用填充与线条之实例演示?

文章目录 0.引言1.绘制星空小插画2.制作清新小碎花壁纸3.双重描边文字 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对…

labelme标注数据集,并利用paddleseg完成标注数据的准备工作

1、安装labelme 1、创建labelme虚拟环境 先检查python的版本 python -V使用命令 conda create -n labelme python=3.9,创建虚拟环境 2、激活虚拟环境 conda activate labelme3、安装labelme pip install labelme2、labelme的使用 1、打开cmd输入命令 labelme2、进入label…

关于安装Node/Yarn/Electron过程中遇到的问题

目录 1、安装Node2、安装electron很慢3、PowerShell中无法使用yarn命令4、Yarn命令目录bin与其全局安装位置不在同一个文件夹 1、安装Node 【参考文章】Node.js下载安装及环境配置教程 2、安装electron很慢 npm config set electron_mirror https://npm.taobao.org/mirrors/…

Java日志详解

文章目录 1.日志的概述1.1 日志文件1.1.1 调试日志1.1.2 系统日志 1.2 JAVA日志框架1.2.1 为什么要用日志框架1.2.2 日志框架和日志门面 2.JUL2.1 JUL简介2.2 JUL组件介绍2.3 JUL的基本使用2.3.1 日志输出的级别2.3.2 日志的输出方式2.3.3 自定义日志的级别2.3.4 将日志输出到具…

20个最流行的3D打印机切片软件

3D 打印切片机&#xff08;Slicer&#xff09;通过生成 G 代码为你的 3D 打印机准备 3D 模型&#xff0c;G 代码是一种广泛使用的数控 (NC) 编程语言。 3D打印切片软件的选择范围很广。 因此&#xff0c;为了帮助你找到最合适的工具&#xff0c;本文列出了20个顶级 3D 打印切片…