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

简介: 时序预测 | 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电子书和数学建模资料


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
8月前
|
存储 传感器 分布式计算
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
针对大尺度L1范数优化问题的MATLAB工具箱推荐与实现
|
8月前
|
机器学习/深度学习 供应链 算法
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
【电动车】基于削峰填谷的电动汽车多目标优化调度策略研究(Matlab代码实现)
291 0
|
8月前
|
机器学习/深度学习 算法 新能源
基于动态非合作博弈的大规模电动汽车实时优化调度电动汽车决策研究(Matlab代码实现)
基于动态非合作博弈的大规模电动汽车实时优化调度电动汽车决策研究(Matlab代码实现)
216 0
|
8月前
|
机器学习/深度学习 存储 人工智能
基于双层共识控制的直流微电网优化调度(Matlab代码实现)
基于双层共识控制的直流微电网优化调度(Matlab代码实现)
229 0
|
8月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
734 0
|
8月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
1001 0
|
8月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
260 0
|
8月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
267 0
|
8月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
360 8
|
8月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
357 8

热门文章

最新文章