【智能算法】冠豪猪优化算法(CPO)原理及实现

1.背景

2024年,M Abdel-Basset等人受到冠豪猪防御行为启发,提出了冠豪猪优化算法(Crested Porcupine Optimizer, CPO)。

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

2.算法原理

2.1算法思想

CPO使用四种不同的保护机制:视觉、声音、气味和物理攻击。第一和第二防御策略(视觉和声音)反映了CPO的探索行为,而第三和第四防御策略(气味和物理攻击)反映了CPO的开发行为。

在这里插入图片描述

2.2算法过程

CPO提出一种新的方法:循环种群减少技术(CPR),以保持种群的多样性,同时加快收敛速度。这一策略模拟了并非所有CPs都激活防御机制,而只有那些受到威胁的CPs才会激活防御机制。在优化过程中,该方法从种群中取出一些CPs,以加快收敛速度,并将它们重新回到种群中,以提高多样性,避免陷入局部极小值:
N = N m i n + ( N ′ − N m i n ) × ( 1 − ( t % T m a x T T m a x T ) ) (1) N=N_{min}+(N^{'}-N_{min})\times\left(1-\left(\frac{t \% \frac{T_{max}}{T}}{\frac{T_{max}}{T}}\right)\right)\tag{1} N=Nmin+(NNmin)×(1(TTmaxt%TTmax))(1)
其中,T为决定循环次数的变量,t为当前函数求值,Tmax为函数求值的最大次数,Nmin是新生成种群中最小的个体数。

探索阶段

根据CP的防御行为,当捕食者距离较远时,CP有两种防御策略,即视觉策略和声音策略。这些策略是指对不同区域进行调查,致力于全局探索:
x i t + 1 → = x i t → + τ 1 × ∣ 2 × τ 2 × x C P t → − y i t → ∣ (2) \overrightarrow{x_i^{t+1}}=\overrightarrow{x_i^t}+\tau_1\times\left|2\times\tau_2\times\overrightarrow{x_{CP}^t}-\overrightarrow{y_i^t}\right|\tag{2} xit+1 =xit +τ1× 2×τ2×xCPt yit (2)
其中,xcp为最佳CP位置,yt为当前CP与随机CP之间生成的向量:
y i t → = x i t → + x r t → 2 (3) \overrightarrow{y_i^t} = \frac{\overrightarrow{x_i^t} + \overrightarrow{x_r^t}}{2}\tag{3} yit =2xit +xrt (3)
CP使用声音方法制造噪音并威胁捕食者。当捕食者靠近时,CP的声音变得更大:
x i t + 1 → = ( 1 − U 1 → ) × x i t → + U 1 → × ( y → + τ 3 × ( x r 1 t → − x r 2 t → ) ) (4) \overrightarrow{x_i^{t+1}}=\left(1-\overrightarrow{U_1}\right)\times\overrightarrow{x_i^t}+\overrightarrow{U_1}\times\left(\overrightarrow{y}+\tau_3\times\left(\overrightarrow{x_{r1}^t}-\overrightarrow{x_{r2}^t}\right)\right)\tag{4} xit+1 =(1U1 )×xit +U1 ×(y +τ3×(xr1t xr2t ))(4)

开发阶段

根据CP的防御行为,当捕食者靠近时,CP有两种防御策略,即气味攻击策略和物理攻击策略。这些策略是指对有潜力的区域进行开发,致力于(局部)开发搜索。气味攻击阶段,CP会分泌一种恶臭,在周围区域传播,以防止捕食者接近它:
x i t + 1 ‾ = ( 1 − U 1 → ) × x i t → + U 1 → × ( x r 1 ′ → + S i ′ × ( x r 2 ′ → − x r 3 ′ → ) − τ 3 × δ → × γ t × S i ′ ) (5) \begin{aligned} \overline{{x_{i}^{t+1}}} =\left(1-\overrightarrow{U_{1}}\right)\times\overrightarrow{x_{i}^{t}}+\overrightarrow{U_{1}} \times\left(\overrightarrow{x_{r_{1}}^{\prime}}+S_{i}^{\prime}\times\left(\overrightarrow{x_{r_{2}}^{\prime}}-\overrightarrow{x_{r_{3}}^{\prime}}\right)-\tau_{3}\times\overrightarrow{\delta} \times\gamma_{t}\times S_{i}^{\prime}\right) \end{aligned}\tag{5} xit+1=(1U1 )×xit +U1 ×(xr1 +Si×(xr2 xr3 )τ3×δ ×γt×Si)(5)
其中,δ为控制搜索方向的参数,γt为防御因子,St为气味扩散因子:
δ → = { + 1 , i f r a n d → ≤ 0.5 − 1 , E l s e γ t = 2 × r a n d × ( 1 − t t m a x ) t t m a x S t i = exp ⁡ ( f ( x t i ) ∑ k = 1 N f ( x t k ) + ϵ ) (6) \left.\begin{aligned}&\overrightarrow{\delta}=\left\{\begin{array}{c}+1, if \overrightarrow{rand}\leq0.5\\-1, Else\end{array}\right.\\&\gamma_{t}=2 \times rand\times\left(1-\frac{t}{t_{max}}\right)^{\frac{t}{tmax}}\\&S_{t}^{i}=\exp\left(\frac{f\left(x_{t}^{i}\right)}{\sum_{k=1}^{N}f\left(x_{t}^{k}\right)+\epsilon}\right)\end{aligned}\right.\tag{6} δ ={+1,ifrand 0.51,Elseγt=2×rand×(1tmaxt)tmaxtSti=exp(k=1Nf(xtk)+ϵf(xti))(6)
物理攻击阶段,当捕食者离它很近时,CP会用短而厚的羽毛攻击它:
x i t + 1 → = x C P t → + ( α ( 1 − τ 4 ) + τ 4 ) × ( δ × x C P t → − x i t → ) − τ 5 × δ × γ t × F i t → (7) \overrightarrow{x_i^{t+1}}=\overrightarrow{x_{CP}^t}+(\alpha(1-\tau_4)+\tau_4)\times\left(\delta\times\overrightarrow{x_{CP}^t}-\overrightarrow{x_i^t}\right)-\tau_5\times\delta \times\gamma_t\times\overrightarrow{F_i^t}\tag{7} xit+1 =xCPt +(α(1τ4)+τ4)×(δ×xCPt xit )τ5×δ×γt×Fit (7)
其中,α为收敛速度因子。

伪代码

在这里插入图片描述

3.结果展示

使用测试框架,测试CPO性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2017-F20

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

4.参考文献

[1] Abdel-Basset M, Mohamed R, Abouhawwash M. Crested Porcupine Optimizer: A new nature-inspired metaheuristic[J]. Knowledge-Based Systems, 2024, 284: 111257.

5.代码获取

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

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

相关文章

Linux实训-用户和组的管理

实训1:用户的管理 创建一个新用户user1,设置其主目录为/home/user1。查看/etc/passwd文件的最后一行,看看是如何记录的。查看文件/etc/shadow文件的最后一行,看看如何记录的。给用户user1设置密码。再次查看文件/etc/shadow文件的…

暗区突围端游海外版|暗区突围怎么玩 新手游玩攻略分享

游戏中健康系统与其它射击游戏有很大区别,根据受伤部位、伤势的不同,会有不同的表现。除了头部之外,其它部位如果损坏后继续受到伤害,那么伤害将会分摊到身体其它部位。在暗区内或者暗区外都可以对角色进行治疗,角色不…

【算法入门教育赛1D】环形密码 - 字符串 | C++题解与代码

题目链接:https://www.starrycoding.com/problem/161 题目描述 小 e e e有一个宝箱,这个宝箱有一个长度为 n n n的密码,但是这个密码校验器是一个环形,意思是只要密码从任意一位开始读(读到最后一位回到第一位继续&a…

【Canvas与艺术】自制朝阳电脑桌面(1920*1080)

【关键点】 线性渐变色绘制天空&#xff0c;径向渐变色绘制太阳&#xff0c;半透明色制作光芒。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/&g…

Docker 安装部署 postgres

Docker 安装部署 postgres 1、拉取 postgres 镜像文件 [rootiZbp19a67kznq0h0rgosuxZ ~]# docker pull postgres:latest latest: Pulling from library/postgres b0a0cf830b12: Pull complete dda3d8fbd5ed: Pull complete 283a477db7bb: Pull complete 91d2729fa4d5: Pul…

2023上半年软件设计师上午题——防火墙

防火墙知识点总结 网络级防火墙层次低&#xff0c;但是效率高&#xff0c;因为其使用包过滤和状态监测手段&#xff0c;一般只检验网络包外在 (起始地址、状态) 属性是否异常 , 若异常则过滤掉 , 不与内网通信,因此对应用和用户是透明的。但是这样的问题是&#xff0c;如果遇到…

Redis---------实现查询缓存业务

目录 数据库与缓存之间的工作业务逻辑&#xff1a; 接下来看查询缓存代码实现&#xff0c;主要是捋清楚业务逻辑&#xff0c;代码实现是死的&#xff1a; Controller: Service: P37作业实现&#xff1a;总体逻辑跟上面的业务逻辑差不多 Controller&#xff1a; Service&#…

由于找不到vcruntime140_1.dll无法继续执行此代码的8个解决方法

vcruntime140_1.dll 是一个动态链接库&#xff08;Dynamic Link Library&#xff09;文件&#xff0c;它是Microsoft Visual C Redistributable包的一部分&#xff0c;特别与Visual Studio 2015及之后版本的C运行时环境关联紧密。此文件包含了执行基于Visual C开发的应用程序所…

如何快速的追加文章的内容(在不知道内容的情况下)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 1、打开工具&#xff0c;切换到文章模块下&#xff0c;快捷键&#xff1a;Ctrl1 2、新建一个文章做演示&#xff0c;001 3、添加一个内容&#xff0c;就随…

订票系统|基于Springboot+vue的火车票订票系统(源码+数据库+文档)

订票系统目录 基于Springbootvue的火车票订票系统 一、前言 二、系统设计 三、系统功能设计 1会员信息管理 2 车次信息管理 3订票订单管理 4留言板管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…

RoNID:通过生成可靠标签与聚类友好型表征来实现新意图的发现

论文地址&#xff1a;https://arxiv.org/abs/2404.08977 原文地址&#xff1a;intents-are-not-going-away-ronid-is-a-new-intent-discovery-framework 2024 年 4 月 26 日 Robust New Intent Discovery&#xff08;RoNID&#xff09;框架致力于在开放域场景中识别已知意图并合…

韩国云主机安装AMP环境要求科普

AMP环境&#xff0c;即Apache、MySQL和PHP的组合&#xff0c;是许多网站开发者和运维人员常用的环境配置。在韩国云主机上安装AMP环境&#xff0c;需要满足一定的要求以确保顺利运行和高效性能。下面我们将对韩国云主机安装AMP环境的要求进行科普。 首先&#xff0c;韩国云主机…

Vue Canvas图片水印的绘制 图片加水印

效果 定义画布 <canvas width"800" height"800" ref"cn" ></canvas>绘制水印 draw(){const img new Image()img.srchttps://img1.baidu.com/it/u3035183739,1826404114&fm253&fmtauto&app138&fJPEGimg.onload(()…

java版数据结构:深入理解栈和队列:数据结构与应用(vector,stack,queue)

目录 前言 动态数组类&#xff08;vector&#xff09; 特点&#xff1a; 应用&#xff1a; 栈&#xff08;Stack&#xff09; 栈的基础概念&#xff1a; 栈的常用方法&#xff1a; 模拟栈操作&#xff1a; 队列&#xff08;Queue&#xff09; 队列的基础概念 队列的常…

20240502给NanoPi的NEO core开发板编译移远的4G模块的上网程序quectel-CM

20240502给NanoPi的NEO core开发板编译移远的4G模块的上网程序quectel-CM 2024/5/2 16:29 1、默认编译为AMD64/INTEL的x64架构的可执行文件&#xff1a; rootrootrootroot-ThinkBook-16-G5-IRH:~$ rootrootrootroot-ThinkBook-16-G5-IRH:~$ unzip Quectel_QConnectManager_Lin…

如何配置和使用Apollo的component里的plugin

关于如何使用Apollo的Component里的plugin&#xff0c;在Apollo的文档里只有如果和开发的说明却没有找到一个清楚完整说明怎么把plugin跑起来的说明&#xff0c;例如我想把lidar_detection_filter按我们的需求对目标过滤算法作修改然后编译完后&#xff0c;执行 cyber_launch …

2024年【浙江省安全员-C证】考试及浙江省安全员-C证找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【浙江省安全员-C证】考试及浙江省安全员-C证找解析&#xff0c;包含浙江省安全员-C证考试答案和解析及浙江省安全员-C证找解析练习。安全生产模拟考试一点通结合国家浙江省安全员-C证考试最新大纲及浙江省安全…

12 Junit单元测试、反射、注解

单元测试 介绍 Junit单元测试是做什么的&#xff1f; 就是针对最小的功能单元(方法)&#xff0c;编写测试代码对其进行正确性测试。 Junit单元测试框架 可以用来对方法进行测试&#xff0c;它是由Junit公司开源出来的 Junit单元测试的优点是什么&#xff1f; 可以灵活的…

智能消费记账|基于SSM+vue的大学生智能消费记账系统(源码+数据库+文档)

智能消费记账目录 基于SSMvue的大学生智能消费记账系统 一、前言 二、系统设计 三、系统功能设计 1 用户列表 2 预算信息管理 3 预算类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1…

JavaScript百炼成仙自学笔记——3

外门小比 JavaScript运算符 var a 10; var b 2; var s1 a b; var s2 a - b; var s3 a * b; var s4 a / b; var a 10; var b a; var console.log(b); 同理还有a&#xff0c;就是先对a本身进行运算&#xff0c;然后再用a的值 var a 1; var b; var sum (b a--a) a--…