基于GA优化BP神经网络的传感器故障诊断算法matlab仿真
目录
一、理论基础
二、核心程序
三、仿真测试结果
一、理论基础
1.做优化要先明白优化的结果是什么?
使得网络参数配置最优,测试集预测误差最小——适应度函数
2.可以通过改变什么来使得网络结果不同?
一)可以改变网络参数的初始值,再用BP神经网络的反向传播来寻得整个网络参数的最优
二)可以直接遗传算法优化整个网络参数,不引进BP来获得最佳的网络参数设置
三)可以改变参数的初始值,用遗传算法在正向传播里优化出比较好的初始参数,再用反向传播优化参数
主要诊断3种故障,传感器卡死、传感器增益变化、传感器恒偏差
神经网络3层,输入神经元10个,隐层神经元6个,输出神经元3个,为了对比GA 改进BP神经网络检测方法的性能,使用Matlab建立两种方法的检测模型,一种改进后的,一种基本经典的神经网络
遗传算法稍有不同如下:
混合编码方案
二进制编码有操作简单,全局搜索能力强的优点,而实数编码的优点是精度高和效率快等。本文将二进制编码和实数编码进行了结合,发挥了各自的优点,实现了算法的优化。这种混合编码方式使得遗传效率加快、遗传搜索范围加大,同时提高了算法精度。
- 适应度函数选取
遗传算法搜索的目标是使BP神经网络误差平方和最小的权值,而遗传算法的进化方向是向着适应值增加的方向进行,因此,适应误差的倒数为适应度函数。适应值表示为:
- 混合选择算子
本文选择操作分为三步:(1)按适应度进行线性排序,然后随机抽取个个体,对这个个体进行交叉和变异操作;(2)保留父代的最佳个体;(3)将个子代进行交叉变异,然后子代按适应度淘汰父代最差个体。混合选择操作既可以防止算法的局部收敛,又可以保持算法的运算速度,降低了变异算子的破坏力,还能保持种群的多样性。
- 交叉算子
交叉算子能使优良性能遗传下去,因此本文使用的方法是在二进制编码时,使用二点交叉,即随机选择两个交叉点,然后把交叉点之间的染色体进行交换。
二、核心程序
clc;
clear;
close all;
warning off;
addpath 'func_GA\'rng(1);load data.mat
Num_In = size(Train_data,1);
Num_Hidden = 6;
Num_Out = 1;
%构建BP网络
net = newff(Train_data,Train_aim,Num_Hidden);
net = func_newGA(net,Num_In,Num_Hidden,Num_Out,Train_data,Train_aim);
net = train(net,Train_data,Train_aim);
outputs = round(sim(net,awgn(Test_data,0,'measured')));%测试的时候,加入随机干扰%计算整体识别率
disp('整体识别率:');
C0 = 100*length(find(outputs==Test_aim))/length(Test_aim)
disp('第1种故障识别率:');
C1 = 100*length(find(outputs(1:50)==1))/length(Test_aim)*3
disp('第2种故障识别率:');
C2 = 100*length(find(outputs(51:100)==2))/length(Test_aim)*3
disp('第3种故障识别率:');
C3 = 100*length(find(outputs(101:150)==3))/length(Test_aim)*3%测试不同噪声大小下的识别率
SNR = 2:1:16;
for i = 1:length(SNR)ifor j = 1:20rng(j);Test_data2 = awgn(Test_data,SNR(i),'measured');outputs = round(sim(net,Test_data2));C20(i,j) = 100*length(find(outputs==Test_aim))/length(Test_aim);C21(i,j) = 100*length(find(outputs(1:50)==1))/length(Test_aim)*3; C22(i,j) = 100*length(find(outputs(51:100)==2))/length(Test_aim)*3; C23(i,j) = 100*length(find(outputs(101:150)==3))/length(Test_aim)*3; end
endfigure;
plot(SNR,mean(C20,2),'b','linewidth',2);
hold on
plot(SNR,mean(C21,2),'r','linewidth',2);
hold on
plot(SNR,mean(C22,2),'k','linewidth',2);
hold on
plot(SNR,mean(C23,2),'m','linewidth',2);
hold on
xlabel('SNR(dB)');
ylabel('识别率');
grid on
legend('综合识别率','第1种故障识别率','第2种故障识别率','第3种故障识别率');save r2.mat SNR C20 C21 C22 C23
function ERR = fun(Xx,Num_In,Num_Hidden,Num_Out,net,train_data,train_aim)%提取
L1 = 1;
L2 = Num_In*Num_Hidden;
w1 = Xx(L1:L2);L1 = Num_In*Num_Hidden+1;
L2 = Num_In*Num_Hidden+Num_Hidden;
B1 = Xx(L1:L2);L1 = Num_In*Num_Hidden+Num_Hidden+1;
L2 = Num_In*Num_Hidden+Num_Hidden+Num_Hidden*Num_Out;
w2 = Xx(L1:L2);L1 = Num_In*Num_Hidden+Num_Hidden+Num_Hidden*Num_Out+1;
L2 = Num_In*Num_Hidden+Num_Hidden+Num_Hidden*Num_Out+Num_Out;
B2 = Xx(L1:L2);net1= newff(train_data,train_aim,Num_Hidden);
%网络进化参数
net1.trainParam.showWindow = 0;
%网络权值赋值
net1.iw{1,1} = reshape(w1,Num_Hidden,Num_In);
net1.lw{2,1} = reshape(w2,Num_Out,Num_Hidden);
net1.b{1} = reshape(B1,Num_Hidden,1);
net1.b{2} = B2;
%网络训练
net1 = train(net1,train_data,train_aim);
outputs1 = sim(net1,train_data);
ERR1 = sum((outputs1-train_aim).^2);ERR = ERR1;
三、仿真测试结果
A05-38
基于GA优化BP神经网络的传感器故障诊断算法matlab仿真相关推荐
- 基于GA优化RBF神经网络(GA-RBF)数据预测的matlab仿真
目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 遗传算法的基本运算过程如下: (1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0 ...
- m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工 ...
- 基于RBF和BP神经网络的信道估计算法的仿真与分析
使用神经网络进行信道估计构架 整个仿真系统的结构如上所示. 这里,我们主要是通过对导频序列和已知的导频序列进行神经网络训练,得到一个神经网络,对输入的新号进行实时的预测和估计.最后得到所要的接受信号. ...
- 美赛整理之遗传算法优化BP神经网络的齿轮故障诊断问题
遗传算法优化BP神经网络的齿轮故障诊断问题 一.问题的提出 二.问题的分析 三.结果显示 一.问题的提出 二.问题的分析 这里给出了9组15维的向量,我们的目的就是要根据这9组数据来建立一个BP神 ...
- BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)
文章目录 前言 一.遗传算法描述 二.优化思路 三.完整代码 预测结果 前言 首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的 ...
- MAT之GA:GA优化BP神经网络的初始权值、阈值,从而增强BP神经网络的鲁棒性
MAT之GA:GA优化BP神经网络的初始权值.阈值,从而增强BP神经网络的鲁棒性 目录 输出结果 实现代码 输出结果 实现代码 global p global t global R global S1 ...
- gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码
智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 文章目录智能优化算法应用:基于GWO优 ...
- ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)
ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...
- PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码
PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...
最新文章
- java robot类自动截屏
- 2018全国计算机考试报名入口,北京2018年3月全国计算机等级考试报名入口
- epub java虚拟机精讲_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细!
- ASP.NET Core MVC 中的 [Controller] 和 [NonController]
- Linux命令英文全称解释【转载】
- 数据结构实验 6.宗教信仰
- 不安全的文件下载原理
- java jama_java矩阵包jama的简单操作
- AR标记时虚实融合投影仪和相机的手动标定
- 要点初见:用Python进行微观交通模型仿真——基于SUMO的伯克利开源项目Flow Project初探与拓展
- 路由交换的一些常见知识点总结
- matlab中的semilogy,MATLAB 函数Semilogy()
- 国家取消职称英语与计算机,全国职称英语考试取消
- Linux 文件后面带星号
- 2023年,给你5点小建议
- 安卓电子市场_五款安卓工具神器
- 解锁“不可能”:苏门答腊犀牛让我开始重新思考AI
- C++ Primer 学习笔记 第十九章 特殊工具与技术
- 微信公众号开发-(.net)
- android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...
热门文章
- 今年看过的最好的动画片 无敌破坏王
- 无人驾驶汽车的工作原理
- Java面试 一篇就够[大量链接+图文]
- (1)有一函数: 当x<1时,y=x 当1<=x<10时,y=2x-1 当x>=10时,y=3x-11 编写程序输入x,输出y的值
- 运行零币Zcash(ZEC)
- Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)
- 惠州新方舟电子计算机专业学校,2020惠州顶尖的技校及排名榜
- 学Proteus, Multisim, Labview对开发设计有什么帮助?--省钱!
- 数据分析师该这样霸气回应“0.00008的转化也很好”的谬论
- [青少年][scratch]自制积木块讲解