El algoritmo de optimización aritmética (AOA) es un nuevo algoritmo de optimización metaheurística propuesto por el académico Laith Abualigah y otros en 2021. Su inspiración proviene de las cuatro operaciones mixtas de la aritmética. El algoritmo utiliza operaciones de multiplicación y división para la exploración global y operaciones de suma y resta para el desarrollo local. En la actualidad, el algoritmo de optimización aritmética se aplica para resolver muchos tipos de problemas de optimización y se ha desarrollado gradualmente. El algoritmo de optimización aritmética puede encontrar rápidamente la solución óptima global. El algoritmo tiene una velocidad de convergencia más rápida y una mayor precisión de convergencia.
Referencias: [1] Jia Heming, Meng Bin, Wei Yuanhao, Li Shanglong, Wen Changsheng, Chen Junling. Cobertura de red de sensores inalámbricos con algoritmo de optimización aritmética mejorado [J]. Journal of Minnan Normal University (Edición de Ciencias Naturales), 2022,35 (03): 54-61.
Este artículo todavía usa la función de prueba CEC 2005. El equipo de prueba CEC 2005 es el equipo de prueba clásico y más utilizado, que incluye 23 funciones de Benchmark . La información específica es la siguiente:
código:
%%
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])
Seleccione aleatoriamente varias funciones, el algoritmo itera 500 veces y el código resultante se muestra en la figura:
Cómo obtener el código: Responda a la palabra clave en la siguiente tarjeta: TGDM1209
Bienvenidos a todos a dejar un mensaje en el área de comentarios, qué tipo de código se necesita, ¡dígale al blogger!