Algoritmo de colonia de hormigas ACO, optimizar VMD, la función de aptitud es la entropía de envolvente mínima, incluido el código fuente de MATLAB

Recientemente, algunos amigos en el área de comentarios necesitan el algoritmo de colonia de hormigas ACO para optimizar VMD, así que planeo escribir un artículo.

También tome el conjunto de datos de la Universidad de Western Reserve como ejemplo, seleccione los datos X105_BA_time.mat en 105.mat.

En primer lugar, VMD se descompone y los dos parámetros clave de VMD (factor de penalización α y número de descomposición de modo K) se optimizan utilizando el algoritmo de optimización de colonias de hormigas (ACO), y la entropía de envolvente mínima se utiliza como valor de aptitud.

Las viejas reglas, primero en el mapa de resultados:

Durante el experimento, se mostrará en tiempo real el valor mínimo de entropía de la envolvente después de cada optimización y los dos mejores parámetros correspondientes a VMD . Hay un total de 30 optimizaciones esta vez (puede cambiar el número de optimizaciones a voluntad).

Se puede ver que después de 30 veces de optimización, la entropía de envolvente mínima es 7.3589, y los mejores parámetros correspondientes a los dos vmds son 657, 5, el factor de penalización es 657 y el número de descomposición modal es 5.

La curva de convergencia se ve así:

 código:

%%
%% 以最小包络熵为目标函数,采用ACO算法优化VMD,求取VMD最佳的两个参数
clear all
clc
addpath(genpath(pwd))
load 105.mat
D=2;             % 优化变量数目
popmin1 = 100;   %惩罚因子
popmax1 = 2500;
popmin2 = 3;   %模态分解K值
popmax2 = 10;

T=30;       % 最大迭代数目
N=20;       % 种群规模
y=@Cost;
da = X105_DE_time(1:2048); %这里选取105的DE数据
[AcoBest_pos,AcoBest_score,ACO_curve] = ACO(y,popmin1,popmax1,popmin2,popmax2,N,T,da);

%画适应度函数图
figure
plot(1:T,ACO_curve,'Color',[0.7 0.1 0.7],'Marker','>','LineStyle','--','linewidth',1);

title('Objective space')
xlabel('Iteration');
set(gca,'xtick',0:2:T);
ylabel('Best score obtained so far');
legend('ACO优化VMD')
display(['The best solution obtained by ACO is : ', num2str(round(AcoBest_pos))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by ACO is : ', num2str(AcoBest_score)]);  %输出最佳适应度值

Adquisición completa del código: Responda las palabras clave en la siguiente tarjeta: ACOVMD

Si te sientes bien, deja un pequeño me gusta para el blogger! ¡Un pequeño elogio de su parte es la fuerza impulsora para que los blogueros se actualicen! ¡Gracias!

Supongo que te gusta

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