时序预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 时序预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

时间序列流量的预测问题是近年来机器学习的一个热点问题,通过改变长短期记忆网络(LSTM)层数,网络层神经元的个数,网络层之间的连接方式,特殊网络层的应用等网络结构以及优化器和损失函数的选择可以极大地提高预测的精度.本文提出WOA-BiLSTM算法,该算法是在传统LSTM算法上进行改进的单一模型,模型设计的复杂度低,可以提高机器学习的效率.实验结果表明,与传统模型相比,该模型具有较好的泛化能力.

1.1 鲸鱼算法

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

1.1环绕式捕食

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

1.2螺旋气泡网捕食

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

1.3随机搜索捕食

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

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

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


⛄ 部分代码

function [Leader_pos,Leader_score,Convergence_curve,predict_value]=WOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)

%% 初始化

Leader_pos=zeros(1,dim);

Leader_score=inf;

SearchAgents_no=5;

for i=1:SearchAgents_no%随机初始化速度,随机初始化位置

   for j=1:dim

       if j==dim%除了学习率 其他的都是整数

           Positions( i, j ) = (ub(j)-lb(j))*rand+lb(j);

       else

           Positions( i, j ) = round((ub(j)-lb(j))*rand+lb(j));

       end

   end

end


Convergence_curve=zeros(1,Max_iter);

%% 主循环

for t=1:Max_iter

   a=2-t*((2)/Max_iter);

   a2=-1+t*((-1)/Max_iter);

   lambda=3;

   mu=2;

   adapative_p= 1-(1/(lambda+mu)*(lambda*t^lambda+mu*mu^lambda)/(Max_iter^lambda));

   for i=1:size(Positions,1)

       r1=rand();

       r2=rand();

       A=2*a*r1-a;

       C=2*r2;

       b=1;

       l=(a2-1)*rand+1;

       p = rand();

       for j=1:size(Positions,2)

           if p<0.5

               if abs(A)>=1

                   rand_leader_index = floor(SearchAgents_no*rand()+1);

                   X_rand = Positions(rand_leader_index, :);

                   D_X_rand=abs(C*X_rand(j)-Positions(i,j));

                   Positions(i,j)=X_rand(j)-A*D_X_rand;

               elseif abs(A)<1

                   D_Leader=abs(C*Leader_pos(j)-Positions(i,j));

                   Positions(i,j)=Leader_pos(j)-A*D_Leader;

               end

           elseif p>=0.5

               distance2Leader=abs(Leader_pos(j)-Positions(i,j));

               Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);

           end

       end

        Positions(i, : ) = Bounds( Positions(i, : ), lb, ub );%对超过边界的变量进行去除

%         fit=fboj(Positions(i,:));

        [fit,predict_value_LSTM]=fobj(Positions(i,:));

       %  更新

       if fit<Leader_score

           Leader_score=fit;

           Leader_pos=Positions(i,:);

            predict_value=predict_value_LSTM;

       end

   end

   Convergence_curve(t)=Leader_score;

   process(t,:)=Leader_pos;

   disp(['WOA,第',num2str(t),'代,RMSE=',num2str(Leader_score)])

%     t,Leader_score,Leader_pos

end

⛄ 运行结果

⛄ 参考文献

[1] 欧阳红兵, 黄亢, 闫洪举. 基于LSTM神经网络的金融时间序列预测[J]. 中国管理科学, 2020(4):9.

[2] 颜靖华侯苗苗. 基于LSTM网络的盗窃犯罪时间序列预测研究[J]. 现代图书情报技术, 2020, 004(011):84-91.

[3] 胡向阳, 孙宪坤, 尹玲,等. 基于多变量LSTM的GPS坐标时间序列预测模型[J]. 传感器与微系统, 2021, 040(003):40-43.

[4] 郭佳丽, 邢双云, 栾昊,等. 基于改进的LSTM算法的时间序列流量预测[J]. 南京信息工程大学学报, 2021, 013(005):571-575.

[5] 胡向阳, 孙宪坤, 尹玲,等. 基于多变量LSTM的GPS坐标时间序列预测模型[J].  2021.

[6] 詹可, 朱仁传. 基于EMD-LSTM的波高时间序列预测模型.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
8天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
6天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
5天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
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截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
8月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
8月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)