发动机寿命预测基于matlab GA优化BP神经网络航空发动机寿命预测 (多输入单输出)(含优化前的对比)含Matlab源码 2349期
Posted 海神之光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发动机寿命预测基于matlab GA优化BP神经网络航空发动机寿命预测 (多输入单输出)(含优化前的对比)含Matlab源码 2349期相关的知识,希望对你有一定的参考价值。
⛄一、遗传算法优化BP神经网络
1 BP神经网络(back propagation)
BP网络是一种非线性的系统,高度的自适应性是它最为显著的特点。该算法将研究对象的n个样本X=(x1,x2,…,xj,…,xn)作为神经网络的输入层节点,期望结果Y=(y1,y2,…,yj,…,yn)作为相应的输出节点,对权值和阈值进行计算,计算实际结果和预测结果的误差值,见式(1)。适应度函数是衡量误差值是否符合要求的标准,对不满足要求的计算结果,网络将进行误差反向传播,式(2)为隐含层和输出层的修正量,通过反复迭代,若误差达到预期,则模型建立成功。
式中:yi (n)为期望结果;y′i(n)为预测结果;η为学习率;E为隐含层输出值;Wkj为输出层该点节点的输出值;ΔWkj为修正量。
2 遗传算法(genetic algorithm)
遗传算法的基本思路为一个需要优化的种群,在根据适者生存的基础上,逐代(generation)进化,将进化后具有较好的适应度种群留下并遗传到下一代,在此过程中还需要对其进行交叉和变异的操作,使其产生具有更好适应度的新种群。优化过程如图2所示。
图2 遗传算法优化BP神经网络算法流程示意图
2.1 染色体编码
编码规则选用浮点数编码,一方面能够获得更高精度的网络权值和阈值,另一方面还能够获得比之前更广的搜索范围[4],其长度s见式(3)。
s=n1×n2+n2×n3+n2+n3 (3)
式中:n1、n2、n3为输入层、隐含层和输出层神经元的个数。
2.2 适应度函数
在训练BP神经网络的过程中,选取网络的输出和期望的输出y¯(k)为训练样本,y(k)作为训练后产生的输出,将训练后的权值和阈值作为选取的权值和阈值,遗传算法的指标作为优化后算法的指标[5],并计算预测值与实际值的误差平方和,见式(4)。
其中:k为输入输出采样数据的对数,N为网络输出节点数,y¯(k)为第k个节点的期望输出值,y(k)为第k个节点的预测输出值。为了避免除零现象的出现,在这里引入一个趋近于零的值ζ,适应度函数见式(5)。
2.3 选择
设群体大小为n, fi为适应度,此适应度是就种群中的个体i而言的,则i被选择的概率见式(6)。
2.4 交叉
算数交叉的方法普遍被运用在浮点数交叉的个体当中。假设在个体xtA和xtB之间进行算数交叉,运算后产生的新个体[6]见式(7)。
式中:α为区间[0,1]内均匀分布的随机数。
2.5 变异
为了防止早熟现象的出现,在一个小范围内的随机数的基础上,使其在小范围概率上发生基因变异,算法的局部搜索能力在这一步也会被加强。此时,假设种群的初始个体的最大值和最小值分别取xmax和xmin,那么变异后的基因[7]见式(8)。
xk=xmin+β(xmin+xmax) (8)
式中:β为区间[0,1]内均匀分布的随机数。
⛄二、部分源代码
%% 初始化
clear
close all
clc
warning off
%% 读取读取
data=xlsread(‘data.xlsx’,‘Sheet1’,‘A2:E747’); %%使用xlsread函数读取EXCEL中对应范围的数据即可
%输入输出数据
input=data(:,1:end-1); %data的第一列-倒数第二列为特征指标
output=data(:,end); %data的最后面一列为输出的指标值
N=length(output); %全部样本数目
testNum=100; %设定测试样本数目
trainNum=N-testNum; %计算训练样本数目
%% 划分训练集、测试集
input_train = input(1:trainNum,:)‘;
output_train =output(1:trainNum)’;
input_test =input(trainNum+1:trainNum+testNum,:)‘;
output_test =output(trainNum+1:trainNum+testNum)’;
%% 数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax(‘apply’,input_test,inputps);
%% 获取输入层节点、输出层节点个数
inputnum=size(input,2);
outputnum=size(output,2);
disp(‘/’)
disp(‘神经网络结构…’)
disp([‘输入层的节点数为:’,num2str(inputnum)])
disp([‘输出层的节点数为:’,num2str(outputnum)])
disp(’ ')
disp(‘隐含层节点的确定过程…’)
%确定隐含层节点个数
%采用经验公式hiddennum=sqrt(m+n)+a,m为输入层节点个数,n为输出层节点个数,a一般取为1-10之间的整数
MSE=1e+5; %初始化最小误差
for hiddennum=fix(sqrt(inputnum+outputnum))+1:fix(sqrt(inputnum+outputnum))+10
%构建网络
net=newff(inputn,outputn,hiddennum);
% 网络参数
net.trainParam.epochs=1000; % 训练次数
net.trainParam.lr=0.01; % 学习速率
net.trainParam.goal=0.000001; % 训练目标最小误差
% 网络训练
net=train(net,inputn,outputn);
an0=sim(net,inputn); %仿真结果
mse0=mse(outputn,an0); %仿真的均方误差
disp(['隐含层节点数为',num2str(hiddennum),'时,训练集的均方误差为:',num2str(mse0)])
%更新最佳的隐含层节点
if mse0<MSE
MSE=mse0;
hiddennum_best=hiddennum;
end
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]郭利进,乔志忠.基于遗传算法优化BP神经网络的粮食温度预测研究[J].粮食与油脂. 2023,36(01)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
以上是关于发动机寿命预测基于matlab GA优化BP神经网络航空发动机寿命预测 (多输入单输出)(含优化前的对比)含Matlab源码 2349期的主要内容,如果未能解决你的问题,请参考以下文章
粮食温度预测基于matlab GA优化BP神经网络粮食温度预测研(多输入单输出)(含优化前的对比)含Matlab源码 2404期
基于GA优化BP神经网络的传感器故障诊断算法matlab仿真
预测模型基于遗传算法优化BP神经网络房价预测matlab源码
LSTM预测基于matlab鲸鱼算法优化双向长短时记忆BiLSTM航空发动机寿命预测 (多输入单输出)含Matlab源码 2288期