目录

一、理论基础

二、核心程序

三、仿真测试结果


一、理论基础

1.做优化要先明白优化的结果是什么?

使得网络参数配置最优,测试集预测误差最小——适应度函数

2.可以通过改变什么来使得网络结果不同?

一)可以改变网络参数的初始值,再用BP神经网络的反向传播来寻得整个网络参数的最优

二)可以直接遗传算法优化整个网络参数,不引进BP来获得最佳的网络参数设置

三)可以改变参数的初始值,用遗传算法在正向传播里优化出比较好的初始参数,再用反向传播优化参数


主要诊断3种故障,传感器卡死、传感器增益变化、传感器恒偏差

神经网络3层,输入神经元10个,隐层神经元6个,输出神经元3个,为了对比GA 改进BP神经网络检测方法的性能,使用Matlab建立两种方法的检测模型,一种改进后的,一种基本经典的神经网络

遗传算法稍有不同如下:

混合编码方案

二进制编码有操作简单,全局搜索能力强的优点,而实数编码的优点是精度高和效率快等。本文将二进制编码和实数编码进行了结合,发挥了各自的优点,实现了算法的优化。这种混合编码方式使得遗传效率加快、遗传搜索范围加大,同时提高了算法精度。

  1. 适应度函数选取

遗传算法搜索的目标是使BP神经网络误差平方和最小的权值,而遗传算法的进化方向是向着适应值增加的方向进行,因此,适应误差的倒数为适应度函数。适应值表示为:

  1. 混合选择算子

本文选择操作分为三步:(1)按适应度进行线性排序,然后随机抽取个个体,对这个个体进行交叉和变异操作;(2)保留父代的最佳个体;(3)将个子代进行交叉变异,然后子代按适应度淘汰父代最差个体。混合选择操作既可以防止算法的局部收敛,又可以保持算法的运算速度,降低了变异算子的破坏力,还能保持种群的多样性。

  1. 交叉算子

交叉算子能使优良性能遗传下去,因此本文使用的方法是在二进制编码时,使用二点交叉,即随机选择两个交叉点,然后把交叉点之间的染色体进行交换。

二、核心程序

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仿真相关推荐

  1. 基于GA优化RBF神经网络(GA-RBF)数据预测的matlab仿真

    目录 1.算法概述 2.仿真效果 3.MATLAB仿真源码 1.算法概述 遗传算法的基本运算过程如下:  (1)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0 ...

  2. m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工 ...

  3. 基于RBF和BP神经网络的信道估计算法的仿真与分析

    使用神经网络进行信道估计构架 整个仿真系统的结构如上所示. 这里,我们主要是通过对导频序列和已知的导频序列进行神经网络训练,得到一个神经网络,对输入的新号进行实时的预测和估计.最后得到所要的接受信号. ...

  4. 美赛整理之遗传算法优化BP神经网络的齿轮故障诊断问题

    遗传算法优化BP神经网络的齿轮故障诊断问题 一.问题的提出 二.问题的分析 三.结果显示 一.问题的提出 二.问题的分析 ​ 这里给出了9组15维的向量,我们的目的就是要根据这9组数据来建立一个BP神 ...

  5. BP神经网络优化 | MATLAB基于遗传算法优化BP神经网络(GA-BP)的预测模型(含完整代码)

    文章目录 前言 一.遗传算法描述 二.优化思路 三.完整代码 预测结果 前言 首先需要安装一下遗传算法工具箱,可参考这篇博客 MATLAB遗传算法工具箱安装包及安装方法(图解)_周杰伦今天喝奶茶了吗的 ...

  6. MAT之GA:GA优化BP神经网络的初始权值、阈值,从而增强BP神经网络的鲁棒性

    MAT之GA:GA优化BP神经网络的初始权值.阈值,从而增强BP神经网络的鲁棒性 目录 输出结果 实现代码 输出结果 实现代码 global p global t global R global S1 ...

  7. gwo算法matlab源代码,智能优化算法应用:基于GWO优化BP神经网络 - 附代码

    智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 - 附代码 智能优化算法应用:基于GWO优化BP神经网络 文章目录智能优化算法应用:基于GWO优 ...

  8. ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)

    ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  9. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

最新文章

  1. java robot类自动截屏
  2. 2018全国计算机考试报名入口,北京2018年3月全国计算机等级考试报名入口
  3. epub java虚拟机精讲_高级 Java 必须掌握:JVM 分析工具和查看命令,超详细!
  4. ASP.NET Core MVC 中的 [Controller] 和 [NonController]
  5. Linux命令英文全称解释【转载】
  6. 数据结构实验 6.宗教信仰
  7. 不安全的文件下载原理
  8. java jama_java矩阵包jama的简单操作
  9. AR标记时虚实融合投影仪和相机的手动标定
  10. 要点初见:用Python进行微观交通模型仿真——基于SUMO的伯克利开源项目Flow Project初探与拓展
  11. 路由交换的一些常见知识点总结
  12. matlab中的semilogy,MATLAB 函数Semilogy()
  13. 国家取消职称英语与计算机,全国职称英语考试取消
  14. Linux 文件后面带星号
  15. 2023年,给你5点小建议
  16. 安卓电子市场_五款安卓工具神器
  17. 解锁“不可能”:苏门答腊犀牛让我开始重新思考AI
  18. C++ Primer 学习笔记 第十九章 特殊工具与技术
  19. 微信公众号开发-(.net)
  20. android 4.4 锁屏密码,安卓手机忘记锁屏密码怎么办?安卓手机绕过锁屏密码的几种解决方法...

热门文章

  1. 今年看过的最好的动画片 无敌破坏王
  2. 无人驾驶汽车的工作原理
  3. Java面试 一篇就够[大量链接+图文]
  4. (1)有一函数: 当x<1时,y=x 当1<=x<10时,y=2x-1 当x>=10时,y=3x-11 编写程序输入x,输出y的值
  5. 运行零币Zcash(ZEC)
  6. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)
  7. 惠州新方舟电子计算机专业学校,2020惠州顶尖的技校及排名榜
  8. 学Proteus, Multisim, Labview对开发设计有什么帮助?--省钱!
  9. 数据分析师该这样霸气回应“0.00008的转化也很好”的谬论
  10. [青少年][scratch]自制积木块讲解