回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

时间:2022-12-17 13:58:39


 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

????个人主页:Matlab科研工作室

????个人信条:格物致知。

更多Matlab仿真内容点击????

​智能优化算法​​  ​​神经网络预测​​ ​​雷达通信 ​​ ​​无线传感器​

​信号处理​​ ​​图像处理​​ ​​路径规划​​ ​​元胞自动机​​ ​​无人机 ​​ ​​电力系统​

⛄ 内容介绍

为确保锂电池在军用无人机以及新能源汽车使用期间的安全性,需要对其进行全生命周期的健康监测和寿命预测.针对长短期记忆神经网络(long short-term memory, BiLSTM)模型参数较难选取导致所建立的锂电池剩余使用寿命预测方法精度不足问题,提出了一种基于鲸鱼优化算法(whale optimization algorithm, WOA)对BiLSTM的剩余寿命预测模型进行优化.首先,使用WOA算法对BiLSTM的隐含层神经元数量,学习率进行寻优,避免经验选取参数的盲目性;其次,将寻优后的超参数重新赋值给BiLSTM网络,构建与锂电池数据特征更为匹配的预测模型;最后,采用RUL数据集验证算法的有效性.仿真结果表明,所提出的预测模型具有较好的预测效果.

1.1 鲸鱼算法

基本鲸鱼优化算法是由Mirjalili等从座头鲸的捕食行为中,产生灵感,并加以改进,提出的一种新型元启发式算法。数学模型来源于3种捕食行为:环绕式捕食、螺旋气泡网捕食和随机搜索捕食。

1.1环绕式捕食

WOA算法假设当前最佳鲸群个体位置为最接近目标猎物的位置。这种捕食行为的数学表达式为:

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

1.2螺旋气泡网捕食

螺旋气泡网捕食行为简化为收缩和螺旋上升,这两种行为同时进行,算法中以概率为选择阈值,决定采用何种方式进行迭代,数学模型如下:

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

1.3随机搜索捕食

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

 当系数向量的值不在之间,则跳出已经找到的最优个体,重新寻找新的随机个体,其数学模型如下:

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

2 双向长短期记忆网络(Bi-LSTM)

一般来说,经典 LSTM 网络是在一个方向上传输信息,即只能使用过去的信息,而没有未来的信息。Bi-LSTM 模型是在原来的 LSTM 基础上增加了一个反向 LSTM 层,即正向和反向 LSTM 组合形成一个 Bi-LSTM 网络,其结构如图 2.6 所示。正向 LSTM可以提取输入序列过去的数据信息,反向 LSTM 可以提取输入序列未来的数据信息,实现对时间序列的正向和反向 LSTM 的双重训练,进一步提高全局和完整的特征提取能

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

⛄ 部分代码

%% 基于鲸鱼算法优化BiLSTM实现寿命预测

clc;clear all;close all

filenamePredictors = fullfile("train_FD001.txt");

[XTrain,YTrain] = processTurboFanDataTrain(filenamePredictors);

% 删除具有常量值的特征

% 在所有时间步都保持不变的特征可能对训练产生负面影响。找到最小值和最大值相同的数据行,然后删除这些行。

m = min([XTrain{:}],[],2);

M = max([XTrain{:}],[],2);

idxConstant = M == m;

filenamePredictors = fullfile("test_FD001.txt");

filenameResponses = fullfile("RUL_FD001.txt");

[XTest,YTest] = processTurboFanDataTest(filenamePredictors,filenameResponses);

% 使用根据训练数据计算出的 idxConstant 删除具有常量值的特征。使用与训练数据相同的参数来归一化测试预测变量。使用与训练数据相同的阈值对测试响应进行裁剪。

for i = 1:numel(XTest)

    XTest{i}(idxConstant,:) = [];

    XTest{i} = (XTest{i} - mu) ./ sig;

    YTest{i}(YTest{i} > thr) = thr;

end

⛄ 运行结果

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出回归预测编辑

⛄ 参考文献

[1]郝可青, 吕志刚, 邸若海,等. 基于鲸鱼算法优化长短时记忆神经网络的锂电池剩余寿命预测[J]. 科学技术与工程, 2022, 22(29):9.

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料