【群智能算法改进】一种改进的浣熊优化算法 改进长鼻浣熊优化算法 改进后的ICOA[1]算法【Matlab代码#41】

news2024/11/26 12:49:45

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 原始COA算法
      • 1.1 开发阶段
      • 1.2 探索阶段
    • 2. 改进后的ICOA算法
      • 2.1 Circle映射种群初始化
      • 2.2 Levy飞行策略
      • 2.3 透镜成像折射反向学习策略
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 原始COA算法

长鼻浣熊优化算法(Cоati Optimization Algorithm,COA)是一种启发式优化算法,灵感来源于长鼻浣熊(Coati)的行为策略。长鼻浣熊优化算法基于长鼻浣熊在觅食过程中的特性和行为模式。长鼻浣熊是一种树栖动物,具有长而灵活的鼻子,用于觅食和捕食。它们通过嗅觉感知周围环境,利用敏锐的视觉和协调的运动能力来寻找食物。

1.1 开发阶段

这个阶段模拟的是浣熊对鬣蜥的攻击策略,对搜索空间中的种群更新的第一个阶段进行建模。在这个策略中,一群浣熊会爬上树,对着一只鬣蜥,并吓唬它,其他几个浣熊会在树下等待鬣蜥掉下来。当鬣蜥掉下来之后,浣熊就会攻击并猎杀它。这个策略使得COA在搜索空间中移动到不同的位置,说明COA在问题解决空间中的全局搜索能力。

在COA的设计中,种群中的最佳位置被假定为鬣蜥的位置。此外,还假设有一般的浣熊能爬上树,另一半在地上等待鬣蜥掉下来。因此,浣熊在树上的位置可以用以下公式描述:
在这里插入图片描述
鬣蜥落地后,将其放置在搜索空间中的任意位置。基于这种随机位置,地面上的浣熊可以在搜索空间中移动,用下列公式来描述:
在这里插入图片描述
对于每个浣熊计算的新位置,如果它改善了目标函数的值,那么就会被接受,否则,浣熊将保持原先的位置,此过程用以下公式来表示。这个可以被视为贪婪法则。
在这里插入图片描述
这里 x i P 1 x_{i}^{P1} xiP1是计算第 i i i个浣熊的新位置, x i , j P 1 x_{i,j}^{P1} xi,jP1是它的第 j j j维, F i P 1 F_{i}^{P1} FiP1是它的目标函数值, r r r [ 0 , 1 ] [0,1] [0,1]区间内的随机实数。 I g u a n a Iguana Iguana代表鬣蜥在搜索空间中的位置,这实际上是指种群中最佳个体的位置; I g u a n a j Iguana_{j} Iguanaj是它的第 j j j维, j j j是一个整数,从集合{1,2}中随机选择, I g u a n a G Iguana^{G} IguanaG是在地面上的位置,它是随机生成的。 I g u a n a j G Iguana_{j}^{G} IguanajG蠢晰是它的第 j j j维, F I g u a n a G F_{Iguana}^{G} FIguanaG是它的目标函数值。

1.2 探索阶段

在第二阶段即探索阶段的过程中,位置更新模拟的是浣熊在遇到捕食者和逃避捕食者的行为。当食肉动物攻击浣熊时,浣熊就会从它的位置上逃走。浣熊在该策略中的移动使其处于接近其当前位置的安全位置,这代表这COA的局部开发能力。为了模拟这种行为,COA在每个长鼻浣熊个体附近生成一个随机位置,公式如下所示:
在这里插入图片描述
与开发阶段中类似,同样使用贪婪选择来决定是替换还是保留原先的位置。

2. 改进后的ICOA算法

2.1 Circle映射种群初始化

Circle混沌映射在混沌理论研究、密码学、随机数生成和通信系统中具有一定的应用。它展示了非线性系统中的复杂动力学行为,并且可以用来生成具有高度随机性的序列。
Circle的公式如下:
在这里插入图片描述

2.2 Levy飞行策略

在COA浣熊开发阶段的位置更新公式中,会根据目前的个体最优值来更新自己的位置,也容易陷入局部最优,此时可以使用莱维飞行策略进行位置更新使得这部分个体去到更广的搜索空间:
在这里插入图片描述

2.3 透镜成像折射反向学习策略

透镜成像折射反向学习策略的思想来自于凸透镜成像的原理。通过基于当前坐标生成一个反向位置来扩展搜索范围,如图1所示。
在这里插入图片描述

图1 透镜成像折射反向学习原理图

在二维坐标中,x轴的搜索范围为(a, b), y轴表示一个凸透镜。假设物体A在x轴上的投影为x,高度为h,通过透镜成像,另一侧的图像为A*, A在x轴上的投影为x,高度为h*。通过以上分析,我们可以得到如下公式:
( a + b ) / 2 − x x ∗ − ( a + b ) / 2 = h h ∗ (1) \frac{(a+b)/2-x}{x^{*}-(a+b)/2 }=\frac{h}{h^{*}} \tag1 x(a+b)/2(a+b)/2x=hh(1)
对公式(1)进行转换,即可得到反向解x*的表达式为:
x ∗ = a + b 2 + a + b 2 k − x k (2) x^{*} =\frac{a+b}{2}+\frac{a+b}{2k}-\frac{x}{k} \tag2 x=2a+b+2ka+bkx(2)
其中, k = h / h ∗ k=h/h^{*} k=h/h a a a b b b可以视为某维度的上下限。本文中的 k k k是一个与迭代次数相关的动态自适应值。

3. 部分代码展示

Fun_name='F1'; % number of test functions: 'F1' to 'F23'

SearchAgents=30;                      % number of Coati (population members) 
Max_iterations=500;                  % maximum number of iteration
[lowerbound,upperbound,dimension,fitness]=fun_info(Fun_name); % Object function information
[Best_score_COA,Best_pos_COA,COA_curve]=COA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);  % Calculating the solution of the given problem using COA 
[Best_score_GWO,Best_pos_GWO,GWO_curve]=GWO(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness); % 灰狼优化算法
[Best_score_WOA,Best_pos_WOA,WOA_curve]=WOA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness); % 鲸鱼优化算法
[Best_score_SSA,Best_pos_SSA,SSA_curve]=SSA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness); % 麻雀搜索算法
[Best_score_ICOA,Best_pos_ICOA,ICOA_curve]=ICOA(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);
%%
figure('Position',[454   445   694   297]);
subplot(1,2,1);
func_plot(Fun_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Fun_name,'( x_1 , x_2 )'])

subplot(1,2,2);
% 灰狼优化算法
semilogy(GWO_curve,'Color','b','LineWidth',2)
hold on
% 鲸鱼优化算法
semilogy(WOA_curve,'Color','g','LineWidth',2)
hold on
% 麻雀搜索算法
semilogy(SSA_curve,'Color','m','LineWidth',2)
hold on
semilogy(COA_curve,'Color','k','LineWidth',2)
hold on
semilogy(ICOA_curve,'Color','r','LineWidth',2)
title(Fun_name)
xlabel('Iteration');
ylabel('Best fitness function');
axis tight
legend('GWO','WOA','SSA','COA','ICOA')

4. 仿真结果展示

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

5. 资源获取

可以获取完整代码资源。

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

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

相关文章

05-DataFrame的数据清洗

数据清洗 import pandas as pd df pd.read_excel("学生成绩.xlsx") df删除重复列 df.drop_duplicates(inplaceTrue) df删除数学成绩 df.drop([数学成绩],axis1, inplaceTrue) df重命名列名字 df.rename(columns{"生活":"自然"},inplaceTrue…

什么是Redis的BigKey,如何处理BigKey?

一、什么是BigKey BigKey通常以Key的大小和Key中成员的数量来综合判定,例如: Key本身的数据量过大:一个String类型的Key,它的值为5 MB。Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10,000个。Ke…

Linux之多线程(下)——线程控制

文章目录 前言一、POSIX线程库1.概念2.pthread线程库是应用层的原生线程库3.错误的检查 二、线程控制1.创建线程——pthread_createpthread_create函数例子创建一个新线程主线程创建一批新线程 2.获取线程ID——pthread_self3.线程等待——pthread_join4.线程终止——return、p…

SSH服务器详解

文章目录 文字接口连接服务器:SSH服务器连接加密技术简介启动SSH服务SSH客户端连接程序SSH:直接登录远程主机的指令使用案例 服务器公钥记录文件:~/.ssh/known_hosts报错解决 模拟FTP的文件传输方式:SFTP使用案例 文件异地直接复制…

Python主要应用的10大领域你是否感兴趣

原文: Python主要应用的10大领域你是否感兴趣 Python 是一门快速发展的编程语言,其在各个领域的应用也在不断增加。根据 TIOBE 编程语言排行榜,Python 在 2021 年排名第 3,仅次于 Java 和 C。根据 Stack Overflow 的开发者调查报…

圆的基本性质

如何确定一个圆? 两个点: 无法确定一个圆,因为只要到这两个点距离相等的点都可以作为圆心(在两个点连线的垂直平分线上),因此可以确定无数个圆 三个点(且这三个点不能在同一个直线上&#xf…

【MySQL数据库】事务

事务 一、事务1.1事务的概念 二 、事务的ACID特点2.1原子性2.2一致性(Consistency)2.3隔离性2.4持久性 三、脏读、不可重复读、幻读、丢失更新3.1脏读3.2不可重复读3.3幻读3.4丢失更新 四、事务的隔离级别 一、事务 1.1事务的概念 事务是一种机制、一个…

二叉堆(大顶堆、小顶堆)学习(使用java手写)

二叉堆 我们现在有一个需求,用来存放整数,要求需要提供三个接口 添加元素获取最大值删除最大值 我们可以用我们熟悉的数据结构去解决这些问题 获取最大值删除最大值添加元素描述动态数组/双向链表O(n)O(n)O(1)O(n) 复杂度太高了(有序&#x…

redis -- 持久化存储方案

前言 一般情况下,我们存储到redis的数据,是存储到内存中,再存储到硬盘中(这是基于reb方案来实现)因此一旦强制关机,就直接over了。 硬存和内存的区别和联系: 我们用文本编辑器,里面写入一段话,未保存&am…

检测PPG信号的心跳

基于大佬的代码。 PPG信号靠心率 (HR) 进行估计,主要取决于收缩压峰值检测的准确性。与 ECG 不同,PPG 信号形式简单和特定点 少。低振幅 PPG 信号更容易受到噪声污染和其他不良影响的影响,例如baseline drift和wandering。这是由于信号强度与…

从零开始理解Linux中断架构(3)--Armv8体系架构

首先让我们带着问题进入到armv8架构的学习中。linux中断代码分为两部分entry.S @arch\arm64\kernel\entry.S汇编部分和C代码后续处理。汇编代码中处理最为低级的部分,设置硬件中断向量表,保持当前上下文,切换中断堆栈等任务,这是就如我们嵌入式系统看到那样。 @arch\arm64…

Vue3中div自由拖拽宽度和高度。

Vue3中我们会遇到自由拖拽宽度和高度的页面需求,查看很多方法都无法满足当前需求。下面是我们Vue3版本的代码,非常简单主要构想说粗发拖拽方法,把所需要的div的高宽进行拖拽位置进行监听来加减自身div的px值。直接复制粘贴就可以实现效果。根…

20230615整理(字符设备驱动的内部实现)

1.1 字符设备: 以字节流的形式进行访问,而且只能顺序访问的设备叫做字符设备(比如键盘、鼠标) (块设备:有固定访问大小,可以不按顺序访问的设备,比如U盘、硬盘) 针对字符设备编写的驱动叫做字符设备驱动 1.2 当设备驱…

AI实战营:通用视觉框架OpenMMLab底层视觉与MMEditing

目录 图像超分辨率 Super Resolution ​​​ 深度学习时代的超分辨率算法 卷积网络模型SRCNN FSRCNN SRResNet Super-Resolution CNN, SRCNN, 2014 Fast SRCNN 2016 SRResNet 2016 对抗生成网络介绍Ganerative Adversarial Network 基于GAN的模型SRGAN与ESRGAN S…

vite+vue3+ts 报错和解决办法汇总

1. import path from path 时 ts 报错:模块 ""path"" 只能在使用 "allowSyntheticDefaultImports" 标志时进行默认导入。 在 tsconfig.node.json 文件的 compilerOptions 添加配置 "allowSyntheticDefaultImports": true …

【Python】Django 基础知识 一

系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录前言安装启动项目查看所有子命令主要文件setting 配置项URL 请求路径path 转换器HttpResponse 输出中文乱码 前言 安装 django-admin startproject xxx项目名启动项目 python manag…

ffmpeg 3.4 windows编译安装

准备工作: msys2安装 官网 MSYS2 下载完成后一直下一步即可,安装完成后windows搜索 MSYS2 启动MSYS2 MINGW64 打开窗口后运行以下命令 下载一些编译需要的东西 #修改源 sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirr…

拔剑四顾心茫然,绿源直呼“行路难”

老牌两轮电动车品牌绿源上市之旅“多歧路”。 6月7日,北京市市场监督管理局公布北京市电动自行车产品质量监督抽查结果,绿源两款电动自行车因存在问题被点名,充电器和蓄电池、整车质量、控制系统等不符合标准。 而就在一周多以前&#xff0c…

指针(四)

文章内容&#xff1a; 1. 数组参数、指针参数 2. 函数指针 3. 函数指针数组 4. 指向函数指针数组的指针 5. 回调函数 文章内容 1. 数组参数、指针参数 地址需要指针接收&#xff0c;指针的地址需要二级指针接受,以此类推...... 1.1 一维数组传参 #include <stdio.…

【思考】技术人该如何准备晋升答辩?

文章目录 前言一、争取获得答辩机会二、准备答辩素材三、根据素材&#xff0c;编写答辩 PPT四、晋升答辩素材 PPT 的一些建议五、要写答辩稿并加以练习六、调整答辩心态总结 前言 今天跟大家聊下关于技术人该如何准备晋升答辩的话题。 每到年中或者年底&#xff0c;都会有一波…