【智能算法】人工原生动物优化算法(APO)原理及实现

目录

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


1.背景

2024年,X Wang受到自然界原生动物启发,提出了人工原生动物优化算法( Artificial Protozoa Optimizer, APO)。

在这里插入图片描述

在这里插入图片描述

2.算法原理

2.1算法思想

APO通过模拟原生动物的觅食、休眠和繁殖行为来模拟原生动物的生存机制。

在这里插入图片描述

2.2算法过程

觅食行为

对于觅食行为,作者考虑了原生动物的内部和外部因素。内部因素被认为是原生动物的觅食特征,而外部因素被认为是环境影响,如物种碰撞和竞争行为。
X i n e w = X i + f ⋅ ( X j − X i + 1 n p ⋅ ∑ k = 1 n p w a ⋅ ( X k − − X k + ) ) ⊙ M f X i = [ x i 1 , x i 2 , … , x i d i m ] , X i = s o r t ( X i ) (1) \begin{aligned}&X_{i}^{new}=X_{i}+f\cdot(X_{j}-X_{i}+\frac{1}{np}\cdot\sum_{k=1}^{np}w_{a}\cdot(X_{k-}-X_{k+}))\odot M_{f}\\&X_{i}=[x_{i}^{1},x_{i}^{2},\ldots,x_{i}^{dim}],\quad X_{i}=sort(X_{i})\end{aligned}\tag{1} Xinew=Xi+f(XjXi+np1k=1npwa(XkXk+))MfXi=[xi1,xi2,,xidim],Xi=sort(Xi)(1)
f = r a n d ⋅ ( 1 + cos ⁡ ( i t e r i t e r m a x ⋅ π ) ) n p m a x = ⌊ p s − 1 2 ⌋ w a = e − ∣ f ( X k − ) f ( X k + ) + e p s ∣ M f [ d i ] = { 1 , if d i is in r a n d p e r m ( d i m , ⌈ d i m ⋅ i p s ⌉ ) 0 , otherwise (2) f=rand\cdot(1+\cos(\frac{iter}{iter_{max}}\cdot\pi))\\ np_{max}=\lfloor\frac{ps-1}{2}\rfloor \\ w_{a}=e^{-\left|\frac{f(X_{k-})}{f(X_{k+})+eps}\right|}\\ M_f[di]=\begin{cases}1,&\text{if}di\text{is in}\:randperm(dim,\lceil dim\cdot\frac{i}\\{ps}\rceil)\\0,&\text{otherwise}\end{cases}\tag{2} f=rand(1+cos(itermaxiterπ))npmax=2ps1wa=e f(Xk+)+epsf(Xk) Mf[di]={1,0,ifdiis inrandperm(dim,dimips⌉)otherwise(2)
其中𝑋𝑛𝑒𝑤和𝑋分别表示𝑖th原生动物的更新位置和原始位置。𝑋𝑗是随机选择的𝑗th原生动物。𝑋𝑘−表示在𝑘th配对邻居中随机选择一个排序指数小于0.05的原生动物。𝑓表示觅食因子,𝑛𝑝表示外部因素之间的邻居对个数,𝑛𝑝𝑚𝑎为𝑛𝑝的最大值。𝑤𝑎是自养模式下的权重因子,⊙表示Hadamard积。
异养模式在黑暗中,原生动物可以通过从周围环境中吸收有机物来获取营养。假设𝑋𝑛𝑒𝑎𝑟是附近一个食物丰富的地方,原生动物就会向那里移动。
X i n e w = X i + f ⋅ ( X n e a r − X i + 1 n p ⋅ ∑ k = 1 n p w h ⋅ ( X i − k − X i + k ) ) ⊙ M f X n e a r = ( 1 ± R a n d ⋅ ( 1 − i t e r i t e r m a x ) ) ⊙ X i w h = e − ∣ f ( X i − k ) f ( X i + k ) + e p s ∣ R a n d = [ r a n d 1 , r a n d 2 , … , r a n d d i m ] (3) \begin{aligned} &X_{i}^{new}=X_{i}+f\cdot(X_{near}-X_{i}+\frac{1}{np}\cdot\sum_{k=1}^{np}w_{h}\cdot(X_{i-k}-X_{i+k}))\odot M_{f} \\ &X_{near}=(1\pm Rand\cdot(1-\frac{iter}{iter_{max}}))\odot X_{i} \\ &w_{h}=e^{-\left|\frac{f(X_{i-k})}{f(X_{i+k})+eps}\right|} \\ &Rand=[rand_{1},rand_{2},\ldots,rand_{dim}] \end{aligned}\tag{3} Xinew=Xi+f(XnearXi+np1k=1npwh(XikXi+k))MfXnear=(1±Rand(1itermaxiter))Xiwh=e f(Xi+k)+epsf(Xik) Rand=[rand1,rand2,,randdim](3)
其中𝑋𝑛𝑒𝑎𝑟是附近的位置,“±”表示𝑋𝑛𝑒𝑎𝑟可能与𝑖th原生动物在不同的方向。Xi-k表示从𝑘th配对邻居中选出的i-k原生动物。
在这里插入图片描述

休眠行为

在环境压力下,原生动物可能会采取休眠行为作为一种生存策略来忍受不利的条件。当原生动物处于休眠状态时,它会被新产生的原生动物所取代,以保持恒定的种群数量。
X i n e w = X m i n + R a n d ⊙ ( X m a x − X m i n ) X m i n = [ l b 1 , l b 2 , … , l b d i m ] , X m a x = [ u b 1 , u b 2 , … , u b d i m ] (4) \begin{aligned}&X_{i}^{new}=X_{min}+Rand\odot(X_{max}-X_{min})\\&X_{min}=[lb_{1},lb_{2},\ldots,lb_{dim}],\quad X_{max}=[ub_{1},ub_{2},\ldots,ub_{dim}]\end{aligned}\tag{4} Xinew=Xmin+Rand(XmaxXmin)Xmin=[lb1,lb2,,lbdim],Xmax=[ub1,ub2,,ubdim](4)

繁殖行为

在适当的年龄和健康状况下,原生动物进行无性繁殖,这被称为二元裂变。理论上,这种繁殖会导致原生动物分裂成两个完全相同的子代。我们通过产生一个重复的原生动物并考虑扰动来模拟这种行为。
X i n e w = X i ± r a n d ⋅ ( X m i n + R a n d ⊙ ( X m a x − X m i n ) ) ⊙ M r M r [ d i ] = { 1 , i f d i i s i n r a n d p e r m ( d i m , ⌈ d i m ⋅ r a n d ⌉ ) 0 , o t h e r w i s e (5) \begin{aligned}&X_{i}^{new}=X_{i}\pm rand\cdot(X_{min}+Rand\odot(X_{max}-X_{min}))\odot M_{r}\\&M_{r}[di]=\begin{cases}1,&\mathrm{~if~}di\mathrm{~is~in~}randperm(dim,\lceil dim\cdot rand\rceil)\\0,&\mathrm{~otherwise}\end{cases}\end{aligned}\tag{5} Xinew=Xi±rand(Xmin+Rand(XmaxXmin))MrMr[di]={1,0, if di is in randperm(dim,dimrand⌉) otherwise(5)
APO涉及的参数:
p f = p f m a x ⋅ r a n d p a h = 1 2 ⋅ ( 1 + cos ⁡ ( i t e r i t e r m a x ⋅ π ) ) p d r = 1 2 ⋅ ( 1 + cos ⁡ ( ( 1 − i p s ) ⋅ π ) ) (6) \begin{aligned} &pf=pf_{max}\cdot rand \\ &p_{ah}={\frac{1}{2}}\cdot(1+\cos({\frac{iter}{iter_{max}}}\cdot\pi)) \\ &p_{dr}={\frac{1}{2}}\cdot(1+\cos((1-{\frac{i}{ps}})\cdot\pi)) \end{aligned}\tag{6} pf=pfmaxrandpah=21(1+cos(itermaxiterπ))pdr=21(1+cos((1psi)π))(6)
其中pf为原生动物种群中休眠和繁殖的比例分数,pah表示自养和异养行为的概率,pdr表示休眠和繁殖的概率。

在这里插入图片描述

流程图

在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

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

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

CEC2017-F20

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

4.参考文献

[1] Wang X, Snášel V, Mirjalili S, et al. Artificial Protozoa Optimizer (APO): A novel bio-inspired metaheuristic algorithm for engineering optimization[J]. Knowledge-Based Systems, 2024: 111737.

5.获取代码

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

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

相关文章

压缩归档库-Snappy介绍

1.简介 Snappy 是一个 C 编写的压缩和解压缩库,由 Google 开发。它专为速度而设计,而不是最大压缩率或与其他压缩库的兼容性。 Snappy 通常用于需要快速压缩和解压缩的场景。 Snappy具有以下属性: 快速:压缩速度达到250 MB/秒及…

数智化快速开发平台

助力企业IT规划标准化,实现企业IT生态化 目前市场上有很多面向企业各种业务场景的产品,这些产品给企业管理带来便利性的同时,也带来了一系列问题,例如: 不同系统的后台管理功能基本一致,却需要重复建设&a…

linux调试

文章目录 1. 使用打印来调试1.1 重定向1.2 标准预定义宏1.3 日志代码 2. 内核异常2.1 内核打印2.1.1 打印级别2.1.2 跟踪异常2.1.3 动态打印2.1.4 RAM console 2.2 OOPS2.2.1 有源代码的情况2.2.2 没有源代码的情况 3 查看日志4 工具调试 1. 使用打印来调试 1.1 重定向 2>…

[Collection与数据结构] Map与Set(一):二叉搜索树与Map,Set的使用

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

python socket通讯 学习记录

python socket 1. 初级实现2. 添加header3. 中级实现(引用pickle库)4. 高级实现(相互发送信息)5. 一点尝试5. 1个server对应2个client5.2个server对应1个client 名称版本python3.11 本文涉及到socket的server与client通讯从简单到…

LeetCode 257. 二叉树的所有路径

LeetCode 257. 二叉树的所有路径 1、题目 题目链接:257. 二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root…

java.net.SocketInputStream.socketRead0 卡死导致 tomcat 线程池打满的问题

0 TL;DR; 问题与原因:某些特定条件下 java.net.SocketInputStream.socketRead0 方法会卡死,导致运行线程一直被占用导致泄露采用的方案:使用监控线程异步监控卡死事件,如果发生直接关闭网络连接释放链接以及对应的线程 1. 问题 …

nacos下载安装和nacos启动报错

nacos简介: Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您…

YOLOv9中模块总结补充|RepNCSPELAN4详图

专栏地址:目前售价售价69.9,改进点70 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 1. RepNCSPELAN4详图 RepNCSPELAN4是YOLOv9中的特征提取-融合模块,类似前几…

【数据结构-二叉搜索树的增删查改】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

[虚拟机+单机]梦幻契约H5修复版_附GM工具

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 视频演示 [虚拟机单…

vue2人力资源项目2登录接口、跳转主页

用户名和密码 解决跨域问题 1.在vue.config.js里配置 proxy: {// 如果请求地址里有api,就转成这个地址/api: {target: https://heimahr.itheima.net/}}// before: require(./mock/mock-server.js)}, axios封装 utils/request.js import axios from axios// creat…

Linux-信号执行

1. 信号什么时候被处理 当进程从内核态返回到用户态的时候,进行信号的检测和处理 什么内核态,什么又是用户态呢? 当进程在CPU上运行时,内核态:允许进程访问操作系统的代码和数据,用户态:进程只…

户口本翻译件怎么处理?

户口本是中国公民的重要证件,由中华人民共和国公安部精心制作,不仅是国内身份的凭证,更是走向世界的一张关键名片。对于想出国留学 、追求移民生活或是追寻异国风情的旅行者来说,户口本翻译件都是不可或缺的一部分。那么&#xf…

Duplicate entry ‘asdfg‘ for key ‘clazz.name‘

Mybatis:java.sql.SQLIntegrityConstraintViolationException:Duplicate entry ‘asdfg’ for key ‘clazz.name’ 违反了数据库的唯一约束条件,即插入数据的时候具有唯一约束(被unique修饰)的列值重复了 在修改的过程中发生错误,…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought(CoT) prompting 的方法通过结合 few-show prompt 的思路,让 LLM 能够挑战更具…

蓝桥青少一月 STEMA-Python 测评第一题

第一题(难度系数 2,18 个计分点) (注.input()输入函数的括号中不允许添加任何信息) 编程实现: 给定一个正整数 N,输出 N 除以 3 的商。 输入描述:输入一个正整数 N 输出描述:输出 N 除以 3 的商…

2024年抖音小店最新起店玩法,比你报的上万课程都有用!

大家好,我是电商糖果 刚开店的朋友,一定会遇到出单难,店铺没有流量的问题。 自己在网上找一堆教程,或者花高价去报课程。 有的朋友比较幸运,遇到了好的领路人,但是大部分朋友还是没有那么幸运的。 糖果…

API低代码平台介绍2-最基本的数据查询功能

最基本的数据查询功能 本篇文章我们将介绍如何使用ADI平台定义一个基本的数据查询接口。由于是介绍平台具体功能的第一篇文章,里面会涉及比较多的概念介绍,了解了这些概念有助于您阅读后续的文章。 ADI平台的首页面如下: 1.菜单介绍 1.1 O…

【协同过滤】ItemCF协同过滤方法简介

一、ItemCF协同过滤方法 ItemCF 是基于物品相似度进⾏推荐的协同过滤算法。 通过计算共现矩阵中物品列向量的相似度得到物品之间的相似矩阵, 再找到⽤户的历史正反馈物品的相似物品进⾏进⼀步排序和推荐,Item CF的具体步骤如下: 构建共现矩…