• 基于GRNN广义回归神经网络的飞机引擎剩余使用周期预测算法的研究


    目录

    一、理论基础

    1.1数据分析

    1.2特征提取

    1.3GRNN

    二、核心程序

    三、仿真测试结果


    一、理论基础

            基于GRNN的广义回归神经网络(Generalized Regression Neural Network)的飞机引擎剩余使用周期预测,是一种基于数据驱动的预测方法。GRNN是一种特殊的神经网络,适用于解决回归问题。GRNN的核心思想是通过学习输入数据与输出数据之间的映射关系,来预测新的输入数据的输出。在飞机引擎剩余使用周期预测中,输入数据可以是引擎的各种性能参数,如转速、温度、压力等,输出数据则是引擎的剩余使用周期。GRNN的结构包括输入层、隐藏层和输出层。其中,输入层接收引擎的各种性能参数,隐藏层通过对输入数据进行非线性变换,提取出数据的特征,输出层则根据隐藏层提取的特征,输出引擎的剩余使用周期。

    1.1数据分析

    1)  unit number

    2)  time, in cycles

    3)  operational setting 1

    4)  operational setting 2

    5)  operational setting 3

    6)  sensor measurement  1

    7)  sensor measurement  2

    ...

    26) sensor measurement  26

    数据第一列是机器的编号,第二列是每个机器的运行的时间序列标号,3~5是对应的设置,6~最后一列是传感器的测量值。

    数据举例:

    1. 1 1 -0.0007 -0.0004 100.0 518.67 641.82 1589.70 1400.60 14.62 21.61 554.36 2388.06 9046.19 1.30 47.47 521.66 2388.02 8138.62 8.4195 0.03 392 2388 100.00 39.06 23.4190
    2. 1 2 0.0019 -0.0003 100.0 518.67 642.15 1591.82 1403.14 14.62 21.61 553.75 2388.04 9044.07 1.30 47.49 522.28 2388.07 8131.49 8.4318 0.03 392 2388 100.00 39.00 23.4236
    3. 1 3 -0.0043 0.0003 100.0 518.67 642.35 1587.99 1404.20 14.62 21.61 554.26 2388.08 9052.94 1.30 47.27 522.42 2388.03 8133.23 8.4178 0.03 390 2388 100.00 38.95 23.3442
    4. 1 4 0.0007 0.0000 100.0 518.67 642.35 1582.79 1401.87 14.62 21.61 554.45 2388.11 9049.48 1.30 47.13 522.86 2388.08 8133.83 8.3682 0.03 392 2388 100.00 38.88 23.3739
    5. 1 5 -0.0019 -0.0002 100.0 518.67 642.37 1582.85 1406.22 14.62 21.61 554.00 2388.06 9055.15 1.30 47.28 522.19 2388.04 8133.80 8.4294 0.03 393 2388 100.00 38.90 23.4044
    6. 1 6 -0.0043 -0.0001 100.0 518.67 642.10 1584.47 1398.37 14.62 21.61 554.67 2388.02 9049.68 1.30 47.16 521.68 2388.03 8132.85 8.4108 0.03 391 2388 100.00 38.98 23.3669
    7. 1 7 0.0010 0.0001 100.0 518.67 642.48 1592.32 1397.77 14.62 21.61 554.34 2388.02 9059.13 1.30 47.36 522.32 2388.03 8132.32 8.3974 0.03 392 2388 100.00 39.10 23.3774
    8. 1 8 -0.0034 0.0003 100.0 518.67 642.56 1582.96 1400.97 14.62 21.61 553.85 2388.00 9040.80 1.30 47.24 522.47 2388.03 8131.07 8.4076 0.03 391 2388 100.00 38.97 23.3106
    9. 1 9 0.0008 0.0001 100.0 518.67 642.12 1590.98 1394.80 14.62 21.61 553.69 2388.05 9046.46 1.30 47.29 521.79 2388.05 8125.69 8.3728 0.03 392 2388 100.00 39.05 23.4066
    10. 1 10 -0.0033 0.0001 100.0 518.67 641.71 1591.24 1400.46 14.62 21.61 553.59 2388.05 9051.70 1.30 47.03 521.79 2388.06 8129.38 8.4286 0.03 393 2388 100.00 38.95 23.4694

    1.2特征提取

            这里,数据的维度较高,不直接使用数据进行训练,需要从数据矩阵中提取有效的特征数据作为训练特征数据。使用PCA降维算法。这个算法比较常用,主要是将高维的矩阵数据转换为低维度的特征数据。

    1.3GRNN

            GRNN建立在非参数核回归基础上,以样本数据为后验条件,通过执行诸如Parzen非参数估计,从观测样本里求得自变量和因变量之间的联结概率密度函数之后,直接计算出因变量对自变量的回归值。GRNN不需要设定模型的形式,但是其隐回归单元的核函数中有光滑因子,它们的取值对网络有很大影响,需优化取值。

            GRNN论具有良好的函数逼近性能,而且因为其网络训练更为方便,因此,GRNN在信号过程、结构分析、控制决策系统、金融领域、生物工程领域等各个科学和工程领域得到了广泛的应用。

            GRNN通常被用来进行函数逼近。它具有一个径向基隐含层和一个特殊的线性层。第一层和第二层的神经元数目都与输入的样本向量对的数目相等。GRNN结构如图所示,整个网络包括四层神经元:输入层、模式层、求和层与输出层。 

            输入层的神经元数目与学习样本中输入向量的维数m相等,每个神经元都是一个简单的分布单元,这些神经元直接将输入变量传递到隐含层中。 

    二、核心程序

    1. clc;
    2. clear;
    3. close all;
    4. warning off;
    5. addpath 'func\'
    6. %%
    7. %Step1
    8. STR = 1;
    9. Name_Test = ['data\00',num2str(STR),'\','test_FD00',num2str(STR),'.txt'];
    10. Name_RUL = ['data\00',num2str(STR),'\','RUL_FD00',num2str(STR),'.txt'];
    11. %读取数据
    12. Data_Test = load(Name_Test);
    13. Data_RUL = load(Name_RUL);
    14. %%
    15. %Step2
    16. %计算每个机器的时间
    17. %得到机器编号
    18. Mach_No = unique(Data_Test(:,1));
    19. ind = 0;
    20. for i = Mach_No(1):Mach_No(end)
    21. ind = ind+1;
    22. Index = find(Data_Test(:,1) == i);
    23. %平滑预处理
    24. used = [7,8,9,12,13,14,16,17,18];
    25. tmps = Data_Test(Index,used);
    26. [R,C] = size(tmps);
    27. dout = zeros(R,C);
    28. for mm = 1:C
    29. dout(:,mm) = [func_smooth(tmps(:,mm),32)]';
    30. end
    31. Mach_Info{ind} = dout;
    32. end
    33. %%
    34. %Step3
    35. %特征提取
    36. P = [];
    37. for i = 1:length(Mach_No)
    38. tmps = Mach_Info{i};
    39. Y = func_pca(tmps',1);
    40. Y = Y';
    41. for j = 1:length(Y)
    42. P = [P;Mach_Info{i}(j,1:6),Y(j,:)];
    43. end
    44. end
    45. %%
    46. %Step4
    47. %使用神经网络进行训练
    48. load train_net.mat
    49. y = sim(net,P');
    50. %计算预测得到的剩余寿命
    51. for i = 1:length(Mach_No)
    52. if i == 1
    53. L1 = 1;
    54. L2 = length(Mach_Info{i});
    55. else
    56. L1 = L2+1;
    57. L2 = L1+length(Mach_Info{i})-1;
    58. end
    59. L = L2 - L1+1;
    60. RULs(i) = abs(round((sum(y(L1:L2))-(1+L)*L/2)/L));
    61. end
    62. figure;
    63. plot(RULs,'b-o');
    64. hold on
    65. plot(Data_RUL,'r-o');
    66. legend('预测结果','真实结果');
    67. disp('误差为:');
    68. mean(abs(RULs'-Data_RUL))

    三、仿真测试结果

     A05-21

  • 相关阅读:
    【uniapp】小程序中input输入框的placeholder-class不生效以及解决办法
    【Linux进阶之路】动静态库
    Jasper 中如何将数据拆成多行并跨行累计
    Mobile App自动化测试技术及实现
    无线WiFi安全渗透与攻防(五) aircrack-ng(亲测有效)、mdk3联合攻击
    VFPBS在IIS下调用EXCEL遇到的Access is denied
    【Vue 本地项目运行https服务】
    动静态库--Linux
    【Spring Boot+Vue.js+JPA+Mysql】实现前后端分离的名片系统(附源码 超详细必看 可作为大作业使用)
    WPF ToggleButton 主题切换动画按钮
  • 原文地址:https://blog.csdn.net/ccsss22/article/details/127387939