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

目录

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


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.mzph.cn/web/6115.shtml

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

相关文章

【Cpp】类和对象#构造函数 析构函数

标题:【Cpp】类和对象#构造函数 析构函数 水墨不写bug (图片来源于网络) 正文开始: (一)构造函数 构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但…

区块链 | IPFS:Merkle DAG(进阶版)

🦊原文:Merkle DAGs: Structuring Data for the Distributed Web 🦊写在前面:本文属于搬运博客,自己留存学习。 1 Merkle DAG 当我们在计算机上表示图时,必须通过提供节点和边的具体表示来编码我们的数据…

常用SQL命令

应用经常需要处理用户的数据,并将用户的数据保存到指定位置,数据库是常用的数据存储工具,数据库是结构化信息或数据的有序集合,几乎所有的关系数据库都使用 SQL 编程语言来查询、操作和定义数据,进行数据访问控制&…

yudao-cloud微服务系统系统模块+后台管理系统成功运行

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列文章目录 第一章 芋…

C语言之位操作符:<<、>>、、|、^、~,以及原码反码补码和例题详解

目录 前言 一、原码、反码、补码 二、移位操作符 三、位操作符&#xff1a;&、|、^、~ 四、经典例题分析&#xff1a; 总结 前言 本文将详细介绍C语言中左移操作符<<&#xff0c;右移操作符>>&#xff0c;按位与&&#xff0c;按位或|&#xff0c;按位异或^…

【Spring AI】09. ETL 管道

文章目录 ETL PipelineAPI 概述入门指南ETL 接口和实现DocumentReaderJsonReaderTextReaderPagePdfDocumentReaderParagraphPdfDocumentReaderTikaDocumentReader DocumentTransformerTextSplitterTokenTextSplitterContentFormatTransformerKeywordMetadataEnricherSummaryMet…

【通信中间件】Fdbus HelloWorld实例

Fdbus实例教程 Fdbus简介 Fdbus 全称 Fast Distributed Bus&#xff08;高速分布式总线&#xff09;&#xff0c;提供IPCRPC功能。适用于多种OS&#xff1a; LinuxQNXAnroidOSWindow Fdbus本质是Socket&#xff0c;IPC基于Unix domain socket&#xff0c;RPC基于TCP。使用G…

MathType打开的窗口太多 MathType说打开窗口太多无法复制怎么解决

在数学文档编辑中&#xff0c;MathType作为一款常用的数学公式编辑工具&#xff0c;使用过程中&#xff0c;我们常常会遇到一些问题&#xff0c;比如MathType打开的窗口过多导致软件运行缓慢甚至崩溃&#xff0c;以及在复制过程中出现“打开窗口太多&#xff0c;无法复制”的提…

241 基于matlab的Dijkstra算法进行路径规划

基于matlab的Dijkstra算法进行路径规划。可根据实际情况输入障碍物和起止点坐标信息&#xff1b; 输出避碰最短路径&#xff1b; 能够利用切线图算法对障碍物区域进行环境建模&#xff0c;设置障碍物的位置和区域。利用Dijkstra算法进行路径规划。程序已调通&#xff0c;可直接…

细说SVPWM原理及软件实现原理,关联PWM实现

细说SVPWM原理及软件实现原理&#xff0c;关联PWM实现 文章目录 细说SVPWM原理及软件实现原理&#xff0c;关联PWM实现1. 前言2. 基础控制原理回顾2.1 FOC 原理回顾2.2 细说 SVPWM2.2.1 矢量扇区计算2.2.2 矢量作用时间计算 2.2.3 如何理解 U4 U6 2/3Udc?2.2.4 如何理解 U4m…

文件传送协议

壹、文件传输协议FTP 一、FTP简介 文件传送协议FTP曾是互联网上使用最广泛的协议&#xff1b; 在互联网发展的早期阶段&#xff0c;用FTP传送文件约占整个互联网的通信量的三分之一&#xff1b;知道1995年&#xff0c;www的通信量才首次超过FTP。 FTP实现的是通过网络实现异…

GaussDB数据库事务管理

一、引言 事务管理是数据库系统中至关重要的一部分&#xff0c;它确保了数据库的一致性和可靠性。在GaussDB数据库中&#xff0c;事务管理不仅遵循传统的ACID特性&#xff0c;还提供了一些高级功能。本文将深入探讨GaussDB数据库事务管理的各个方面。 二、事务的基本概念 2.1…

机器学习:深入解析SVM的核心概念【四、软间隔与正则化】

软间隔与正则化 问题一&#xff1a;优化目标函数是如何得到的&#xff1f;得到的过程是怎样的&#xff1f;问题二&#xff1a;拉格朗日乘子法计算详细过程问题三&#xff1a;KKT条件求解过程问题四&#xff1a;结构风险最小化&#xff08;SRM&#xff09;的原理 在前面的讨论中…

Rust Turbofish 的由来

0x01 什么是 Turbofish 我们运行如下 Rust Snippet&#xff1a; fn main() {let numbers: Vec<i32> vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];let even_numbers numbers.into_iter().filter(|n| n % 2 0).collect();println!("{:?}", even_numbers); }不出意…

Android 设置头像 - 相册拍照

Android开发在个人信息管理中&#xff0c;如果设置头像&#xff0c;一般都提供了从相册选择和拍照两种方式。下午将针对设置用户头像相册和拍照两种方式的具体实现进行详细说明。 在实际实现过程中需要使用到权限管理&#xff0c;新版本的Android需要动态申请权限&#xff0c;权…

React Context

Context https://juejin.cn/post/7244838033454727227?searchId202404012120436CD549D66BBD6C542177 context 提供了一个无需为每层组件手动添加 props, 就能在组件树间进行数据传递的方法 React 中数据通过 props 属性自上而下(由父及子)进行传递&#xff0c;但此种用法对…

Matlab|二阶锥松弛在配电网最优潮流计算中的应用

目录 一、主要内容 二、部分代码 三、程序代码 四、下载链接 一、主要内容 最优潮流计算是电网规划、优化运行的重要基础。首先建立了配电网全天有功损耗最小化的最优潮流计算模型&#xff1b;其次结合辐射型配电网潮流特点建立支路潮流约束&#xff0c;并考虑配电网中的可…

macOS sonoma 14.4.1编译JDK 12

macOS sonoma 14.4.1编译JDK 12 环境参考文档开始简述问题心路历程着手解决最终解决(前面有点啰嗦了&#xff0c;可以直接看这里) 记录一次靠自己看代码解决问题的经历(总之就是非常开心)。 首先&#xff0c;先diss一下bing&#xff0c;我差一点就放弃了。 环境 macOS sonom…

[力扣]——125.验证回文串

class Solution {public static boolean isValidChar(char ch){if((ch > a && ch < z) ||(ch > 0 && ch < 9)){return true;}return false;}public boolean isPalindrome(String s) {// 将大小写统一起来s s.toLowerCase();int left 0, right s…

vulnhub靶场之FunBox-2

一.环境搭建 1.靶场描述 Boot2Root ! This can be a real life scenario if rockies becomes admins. Easy going in round about 15 mins. Bit more, if you are find and stuck in the rabbit-hole first. This VM is created/tested with Virtualbox. Maybe it works with…