捕食者优化算法,原理详解,MATLAB代码免费获取

捕食者优化算法(Hunter–prey optimization,HPO)是一种受自然启发的群智能优化算法。该算法的灵感来自于捕食动物(如狮子、豹和狼)以及猎物(如雄鹿和瞪羚)的行为。动物狩猎行为有很多场景,其中一些场景已经转化为优化算法。本文使用的场景不同于以往算法的场景。在提出的方法中,猎物和捕食者种群,捕食者攻击远离猎物种群的猎物。猎人调整他的位置朝向远处的猎物,猎物也调整他的位置朝向安全的地方。搜索代理的位置是适应度函数的最佳值,被认为是安全的地方。

cc9ed5f566a24f145f275f6f80c25a9c.png

该成果于2022年发表在计算机领域三区期刊Algorithm and applications上,目前在谷歌学术上被引率134次。

6027993049db054e98b47569e6f90075.png

狩猎-猎物循环是种群生物学中最引人注目的观察之一,本文所考虑的场景不同于其他场景。本文的场景是猎人寻找猎物,因为猎物通常是成群的,猎人选择一个远离群体的猎物。当猎人找到猎物后,他会追逐猎物。与此同时,猎物在捕食者的攻击中寻找食物和逃脱,并到达一个安全的地方。

1、算法原理

(1)种群初始化

首先,将初始种群随机设置为 ,然后将目标函数计算为 。种群的控制和指导在搜索空间中使用一系列的规则和策略所提出的算法的启发。重复该过程,直到算法停止。在每一次迭代中,种群中的每个成员的位置根据所提出的算法的规则进行更新,并与目标函数的新的位置进行评估。这个过程使得解决方案在每次迭代中得到改进。初始种群的每个成员的位置是在搜索空间中随机生成的,公式如下

其中Xi是猎人位置或猎物,lb是问题变量的最小值(下边界),ub是问题变量的最大值(上边界),d是问题的变量数(维数)。以下公式定义了搜索空间的下边界和上边界。

(2)目标函数定义

在生成初始种群并确定每个智能体的位置之后,使用目标函数 来计算每个解决方案的适应度。F(x)可以是最大值(效率、性能等)或最小值(成本、时间等)。计算适应度函数决定了哪个解决方案是好的还是坏的。在发现有希望的区域之后,必须减少随机行为,以便算法能够在有希望的区域周围搜索,这涉及到开发。对于猎人搜索机制,本文提出以下公式

方程更新了猎人的位置,其中x(t)是当前猎人的位置,x(t +1)为猎人的下一个位置,Ppos为猎物的位置,Z为由下式计算的自适应参数。

88a0f3067fe71d1e3e3d7b9e37a82caa.png

式中,R1、R3为[0,1]范围内的随机向量,P为0、1等于问题变量个数的随机向量,R2为[0,1]范围内的随机数, IDX为满足条件(P = 0)的向量R1的索引号。

C是勘探和开发之间的平衡参数,其值在迭代过程中从1减小到0.02。C的计算公式如下:

其中,它是当前迭代值,MaxIt是迭代的最大次数。如图所示,计算猎物的位置(Ppos),因此首先根据以下公式计算所有位置(l)的平均值,然后计算每个搜索代理与该平均位置的距离

根据以下公式计算基于欧几里得距离的距离。

根据以下公式,将距离位置均值距离最大的搜索代理称为猎物(Ppos)。

如果每次迭代中总是考虑与平均位置距离最大的搜索代理,则算法收敛较晚。根据狩猎场景,当猎人捕获猎物时,猎物会死亡,下一次,猎人会转向新的猎物。为了解决这个问题,本文考虑一个递减机制,公式如下

其中N为搜索代理的数量。

现在,本文将猎物位置计算为以下公式

下图显示了在算法运行期间如何计算Kbest和选择猎物(Ppos)。在算法开始时,Kbest的值等于N(搜索代理数)。因此,最后一个距离搜索agent平均位置(l)最远的搜索agent被选择为猎物,并被猎人攻击。如图所示,Kbest值逐渐减小,以至于在算法结束时,Kbest值等于第一个搜索代理。需要说明的是,在每次迭代中,搜索代理是根据到搜索代理平均位置的距离来排序的。

c246fc3bed5b34778b27d17ec3c21192.png

当猎物受到攻击时,它会试图逃离并到达安全的地方。

本文假设最安全的位置是全局最优的位置,因为它会给猎物更大的生存机会,猎人可能会选择其他猎物。提出下式来更新猎物位置

其中x(t)是猎物的当前位置,x (t+1)为猎物的下一个位置,Tpos为全局最优位置,Z为自适应参数,R4为[- 1,1]范围内的随机数。C是探索和开发之间的平衡参数,其值随着算法的迭代而减小。COS函数及其输入参数允许下一个猎物位置定位在全局最优的不同径向和角度,从而提高捕食阶段的性能。

这里出现的问题是如何在这个算法中选择猎人和猎物。为了回答这个问题,本文将等式结合起来。

其中R5是范围[0,1]内的随机数,b是调节参数,其在本研究中的值设定为0.1。如果R5值小于B,则搜索代理被认为是猎人,并且搜索代理的下一个位置用等式更新。

HPO对应的算法流程图如下所示。

b07ce37ab89671ce2680d7df23817fa9.png

2、结果展示

b9d34f6df809372da41893bec4659f66.png

65516b6e2a2adf3fd7c9c03c39fd22c8.png

1fb7da165de9b06acb09ef3f0076ab56.png

3、MATLAB核心代码

%% 淘个代码 %%
% 微信公众号搜索:淘个代码,获取更多代码
% 捕食者优化算法(HPO)

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;
close all;
tic
function_name='F1';
[dim,CostFunction,ub, lb]  = Select_Functions(function_name);
%% HPO Parameters
  MaxIt = 500;     % Maximum Nomber of Iterations
  nPop = 30;         % Population Size
  Convergence_curve = zeros(1,MaxIt);
% Constriction Coefeicient
B = 0.1;
%% Initialization
 HPpos=rand(nPop,dim).*(ub-lb)+lb;
% for i=1:nPop
%     HPposFitness(i)=inf;
% end
    % Evaluate
for i=1:size(HPpos,1)
HPposFitness(i)=CostFunction(HPpos(i,:));       
end
% NFE = nPop;
 [~,indx] = min(HPposFitness);
% 
 Target = HPpos(indx,:);   % Target HPO
 TargetScore =HPposFitness(indx);
 Convergence_curve(1)=TargetScore;
%nfe = zeros(1,MaxIt);
%% HPO Main Loop
for it = 2:MaxIt
   c = 1 - it*((0.98)/MaxIt);   % Update C Parameter
    kbest=round(nPop*c);        % Update kbest
     for i = 1:nPop
            r1=rand(1,dim)<c;
            r2=rand;
            r3=rand(1,dim);
            idx=(r1==0);
            z=r2.*idx+r3.*~idx;
%             r11=rand(1,dim)<c;
%             r22=rand;
%             r33=rand(1,dim);
%             idx=(r11==0);
%             z2=r22.*idx+r33.*~idx;
        if rand<B
        xi=mean(HPpos);
        dist = pdist2(xi,HPpos);
        [~,idxsortdist]=sort(dist);
        SI=HPpos(idxsortdist(kbest),:);
        HPpos(i,:) =HPpos(i,:)+0.5*((2*(c)*z.*SI-HPpos(i,:))+(2*(1-c)*z.*xi-HPpos(i,:)));
        else
          for j=1:dim
            rr=-1+2*z(j);
          HPpos(i,j)= 2*z(j)*cos(2*pi*rr)*(Target(j)-HPpos(i,j))+Target(j);
          end
        end  
        HPpos(i,:) = min(max(HPpos(i,:),lb),ub);
        % Evaluation
        HPposFitness(i) = CostFunction(HPpos(i,:));
        % Update Target
        if HPposFitness(i)<TargetScore 
            Target = HPpos(i,:);
            TargetScore = HPposFitness(i);
        end
     end
  Convergence_curve(it)=TargetScore;
   disp(['Iteration: ',num2str(it),' Best Cost = ',num2str(TargetScore)]);
 end
toc

参考文献

[1]Naruei I, Keynia F, Sabbagh Molahosseini A. Hunter–prey optimization: Algorithm and applications[J]. Soft Computing, 2022, 26(3): 1279-1314.

完整代码获取

后台回复关键词:

TGDM166

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见开源蜜罐系统

蜜罐系统&#xff08;Honeypot&#xff09;在信息安全领域中是一种被广泛使用的技术&#xff0c;旨在吸引和诱导黑客入侵&#xff0c;从而获取和分析攻击者的行为和手段。以下是一些常见的蜜罐系统的介绍&#xff1a; HFish开源蜜罐系统 特点&#xff1a; 多功能&#xff1a;支…

数据中心大型AI模型网络需求

数据中心大型AI模型网络需求 随着Transformer的崛起和2023年ChatGPT的大规模应用&#xff0c;业界逐渐形成共识&#xff1a;遵循一定的规模效应原则&#xff0c;增加模型参数量能够显著提升模型性能。特别是在参数数量级跃升至数百亿乃至更高时&#xff0c;大型AI模型在语言理…

WPF/C#:理解与实现WPF中的MVVM模式

MVVM模式的介绍 MVVM&#xff08;Model-View-ViewModel&#xff09;是一种设计模式&#xff0c;特别适用于WPF&#xff08;Windows Presentation Foundation&#xff09;等XAML-based的应用程序开发。MVVM模式主要包含三个部分&#xff1a;Model&#xff08;模型&#xff09;、…

02 Prometheus入门安装教程

02 Prometheus入门安装教程 大家好&#xff0c;我是秋意零。今天分享一篇入门级Prometheus安装教程。 环境准备 三台Linux虚拟机&#xff08;一台也可以&#xff09; 准备Prometheus、相关组件安装包 Prometheus官网下载安装包比较慢&#xff0c;如果没有魔法。可关注公众号…

YOLOv8猫狗检测:从SwanLab可视化训练到Gradio Demo网站

基于YOLO模型在自定义数据上做训练&#xff0c;实现对特定目标的识别和检测&#xff0c;是CV领域非常经典的任务&#xff0c;也是AI项目落地最热门的方向之一。 这篇文章我将带大家使用Ultralytics、SwanLab、Gradio这两个开源工具&#xff0c;完成从数据集准备、代码编写、可…

小红书推流机制底层逻辑

小红书推流机制底层逻辑 很多做运营的朋友问小红薯怎么玩❓ 小红书的核心逻辑流量是不是玄学❓ 今天就来说说小红书的流量算法机制&#x1f525; ①电脑审核 ②分配初始流量 ③增加流量 ④推荐结束

MyBatis系统学习篇 - MyBatis逆向工程

MyBatis的逆向工程是指根据数据库表结构自动生成对应的Java实体类、Mapper接口和XML映射文件的过程。逆向工程可以帮助开发人员快速生成与数据库表对应的代码&#xff0c;减少手动编写重复代码的工作量。 我们在MyBatis中通过逆向工具来帮我简化繁琐的搭建框架&#xff0c;减少…

【UML】-01-UML基本元素的介绍

1、UML的词汇表 &#xff08;1&#xff09;事物&#xff1b; &#xff08;2&#xff09;关系&#xff1b; &#xff08;3&#xff09;图。 事物是对模型中首要成分的抽象&#xff1b;关系把事物结合在一起&#xff1b;图聚集了相关的事物。 注&#xff1a;事物也称为元素 2…

LabVIEW高低温试验箱控制系统

要实现LabVIEW高低温试验箱控制系统&#xff0c;需要进行硬件配置、软件设计和系统集成&#xff0c;确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明&#xff1a; 硬件配置 选择合适的试验箱&#xff1a; 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…

蓝桥杯嵌入式国赛笔记(3):其他拓展板程序设计(温、湿度传感器、光敏电阻等)

目录 1、DS18B20读取 2、DHT11 2.1 宏定义 2.2 延时 2.3 设置引脚输出 2.4 设置引脚输入 2.5 复位 2.6 检测函数 2.7 读取DHT11一个位 2.7.1 数据位为0的电平信号显示 2.7.2 数据位为1的电平信号显示 2.8 读取DHT11一个字节 2.9 DHT11初始化 2.10 读取D…

2024.5.28晚训题解

提前预告&#xff0c;市赛初中组会考算法题&#xff0c;应该会有两道模板题 比如DFS BFS 二分 简单动态规划&#xff0c;虽然我们没学多久&#xff0c;但是模板题你还是要会写的 A题 编辑距离 动态规划 注意多组输入 #include<iostream> using namespace std; int dp[1…

2024最新升级Stable Diffusion整合包v4.6版来了,附赠SD电商实战教程

Stable Diffusion无疑是最近最火的AI绘画工具之一&#xff0c;本期设计软件库给大家带来了2024最新升级的v4.6版&#xff01;比之前推送的更加智能、快速和简单 2024全新Stable Diffusion 资料包 新版本使用更方便 独家附赠SD电商实战教程 让你快速上手 资源目录一览 01 新…

数据通信基本概念汇总

1. 数据通信基础 网关: 提供协议转换&#xff0c;路由选择&#xff0c;数据交换的网络设备 报文: 网络中所传递的一个数据单元。 数据载荷: 最终要传递的信息 封装: 给数据载荷添加头部和尾部的过程(形成新的报文) 解封装: 给数据载荷去掉头部和尾部的过程(获取数据载荷) 终端设…

[XYCTF新生赛]-Reverse:你是真的大学生吗?解析(汇编异或逆向)

无壳 查看ida 没有办法反汇编&#xff0c;只能直接看汇编了。 这里提示有输入&#xff0c;输入到2F地址后&#xff0c;然后从后往前异或&#xff0c;其中先最后一个字符与第一个字符异或。这里其实也有字符串的长度&#xff0c;推测应该是cx自身异或之后传给了cx 完整exp&am…

【Go语言入门学习笔记】Part3.指针和运算符、以及基本输入

一、前言 仍然好多和C语言类似&#xff0c;计算机的学生应该是很容易入门这一环节&#xff0c;我还在最后的输入中看到了一些些Java输入的影子&#xff0c;而自动的变量类型推断更是有Python那个味道&#xff0c;正可谓几百家之所长了。 二、学习代码 package mainimport (&q…

AI答题项目,无门槛答题一小时收益30+

朋友们&#xff0c;今天我想和大家探讨一个令人兴奋的副业机遇。你是否曾感觉到日常工作的枯燥乏味&#xff0c;而又渴望找到一种轻松的赚钱方式来增加你的收入&#xff1f;今天我将和你分享的这个项目正是你所期待的。 项目的核心是利用AI技术来回答网上付费用户的问题&…

selenium源码学习

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

蓝桥楼赛第30期-Python-第三天赛题 提取用户输入信息题解

楼赛 第30期 Python 模块大比拼 提取用户输入信息 介绍 正则表达式&#xff08;英文为 Regular Expression&#xff0c;常简写为regex、regexp 或 RE&#xff09;&#xff0c;也叫规则表达式、正规表达式&#xff0c;是计算机科学的一个概念。 所谓“正则”&#xff0c;可以…

order by工作过程和优化

工作过程 order by 是由优化器决定的&#xff0c;如果优化器认为filesort速度快&#xff0c;那么走filesort排序&#xff0c;如果优化器认为索引速度快&#xff0c;那么走索引排序。

【云原生_K8S系列】认识 Kubernetes

在当今数字化转型的浪潮中&#xff0c;企业对于构建高效、灵活的软件架构有了更高的期望。而在这个迅速变化的环境中&#xff0c;容器化技术如雨后春笋般涌现&#xff0c;为解决传统部署和管理软件所带来的挑战提供了一种全新的解决方案。在众多容器编排工具中&#xff0c;Kube…