Python-实战:基于白鲸BWO算法的VMD超参数优化
2023-04-18 16:12:57 时间
目录
在博客的基础上,本文利用白鲸优化算法对VMD的参数进行优化,采用python实现。
1、白鲸优化算法
白鲸优化算法([Beluga whale optimization,BWO)是由是由 Changting Zhong 等于2022 年提出的一种群体智能优化算法。其灵感来源于白鲸的群体觅食行为,具有3个阶段,分别是:探索、开发、鲸落,如下
2、BWO优化VMD参数
时间序列越复杂,包络熵的计算值越大,反之亦然。因此,应用VMD对信号进行分解后,计算每个子序列的包络值,包络最小的序列为所分解序列的趋势项。
当分解数K较小时,可能导致信号分解不足,趋势项中混入其他干扰项,导致包络熵值变大。当取适当的K值时,趋势项的包络熵变小。因此,将分解出的IMF中的最小的那个熵(局部包络熵)最小化时,VMD分解为最佳。
那么如何去找到局部包络熵,就需要用到白鲸优化算法,当前其他的优化算法都是可以实现的。适应度函数如下:
'''适应度函数,最小化各VMD分量的局部包络熵'''
def fitness(pop,data):
np.random.seed(0)
K = int(pop[0])
alpha = int(pop[1])
#print(K,alpha)
tau = 0
DC = 0
init = 1
tol = 1e-7
imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)
comp=np.vstack([imf,res.reshape(1,-1)])
SE = 0
se_imf=[]
for i in range(comp.shape[0]):
temp= BaoLuoShang(comp[i,:])
SE +=temp
se_imf.append(temp)
# fit = SE
# fit = SE/K
fit = min(se_imf)
np.random.seed(int(time.time()))
return fit
3、实战
3.1 原始时间序列数据
3.2 VMD分解--直接设置参数
alpha = 10.0
K = 3
tau = 0
DC = 0
init = 1
tol = 1e-7
imf,res,u_hat,omega=VMD(data, alpha, tau, K, DC, init, tol)
3.3 采用BWO优化VMD
最优的k和alpha为5和4
t:1 ,best fit=2.7628 ,best pop= [2, 108]
t:2 ,best fit=2.7628 ,best pop= [2, 108]
t:3 ,best fit=2.7538 ,best pop= [4, 51]
t:4 ,best fit=2.7538 ,best pop= [4, 51]
t:5 ,best fit=2.7441 ,best pop= [2, 20]
t:6 ,best fit=2.7288 ,best pop= [5, 4]
t:7 ,best fit=2.7288 ,best pop= [5, 4]
t:8 ,best fit=2.7288 ,best pop= [5, 4]
t:9 ,best fit=2.7288 ,best pop= [5, 4]
t:10 ,best fit=2.7288 ,best pop= [5, 4]
4、代码
详细代码见评论区
相关文章
- Python使用tkinter组件Label显示简单数学公式
- 内网渗透之DCOM横向移动
- 以目标为导向的语义交流的共同语言——一个课程学习框架
- python爬虫前奏【成信笔记】
- HTML 5 File API:文件拖放上传功能
- 教你快速创建 Python 虚拟环境
- pyenv 实现Python多版本自由切换
- 用 Python 对 Excel文件进行批量操作
- Python - 接入钉钉机器人
- Python - 抓取 iphone13 pro 线下店供货信息并发送到钉钉机器人,最后设置为定时任务
- crontab - 解决 mac 下通过 crontab 设置了 Python 脚本的定时任务却无法运行
- [源码解析] PyTorch分布式(5) ------ DistributedDataParallel 总述&如何使用
- Python科普系列——类与方法(上篇)
- SAP对STO的交货单执行PGI,报错 -Fld selectn for mvmt type 643 acct 400020 differs
- Spring Boot 实现通用 Auth 认证的 4 种方式
- 盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据
- OushuDB 学习经验分享(三):技术特点
- Java和Python思维方式的不同之处
- Python中日志记录新技能
- 奥比中光Gemini OpenCV—Python使用