基于寄生-捕食算法的函数寻优算法
文章目录
- 一、理论基础
- 1、寄生-捕食算法
- (1)初始化
- (2)筑巢阶段(鸟窝)
- (3)寄生阶段(乌鸦-布谷鸟)
- (4)捕食阶段(乌鸦-猫)
- 2、PPA算法伪代码
- 二、仿真实验与结果分析
- 三、参考文献
一、理论基础
1、寄生-捕食算法
文献[1]提出了一种新的元启发式优化方法—寄生-捕食算法(Parasitism-Predation Algorithm, PPA),该算法在乌鸦-布谷鸟-猫系统模型中模拟捕食者(猫)、寄生虫(布谷鸟)和宿主(乌鸦)之间的相互作用,以克服大数据的低收敛性和维数诅咒的问题。
(1)初始化
通过获得nnn个最佳鸟巢,评估所有新的解决方案以解决ddd维优化问题,如下所示:Xinew=Ximin+r1(Ximax−Ximin)(1)X_i^{new}=X_i^{\min}+r_1(X_i^{\max}-X_i^{\min})\tag{1}Xinew=Ximin+r1(Ximax−Ximin)(1)其中,XinewX_i^{new}Xinew是初始解(i=1,2,…,ni=1,2,\ldots,ni=1,2,…,n),XiminX_i^{\min}Ximin是下限,XimaxX_i^{\max}Ximax是上限,r1r_1r1是从0到1之间的均匀分布中提取的随机变量。
(2)筑巢阶段(鸟窝)
初始化后,优化算法将进入筑巢阶段、寄生阶段和捕食阶段。一开始,随着时间的推移,猫减少了乌鸦的数量。通过模拟乌鸦飞行的两种状态来评估筑巢阶段。第一种状态是通过生成随机候选乌鸦,为乌鸦iii生成一个新位置,如下所示:Xit+1=Xit+F(Xr1−Xit)∀i∈ncrow(2)X_i^{t+1}=X_i^t+F(X_{r_1}-X_i^t)\quad\forall i\in n_{crow}\tag{2}Xit+1=Xit+F(Xr1−Xit)∀i∈ncrow(2)其中,r1r_1r1是一个随机指数,FFF是一个Levy飞行步长,它是基于∝\propto∝稳定分布计算的,具有使用不同步长跨越大尺度距离的能力。Levy(σ,μ)Levy(\sigma,\mu)Levy(σ,μ)分布的简单版本密度是:f(q)=γ2π1(q−μ)3/2exp(−σ2(q−μ))0<μ<q<∞(3)f(q)=\sqrt{\frac{\gamma}{2\pi}}\frac{1}{(q-\mu)^{3/2}}\exp\left(-\frac{\sigma}{2(q-\mu)}\right)\quad 0<\mu<q<\infty\tag{3}f(q)=2πγ(q−μ)3/21exp(−2(q−μ)σ)0<μ<q<∞(3)使用蒙特卡洛算法生成具有与Levy飞行相同行为的随机样本LiL_iLi,用于模拟∝\propto∝稳定分布:Li∼step⊕Levy(∝)∼0.01u∣y∣1/α(4)L_i\sim step\oplus Levy(\propto)\sim0.01\frac{u}{|y|^{1/\alpha}}\tag{4}Li∼step⊕Levy(∝)∼0.01∣y∣1/αu(4)其中,stepstepstep是与问题规模相关的缩放系数,u=N(0,σu2)u=N(0,\sigma_u^2)u=N(0,σu2)和y=N(0,σy2)y=N(0,\sigma_y^2)y=N(0,σy2)分别是满足σu=[Γ(1+α)sin(πα/2)Γ((1+α)/2)α2(α−1)/2]1/α,σy=1\sigma_u=\left[\frac{\Gamma(1+\alpha)\sin(\pi\alpha/2)}{\Gamma((1+\alpha)/2)\alpha2^{(\alpha-1)/2}}\right]^{1/\alpha},\,\,\sigma_y=1σu=[Γ((1+α)/2)α2(α−1)/2Γ(1+α)sin(πα/2)]1/α,σy=1的正态分布,⊕\oplus⊕表示矢量乘法。
在筑巢阶段,通过Levy飞行过程,利用当前最佳巢群更新解,发现鸟窝。Levy飞行已经在许多物种中被观察到,这是一种随机游走。Levy飞行的步长由重尾概率分布控制,通常称为Levy分布。Levy飞行在搜索空间的探索上优于均匀随机分布,因此用它代替均匀随机运动来模拟陷入局部最优、过早收敛的规避行为,提高整体搜索空间的探索能力。第二步是通过重新初始化被违反的维度,从之前的状态修改被违反的维度,如下所示:Xi,outnew=Xi,outmin+(Xi,outmax−Xi,outmin)rand[0,1]∀out∈violateddimension(5)X_{i,out}^{new}=X_{i,out}^{\min}+\left(X_{i,out}^{\max}-X_{i,out}^{\min}\right)rand[0,1]\quad\forall\,\,out\in violateddimension\tag{5}Xi,outnew=Xi,outmin+(Xi,outmax−Xi,outmin)rand[0,1]∀out∈violateddimension(5)重新初始化“呈现总体的随机变化,以获得增强的探索和增强搜索空间的多样性。这一阶段被设计为纯粹的探索阶段,在第一种状态下使用Levy飞行,提供在整个搜索空间中散布乌鸦的高能力。此外,超出边界外的维度都要受到约束。
(3)寄生阶段(乌鸦-布谷鸟)
一开始,当捕食效率较低时,猫会将布谷鸟赶尽杀绝;捕食效率高时,导致布谷鸟灭绝。布谷鸟的效率被假定为弱/中等,而猫的效率则降低了。在此阶段,将部分乌鸦卵(宿主)替换为布谷鸟卵,布谷鸟卵与乌鸦卵相似,被发现的可能性较小。此外,根据适应度值选择被寄生的巢,巢越好,被寄生的几率越大。构建新的巢穴来取代一些巢穴,并以概率pap_apa发现一小部分较差的巢穴。布谷鸟的新巢可以通过下式得到:Xi,newcuckoo=Xi,oldcuckoo+SG⋅k(6)X_{i,new}^{cuckoo}=X_{i,old}^{cuckoo}+S_G\cdot k\tag{6}Xi,newcuckoo=Xi,oldcuckoo+SG⋅k(6)SG=(Xr2−Xr3)rand[0,1](7)S_G=(X_{r_2}-X_{r_3})rand[0,1]\tag{7}SG=(Xr2−Xr3)rand[0,1](7)其中,Xi,oldcuckooX_{i,old}^{cuckoo}Xi,oldcuckoo是通过轮盘赌选择的个体;SGS_GSG是均匀高斯分布步长;kkk定义为二进制矩阵,计算如下:k=rand[0,1]>pa(8)k=rand[0,1]>p_a\tag{8}k=rand[0,1]>pa(8)其中,pap_apa是由t/2Tt/2Tt/2T或g/2Gg/2Gg/2G给出的递增因子,其中TTT或GGG是最大迭代次数,ttt或ggg是当前迭代次数。采用二元矩阵kkk尽可能保留老布谷鸟的相当部分,保留探索搜索空间。寄生阶段开始时,矩阵kkk被1填充。然后,增加其价值以改善种群。
由于布谷鸟分泌的驱虫剂,寄生鸟巢被捕食的可能性要小得多。在鸟巢内,有布谷鸟雏鸟的鸟会有更少的乌鸦。根据捕食的压力有多大,这种过程产生的平衡影响范围基本上是从寄生到筑巢。
(4)捕食阶段(乌鸦-猫)
一开始,强大的捕食效率导致猫和乌鸦的爆炸性增长减少,无法为布谷鸟提供足够的生存资源,因此布谷鸟灭绝。这个阶段基于猫的追踪模式,可以是乌鸦-猫阶段。不需要执行搜索模式,因为猫知道空的搜索空间并且不需要搜索。在这个阶段,布谷鸟雏鸟会释放出排斥猫的排斥性化合物。猫追踪巢穴时,臭味分泌物很少,而不是被布谷鸟占据,并随机选择非寄生巢穴作为追踪模式。一旦猫开始追踪猎物,它们就会根据自己的速度在各个维度上移动。猫的强捕食效率导致猫的爆炸性增长,乌鸦和杜鹃的低增长。该阶段包括三个步骤:
步骤1:更新各个维度的速度如下:vk,d=vk,d+r.c.(xbest,d−xk,d),d=1,2,⋯,M(9)v_{k,d}=v_{k,d}+r.c.(x_{best,d}-x_{k,d}),\quad d=1,2,\cdots,M\tag{9}vk,d=vk,d+r.c.(xbest,d−xk,d),d=1,2,⋯,M(9)其中,vk,dv_{k,d}vk,d表示catkcat_kcatk第ddd维上的速度,xbest,dx_{best,d}xbest,d是具有最佳适应值的猫的位置,xk,dx_{k,d}xk,d是catkcat_kcatk的位置,ccc是常数,rrr是[0,1][0,1][0,1]范围内的随机值。
步骤2:检查更新速度是否超过最大速度范围。在新速度大于最大速度的情况下,它被设置为等于极限(速度极限被修改为从1线性下降到0.25)
步骤3:更新catkcat_kcatk的位置如下:xk,d=xk,d+vk,d(10)x_{k,d}=x_{k,d}+v_{k,d}\tag{10}xk,d=xk,d+vk,d(10)
2、PPA算法伪代码
PPA算法的伪代码如图1所示。
图1 PPA算法伪代码
二、仿真实验与结果分析
对PPA算法单独实验,以常用23个测试函数中的F3、F4(单峰函数/30维)、F9、F10(多峰函数/30维)、F20、F21(固定维度多峰函数/6维、4维)为例,实验设置种群规模为30,最大迭代次数为1000,每种算法独立运算30次,结果显示如下:
函数:F3
PPA:best: 128.2791, worst: 2096.902, mean: 564.3674, std: 369.7015
函数:F4
PPA:best: 25.5105, worst: 51.9664, mean: 37.5791, std: 6.8245
函数:F9
PPA:best: 36.8724, worst: 121.3954, mean: 70.894, std: 22.0422
函数:F10
PPA:best: 9.6145, worst: 16.0049, mean: 12.8844, std: 1.6332
函数:F20
PPA:best: -3.322, worst: -3.1164, mean: -3.2602, std: 0.074985
函数:F21
PPA:best: -10.1532, worst: -2.2426, mean: -6.8288, std: 3.0824
实验结果表明:PPA算法在求解优化问题上具有良好的性能。
三、参考文献
[1] Al-Attar A. Mohamed, S.A. Hassan, A.M. Hemeida, et al. Parasitism – Predation algorithm (PPA): A novel approach for feature selection[J]. Ain Shams Engineering Journal, 2020, 11: 293-308.
基于寄生-捕食算法的函数寻优算法相关推荐
- 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法
<MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...
- 基于蚁群算法的函数寻优算法
文章目录 一.理论基础 二.案例背景 1.问题描述 2.解题思路及步骤 三.MATLAB程序实现 1.清空环境变量 2.初始化参数 3.构建解空间和目标函数 4.迭代寻优 5.结果显示 6.绘图 四. ...
- 基于果蝇优化算法的函数寻优算法
文章目录 一.理论基础 二.算法步骤 1.启发 2.方向和距离 3.气味浓度判断值 4.适应度评估 5.寻找最优个体 6.飞行 7.迭代优化 三.案例背景 问题描述 四.MATLAB程序实现 1.清空 ...
- 基于沙猫群优化算法的函数寻优算法
文章目录 一.理论基础 1.沙猫群优化算法 (1)初始化种群 (2)搜索猎物(探索) (3)攻击猎物(开发) (4)探索和开发 2.SCSO算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基 ...
- 基于改进正弦余弦算法的函数寻优算法
文章目录 一.理论基础 1.基本正弦余弦算法 2.改进正弦余弦算法 (1)基于双曲正弦调节因子和动态余弦波权重的位置更新 (2)基于拉普拉斯分布和高斯分布的动态混合变异 二.算法流程图 三.仿真实验与 ...
- 基于蜉蝣优化算法的函数寻优算法
文章目录 一.理论基础 1.蜉蝣优化算法 (1)雄性蜉蝣的更新 (2)雌性蜉蝣的更新 (3)蜉蝣的交配过程 2.MA算法伪代码 二.仿真实验与结果分析 1.函数测试与数值分析 2.WSN三维覆盖优化 ...
- 基于金豺优化算法的函数寻优算法
文章目录 一.理论基础 1.金豺优化算法 (1)搜索空间公式 (2)探索阶段或搜索猎物 (3)开发阶段或围捕和突袭猎物 (4)从探索转向开发 2.GJO伪代码 二.仿真实验与结果分析 三.参考文献 一 ...
- 基于蜂鸟优化算法的函数寻优算法
文章目录 一.理论基础 1.自搜索阶段 2.引导搜索阶段 3.HOA伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 蜂鸟优化算法(Hummingbirds optimization algor ...
- 基于藤壶交配优化算法的函数寻优算法
文章目录 一.理论基础 1.藤壶交配优化算法 1.1 哈迪-温伯格(Hardy-Weinberg)法则 1.2 BMO 1.2.1 初始化 1.2.2 选择过程 1.2.3 繁殖 2.BMO算法伪代码 ...
最新文章
- 正道的光!这有个用TensorFlow做的小黄图过滤器
- 关于SAP的预留问题
- PHP Parse error: parse error, unexpected T_OBJECT_OPERATOR
- 信息学奥赛一本通 1046:判断一个数能否同时被3和5整除 | OpenJudge NOI 1.4 08
- Silverlight 4版本升级到4.0.60531.0
- 数据应用apply练习
- c语言字符串注入命令,C语言基础之输入输出、常量定义、随机数、动态链接库的注入、数据类型介绍、goto语句的使用...
- 馈线互调测试仪仿真软件,CYME电力工程仿真分析软件
- 我的Windows初始安装软件(技术型办公用电脑)
- python爬取今日头条专栏_[python3]今日头条图片爬取
- SM4算法大文件加密与字符串加密
- 编译Kodi(XBMC 14) 和XBMC-13.2-Gotham版本的记录
- 晒晒我的“无法操作”的“发财计划”
- 《系统架构设计》-01-架构和架构师概述
- 优雅地寻找网站源码(一)
- mysql:mysql数据库下载及安装(详细)
- 算法设计与分析(十四)
- 计算机应用基础中课程表怎么制作,浅谈《计算机应用基础》课程中Word表格的制作课程教学...
- 使用jstack(jstack是用于调试线程间的关系,解决阻塞,锁等问题)定位由死循环引起的cpu负载飙高或者死锁
- 《把时间当作朋友》第1章读后感(一)
热门文章
- BUUCTF-Crypto-凯撒密码爆破+中文电码+md5+猪圈密码WP
- Numpy || np.array()函数用法指南
- 大数据风控如何做到提升风险防范?
- 计算机网络物理连接和逻辑,[判断题] 计算机网络拓扑定义了网络资源在逻辑上或物理上的连接方式。...
- heidisql ssh mysql_heidisql使用小技巧
- PDM系统的实施说明书
- 为什么星巴克的员工都不太热情?
- java 分班_java培优分班考试试题
- 《Adobe After Effects CS6完全剖析》——定时与重定时
- 0306-二维地图开发-地图可视化:简单符号渲染