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

news2024/10/7 7:34:22

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

目录

    • 时序预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

1
2
3
4

基本介绍

MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测
基于鲸鱼算法优化双向长短期记忆网络(WOA-BiLSTM)的时间序列预测。
优化参数为学习率,隐藏层节点个数,正则化参数,要求2018b及以上版本,matlab代码。
评价指标包括:MAE、MSE、RMSE等,代码质量极高,方便学习和替换数据。

程序设计

  • 完整程序和数据下载方式1(资源处直接下载):MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测
  • 完整程序和数据下载方式2(订阅《LSTM长短期记忆神经网络》专栏,同时可阅读《LSTM长短期记忆神经网络》专栏收录的所有内容,数据订阅后私信我获取):MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测
  • 完整程序和数据下载方式3(订阅《智能学习》专栏,同时获取《智能学习》专栏收录程序6份,数据订阅后私信我获取):MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆网络时间序列预测
% 预设鲸鱼优化算法的参数 
popsize = 5; %种群数量
maxgen = 20;  % WOA最大的迭代次数
dim = 3; % 优化的自变量个数 ,依次为LSTM的第一和第二隐含层节点数,最大训练代数,初始学习率

   %输入输出数据
    L = size(output, 1); %样本总数
    %     testNumber = round(L*0.2); %设置四个样本测试
    testNumber =20; %设置四个样本测试
    trainNumber = L - testNumber; %训练样本数量
 
    % 划分训练集和测试集
    p_train = input(1:trainNumber, :)';
    t_train = output(1:trainNumber, :)';
    % 测试集 
    p_test = input(trainNumber+1:trainNumber+testNumber,:)';
    t_test = output(trainNumber+1:trainNumber+testNumber,:)';
        %% 归一化和元胞数组处理
    [pn_train ,ps]= mapminmax(p_train);
    [tn_train, ts] = mapminmax(t_train);
    %测试集的归一化
    pn_test = mapminmax('apply', p_test, ps);
    tn_test = mapminmax('apply', t_test, ts);

     for i = 1:length(t_train)
        P_train{i,1} =  pn_train(:,i);
    end
    for i = 1:length(t_test)
        P_test{i,1} =  pn_test(:,i);
    end

    %% 归一化和元胞数组处理p 4; % 优化的自变量个数 ,依次为LSTM的第一和第二隐含层节点数,最大训练代数,初始学习率
    lb = [1, 1, 0.001]; % 下限
    ub = [10,20, 0.01]; % 上限

    % initialize position vector and score for the leader,初始化位置向量和领导者得分
    Leader_pos=zeros(1,dim);
    Leader_score=inf; %change this to -inf for maximization problems,将此更改为-inf以获得最大化问题,Inf无穷大


    %Initialize the positions of search agents
    Positions=initialization(popsize,dim,ub,lb);%Positions,存放数个个体的多维位置。

    Convergence_curve=zeros(1,maxgen);%Convergence_curve收敛曲线

    t=1;% Loop counter

    % Main loop
    while t<maxgen+1   % 首先  迭代次数的while循环   为2  也就是鲸鱼群体会进化2disp(['current iteration is: ', num2str(t)])
        

        for i=1:size(Positions,1)%对每个个体一个一个检查是否越界  % 种群规模是2  所以嵌套了2次训练

            % Return back the search agents that go beyond the boundaries of
            % the search space,返回超出搜索空间边界的搜索代理
            Flag4ub=Positions(i,:)>ub;
            Flag4lb=Positions(i,:)<lb;
            Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;%超过最大值的设置成最大值,超过最小值的设置成最小值


            % 评估个体适应度,会调用func.m子函数,把个体位置坐标赋给LSTM参数中,执行的训练
            % Calculate objective function for each search agent,目标函数值的计算
            [fitness,net]=func(Positions(i,:),p_train,P_train,P_test, tn_train,ts,t_train,t_test);
            if fitness<Leader_score % Change this to > for maximization problem
                Leader_score=fitness; % Update alpha
                Leader_pos=Positions(i,:);
                net1 = net;
            end

        end
        a=2-t*((2)/maxgen); % a decreases linearly fron 2 to 0 in Eq. (2.3)
        % a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12),有疑问?
        a2=-1+t*((-1)/maxgen);

        % Update the Position of search agents,参数更新
        for i=1:size(Positions,1)
            r1=rand(); % r1 is a random number in [0,1]
            r2=rand(); % r2 is a random number in [0,1]

            A=2*a*r1-a;  % Eq. (2.3) in the paper 
            C=2*r2;      % Eq. (2.4) in the paper

            b=1;               %  parameters in Eq. (2.5)
            l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)

            p = rand();        % p in Eq. (2.6)
            for j=1:size(Positions,2)%对每一个个体地多维度进行循环运算

                if p<0.5%收缩包围机制
                    if abs(A)>=1
                        rand_leader_index = floor(popsize*rand()+1);%floor将 X 的每个元素四舍五入到小于或等于该元素的最接近整数
                        X_rand = Positions(rand_leader_index, :);
                        D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)
                        Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)

                    elseif abs(A)<1
                        D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % Eq. (2.1)
                        Positions(i,j)=Leader_pos(j)-A*D_Leader;      % Eq. (2.2)
                    end

                elseif p>=0.5%螺旋更新位置

                    distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                    % Eq. (2.5)
                    Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);

                end

            end
        end

        Convergence_curve(t)=Leader_score;
        t=t+1;
        disp(t)
    end

    figure;
    plot(Convergence_curve,'b-','LineWidth',1.0)
    grid on
    xlabel('进化代数')
    ylabel('最佳适应度')
    title('WOA优化过程曲线')



参考资料

[1] https://blog.csdn.net/article/details/126072792?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/article/details/126044265?spm=1001.2014.3001.5502
[3] https://blog.csdn.net/article/details/126043107?spm=1001.2014.3001.5502

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端已死还是“娱乐至死”?做个清醒的前端

目录 一、前言 二、为什么会出现“前端已死”的观点&#xff1f; 1、技术变化太快&#xff1a; 2、前端工程化带来的挑战&#xff1a; 3、新技术的崛起&#xff1a; 三、前端该如何提升自己 1、学习新技术&#xff1a; 2、掌握前端工程化&#xff1a; 3、参与社区和开…

远程网关桥接模式实现同一局域网组网管理(Superlink)

远程网关桥接模式配置介绍及示例 功能简述 智联物联远程网关桥接模式&#xff0c;是指电脑侧Superlink远程工具及前端ZP网关通过4G/WAN/WiFi客户端等方式分别接入互联网及后端服务器平台远程服务后&#xff0c;再借助虚拟网卡桥接技术&#xff0c;先由服务器平台下发桥接网络参…

室内定位之5G定位

一、前言 随着5G通信基础设施逐步完善&#xff0c;5G网络的优势一方面在于其具有的更大的带宽和子载波间隔&#xff0c;使得5G室内定位精度提升(3.5GHz频段下定位精度在5米左右&#xff0c;毫米波定位精度可以达到3米或更高)&#xff0c;相对于其他定位技术&#xff0c;已建成…

解决docker启动mysql无法输入中文以及中文不显示或乱码问题

前言 我在使用MySQL时&#xff0c;遇到了两个问题。一是在插入中文数据时&#xff0c;无法输入中文。二是在select的时候&#xff0c;查出来的中文数据是空的&#xff08;因为插入时为空&#xff09;&#xff0c;然后我就使用Navicat连接数据库添加了中文数据&#xff0c;再到…

【MySQL】联合查询子查询以及合并查询的使用

目录 上篇在这里喔~ GROUP BY分组子句与联合查询的使用详解 联合查询步骤 1.自连接 1.查询每位同学的计算机原理和Java的成绩 2.显示所有计算机原理成绩比java成绩高的成绩信息 2.子查询 1.单行子查询 1.查询’许仙‘的同班同学 2.多行子查询 1.查询语文或英语课程的…

综合管廊智慧运维管理平台应用研究

摘要&#xff1a;为提升综合管廊运维管理水平&#xff0c;实现管理的数字化转型&#xff0c;采用综合监测系统、BIMGIS 可视化系统、智能机器人巡检、结构安全监测等技术&#xff0c;搭建实时监控、应急管理、数据分析等多功能为一体的智慧管廊运维管理平 台&#xff0c;为综合…

Python爬虫基础之二

Python爬虫基础包括HTTP协议、HTML、CSS和JavaScript语言基础、requests库的使用、Beautiful Soup库的使用、xpath和正则表达式的使用等。此外&#xff0c;还应该了解反爬虫机制和爬虫的一些常见问题及解决方法。 上一篇文章讲解了有关条件判断语句、循环语句等相关知识&#…

stm32串口中断流程

NVIC简介 内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC) 硬件发生中断后,相关电信号会触发内核跳转中断向量表查找中断函数, 中断向量名查于汇编文件startup_stm32xxx.s文件 从本质上说这里就是数字电路的组合形成的一系列行为&#xff0c;当相关中断的寄存…

一键汇总——高效电脑检索方案

文件检索和分类对于电脑内部的文件检索非常重要&#xff0c;因为它们可以帮助用户快速找到需要的文件。在电脑内部&#xff0c;文件通常被分类存储在不同的分区中&#xff0c;这有助于管理员更好地组织和查找文件。对于分区资源整合&#xff0c;以下是一些建议&#xff1a; 了…

大好河山集团董事长黄国林受邀出席2023中国好公司高峰论坛暨产学研合作峰会

大好河山集团董事长黄国林受邀出席2023中国好公司高峰论坛暨产学研合作峰会 本网消息 2023年4月19日&#xff0c;由中国智慧工程研究会、华夏商邦俱乐部、中国流通研究院共同主办&#xff0c;中国品牌发展网联合主办的“2023中国好公司高峰论坛暨产学研合作峰会”在福州福清举…

应急照明系统在民用建筑的设计应用与产品选型

【摘要】应急照明分为备用照明、安全照明及疏散照明。文章介绍了应急照明系统的设计、灯具选择、灯具布置、配电等要求。并结合实例进行疏散照明的计算&#xff0c;以指导应急照明系统的设计与应用。 【关键词】照度&#xff1b;光通量&#xff1b;消防应急灯具&#xff1b;A型…

【Linux】解决切换用户出现bash-4.2$问题创建普通用户并设置密码、授权

【问题描述】 linux中创建了一个wxh用户&#xff0c;然后使用su命令切换用户后&#xff0c;终端提示符显示成“bash-4.2$”而不是[rootlocalhost wxh]#&#xff0c;导致ll等命令无法执行。 [rootlocalhost xhh]# su wxh bash-4.2$ ll bash: ll: 未找到命令 【原因】 没有在hom…

13种权重的计算方法

权重计算方法有很多种&#xff0c;不同的方法有不同的特点和适用情况。AHP层次分析法和熵值法在权重计算中属于比较常用的方法。除此之外&#xff0c;还有一些与权重计算相关的方法&#xff0c;今天一文总结了13种与权重计算相关的方法&#xff0c;大家可以对比选择使用。 一、…

【001-Java基础练习】-适合初学者的练习

用于巩固java基础知识&#xff0c;初学者多练多敲&#xff0c;熟悉代码&#xff0c;熟悉语法就ok。 练习1、从控制台获取Java、ps、HTML三门课程的成绩&#xff0c;计算总分和平均分&#xff08;平均分保留2位小数&#xff0c;要求四舍五入&#xff09;&#xff0c;输出总分和…

OpenAI最新官方ChatGPT聊天插件接口《插件部署上生产》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(五)(附源码)

Plugins in production 插件部署上生产 前言Rate limits 速率限制Updating your plugin 更新您的插件Plugin termsDomain verification and security 域验证和安全性Defining the plugins root domain 定义插件的根域Manifest validation 清单验证Resolving the API spec 解析A…

【小程序】input输入双向数据绑定

小程序中&#xff0c;input标签中的数据为单向绑定&#xff1a; <inputtype"number"bindinput"inputRealmoney"value"{{ amount }}"placeholder"请输入金额" />如上代码&#xff0c;我们绑定了输入框的数据amount&#xff0c;并…

前端后端实现防盗链

防盗链&#xff08;Referer Header&#xff09;是指在网页中嵌入的外部资源&#xff08;如图片、音视频等&#xff09;被非法使用或盗链的现象。为了避免这种情况的发生&#xff0c;我们可以通过前端和后端技术来防止盗链。 前端防盗链 前端防盗链可以通过在页面中添加 JavaSc…

在f1tenth仿真中如何实现更快速的跑圈-曲线分析篇

本文使用蓝桥云课&#xff0c;即开即用&#xff0c;如果配置第三方课程资源&#xff0c;通常也在10分钟内完成。 效果如下&#xff1a; 全部参考资料如下&#xff1a; 蓝桥ROS之f1tenth案例学习与调试&#xff08;失败&#xff09; 蓝桥ROS之f1tenth案例学习与调试&#xff…

Maven 三种archetype说明合集

Maven 三种archetype说明合集【转载】_maven-archetype-quickstart_太阳神LoveU的博客-CSDN博客 新建Maven project项目时&#xff0c;需要选择archetype。 那么&#xff0c;什么是archetype&#xff1f; archetype的意思就是模板原型的意思&#xff0c;原型是一个Maven项目模…

【ant-design-vue】树形表格数据,实现父子关联选择

ant-design-vue 版本1.7.8 ,2.2.8 这两个版本都是不支持树形表格数据&#xff0c;实现父子关联选择 只能自己写方法来实现父子关联选择 <template><a-card><a-table :columns"columnsA" :data-source"tabData" :customRow"tableClic…