智能优化算法之算术优化算法,附matlab代码

        算术优化算法(arithmetic optimization algorithm, AOA)是由学者Laith Abualigah等于2021年提出的一 种新型元启发式优化算法 ,其灵感来源于算术中的四则混合运算。该算法利用乘除运算进行全局探索,利 用加减运算进行局部开发。目前算术优化算法被应用于求解多类优化问题中,并逐步得到了发展.算术优化算法能够迅速的寻找到全局最优解 .该算法具备较快的收敛速度 及较高的收敛精度。

参考文献:[1]贾鹤鸣,孟彬,魏元昊,力尚龙,文昌盛,陈俊玲.改进算术优化算法的无线传感器网络覆盖[J].闽南师范大学学报(自然科学版),2022,35(03):54-61.

本文依旧采用CEC2005测试函数,CEC2005测试集是应用最多、最经典的一个测试集,包含23个Benchmark函数。具体信息如下图:

7ad127fddd434c7bba8f3d678aeab713.jpeg

 代码:

%%
clear
clc
close all
addpath(genpath(pwd))
number='F15'; %选定优化函数,自行替换:F1~F23
[lb,ub,D,y]=CEC2005(number);  % [lb,ub,D,y]:下界、上界、维度、目标函数表达式
MaxIteration=1000;  %最大迭代次数
Solution_no=50;  %种群规模
%调用AOA算法

[BestF,BestX,HisBestF]=AOA(Solution_no,MaxIteration,lb,ub,D,y); % Call the AOA 
subplot(1,2,1)
func_plot(number)
title(number)
xlabel('x')
ylabel('y')
zlabel('z')
subplot(1,2,2)
CNT=50;
k=round(linspace(1,MaxIteration,CNT)); %随机选50个点
% 注意:如果收敛曲线画出来的点很少,随机点很稀疏,说明点取少了,这时应增加取点的数量,100、200、300等,逐渐增加
% 相反,如果收敛曲线上的随机点非常密集,说明点取多了,此时要减少取点数量
iter=1:1:MaxIteration;
semilogy(iter(k),HisBestF(k),'m-x','linewidth',1);
grid on;
title(['函数收敛曲线',number])
xlabel('Iterations');
ylabel('Objective function value');
box on
legend('AOA')
set (gcf,'position', [200,300,700,300])

随机挑选几个函数,算法迭代500次,结果代码如图所示:

代码获取方式:下方卡片回复关键词:TGDM1209

扫描二维码关注公众号,回复: 15434570 查看本文章

欢迎大家评论区留言,需要什么类型的代码,欢迎告诉博主!

猜你喜欢

转载自blog.csdn.net/woaipythonmeme/article/details/131242256