Ant コロニー アルゴリズム ACO、VMD を最適化、フィットネス関数は最小エンベロープ エントロピー (MATLAB ソース コードを含む)

最近、コメント欄の友人の何人かが VMD を最適化するためにアリのコロニー アルゴリズム ACO を必要としているので、記事を書く予定です。

また、ウェスタン リザーブ大学のデータセットを例として、105.mat の X105_BA_time.mat データを選択します。

まず、VMD を分解し、VMD の 2 つの主要パラメータ (ペナルティ係数 α とモード分解数 K) をアリコロニー最適化アルゴリズム (ACO) によって最適化し、最小エンベロープエントロピーを適応度値として使用します。

古いルール、最初の結果マップ:

実験中、各最適化後の最小エンベロープ エントロピー値とVMDに対応する 2 つの最良のパラメーターがリアルタイムで表示されます。今回は合計 30 個の最適化があります (最適化の数は任意に変更できます)。

30 回の最適化後、最小エンベロープ エントロピーは 7.3589、2 つの 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

気分がよければブロガーに「いいね!」を残してください!あなたからのちょっとした褒め言葉がブロガーの更新の原動力になります!ありがとう!

おすすめ

転載: blog.csdn.net/woaipythonmeme/article/details/131278334