蚁群算法ACO,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码

文章介绍了如何使用蚁群算法(ACO)来优化变密度均值分解(VMD)的两个关键参数——惩罚因子α和模态分解数K。以最小化包络熵作为适应度值,通过西储大学105.mat数据集中的X105_BA_time.mat数据进行实验,展示了30次寻优过程,最终得到最佳参数为惩罚因子657和模态分解数5,最小包络熵为7.3589。文章提供了相应的MATLAB代码示例,并给出了适应度函数的收敛曲线图。

近期评论区有小伙伴需要蚁群算法ACO优化VMD的,所以打算写一篇。

同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据。

首先进行VMD分解,采用蚁群优化算法(ACO)对VMD的两个关键参数(惩罚因子α和模态分解数K)进行优化,以最小包络熵为适应度值。

老规矩,先上结果图:

实验过程中,会实时显示每次寻优后的最小包络熵值和VMD对应的两个最佳参数。本次寻优共30次(自己可以随意更改寻优次数)。

可以看到寻优30次后,最小包络熵为7.3589,对应两个vmd的最佳参数为657,5,其中惩罚因子为657,模态分解数为5。

收敛曲线如下所示:

 代码:

%%
%% 以最小包络熵为目标函数,采用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)]);  %输出最佳适应度值

完整代码获取:下方卡片回复关键词:ACOVMD

觉着不错的给博主留个小赞吧!您的一个小赞就是博主更新的动力!谢谢!

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值