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

2023-11-11

蜣螂优化算法是华大学沈波教授团队,继麻雀搜索算法(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 == 2
    fobj=@SampleEntropyCost;            %最小样本熵
elseif xz == 3
    fobj=@infoEntropyCost;              %最小信息熵
elseif xz == 4
    fobj=@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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 如何获取活动对象 MATLAB GUI 的句柄

    我正在尝试使用 MATLAB GUI 创建日历 我有两个Edit Text对象 edittext1 and edittext2 我想做这个 我把光标放在edittext1然后在日历中选择日期 它会进入文本字段edittext1 同样对于ed
  • 如何以编程方式指定 MATLAB 编辑器键绑定

    我想将键盘键绑定设置为Windows 默认设置我想在启动时使用startup m因为我希望在大量系统上设置此设置 首选项对话框中的等效设置是 MATLAB gt Keyboard gt Shortcuts gt Active Setting
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • matlab中无限while嵌套在for循环中

    我想做一个while循环 嵌套在for在 Matlab 中循环以查找数据中不同对之间的距离 我的数据具有以下形式 ID lon lat time 1 33 56 40 89 803 2 32 45 41 03 803 3 35 78 39
  • 如何将数据传递给 MATLAB oncleanup 函数?

    我有一个编译好的 matlab 程序 可以自动调整机器参数 在调整周期结束时 我需要恢复一些原始设置 有时会发生意外错误 有时用户会发现调整算法未正常工作 因此应终止 使用 control C 如果发生可预测的错误 我可以使用 try ca

随机推荐

  • 性能测试的基本流程

    本文主要介绍下性能测试的基本流程 性能测试从实际执行层面来看 测试的过程一般分为这么几个阶段 如下图 下面分别介绍下每个阶段具体需要做什么 一 性能需求分析 性能需求分析是整个性能测试工作开展的基础 如果连性能的需求都没弄清楚 后面的性能测
  • 数据库中存储过程、函数、触发器的区别

    存储过程 函数 触发器的区别 比较项目 存储过程 函数 是否有返回值 可以有 也可以没有 必须有且只有一个 是否可以单独执行 可以 必须通过execute执行 SQL语句 DML或SELECT 可否调用 不可以 可以 且可以位于FROM关键
  • MySQL导入frm文件

    前几天我心爱的Windows Server 2003系统忽然崩溃里面装的东西全完了 还好我是装双系统的 还能有个系统用用 在恢复过程中试了很多办法都不行哦 后来去百度搜索一下 mysql导入frm文件 终于找到办法了 现在把这些记在这里 以
  • python获取文件后缀名及批量更新目录下文件后缀名的方法

    coding utf 8 import os 获取文件后缀名称 dict 存放文件后缀名 path r E test for dirpath dirnames filenames in os walk path for filename i
  • QT容器详解

    QString类 隐式共享 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作 隐式数据共享类当作为函数参数传递的时候 不仅安全而且效率很高 因为传递的时候只是传递了数据的指针 数据本身只当自己被修改的时候才会去复制 简称写时复制 数
  • vue引入vue-jsonp实现解决跨域(例:在项目里调用百度api/腾讯api获取定位)

    第一步 添加依赖npm install vue jsonp save 第二步 在vue cli项目main js中添加 import VueJsonp from vue jsonp 网上很多博客引用不加 会报错 Vue use VueJso
  • 基于STL的演讲流程管理系统

    完整项目代码已上传gitCode 地址 https gitcode net m0 46663240 stl 1 system pause 按任意键之后才会执行下一步 system cls 清屏 2 vector 清空函数 clear 3 s
  • 各类学习资料(网址)汇总~

    移动开发设计 英文 http davidbcalhoun com 2010 viewport metatag 伯乐论坛http blog jobbole com 这里面的东西感觉好有难度 保存起来再看 什么是响应式网站设计 http www
  • 区块链体系架构

    区块链技术经过多年的发展 它们在实现上各有不同 但是在整体架构上是大体上相同的 区块链平台整体上可以划分为网络层 共识层 数据层 智能合约层以及应用层五个部分 一 网络层 区块链平台通常选择完全分布式且可容忍单点故障的P2P协议作为网络传输
  • Mysql load data local命令详解

    1 load data local命令使用方法 不指定字段名 此写法数据文件内字段数必须跟数据库表一致 load data local infile C test txt into table tableName CHARACTER SET
  • python Elasticsearch update

    备注 如果更新没有成功 原因有几个 1 更改字段在实际中没有 2 多层结构要用用字典来更新 不能用car color方式更新 res es update index index doc type doc type id data id bo
  • 【linux】定时任务讲解

    文章目录 一 在某时刻只执行一次 at 1 设置定时任务 2 查看和删除定时任务 二 周期性执行任务 cron 1 启动crond进程 2 编辑定时任务 3 查看和删除 4 用户权限 4 1 黑名单 4 2指定用户 三 etc cronta
  • Head First Design Mode(5)-工厂模式

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 工厂模式 烘烤OO的精华 烘烤某些松耦合的OO设计 除了使用new操作符之外 还有更多制造对象的方法 本章我们将了解到实例化的这个活动不应该总是公开的进行 认识到初始
  • 按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。

    引用 软件秘笈 设计模式那点事 书籍 按照目的来分 设计模式可以分为创建型模式 结构型模式和行为型模式 创建型模式用来处理对象的创建过程 结构型模式用来处理类或者对象的组合 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述 创建型模式
  • redis集群主流架构方案分析

    阿伊土鳖小码农 2017 02 10 09 29 Redis在互联网大数据平台有着广泛的应用 主要被用来缓存热点数据 避免海量请求压垮数据库 同时可以提升服务节点的响应速度和并发量 随着数据量的增多 由于redis是占用单台物理机或虚机的内
  • 【vue3+ts+vant】上传图片

    1 使用 van upload 组件 进行样式和功能配置 组件基础结构 配置文字和图标 配置最多数量和最大体积 支持双向数据绑定 支持选择图片后触发函数 支持点击删除事件函数 基础结构
  • STM32学习(一)-- stm32简介

    目录 前言 一 STM32简介 1 STM32 是什么 2 STM32 应用领域 3 STM32 优势 二 ARM简介 三 STM32芯片 1 芯片命名规则 2 型号分类及缩写 四 STM32F103C8T6 1 STM32F103C8T6
  • 机器学习:均值漂移(Mean Shift)详细解释

    1 均值漂移的基本概念 Mean Shift算法和k means相似 都是一个迭代的过程 即先算出当前点的偏移均值 将该点移动到该偏移均值 以此为新的起始点 继续移动 直到满足最终的条件 1 设想在一个有N个样本点的特征空间 初始确定一个中
  • LL(1)文法解析

    一 问题描述 给定上下文无关文法 对其进行解析 得出first集和follow集 在有能力的情况下 可以求出LL 1 分析表 二 算法设计 本程序主要分成三块内容 第一是文法的读入解析 第二是first集的求解 第三为follow集的求解
  • 蜣螂优化算法(DBO)优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码

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