Algoritmo de optimización aritmética del algoritmo de optimización inteligente, con código matlab

        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:

7ad127fddd434c7bba8f3d678aeab713.jpeg

 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!

Supongo que te gusta

Origin blog.csdn.net/woaipythonmeme/article/details/131242256
Recomendado
Clasificación