• 灰狼算法优化ICEEMDAN参数,四种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵...


    今天给大家带来一期由灰狼算法优化ICEEMDAN参数的MATLAB代码。

    优化ICEEMDAN参数的思想可以参考该文献:

    [1]陈爱午,王红卫.基于HBA-ICEEMDAN和HWPE的行星齿轮箱故障诊断[J].机电工程,2023,40(08):1157-1166.

    文献原文提到:由于 ICEEMDAN 方法的分解效果取决于白噪声幅值权重(Nstd)和噪声添加次数(NE),因此,笔者采用智能优化算法对 ICEEMDAN 的2个参数进行优化,适应度函数采用包络熵,当适应度值越小,则代表分 解的效果越好;通过优化和更新,来确定最终的最佳参数组合(Nstd, NE)。

    本期文章以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据中1000个数据点。没有数据的看这篇文章。西储大学轴承诊断数据处理,matlab免费代码获取

    选取四种适应度函数进行优化,任意切换,采用灰狼算法优化ICEEMDAN,优化30次,种群数量为10。噪声幅值权重的优化范围设置为[0.15,0.6],噪声添加次数的优化范围为[50,600],以此确定ICEEMDAN的白噪声幅值权重(Nstd)和噪声添加次数(NE)。

    四种适应度函数分别是:最小包络熵,最小样本熵,最小信息熵,最小排列熵,代码中可以一键切换。

    1.最小包络熵作为适应度函数

    6c6436f5f52bdf4d1925c9fab477653f.png

    优化过程如下:

    4be331530e00abdebd3453f3b388a733.png

    结果如下:

    144fed6140ea8b7b96e9fc965236a9e1.png

    2.最小样本熵作为适应度函数

    42aac5185aa5dd8b026469e35216dfa2.png

    a8a382ab57ecf5cfd04648c8728dadfe.png

    3.最小信息熵作为适应度函数

    78c7ed9370419cd972cd7cc01424aacc.png

    8755403b6a75bfef8548b8b6c350ba3f.png

    4.最小排列熵作为适应度函数

    e1b5098973d1ea752800dfb17a168e4b.png

    71b5b7b525bb0b5ac33252321279d43a.png

    代码:

    1. %% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采用GWO算法优化ICEEMDAN,求取ICEEMDAN最佳的两个参数
    2. clear
    3. clc
    4. close all
    5. xz = 1; %xz, 选择1,以最小包络熵为适应度函数,
    6. % 选择2,以最小样本熵为适应度函数,
    7. % 选择3,以最小信息熵为适应度函数,
    8. % 选择4,以最小排列熵为适应度函数,
    9. if xz == 1
    10. fobj=@EnvelopeEntropyCost; %最小包络熵
    11. elseif xz == 2
    12. fobj=@SampleEntropyCost; %最小样本熵
    13. elseif xz == 3
    14. fobj=@infoEntropyCost; %最小信息熵
    15. elseif xz == 4
    16. fobj=@PermutationEntropyCost; %最小排列熵
    17. end
    18. %% 选取数据
    19. load 105.mat
    20. da = X105_DE_time(6001:7000); %这里选取105DEtime数据,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1
    21. %% 设置参数
    22. lb = [0.15 50]; %噪声幅值权重的优化范围设置为[0.15,0.6],噪声添加次数的优化范围为[50,600]
    23. ub = [0.6 600];
    24. dim = 2; % 优化变量数目
    25. Max_iter=30; % 最大迭代数目
    26. SearchAgents_no=10; %种群规模
    27. %% 调用GWO函数
    28. disp('代码运行时间较长,请耐心等待!')
    29. [fMin , bestX, Convergence_curve ] = GWO(SearchAgents_no,Max_iter,lb,ub,dim,fobj,da);
    30. %% 画适应度函数曲线图,并输出最佳参数
    31. figure
    32. plot(Convergence_curve,'Color',[0.9 0.5 0.1],'Marker','>','LineStyle','--','linewidth',1);
    33. title('Objective space')
    34. xlabel('Iteration');
    35. ylabel('Best score obtained so far');
    36. legend('GWO优化ICEEMDAN')
    37. disp(['The best solution obtained by GWO is : [',num2str(bestX(1)),',',num2str(fix(bestX(2))),']']); %输出最佳位置
    38. disp(['The best optimal value of the objective funciton found by GWO is : ', num2str(fMin)]);  %输出最佳适应度值

    大家注意看到xz这个变量,当选择1,以最小包络熵为适应度函数,选择2,以最小样本熵为适应度函数,选择3,以最小信息熵为适应度函数,选择4,以最小排列熵为适应度函数。这样大家切换起来就很方便了。

    代码目录如下:

    8f3fcb26490c9f06a2a09da887703af3.png


    这里浅浅说一个MATLAB的小技巧:右键MATLAB的“名称”,出现分组依据,勾选这个类型,MATLAB会自动将当前文件夹下的所有文件按照不同的类型进行分组,这个时候就能清楚地看到哪些文件属于函数,哪些文件属于脚本,一般来说,脚本是可以运行的,而函数是不可以运行的。这样对于一些新手小伙伴就很友好啦!

    0a7eb878570c77e8d1d607f93a507cf5.png

    本期完整代码获取,后台回复关键词:

    TGDM828

  • 相关阅读:
    美国开源数据库ScyllaDB完成4300万美元融资
    基于YOLOv8的安全帽检测系统
    全网最全Python系列教程(非常详细)---字符串讲解(学Python入门必收藏)
    C++——继承
    Spring Cloud Loadbalancer 实现客户端负载均衡
    Spring Cloud Alibaba —— 高可用流量控制组件
    leetCode 2578. 最小和分割 + 排序 + 贪心 + 奇偶分组(构造最优解)
    12c向19c迁移:OGG基本配置
    小节8:Python之文件操作
    Android DEX 文件格式解析
  • 原文地址:https://blog.csdn.net/woaipythonmeme/article/details/132844092