当前位置: 首页 > news >正文

25年新算法!基于猛禽的优化算法(BPBO):一种元启发式优化算法,附完整免费MATLAB代码

1 简介

优化是跨越多个工程和科学学科的关键挑战。本文介绍了一种独特的基于猛禽的优化(BPBO)算法,该算法受到捕食性鸟类精明狩猎技术的影响。该方法利用个体和群体狩猎技术,同时选择性地针对较弱的鸟类,以有效地平衡探索和开发策略。通过结合动态迁移策略来获取更合适的猎物,该方法增强了种群多样性,并降低了过早收敛的风险。鉴于持续的动态变化,这些策略的集成使BPBO算法能够有效地解决广泛的问题。

2 基于猛禽的优化(BPBO)算法

本文旨在人工智能及其应用领域提出一种创新且高效的元启发式算法。该算法基于一种新颖的建模和搜索方法,其灵感来源于猛禽的协同狩猎和捕食行为。在简要概述了几种主要猛禽的框架及提出该方法的动机后,我们组建了一个研究小组,具体如下所述。

2.1 最佳猛禽

某些鸟类被称为食鸟者,例如食雀鹰,以其他鸟类为食。鼠类捕食者则专门捕食啮齿动物等小型动物。某些捕食爬行动物的个体本身就是爬行动物,例如蛇鹫。某些物种,如秃鹫,被归类为食腐动物。当然,这是一种广义的分类,其食性可能因季节性迁徙和栖息地变化而有所不同。在鸟类学中,“猛禽”一词指代任何具有锐利爪子、卓越视力以及强大弯曲喙的鸟类,其喙能够撕裂动物肉体[11]。这些鸟类的体型可以通过多种因素确定,包括全身长度、翅膀宽度、“双翼展开时翼尖之间的距离”或其体重。

2.2 提出的算法

本文介绍了一种受猛禽多样化捕食策略启发的新算法。我们提出,捕食性鸟类既会独立狩猎,也会协同行动,同时承认这些猎手也可能成为其他捕食者的猎物。此外,可能会出现捕食鸟未能捕获目标的情况,此时它会继续搜索和探索。BPBO算法直接受到猛禽捕食习性的启发,将其适应方法巧妙地融入优化过程中。该过程分为四个主要阶段,每个阶段反映了自然界中的特定捕食行为:

  • 自我适应(独立狩猎):如鹰和隼等猛禽依赖速度和敏捷性独立捕猎。
    算法的这一部分包括个体探索和增强。当每个代理根据其发现的最佳解决方案调整位置时,它模拟了鸟类优化其觅食路径的过程。

  • 协同狩猎(集体搜索与攻击):某些物种,如鸢和鹰,通过同步攻击进行协作捕猎。
    BPBO算法通过基于群体的修改实现这一点,其中搜索代理根据群体的中心趋势增强其运动,从而增加搜索多样性。

  • 竞争阶段(捕食弱小猎物):在自然界中,更强壮的鸟类偶尔会捕食较弱或较小的鸟类以获取食物。
    BPBO算法通过允许优质解决方案替代劣质解决方案来体现这一原则,从而增强探索并避免陷入局部最优。

  • 持续搜索(规避局部最优):当猎物缺失时,鸟类会迁移到其他地点。
    BPBO算法采用重新定位机制,使搜索代理能够移动到有潜力的区域,从而维持全局搜索的持续性。

这种猛禽捕食技术与算法功能的系统性关联提高了BPBO在开发和探索之间的平衡,从而增强了优化效果。BPBO算法的每个阶段将根据表2中描述的细节进行启发、开发和模拟,具体如下:

表2 猛禽启发式数值优化方法概述

完整尺寸表格 >

步骤1. 生成BPBO启发式算法的种群。
与之前的元启发式算法类似,该方法从问题域(或捕猎区域)中的NNN个初始种群开始,最佳解决方案(GbestG_{best}Gbest或猎物)作为猎物XpreyX_{prey}Xprey,其余N−1N-1N1个作为鸟类。它们开始搜索。对于i=1:Ni = 1:Ni=1:N,初始种群的形成如下:

Xi=Xmin+rand(1,D)×(Xmax−Xmin)(1)X_i = X_{min} + rand(1, D) \times (X_{max} - X_{min}) \tag{1}Xi=Xmin+rand(1,D)×(XmaxXmin)(1)

其中,决策变量的最大和最小范围分别由XmaxX_{max}XmaxXminX_{min}Xmin定义。rand(1,D)rand(1, D)rand(1,D)是一个在0和1之间均匀选择的随机变量向量,DDD是特定问题的维度。

步骤2. 定位猛禽。
在初始种群生成后,探索阶段在指定区域内展开。如同猛禽不断巡视环境以寻找理想食物,种群中的每个成员都勤奋地追求其目标,记为P1P_1P1。这一阶段标志着搜索过程的开始,个体在问题区域内导航以追逐各自的目标。在此过程中,步骤3至5可能如下进行:

步骤3. 个体狩猎。
在这一阶段,捕食鸟XiX_iXi全力缩小其与猎物XpreyX_{prey}Xprey(代表算法当前最优解)之间的距离。XiX_iXi的每一步行动都是精心计算的,旨在优化其接近猎物的路径。它不断调整位置,力求最小化与全局最优的距离。通过整合当前最佳解决方案的洞察,XiX_iXi在搜索空间中导航,谨慎选择路径以实现最高效率和效果。因此,猎手或种群的动机可表示为:

Xiprex=Xi+rand(1,D)×(Xprey−Ki1×Xi)(2)X^{prex}_i = X_i + \text{rand}(1,D) \times (X_{prey} - K_{i1} \times X_i) \tag{2}Xiprex=Xi+rand(1,D)×(XpreyKi1×Xi)(2)

其中,rand(1,D)\text{rand}(1,D)rand(1,D)表示维度DDD上0到1范围内的随机数。随机生成的参数Ki1K_{i1}Ki1取值为111222,决定猎手是从前方还是后方攻击目标。若为222,猎手从前方攻击猎物;若为111,则从后方攻击。

步骤4. 群体狩猎。
在自然环境中,猛禽常进行个体与群体结合的捕猎活动,群体协作支持个体成员追逐猎物。该方法假设整个种群参与此阶段,共同以平均值XmeanX_{mean}Xmean为中心位置。种群通过协同努力或个体与目标对齐,高效快速地捕猎XpreyX_{prey}Xprey。群体协作捕猎的行为可表示为:

Xiprex=Xmean+rand(1,D)×(XPrey−Ki2×Xmean)(3)X^{prex}_i = X_{mean} + \text{rand}(1,D) \times (X_{Prey} - K_{i2} \times X_{mean}) \tag{3}Xiprex=Xmean+rand(1,D)×(XPreyKi2×Xmean)(3)

rand(1,D)\text{rand}(1,D)rand(1,D)为0到1范围内的随机数。参数Ki2K_{i2}Ki2随机取111222,决定捕食者从前方还是后方攻击猎物。若为111,猎手从后方协作攻击;若为222,则从前方攻击。

步骤5. 弱小猛禽(如鹰和隼)。
猛禽偶尔选择弱小猎物以便捕获,体现算法利用有利条件及陷入局部最优的能力。这种自适应技术确保算法高效、敏捷且响应迅速,持续提升性能。此处,弱小猎手鸟等同于群体中最弱成员XworstX_{worst}Xworst,捕食鸟XiX_iXi执行捕猎操作,与个体狩猎阶段不同:

Xiprex=Xi+rand(1,D)×(Xi−Ki3×Xworst)(4)X^{prex}_i = X_i + \text{rand}(1,D) \times (X_i - K_{i3} \times X_{worst}) \tag{4}Xiprex=Xi+rand(1,D)×(XiKi3×Xworst)(4)

参数Ki3K_{i3}Ki3111222,决定猎手从前方还是后方攻击弱小猎手。若为222,表示从前方攻击最弱猎手;若为111,则从后方攻击。

步骤6. 持续捕猎猛禽。
有时猛禽在迭代_iter_中无法找到合适猎物,此时它将迁移到其他位置继续捕猎,如下式所示:

Xiprex=Xi+randi×(Xmin+rand×(Xmax−Xmin))(5)X^{prex}_i = X_i + \text{rand}_i \times (X_{min} + \text{rand} \times (X_{max} - X_{min})) \tag{5}Xiprex=Xi+randi×(Xmin+rand×(XmaxXmin))(5)

其中randi\text{rand}_irandi为0到1的随机数。需注意,上述各阶段均为随机发生。

最后,算法1展示了所提BPBO启发算法针对个体成员的通用优化过程伪代码示例,图2展示了BPBO算法的优化机制。
在这里插入图片描述

图1 该图以自然形态展示了BPBO算法的初始设计灵感:(a) 个体狩猎示例,白头海雕试图捕捉鱼类(猎物);(b) 群体狩猎示例,军舰鸟协作捕鱼;© 弱小猛禽实例,鹰追逐军舰鸟。
在这里插入图片描述

3.完整代码

function [Best_fitness, Xbest, Curve] = BPBO(pop, maxIter, lb, ub, dim, fobj)%% Problem DefinitionCostFunction = fobj;%%%%%%%%%%%%%GeartrainVarMin = lb;       % Unknown Variables Lower Bound[25 25 0.0625 0.0625];  VarMax =  ub;       % Unknown Variables Upper Bound[150 240 1.25 1.25]; VarSize = [1 dim]; % Decision Variables Matrix Size%% BPBO ParametersMaxIt = maxIter;    % Maximum Number of IterationsPi=0.7;nPop =pop;           % Population Size%% Initialization % Empty Structure for Individualsempty_individual.Position = [];empty_individual.Cost = [];% Initialize Population Arraypop = repmat(empty_individual, nPop, 1);% Initialize Best SolutionPrey.Cost = inf;% Initialize Population Membersfor i=1:nPoppop(i).Position = unifrnd(VarMin, VarMax, VarSize);pop(i).Cost = CostFunction(pop(i).Position);if pop(i).Cost < Prey.CostPrey = pop(i);endBestCost1(i)=Prey.Cost;end% Initialize Best Cost RecordBestCosts = zeros(MaxIt,1);%% BPBO Main Loop%  it=nPop;it=0;for it=1:MaxIt% while it<=(MaxIt-nPop) % Calculate Population MeanMean = 0;for i=1:nPopMean = Mean + pop(i).Position;endMean = Mean/nPop;% Select PreyPrey = pop(1);for i=2:nPopif pop(i).Cost < Prey.CostPrey = pop(i);endendfor i=1:nPop% Create Empty Solutionnewsol = empty_individual; if rand<Piif rand<randM00=round(1+rand);newsol.Position = pop(i).Position ...+ rand(VarSize).*(Prey.Position- M00*pop(i).Position);elseif rand<randM01=round(1+rand);newsol.Position = Mean ...+rand(VarSize).*(Prey.Position -M01*Mean); else        M02=round(1+rand);newsol.Position = pop(i).Position ...+rand(VarSize).*(pop(i).Position- M02*pop(nPop).Position); endelsenewsol.Position =pop(i).Position+rand*( unifrnd(VarMin, VarMax, VarSize));   end% Evaluation newsol.Position = max(newsol.Position, VarMin);newsol.Position = min(newsol.Position, VarMax);newsol.Cost = CostFunction(newsol.Position);if newsol.Cost<pop(i).Costpop(i) = newsol;if pop(i).Cost < Prey.CostPrey = pop(i);endend%           it=it+1; BestCost1(it)=Prey.Cost;end% Sort Swarm[uuu, SortOrder]=sort([pop.Cost]);pop = pop(SortOrder);% Store Record for Current IterationCurve(it) =pop(1).Cost;% Iteration Information% disp(['Iteration ' num2str(it) ': Best Cost = ' num2str( Curve(it))]);endBest_fitness = Prey.Cost;Xbest = Prey.Position;
end

Ghasemi, M., Akbari, M.A., Zare, M. et al. Birds of prey-based optimization (BPBO): a metaheuristic algorithm for optimization. Evol. Intel. 18, 88 (2025). https://doi.org/10.1007/s12065-025-01052-8

http://www.lryc.cn/news/604982.html

相关文章:

  • 《数学模型》——最大流与最小费用流问题
  • Mediapipe 的某些模型,网络下载不来可以去gitee找找看
  • 双塔模型 + 自监督学习:解决长尾物品表征难题
  • Helm在Kubernetes中的应用部署指南与案例解析
  • FragmentManager 返回栈与 Activity 运行栈的关系(当按下Back键时屏幕会如何变化?)
  • 基于SpringBoot+MyBatis+MySQL+VUE实现的便利店信息管理系统(附源码+数据库+毕业论文+远程部署)
  • 如何不让android studio自动换行
  • AI服务器中,EEPROM有哪些部件使用,需要存储哪些信息?
  • NLU 语义解析评测实践:基于函数调用的 ACC、ROUGE 与 BLEU 综合指标
  • 《SAM:Segment Anything》论文精读笔记
  • 《CLIP改进工作串讲》论文精读笔记
  • AtCoder Beginner Contest 416(ABCDE)
  • 机器视觉halcon7-缺陷检测
  • 「源力觉醒 创作者计划」_文心大模型 4.5 开源 28 天:从车间轴承到山村课堂的 AI 突围
  • 数据结构-Set集合(一)Set集合介绍、优缺点
  • labview控制软件开发
  • 多模通信·数据采集:AORO P9000U三防平板带来定制化解决方案
  • Kafka 单机多 Broker 实例集群搭建 | 详情
  • 【力扣热题100】哈希——最长连续序列
  • 中国高铁从追赶到领跑的破壁之路
  • Ubuntu 本地部署和使用 n8n 指南and ai almost anything
  • 《Java 程序设计》第 10 章 - 接口与 Lambda 表达式
  • 锁定中科院1区TOP!融合LSTM与Attention做时间序列预测 !
  • 新手向:DeepSeek 部署中的常见问题及解决方案
  • 【OD机试题解法笔记】符号运算
  • [特殊字符] 征服CPU的艺术:Rust多进程编程实战指南
  • AI绘画模型生成 MZ 日系美感人像/极致cos
  • 拥抱智慧物流时代:数字孪生技术的应用与前景
  • 小红书笔记详情API指南
  • VS调试前端项目时老是弹出Chrome无法更新的提示