AO天鹰优化算法|含源码(元启发式算法)|跑23个经典函数(含源码)

news2024/12/26 0:57:09

-------往期目录------

1、灰狼优化算法


文章目录

  • 天鹰优化器
    • 一、第一种搜索方法
    • 二、第二种搜素方法
    • 三、第三种搜素方法
    • 四、第四种搜索方法
  • 代码实现


天鹰优化器

Aquila Optimizer(AO),灵感来自Aquila在捕捉猎物过程中的自然界行为。因此,所提出的AO算法的优化过程分为四种方法:用垂直弯腰的高腾空选择搜索空间,用轮廓飞行和短滑翔攻击在发散搜索空间内探索,用低飞行和慢下降攻击在收敛搜索空间内利用,以及用步行和抓取猎物俯冲。为了验证新的优化器为不同优化问题找到最优解的能力,进行了一系列实验。


提示:以下是本篇文章正文内容,下面案例可供参考

一、第一种搜索方法

Aquila识别猎物区域,并通过垂直弯腰的高飞选择最佳狩猎区域。在这里,天鹰从高飞广泛探索者来确定170°搜索空间的区域,猎物在哪里。图1显示了Aquila高飞垂直弯腰的行为。这种行为在数学上表现为下列等式。
图1:Aquila高飞垂直弯腰的行为
图1:Aquila高飞垂直弯腰的行为
X 1 ( t + 1 ) = X b e s t ( t ) × ( 1 − t T ) + ( X M ( t ) − X b e s t ( t ) ∗ r a n d ) X_{1}(t+1)=X_{b e s t}(t)\times\left(1-{\frac{t}{T}}\right)+(X_{M}(t)-X_{b e s t}(t)*r a n d) X1(t+1)=Xbest(t)×(1Tt)+(XM(t)Xbest(t)rand)

X M ( t ) = 1 N ∑ i = 1 N X i ( t ) , ∀ j = 1 , 2 , . . . , D i m X_{M}(t)={\frac{1}{N}}\sum_{i=1}^{N}X_{i}(t),\forall j=1,2,...,D i m XM(t)=N1i=1NXi(t),j=1,2,...,Dim
其中, X 1 ( t + 1 ) X_{1}(t+1) X1(t+1)是t的下一次迭代的解,由第一种搜索方法( X 1 X_{1} X1)生成。 X b e s t ( t ) X_{b e s t}(t) Xbest(t)是直到第t次迭代的最佳获得解,这反映了猎物的近似位置。这个方程 1 − t T 1-{\frac{t}{T}} 1Tt用于控制通过迭代的扩展搜索(探索)。 X M ( t ) X_M(t) XM(t)表示在第t次迭代时连接的当前解的位置平均值, r a n d ∈ [ 0 , 1 ] rand∈[0,1] rand[0,1].

二、第二种搜素方法

图2:短滑翔攻击下Aquila等高线飞行的行为

X 2 ( t + 1 ) = X b e s t ( t ) × L e v y ( D ) + X R ( t ) + ( y − x ) ∗ r a n d , X_{2}(t+1)=X_{b e s t}(t)\times L e v y(D)+X_{R}(t)+(y-x)*r a n d, X2(t+1)=Xbest(t)×Levy(D)+XR(t)+(yx)rand,
其中 X 2 ( t + 1 ) X_2(t+1) X2(t+1) t t t 的下一次迭代的解,由第二种搜索方法 X 2 X_2 X2生成, D D D是维数空间, L e v y ( D ) Levy(D) Levy(D) l e v y levy levy飞行分布函数,使用公式计算, X R ( t ) X_R(t) XR(t)是第 t t t 次迭代时在 [ 1 , N ] [1,N] [1,N]范围内取的随机解.
L e v y ( D ) = s × u × σ ∣ v ∣ 1 β L e v y(D)=s\times{\frac{u\times\sigma}{|v|^{\frac{1}{β}}}} Levy(D)=s×vβ1u×σ
其中s是固定为0.01的常量值, u u u v v v 0 0 0到1之间的随机数, σ σ σ 使用下列等式计算:
σ = Γ ( 1 + β ) × sin ⁡ ( π β 2 ) Γ ( 1 + β 2 ) × β × 2 β − 1 2 \sigma={\frac{\Gamma(1+\beta)\times\sin\left({\frac{\pi\beta}{2}}\right)}{\Gamma\left({\frac{1+\beta}{2}}\right)\times\beta\times2^{\frac{\beta-1}{2}}}} σ=Γ(21+β)×β×22β1Γ(1+β)×sin(2πβ)
其中β是固定为1.5的常数值.
r = r 1 + U × D 1 θ = − ω × D 1 + θ 1 θ 1 = 3 × π 2 \begin{array}{c}{{r=r_{1}+U\times D_{1}}}\\ {{}}\\ {{\theta=-\omega\times D_{1}+\theta_{1}}}\\ {{}}\\ {{\theta_{1}=\frac{3\times\pi}{2}}}\end{array} r=r1+U×D1θ=ω×D1+θ1θ1=23×π
R 1 ∈ [ 1 , 20 ] R_1∈[1,20] R1[1,20],用于固定搜索周期数, U U U是一个固定为0.00565的小值。 D 1 D_1 D1是从1到搜索空间长度(Dim)的整数, ω \omega ω是一个固定为0.005的小值。以螺旋形状显示了AO的行为
x = r × s i n ( θ ) y = r × cos ⁡ ( θ ) r = − 0.005 × D 1 + 3 × π 2 \begin{array}{c}{{x=r\times s\mathrm{in}(\theta)}}\\ {{y=r\times\cos(\theta)}}\\ {{r=-0.005\times D_{1}+\frac{3\times\pi}{2}}}\end{array} x=r×sin(θ)y=r×cos(θ)r=0.005×D1+23×π

三、第三种搜素方法

在第三种方法(X3)中,当准确指定猎物区域,并且天鹰准备着陆和攻击时,天鹰垂直下降,进行初步攻击以发现猎物反应。
在这里插入图片描述
称为慢速下降攻击的低空飞行。在这里,AO利用目标的选定区域接近猎物并进行攻击。图显示了Aquila低空飞行慢速下降攻击的行为
X 3 ( t + 1 ) = ( X b e s t ( t ) − X M ( t ) ) × α − r a n d + ( ( U B − L B ) × r a n d + L B ) × δ X_{3}(t+1)=(X_{b e s t}(t)-X_{M}(t))\times\alpha-r a n d+((U B-L B)\times r a n d+L B)\times\delta X3(t+1)=(Xbest(t)XM(t))×αrand+((UBLB)×rand+LB)×δ
X 3 ( t + 1 ) X_3(t+1) X3(t+1)是由第三种搜索方法 X 3 X_3 X3生成的t的下一次迭代的解。 X B e s t ( t ) X_Best(t) XBest(t)是指第i次迭代前猎物的近似位置(最佳获得的解), X M ( t ) X_M(t) XM(t)是第t次迭代时当前解的平均值,使用等式计算。rand是0到1之间的随机值。 α \alpha α δ \delta δ是本文固定为小值(0.1)的开发调整参数。 L B L_B LB表示给定问题的下界, U B U_B UB表示200的上界.

四、第四种搜索方法

接近猎物时,Aquila根据猎物的随机运动在陆地上攻击猎物。这种方法称为步行并抓住猎物。这里,最后,AO在最后一个位置攻击猎物。图显示了Aquila步行并抓住猎物的行为。
在这里插入图片描述
X 4 ( t + 1 ) = Q F × X b e x ( t ) − ( G 1 × X ( t ) × r a n d ) − G 2 × L e ν y ( D ) + r a n d × G 1 \begin{array}{c}{{X_{4}(t+1)=Q F\times X_{b e x}(t)-(G_{1}\times X(t)\times r a n d)-G_{2}\times L e\nu y(D)+r a n d×G_1}}\\{{}}\end{array} X4(t+1)=QF×Xbex(t)(G1×X(t)×rand)G2×Leνy(D)+rand×G1
Q F ( t ) = t r a n d − 1 ( 1 − T ) 2 Q F(t)=t^{\frac{rand-1}{(1-T)^{2}}} QF(t)=t(1T)2rand1
G 1 = 2 × r a n d − 1 G 2 = 2 × ( 1 − t T ) \begin{array}{c}{{G_{1}=2\times r a n d-1}}\\ {{}}\\ {{G_{2}=2\times\left(1-\frac{t}{T}\right)}}\end{array} G1=2×rand1G2=2×(1Tt)
Q F ( t ) QF(t) QF(t)是第 i t h i^{th} ith次迭代时的质量函数值, r a n d rand rand是0到1之间的随机值。t和T分别表示当前迭代和最大迭代次数。 L e v y ( D ) Levy(D) Levy(D)是使用方程计算的 l e v y levy levy飞行分布函数


代码实现

完整代码请私信领取:

function [Best_FF,Best_P,conv]=AO(N,T,LB,UB,Dim,F_obj)
Best_P=zeros(1,Dim);
Best_FF=inf;


X=initialization(N,Dim,UB,LB);
Xnew=X;
Ffun=zeros(1,size(X,1));
Ffun_new=zeros(1,size(Xnew,1));

t=1;


alpha=0.1;
delta=0.1;

while t<T+1
    for i=1:size(X,1)
        F_UB=X(i,:)>UB;
        F_LB=X(i,:)<LB;
        X(i,:)=(X(i,:).*(~(F_UB+F_LB)))+UB.*F_UB+LB.*F_LB;
        Ffun(1,i)=F_obj(X(i,:));
        if Ffun(1,i)<Best_FF
            Best_FF=Ffun(1,i);
            Best_P=X(i,:);
        end
    end
    
    
    G2=2*rand()-1; % Eq. (16)
    G1=2*(1-(t/T));  % Eq. (17)
    to = 1:Dim;
    u = .0265;
    r0 = 10;
    r = r0 +u*to;
    omega = .005;
    phi0 = 3*pi/2;
    phi = -omega*to+phi0;
    x = r .* sin(phi);  % Eq. (9)
    y = r .* cos(phi); % Eq. (10)
    QF=t^((2*rand()-1)/(1-T)^2); % Eq. (15)
        %-------------------------------------------------------------------------------------
    for i=1:size(X,1)
        %-------------------------------------------------------------------------------------
        if t<=(2/3)*T
            if rand <0.5
                Xnew(i,:)=Best_P(1,:)*(1-t/T)+(mean(X(i,:))-Best_P(1,:))*rand(); % Eq. (3) and Eq. (4)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            else
                %-------------------------------------------------------------------------------------
                Xnew(i,:)=Best_P(1,:).*Levy(Dim)+X((floor(N*rand()+1)),:)+(y-x)*rand;       % Eq. (5)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            end
            %-------------------------------------------------------------------------------------
        else
            if rand<0.5
                Xnew(i,:)=(Best_P(1,:)-mean(X))*alpha-rand+((UB-LB)*rand+LB)*delta;   % Eq. (13)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            else
                %-------------------------------------------------------------------------------------
                Xnew(i,:)=QF*Best_P(1,:)-(G2*X(i,:)*rand)-G1.*Levy(Dim)+rand*G2; % Eq. (14)
                Ffun_new(1,i)=F_obj(Xnew(i,:));
                if Ffun_new(1,i)<Ffun(1,i)
                    X(i,:)=Xnew(i,:);
                    Ffun(1,i)=Ffun_new(1,i);
                end
            end
        end
    end
    %-------------------------------------------------------------------------------------
    if mod(t,100)==0
        display(['At iteration ', num2str(t), ' the best solution fitness is ', num2str(Best_FF)]);
    end
    conv(t)=Best_FF;
    t=t+1;
end

end
function o=Levy(d)
	beta=1.5;
	sigma=(gamma(1+beta)*sin(pi*beta/2)/(gamma((1+beta)/2)*beta*2^((beta-1)/2)))^(1/beta);
	u=randn(1,d)*sigma;v=randn(1,d);step=u./abs(v).^(1/beta);
	o=step;
end

Abualigah, L., Yousri, D., Elaziz, M.A., Ewees, A.A., A. Al-qaness, M.A., Gandomi, A.H., Aquila Optimizer: A novel meta-heuristic optimization Algorithm, Computers & Industrial Engineering (2021), doi: https://doi.org/10.1016/j.cie.2021.107250

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

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

相关文章

华为云云耀云服务器L实例评测|云耀云服务器L实例部署HertzBeat实时监控系统

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署HertzBeat实时监控系统 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、HertzBeat介绍2.1 HertzBeat简介2.2 HertzBeat特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规…

Activiti7工作流 二【Activiti7入门、Activiti7进阶】

文章目录 六、Activiti7入门6.1 业务流程建模6.1.1 绘制流程图6.1.2 指定任务负责人6.1.3 生成png格式流程图 6.2 部署流程定义6.3 启动流程实例6.4 任务查询6.5 任务处理6.6 添加审批意见6.6 查看历史审批 七、Activiti7进阶7.1 流程定义相关7.1.1 流程定义查询7.1.2 流程资源…

基于Spring Boot的体育馆管理系统的设计与实现

目录 前言 一、技术栈 二、系统功能介绍 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 本基于Spring Boot的海滨体育馆管理系统设计目标是实现海滨体育馆的信息化管理&#xff0c;提高管理效率&#xff0c;使得海滨体育馆管理工作规范化、高效化。 本文重…

fonts什么文件夹可以删除吗?fonts文件夹删除了怎么恢复

在电脑上&#xff0c;fonts文件夹是存放字体文件的目录之一。尽管有时可能考虑删除该文件夹以节省硬盘空间或出于其他原因&#xff0c;但删除该文件夹可能会导致系统字体问题&#xff0c;影响用户的正常使用。因此&#xff0c;在删除之前需要考虑是否可以删除fonts文件夹&#…

golang优先级坑

看如下代码&#xff0c;我本以为a1, a2是相同的 package mainimport "fmt"func main() {b, c, d : 1, 0, 1a1 : b ^ c&(^d) // 1 ^a2 : c ^ b&(^d) // 0 ^fmt.Println(a1, a2) // 1 0 }但结果却是不同的&#xff0c;在golang中&的优先级^和&#xff5c;…

Edge 浏览器『版本回退』和『关闭更新』

前言 最近 Edge 浏览器又更新了&#xff0c;给整体浏览器页面布局进行大改动&#xff0c;之前苗条的标签页和收藏夹栏瞬间变得臃肿了&#xff0c;我实在无法忍受这种布局&#xff0c;所以我索性直接进行版本回退和设置永久关闭更新&#xff0c;详细步骤请看下文 Edge 浏览器版…

【新版】系统架构设计师 - 案例分析 - 架构设计<架构风格和质量属性>

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计&#xff1c;架构风格和质量属性&#xff1e;例题1例题2例题3例题4例题5例题6 架构 - 案例分析 - 架构设计&#xff1c;架构风格和质量属性&#xff1e; 例题1 某软件公司为…

大数据开发工程师面试题

一、选择题 1、哪个程序负责HDFS数据存储&#xff1f; Datanode 2、HDFS中的block默认保存几份&#xff1f; 默认3份 3、哪个程序通常与NameNode在一个节点启动&#xff1f; Jobtracker 4、HDFS默认Block Size是多少&#xff1f; 64MB 5、什么通常是集群的最主要瓶颈 …

typedef与define定义类型

#define _CRT_SECURE_NO_WARNINGS #define DataType2 int* #include<iostream> typedef int* DataType1; int main() {DataType1 a, b;DataType2 c, d;printf("%d %d %d %d", sizeof(a), sizeof(b), sizeof(c), sizeof(d));return 0; } 输出结果如何&#xf…

MySQL集群高可用架构之MMM

一、MMM概述 1.1 MMM 简介 MMM&#xff08;Master-Master replication manager for MvSQL&#xff0c;MySQL主主复制管理器&#xff09;是一套支持双主故障切换和双主日常管理的脚本程序。 MMM 使用 Perl 语言开发&#xff0c;主要用来监控和管理 MySQL Master-Master &#…

免费玩云上大数据--海汼部落实验室

玩大数据遇到的问题 大家好&#xff0c;这次分享一个免费的大数据部署工具&#xff0c;并非是给人家打广告&#xff0c;试过了真的爽。 学习大数据的人都知道&#xff0c;如果用VMware模拟Linux搭建大数据集群的话我们需要很高的内存和硬盘内存&#xff0c;随随便便跑一下mapre…

机器学习笔记:adaBoost

1 介绍 AdaBoost&#xff08;Adaptive Boosting&#xff09;是一种集成学习方法&#xff0c;它的目标是将多个弱分类器组合成一个强分类器 通过反复修改训练数据的权重&#xff0c;使得之前分类错误的样本在后续的分类器中得到更多的关注每一轮中&#xff0c;都会增加一个新的…

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

一、新建工程 使用eCognition新建工程ImageSegmentation&#xff0c;加载影像数据&#xff0c;并编辑图层名称&#xff0c;将Layer 1、Layer 2、Layer 3、Layer 4的 Layer Alias 分别改为 Blue、Green、Red、如图1-1&#xff0c;图1-2所示&#xff1a; 图 1-1 图 1-2 设置加载…

十三、直流电机驱动

十三、直流电机驱动 介绍直流电机调数 介绍 PWM PWM是脉冲宽度调制&#xff0c;在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行调制&#xff0c;等效的获取需要的模拟参量&#xff0c;常应用于电机控速、开关电源等领域。通过改变一个周期信号的占空比&#xf…

为什么做测试既要懂开发又要懂产品?这3点看完,你就懂了!

本篇讨论的是什么呢&#xff1f;何谓一个真正的测试&#xff1f; 纯粹是个人的理解&#xff0c;仅供参考。 ● 论一个真正的软件测试工程师 ● 自动化在项目中的应用 ● 性能专项在项目中的应用 半个产品、半个开发 有人觉得这个标题有点讽刺&#xff0c;真正的测试&…

关于RestTemplate postForObject方法请求 服务端Controller接受不到值的问题解决

本文适合有SSM框架基础和springboot开发基础的同学查阅 这里postForObject 方法有三个参数&#xff0c;没有使用四个参数的。 restTemplate.postForObject(String url, Object request, Class<T> responseType); 1.String url > 顾名思义 这个参数是请求的url路径。…

Spring面试题10:Spring的XMLBeanFactory怎么使用

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Spring的XMLBeanFactory怎么使用 XmlBeanFactory是Spring框架中的一个实现类,它是BeanFactory接口的一个具体实现。XmlBeanFactory的主要作用是通…

【C语言】指针经典笔试题(上)

C语言的一大重头戏就是指针。 对于指针有一些认识&#xff1a; 1.指针是存放变量的地址&#xff0c;一般说的指针和指针变量是一个概念。 2.地址的单位是字节&#xff0c;大小在不同编译器环境下有所不同&#xff0c;32位机器是4个字节&#xff0c;64位机器是8个字节。 3.数组名…

伪原创文章生成器软件的崛起-哪个伪原创文章生成器软件好?

在当今数字化的时代&#xff0c;内容创作已经成为了无处不在的需求。不论您是个人博主、企业家还是网站管理员&#xff0c;都会面临一个共同的挑战&#xff1a;如何在互联网上脱颖而出&#xff0c;吸引更多的读者和访客。 gpt批量图文改写润色软件-147SEO gpt批量图文改写润色…

IP地址欺骗的危害与后果

IP地址欺骗&#xff0c;也被称为IP地址伪装或IP地址欺诈&#xff0c;是一种网络攻击技术&#xff0c;旨在伪装或隐藏攻击者的真实IP地址。尽管这种技术可能有一些合法的用途&#xff0c;例如保护用户的隐私或绕过地理位置限制&#xff0c;但它也经常被恶意黑客用于不法行为。本…