基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

👨‍🎓 个人主页: 研学社的博客
💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


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


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

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
2.1 改进鲸鱼算法
2.2 普通 lssvm
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

本文利用最小二乘支持向量机进行分类器建模,改进鲸鱼算法(基于冯洛伊曼拓扑的鲸鱼算法)进行超参数寻优,最后将所提方法用于滚动轴承的故障诊断。

📚2 运行结果

2.1 改进鲸鱼算法

基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)
基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)
基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)
基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)

2.2 普通 lssvm

基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)

部分代码:

%% 本程序用于多种优化算法的对比

% 分别为粒子群 遗传算法 鲸鱼算法 基于冯洛伊曼拓扑的鲸鱼算法

% 运行只需要取消对应算法的注释

% 将不需要的算法加上注释 即‘%’

% 由于运行比较慢 我已经保存了一次vnwoa的结果在trace中

% 未优化的程序在lssvm_putong中

clear

clc

close all

format compact

%% 加载数据

load data_kjade

input=data_kjade;

output=[1*ones(1,100) 2*ones(1,100) 3*ones(1,100) 4*ones(1,100) 5*ones(1,100) 6*ones(1,100) 7*ones(1,100) 8*ones(1,100) 9*ones(1,100) 10*ones(1,100)]';

rand('seed',0)

%% 随机取700为训练集 300为测试集

[m,n]=sort(rand(1,1000));

m=700;

X1=input(n(1:m),:);

y1=output(n(1:m),:);

Xt=input(n(m+1:end),:);

yt=output(n(m+1:end),:);

%%

N=5;

G=10;

% [x,trace]=psoforlssvm(N,G,X1,y1,Xt,yt);%粒子群算法

% [x,trace]=gaforlssvm(N,G,X1,y1,Xt,yt);%遗传算法

[x,trace]=woaforlssvm(N,G,X1,y1,Xt,yt);%鲸鱼算法

% [x,trace]=vnwoaforlssvm(N,G,X1,y1,Xt,yt);%改进鲸鱼算法

load trace

figure

plot(trace)

xlabel('迭代次数')

ylabel('适应度值')

title('适应度曲线')

%%

gam = x(1)

sig2 =x(2)

% 利用寻优得到的最优gam与sig2重新训练lssvm

[yc,codebook,old_codebook] = code(y1,'code_OneVsOne');

%code_OneVsAll

%code_OneVsOne

%code_MOC

model = initlssvm(X1,yc,'c',gam,sig2,'RBF_kernel');

model = trainlssvm(model);

Y = simlssvm(model,X1);

predict_label = code(Y,old_codebook,[],codebook);

fprintf(1,'Accuracy: %2.2f\n',100*sum(predict_label==y1)/length(y1));

figure

stem(y1)

hold on

plot(predict_label,'*')

xlabel('训练集样本编号')

ylabel('输出标签')

title('训练集分类输出')

%%% 测试集准确率

Y = simlssvm(model,Xt);

predict_label = code(Y,old_codebook,[],codebook);

fprintf(1,'Accuracy: %2.2f\n',100*sum(predict_label==yt)/length(yt));

figure

stem(yt)

hold on

plot(predict_label,'*')

xlabel('测试集样本编号')

ylabel('输出标签')

title('测试集分类输出')

%% 普通 lssvm

clear

clc

close all

format compact

addpath LSSVMlab

%% 加载数据

load data_kjade

input=data_kjade;

output=[1*ones(1,100) 2*ones(1,100) 3*ones(1,100) 4*ones(1,100) 5*ones(1,100) 6*ones(1,100) 7*ones(1,100) 8*ones(1,100) 9*ones(1,100) 10*ones(1,100) ]';

rand('seed',0)

%% 随机取700为训练集 300为测试集

[m,n]=sort(rand(1,1000));

m=700;

X1=input(n(1:m),:);

y1=output(n(1:m),:);

Xt=input(n(m+1:end),:);

yt=output(n(m+1:end),:);

%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

gam = 81.6492 ;

sig2 =53.5081;

[yc,codebook,old_codebook] = code(y1,'code_MOC');

model = initlssvm(X1,yc,'c',gam,sig2,'RBF_kernel');

model = trainlssvm(model);

%% 测试集准确率

Y = simlssvm(model,Xt);

predict_label = code(Y,old_codebook,[],codebook);

fprintf(1,'Accuracy: %2.2f\n',100*sum(predict_label==yt)/length(yt));

figure

stem(yt)

hold on

plot(predict_label,'*')

xlabel('测试集样本编号')

ylabel('输出标签')

title('测试集分类输出')

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]张兆坤,杨国华,张佳豪,杨晓伟,张云飞.基于VNWOA-LSSVM变压器故障诊断方法研究[J].电工电气,2022(12):32-36+62.

[2]杨亚红,王海瑞.基于AsyLnCPSO-SVM的滚动轴承故障诊断研究[J].农业装备与车辆工程,2022,60(10):163-166.

[3]左晗玥. 基于参数优化VMD的滚动轴承故障诊断方法研究[D].内蒙古科技大学,2022.DOI:10.27724/d.cnki.gnmgk.2022.000782.文章来源地址https://www.toymoban.com/news/detail-407926.html

🌈4 Matlab代码实现

到了这里,关于基于冯洛伊曼拓扑的鲸鱼算法用于滚动轴承的故障诊断研究(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包