【YYDS】170余种智能算法优化VMD,五种适应度函数随意切换,各种指标计算绘图,一文搞定(Python代码实现)

     💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

基于170余种智能算法优化的VMD方法及其多指标可视化研究

一、VMD基本原理与参数优化需求

二、170余种智能算法的分类与特点

三、五种适应度函数的形式与切换机制

【VMD分解】包含包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,近似熵,包络熵,频谱图研究

一、VMD分解基本原理与流程

1. 核心思想与数学模型

2. 分解流程

3. 参数选择的影响

二、包络线与包络谱分析

1. 包络线计算

2. 包络谱生成

三、中心频率的提取与判定

1. 中心频率定义

2. 判定方法

四、峭度值在故障诊断中的应用

1. 计算公式

2. 诊断意义

五、熵特征分析

1. 各类熵的定义与区别

2. 应用实例

六、频谱图生成方法

1. 步骤

2. 分析要点

七、综合应用案例

1. 轴承故障诊断流程

2. 光伏功率预测

八、局限性与改进方向

📚2 运行结果

🎉3 参考文献 

🌈4 Python代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

基于170余种智能算法优化的VMD方法及其多指标可视化研究

一、VMD基本原理与参数优化需求

变分模态分解(Variational Mode Decomposition, VMD)是一种自适应信号分解方法,通过构造变分问题将输入信号分解为多个准正交的固有模态函数(IMF),每个IMF具有中心频率和有限带宽特性(Ev1)。其核心参数包括:

  • 模态数K:决定分解的IMF数量;
  • 惩罚因子α:控制IMF的带宽和抗噪能力(Ev2)。

传统VMD需手动设置参数,而实际应用中参数的敏感性会导致分解结果差异显著。例如,K值过小导致模态混叠,过大则引入冗余分量;α值过低会扩大带宽,过高则抑制噪声能力下降(Ev8)。因此,引入智能算法进行参数优化成为必要。


二、170余种智能算法的分类与特点

根据文献分类,用于优化VMD的智能算法可分为以下类别:

算法类型代表算法优化特点
群体智能算法粒子群优化(PSO)、遗传算法(GA)、灰狼优化(GWO)、麻雀算法(SSA)全局搜索能力强,适用于高维参数空间,需平衡探索与开发能力(Ev10)
仿生学算法黏菌算法(SMA)、海洋捕食者算法(MPA)、鲸鱼优化算法(WOA)模仿生物行为,具有动态调整搜索策略的优势(Ev14)
物理启发算法霜冰算法(RIME)、多元宇宙算法(MVO)基于物理现象(如热传导、引力作用),参数少且收敛速度快(Ev19)
混合改进算法IDBO(改进的麻雀算法)、HHO(哈里斯鹰算法)结合混沌映射、Levy飞行等机制,避免局部最优(Ev15)
深度学习优化器堆叠稀疏自编码器(SSAE)与智能算法结合适用于复杂时序特征提取,需结合模态分量能量熵等指标(Ev10)

优化流程(以PSO为例):

  1. 初始化:设置参数范围(如α∈[100,2500],K∈[3,10])(Ev42)。
  2. 适应度计算:通过VMD分解信号,计算目标函数值(如包络熵)。
  3. 迭代更新:根据粒子位置和速度更新参数组合。
  4. 收敛判定:达到最大迭代次数或适应度阈值时终止。

三、五种适应度函数的形式与切换机制

适应度函数用于量化VMD分解效果,常见形式及数学定义如下:

【VMD分解】包含包络线,包络谱,中心频率,峭度值,能量熵,样本熵,模糊熵,排列熵,近似熵,包络熵,频谱图研究

一、VMD分解基本原理与流程

1. 核心思想与数学模型

VMD(Variational Mode Decomposition)是一种基于变分贝叶斯理论的非递归信号分解方法,旨在将复杂信号分解为多个有限带宽的模态分量(IMF)。其数学本质是求解约束变分问题,最小化所有模态带宽之和。目标函数表示为:

2. 分解流程

  1. 初始化参数:设定模态数KK、惩罚因子αα(控制带宽)和收敛容差。
  2. 迭代优化:通过交替方向乘子法(ADMM)更新模态分量和中心频率:
    • 模态更新:利用维纳滤波在频域分离信号;
    • 中心频率更新:计算模态分量的频谱质心。
  3. 收敛判定:当模态更新量小于容差或达到最大迭代次数时终止。

3. 参数选择的影响

  • 模态数KK:过小导致欠分解,过大会出现中心频率相近的冗余模态(如中K=4K=4时出现重叠,需调整至K=3K=3)。
  • 惩罚因子αα:值越大,模态带宽越小,频率分辨率越高,但可能丢失高频细节。

二、包络线与包络谱分析

1. 包络线计算

通过希尔伯特变换提取信号的高频振荡包络:

其中H为希尔伯特变换算子。

2. 包络谱生成

对包络信号进行FFT得到频谱,用于识别调制频率(如轴承故障特征频率fBPFOfBPFO​)。优势在于抑制载频干扰,突出故障冲击成分。

应用案例:在轴承外圈故障诊断中,包络谱在fBPFOfBPFO​处呈现显著峰值,而原始频谱可能被噪声淹没。


三、中心频率的提取与判定

1. 中心频率定义

每个IMF的中心频率ωkωk​代表其能量集中区域的频域位置,通过迭代优化确定。

2. 判定方法

  • 斜率法:比较模态中心频率的斜率与瞬时平均频率,若不一致则停止分解。
  • 重叠准则:当相邻模态中心频率差值小于阈值时,判定为过分解(如中K=4时4038 Hz与4498 Hz相近,需减少K)。

四、峭度值在故障诊断中的应用

1. 计算公式

峭度(Kurtosis)衡量信号分布的尖峰特性:

其中μ为均值,σ为标准差。

2. 诊断意义

  • 正常状态:峭度值接近3(正态分布);
  • 故障状态:峭度值显著增大(如K>8K>8提示严重冲击性故障)。

应用场景:滚动轴承早期表面损伤时,峭度对微弱冲击敏感,优于传统RMS指标。


五、熵特征分析

1. 各类熵的定义与区别

熵类型数学定义特点与应用
能量熵Ee=−∑piln⁡pi, pi=Ei/∑Ei反映能量分布复杂度,适用于模态分量能量分布分析
样本熵基于相空间相似性,排除自匹配统计量改进近似熵,抗噪性强,用于生理信号与机械振动分析
模糊熵引入指数隶属函数e−dijn/re−dijn​/r替代阶跃函数处理模糊边界问题,对阈值rr变化更鲁棒
排列熵基于序列符号化排列模式的概率计算计算高效,适用于在线监测,擅长检测动力学突变
近似熵ApEn=ln⁡Cm(r)Cm+1(r)早期方法,依赖数据长度,易受噪声影响
包络熵对包络信号计算样本熵或模糊熵结合包络解调与熵分析,增强故障特征提取

2. 应用实例

  • 故障分量筛选:计算各IMF的峭度值与包络熵,选择熵值最小(或峭度最大)的模态进行后续分析。
  • 健康状态评估:利用多尺度熵量化信号复杂度变化,如齿轮磨损导致熵值降低。

六、频谱图生成方法

1. 步骤

  1. VMD分解:获取各IMF分量uk(t)uk​(t);
  2. FFT变换:对每个uk(t)uk​(t)进行快速傅里叶变换,得到频谱Uk(f)Uk​(f);
  3. 可视化:绘制各IMF的时域波形与频谱图,标注中心频率(如图右侧子图)。

2. 分析要点

  • 频率聚集性:正常分解下各IMF频谱应无重叠,否则需调整KK或αα。

  • 噪声识别:高频IMF频谱呈现宽带特性,可结合能量熵判断噪声分量。

七、综合应用案例

1. 轴承故障诊断流程

  1. 信号采集:获取振动加速度信号;
  2. VMD分解:设置K=5 α=2000,分解得到IMF1\simIMF5;
  3. 特征提取
    • 计算各IMF的包络熵,选择IMF3(熵值最小);
    • 提取IMF3的包络谱,识别fBPFOfBPFO​峰值;
  4. 状态判定:若峭度值K>5且包络谱存在特征频率,判定为外圈故障。

2. 光伏功率预测

  1. 分解时序数据:VMD将功率序列分解为趋势项与周期项;
  2. 熵特征筛选:利用样本熵选择高复杂度分量输入LSTM模型。

八、局限性与改进方向

  1. 参数敏感性问题:KK和αα依赖经验选择,可结合优化算法(如粒子群)自适应确定。

  2. 噪声干扰:VMD无法直接去噪,需结合小波阈值或RDT(随机递减技术)。
  3. 模态混叠:惩罚因子设置不当导致分量重叠,需联合1.5维谱分析抑制干扰。

通过上述分析,VMD结合多维度特征提取方法,在机械故障诊断、能源预测等领域展现了强大的适用性,未来可进一步与深度学习融合提升自动化分析能力。

📚2 运行结果

这是哈里斯鹰算法(HHO)和霜冰算法(RIME),适应度函数为最小包络熵的结果:

运行完后在命令行窗口会显示如下结果:

第一个参数为最佳的惩罚因子alpha,第二个为模态分量K。

不得不说,修改起来算法是真的很方便!

再来一个多元宇宙算法(MVO)和斑马算法(ZOA),适应度函数为最小排列熵的结果:

部分代码:

# 调整子图之间的垂直间距和图形标题的位置
plt.subplots_adjust(hspace=3, top=0.95)

plt.show()

# 计算峭度值
kurtosis_values = []
for i in range(K):
    kurtosis_value = kurtosis(u[i, :], fisher=False)
    kurtosis_values.append(kurtosis_value)
    print(f'IMF{i + 1}的峭度值为:{kurtosis_value:.4f}')

# 绘制条形图
plt.figure()
bar_plot = plt.bar(range(1, K+1), kurtosis_values, width=0.3)
plt.xlabel('模态函数', fontproperties=font_prop)
plt.ylabel('峭度值', fontproperties=font_prop)

# 在每个条形的顶部显示峭度值
for i, rect in enumerate(bar_plot):
    plt.text(rect.get_x() + rect.get_width() / 2, rect.get_height(), f'{kurtosis_values[i]:.4f}',
             ha='center', va='bottom')

# 设置x轴刻度标签
plt.xticks(range(1, K+1), [f'IMF{i}' for i in range(1, K+1)], fontsize=12)
plt.show()

# 计算每个IMF的能量和能量熵

🎉3 参考文献 

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]张彬桥,舒勇,江雨.基于改进变分模态分解和优化堆叠降噪自编码器的轴承故障诊断[J].计算机集成制造系统, 2024, 30(4):1408-1421.

[2]李亚超.基于VMD的滚动轴承故障诊断方法研究[D].石家庄铁道大学[2025-04-06].

[3]王涛,胡定玉,丁亚琦,等.基于经验模式分解和排列熵的轴承故障特征提取[J].噪声与振动控制, 2021, 41(1):77-null.

🌈Python代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值