m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集

1.算法描述

GRNN建立在非参数核回归基础上,以样本数据为后验条件,通过执行诸如Parzen非参数估计,从观测样本里求得自变量和因变量之间的联结概率密度函数之后,直接计算出因变量对自变量的回归值。GRNN不需要设定模型的形式,但是其隐回归单元的核函数中有光滑因子,它们的取对网络有很大影响,需优化取值。GRNNb论具有良好的函数逼近性能,而且因为其网络训练更为方便,因此,GRNN在信号过程、结构分析、控制决策系统、金融领域、生物工程领域等各个科学和工程领域得到了广泛的应用。


广义回归神经网络的理论基础是非线性核回归分析,非独立变量y相对于独立变量x的回归分析实际上是计算具有最大概率值的y。设随机变量x和y的联合概率密度函数为f (x ,y),已知x的观测值为X,则y相对于X的回归,即条件均值为:



对于未知的概率密度函数f (x, y),可由x和y的观测样本经非参数估计得:



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



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


C-MAPSS Data Set里面有一个read me 的 txt文件。training 是给建模用的。 test 和 rul 是给 建模后验证用的。 每个 test 里面都有100组情况  对应的 rul里面有 100个数值。 rul 里面的数值就是真实值。 建模之后 跑test的数据 应该 给出接近rul的数值


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~最后一列是传感器的测量值。


2.仿真效果预览

matlab2022a仿真结果如下:



3.MATLAB核心程序

%%

%Step1

STR        = 1;%选择数据标号1,2,3,4

Name_Train = ['data\00',num2str(STR),'\','train_FD00',num2str(STR),'.txt'];

Name_RUL   = ['data\00',num2str(STR),'\','RUL_FD00',num2str(STR),'.txt'];

%读取数据

Data_Train = load(Name_Train);

Data_RUL   = load(Name_RUL);


%%

%Step2

%计算每个机器的时间

%得到机器编号

Mach_No = unique(Data_Train(:,1));

for i = 1:length(Mach_No)

Index        = find(Data_Train(:,1) == i);  

%平滑预处理

used         = [7,8,9,12,13,14,16,17,18];

tmps         = Data_Train(Index,used);

[R,C]        = size(tmps);

dout         = zeros(R,C);

for mm = 1:C

dout(:,mm) = [func_smooth(tmps(:,mm),32)]';

end

Mach_Info{i} = dout;

RUL_Train(i) = length(Index);  

end

figure;    

subplot(121);

plot(Data_Train(find(Data_Train(:,1) == 1),7));

title('信号预处理之前');

subplot(122);

plot(Mach_Info{1}(:,1));

title('信号预处理之后');

%%

%Step3

%特征提取

P = [];

T = [];

for i = 1:length(Mach_No)

tmps = Mach_Info{i};

%提取当前矩阵的特征

Y  = func_pca(tmps',1);

Y  = Y';

for j = 1:length(Y)

P = [P;Mach_Info{i}(j,1:6),Y(j,:)];

T = [T;(RUL_Train(i)-j)];

end

end

%%

%Step4

%使用神经网络进行训练

%%归一化处理

%对pt矩阵进行归一化处理                

%GRNN网络训练

net = newgrnn(P',T',5.1);

save train_net.mat net

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容