m基于GA遗传优化BP神经网络的传感器故障诊断matlab仿真

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介: m基于GA遗传优化BP神经网络的传感器故障诊断matlab仿真

1.算法描述

  遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

   其主要步骤如下:

1.初始化

   选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。

   通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

2.选择

  根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

给出目标函数f,则f(bi)称为个体bi的适应度。以

为选中bi为下一代个体的次数。

显然.从式(3—86)可知:

(1)适应度较高的个体,繁殖下一代的数目较多。

(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。

这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。

3.交叉

   对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

f64784012fe0054d44633c7571c2ee6e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

在BP神经网络中,隐含层数量对神经网络的性能有着至关重要的影响,如果隐含层数量过多,会大大增加BP神经网络的内部结构的复杂度,从而降低学习效率,增加训练时间;如果隐含层数量过少,则无法精确获得训练输入数据和输出结果之间的内在规律,增加预测误差。因此,选择合适的隐含层个数具有十分重要的意义。由于隐含层个数的设置没有明确的理论可以计算,通常情况下,采用逐次分析的方法获得,即通过对不同隐含层所对应的神经网络进行预测误差的仿真分析,选择误差最小情况下所对应的隐含层个数。

    学习率,即网络权值得更新速度,当学习率较大的时候,网络权值的更新速度快,当网络稳定性会下降;当学习率较小的时候,网络权值的更新速度慢,网络较为稳定。这里选择BP神经网络的学习率方式参考上一章节隐含层的选择方式,即通过对比不同学习率的网络训练误差,选择性能较优的学习率。

   BP神经网络的初始网络权值对网络训练的效率以及预测性能有着较大的影响,通常情况下,采用随机生成[-1,1]之间的随机数作为BP神经网络的初始权值。     

   利用遗传算法来优化 BP 神经网络,利用它来学习神经网络 的权值,并在自适应遗传算法的基础上改进遗传算 子,根据适应度变化调节交叉率和变异率,并利用遗 传算法的全局搜索能力对BP 神经网络的初始权重进 行自适应调整,最终得到一个优化的 BP 神经网络.

2.仿真效果预览
matlab2022a仿真结果如下:

ab3de4ec03b69dba5c29088d9c4e892d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
7920df547ed4c795912a70b6248f2273_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
eef2bd5990161cf8442b61c26598de0c_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
8d1677ebe447e5d1de769c834d883733_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

fit_best  = [];                     
fit_chrom = [];                       
%最好染色体
[fit_best,ind_best] = min(gts.fitness);
fit_chrom           = gts.chrom(ind_best,:);  
fit_mean            = sum(gts.fitness)/Pop_Size; 
 
Fitness_line        = zeros(1,Max_G);
 
for i=1:Max_G
    i
    if i == 1
       P1s = P1*ones(1,Pop_Size);
       P2s = P2*ones(1,Pop_Size);;
    else
       fmax = max(gts.fitness);
       f_   = mean(gts.fitness);
       f    = gts.fitness;
       for j = 1:Pop_Size;
           if f(j) >= f_
              P1s(j) = 0.5*(fmax-f(j))/(fmax-f_);  
           else
              P1s(j) = 0.5;   
           end
       end
       for j = 1:Pop_Size;
           P2s(j) = 1-P1s(j);  
       end 
    end
    
    
    %遗传选择
    gts       = func_select(gts,Pop_Size); 
    fit_mean  = sum(gts.fitness)/Pop_Size;
    %遗传交叉
    gts.chrom = func_cross(P1s,Lroms,gts.chrom,Pop_Size,bound);
    %变异
    gts.chrom = func_mutation(P2s,Lroms,gts.chrom,Pop_Size,i,Max_G,bound);
    %计算适应度 
    for j=1:Pop_Size
        Xx             = gts.chrom(j,:);
        gts.fitness(j) = func_fitness(Xx,Num_In,Num_Hidden,Num_Out,net,train_data,train_aim);   
    end
    [fit_best2,ind_best2] = min(gts.fitness);
    [fit_worst,ind_worst] = max(gts.fitness);
 
    if fit_best > fit_best2
       fit_best  = fit_best2;
       fit_chrom = gts.chrom(ind_best2,:);
    end
    gts.chrom(ind_worst,:) = fit_chrom;
    gts.fitness(ind_worst) = fit_best;
    fit_mean               = sum(gts.fitness)/Pop_Size;
    Fitness_line(i)        = fit_best;
end
Xx=fit_chrom;
 
 
 
%把最优初始阀值权值赋予网络预测
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);
 
 
net.iw{1,1}=reshape(w1,Num_Hidden,Num_In);
net.lw{2,1}=reshape(w2,Num_Out,Num_Hidden);
net.b{1}=reshape(B1,Num_Hidden,1);
net.b{2}=B2;
clear;
close all;
warning off;
addpath(genpath(pwd));
rng('default')
 
 
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)
    i
    for j = 1:20
        rng(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
end
相关文章
|
20天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
156 80
|
8天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
4天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
13天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
16天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
10天前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
253 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
150 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
121 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
8月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度