蜣螂优化算法(DBO)优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码

蜣螂优化算法是华大学沈波教授团队,继麻雀搜索算法(Sparrow Search Algorithm,SSA)之后,于2022年11月27日又提出的一种全新的群体智能优化算法。已有很多学者将算法用于实际工程问题中,今天咱们用蜣螂优化算法优化一下VMD参数。

同样以西储大学数据集为例,选用105.mat中的X105_BA_time.mat数据中1000个数据点。没有数据的看我这篇文章。西储大学轴承数据处理--附MATLAB代码_西储大学轴承数据matlab分析_今天吃饺子的博客-CSDN博客

本文选取四种适应度函数进行优化,以此确定VMD的最佳k和α参数。四种适应度函数分别是:最小包络熵,最小样本熵,最小信息熵,最小排列熵

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

d5fdad903a51ec0bf71f3ba365e76c48.png

b6adea5171d4fd4a6572d860eda33ce9.png

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

59560e5930d33dc3a9f46b47f8cef413.png

4c06560c5e596f1ae7538550555d6649.png

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

c6b23425a58c19fbbd308a85a50763fd.png

5ad440aac1da57c270b0119f3096ebda.png

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

e71c432447f8b3d0aebd57c99578dfb0.png

d02f020007e1bb98b51a1da81a86aaa7.png

代码:

%% 以最小包络熵、最小样本熵、最小信息熵、最小排列熵为目标函数(任选其一),采用DBO算法优化VMD,求取VMD最佳的两个参数
clear all
clc
close all
xz = 1;  %xz=1,2,3 or 4, %选择1,以最小包络熵为适应度函数;%选择2,以最小样本熵为适应度函数;%选择3,以最小信息熵为适应度函数;选择4,以最小排列熵为适应度函数。
if xz == 1  fobj=@EnvelopeEntropyCost;          %最小包络熵
elseif xz == 2fobj=@SampleEntropyCost;            %最小样本熵
elseif xz == 3fobj=@infoEntropyCost;              %最小信息熵
elseif xz == 4fobj=@PermutationEntropyCost;       %最小排列熵
end%% 选取数据
load 105.mat
da = X105_DE_time(6001:8000); %这里选取105的DEtime数据,注意这里替换为自己的数据即可,数据形式为n行*1列,列数必须为1。%% 设置参数
lb = [100 3];    %惩罚因子和K的下限
ub = [2500 10];  %惩罚因子和K的上限
dim = 2;            % 优化变量数目
Max_iter=20;       % 最大迭代数目
SearchAgents_no=25;       % 种群规模%% 调用DBO函数
[fMin , bestX, Convergence_curve ] = DBO(SearchAgents_no,Max_iter,lb,ub,dim,fobj,da);%% 画适应度函数曲线图,并输出最佳参数
figure
plot(Convergence_curve,'Color',[0.9 0.5 0.1],'Marker','>','LineStyle','--','linewidth',1);
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');
legend('DBO优化VMD')
display(['The best solution obtained by DBO is : ', num2str(round(bestX))]);  %输出最佳位置
display(['The best optimal value of the objective funciton found by DBO is : ', num2str(fMin)]);  %输出最佳适应度值

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

完整代码获取,电机下方卡片回复关键词:DBOVMD

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1521.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASEMI代理光宝光耦LTV-6341的应用与性能分析

编辑-Z 本文将全面深入地探讨光耦LTV-6341的应用与性能。首先,我们将介绍光耦LTV-6341的基本概念和工作原理,然后,我们将详细分析其在电子设备中的应用,接着,我们将对其性能进行深入的分析,最后&#xff0…

python spider 爬虫 之 解析 xpath 、jsonpath、BeautifulSoup (二)

Jsonpath 安装: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jsonpath 使用:jsonpath 只能解析本地文件,跟xpath不一样 objjson.load(open(‘json文件’,‘r’, encoding‘utf-8’)) json.load(是文件,…

Flink-窗口源码

滚动窗口底层只有一个窗口,每次用for循环,把前面过期的数据移除,留下的数据再进行计算 滑动窗口的时间窗口,是有多个window的,因为有重叠的数据 计数窗口、计数滑动窗口,底层只有一个窗口 会话窗口只有一…

会声会影2023最新六大新功能,会声会影2023序列号能用多少次

会声会影2023版是一款非常实用的视频剪辑软件,该软件能够为广大用户带来丰富的集成化工具,并且优化了工作流程,无论你是新手还是老手都可以快速上手这款软件。会声会影2022永久激活版支持自定义码率设置,用户可以根据自己的需求设…

Linux--进入一个路径:cd

Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件 cd是change directory的简写 语法: cd 目录名 功能: 改变工作目录。将当前工作目录改变到指定的目录下。 举例: cd .. : 返回上级目录&…

67、基于51单片机ADXL345计步器系统设计(程序+原理图+PCB源文件+参考论文+开题报告+设计资料+元器件清单等)

摘 要 计步器是一种颇受欢迎的日常锻炼进度监控器,可以激励人们挑战自己,增强体质,帮助瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。晃动这些装置时,可以听到有一个金属球来回滑动&#xff0c…

Spark10-11

10. 广播变量 10.1 广播变量的使用场景 在很多计算场景,经常会遇到两个RDD进行JOIN,如果一个RDD对应的数据比较大,一个RDD对应的数据比较小,如果使用JOIN,那么会shuffle,导致效率变低。广播变量就是将相对…

基于SpringBoot+Vue+微信小程序的电影平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 研究背景:…

A. Portal(dp优化枚举)

Problem - 1580A - Codeforces CQXYM发现了一个大小为nm的矩形。矩形由n行m列的方块组成,每个方块可以是黑曜石方块或空方块。CQXYM可以通过一次操作将黑曜石方块变为空方块,或将空方块变为黑曜石方块。 一个大小为ab的矩形M被称为传送门,当…

【adb指令】

一、什么是adb adb的全称为Android Debug Bridge,官方提供的用于操作安卓设备的工具。 二、adb用来干什么? 在电脑终端通过命令行: 打开收手机应用;传输文件;点击、输入、滑动等;硬件操作、返回、回到首…

SpringBoot04:JSR303数据校验及多环境切换

目录 一、JSR303数据校验 1、如何使用? 2、常见参数 二、多环境切换 1、多配置文件 2、yaml的多文档块 3、配置文件加载位置 一、JSR303数据校验 1、如何使用? SpringBoot中可以用Validated来校验数据,如果数据异常则会统一抛出异常…

php中的双引号与单引号的基本使用

字符串,在各类编程语言中都是一个非常重要的数据类型 网页当中的图片,文字,特殊符号,HTMl标签,英文等都属于字符串 PHP字符串变量用于存储并处理文本, 在创建字符串之后,我们就可以对它进行操作。我们可以直接在函数中使用字符串,或者把它存储在变量中 字…