多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测

news2024/11/20 2:43:23

多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测

目录

    • 多维时序 | MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

1
2
2
4
5
6
7

基本介绍

MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测
1.Matlab实现GA-BiLSTM多变量时间序列预测,遗传算法优化双向长短期记忆神经网络;
遗传算法优化BiLSTM的学习率,隐藏层节点,正则化系数;
2.运行环境为Matlab2018b;
3.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
4.data为数据集,GA_BiLSTMNTS.m为主程序,运行即可,所有文件放在一个文件夹;
5.命令窗口输出R2、MSE、MAE、MAPE和MBE多指标评价。

程序设计

  • 完整程序和数据下载方式1(订阅《智能学习》专栏,同时获取《智能学习》专栏收录程序3份,数据订阅后私信我获取):MATLAB实现GA-BiLSTM遗传算法优化双向长短期记忆网络的多变量时间序列预测
  • 完整程序和数据下载方式2:私信博主。
%%  优化算法参数设置
SearchAgents_no = 5;                   % 种群数量
Max_iteration = 8;                    % 最大迭代次数
dim = 3;                               % 优化参数个数
lb = [1e-4, 10, 1e-4];                 % 参数取值下界(学习率,隐藏层节点,正则化系数)
ub = [1e-2, 30, 1e-1];                 % 参数取值上界(学习率,隐藏层节点,正则化系数)

fitness = @(x)fical(x,p_train,t_train,f_);

[Best_score,Best_pos,Convergence_curve]=GA(SearchAgents_no,Max_iteration,lb ,ub,dim,fitness)

%%  记录最佳参数
Best_pos(1, 2) = round(Best_pos(1, 2));
best_lr = Best_pos(1, 1);
best_hd = Best_pos(1, 2);
best_l2 = Best_pos(1, 3);

%%  建立模型
% ----------------------  修改模型结构时需对应修改fical.m中的模型结构  --------------------------
layers = [
    sequenceInputLayer(f_)            % 输入层
    
    bilstmLayer(best_hd)              % BiLSTM层
    reluLayer                         % Relu激活层
    
    fullyConnectedLayer(outdim)       % 输出回归层
    regressionLayer];
 
%%  参数设置
% ----------------------  修改模型参数时需对应修改fical.m中的模型参数  --------------------------
options = trainingOptions('adam', ...           % Adam 梯度下降算法
         'MaxEpochs', 500, ...                  % 最大训练次数 500
         'InitialLearnRate', best_lr, ...       % 初始学习率 best_lr
         'LearnRateSchedule', 'piecewise', ...  % 学习率下降
         'LearnRateDropFactor', 0.5, ...        % 学习率下降因子 0.1
         'LearnRateDropPeriod', 400, ...        % 经过 400 次训练后 学习率为 best_lr * 0.5
         'Shuffle', 'every-epoch', ...          % 每次训练打乱数据集
         'ValidationPatience', Inf, ...         % 关闭验证
         'L2Regularization', best_l2, ...       % 正则化参数
         'Plots', 'training-progress', ...      % 画出曲线
         'Verbose', false);

%%  训练模型
net = trainNetwork(p_train, t_train, layers, options);

%%  仿真验证
t_sim1 = predict(net, p_train);
t_sim2 = predict(net, p_test );

%%  数据反归一化
T_sim1 = mapminmax('reverse', t_sim1, ps_output);
T_sim2 = mapminmax('reverse', t_sim2, ps_output);
T_sim1=double(T_sim1);
T_sim2=double(T_sim2);

%本函数完成交叉操作
% pcorss                input  : 交叉概率
% lenchrom              input  : 染色体的长度
% chrom                 input  : 染色体群
% sizepop               input  : 种群规模
% ret                   output : 交叉后的染色体

for i=1:sizepop 
    
    % 随机选择两个染色体进行交叉
    pick=rand(1,2);
    while prod(pick)==0
        pick=rand(1,2);
    end
    index=ceil(pick.*sizepop);
    % 交叉概率决定是否进行交叉
    pick=rand;
    while pick==0
        pick=rand;
    end
    if pick>pcross
        continue;
    end

        % 随机选择交叉位置
        pick=rand;
        while pick==0
            pick=rand;
        end
        pos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同
        pick=rand; %交叉开始
        v1=chrom(index(1),pos);
        v2=chrom(index(2),pos);
        chrom(index(1),pos)=pick*v2+(1-pick)*v1;
        chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束
        %检验染色体2的可行性
end

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

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

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

相关文章

宏工科技“全面”发力CIBF,助推电池智造“高效提质”

5月16-18日,第十五届中国国际电池技术展览会(CIBF2023)在深圳盛大举行。宏工科技携电池材料与电池匀浆领域的创新产品和系统解决方案精彩亮相。 据了解,宏工科技在新能源行业的业务涉及电池材料整线产线、电池匀浆、电池回收三个…

边沿检测电路

目录 同步信号的边沿检测 异步信号的边沿检测 所谓的边沿检测(幼教边沿提取),就是检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的思想,实际编程时用的最多的时序电路应该就是边沿检测电路和…

为什么要把一个函数分解成三角函数?(傅利叶级数)

为什么要把一个函数分解成三角函数?(傅利叶级数) 笔记来源:【知识拼图】傅里叶变换从零到一 02集 傅里叶级数从起源到操作,真的很细 把一个函数分解成三角级数体现了化繁为简,一个复杂函数化成许多三角函数的叠加 先回顾一下向量…

CyberLink的颜色修正和调整软件ColorDirector Ultra 11.0版本在win10系统的下载与安装配置教程

目录 前言一、ColorDirector Ultra安装二、使用配置总结 前言 ColorDirector Ultra是由CyberLink公司开发的一款专业的颜色修正和调整工具,可以帮助用户实现对视频中颜色的全方位管理。该软件支持对各种分辨率的视频进行颜色调整,并且可以从各种设备&am…

第四篇、基于Arduino uno,获取土壤湿度传感器的原始值和含水量——结果导向

0、结果 说明:先来看看串口调试助手显示的结果,第一个值是原始的模拟电压值,第二个值是含水量,如果是你想要的,可以接着往下看。 1、外观 说明:虽然土壤湿度传感器形态各异,但是原理和代码都是…

( 数组) 27. 移除元素 ——【Leetcode每日一题】

❓27. 移除元素 难度:简单 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以…

港联证券|“面值退”增多凸显A股市场化进程良性态势

近日,多家陷入“1元退市”危机的公司纷纷发布风险提示公告称,公司股票存在可能因股价低于面值被终止上市的风险。据《经济参考报》记者不完全统计,今年以来,沪深两市已有10余只个股锁定“面值退”,其中多以披星戴帽公司…

Navicat “1205 - Lock wait timeout exceeded; try restarting transaction“

标题标题:解决Navicat数据库操作报错:1205 - Lock wait timeout exceeded; try restarting transaction 导言: 在使用Navicat进行数据库操作时,有时会遇到错误代码为"1205 - Lock wait timeout exceeded; try restarting t…

JavaWeb10(实现结算查看订单订单详情)

目录 一.效果预览 二.实现思路 2.1 实现结算 ①形成订单,并赋值 ②将订单插入到数据表tb_order中,同时将该订单所对应的订单项插入到数据表tb_orderitem中 2.2 查看我的订单 ①底层代码 ②前端绑值 2.3 查看订单详情 ①页面跳转,传…

面试时,公司的什么表现让你一看就知道不靠谱?

01 面试的时候让你根据他们需要做方案的公司一律不靠谱,百分之99是套方案的。 你想如果业务负责人自己都不知道自己要干什么,要么他自己没想清楚,要不他本身是水货!这样的leader怎么爬上来的不用说了吧,而且跟着他学不…

汽车EDI:如何与斯柯达Skoda建立EDI连接?

大众汽车在汽车行业具有全球销量领先、技术创新、质量标杆、多品牌战略和可持续发展方面的显著地位。作为一家具有全球影响力的汽车制造商,大众汽车在塑造汽车行业发展和引领未来出行方向方面扮演着重要角色。 目前我们已帮助汽车行业的客户成功对接大众汽车旗下的…

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路

【MATLAB第35期】基于MATLAB的2023年改进的进化算法优化LSTM时间序列预测模型思路 一、思路 拿第34期的棕熊算法举例: 优化途径: (一)种群初始学习改进 (1)反向学习(OBOA) (2)准反…

Electron 搭建开发环境(Windows 11系统)

目录 前言一、环境说明二、Node.js安装1.官网下载2.安装3.验证安装是否成功4.可能错误 三、开发工具1.开发工具2.VSCode 总结 前言 如果想要使用 Electron 进行桌面应用程序开发,首先需要搭建一个开发环境。对于初学者,这可能是一个绕不开的步骤。作为 …

MSP432学习笔记7:定时器A中断

型号:MSP432P401r 今日得以继续我的MSP432电赛速通学习之路...... 今日学习的是定时器A中断! 目录 基础工程在此下载: 更改后的实验演示工程在此下载: 定时器A基础介绍: Timer_A的特性包括: Timer_A…

组态王使用指南|安装包|快速入门教程|含PLC与组态王网口串口通信|速查命令PDF

组态王安装包及安装方法: 组态王7.5 SP3下载安装授权_组态王安装包_城北许工α的博客-CSDN博客 组态王快速入门教程: 组态王教程(基础入门篇).pdf (book118.com) 组态王与PLC通讯: 网口通讯: 西门子1200与组态王TCP通讯 - 知…

Redis7实战加面试题-基础篇(Redis10大数据类型)

说明 刚看完尚硅谷Redis零基础到进阶,最强redis7教程,阳哥亲自带练(附redis面试题) 趁热打铁,根据脑图和视频,对视频中的知识点进行总结,方便以后复习 Redis入门概述 Remote Dictionary Serv…

国家重点研发计划“新型无液氦脑磁图系统研发”项目启动会顺利召开

2023年5月21日,国家重点研发计划“诊疗装备与生物医用材料”重点专项“新型无液氦脑磁图系统研发”项目启动会在京顺利召开。 该项目由北京未磁科技有限公司牵头,与首都医科大学附属北京天坛医院、北京航空航天大学、机械工业仪器仪表综合技术经济研究所…

九、数据仓库详细介绍(元数据)

元数据的文章,网上已经有很多了,元数据相关概念有限所以重复度很高。 我这里只是做个概念汇集,争取给大家介绍的全面一点。 1. 元数据定义 元数据(Meta-data)是描述数据的数据(The data about data&#xf…

怎么提升品牌知名度,小红书母婴赛道分析

小红书平台自创立之初,便以母婴类内容为特色。今天我们来分享下,怎么提升品牌知名度,小红书母婴赛道分析。 一、妈妈用户仍是主流 我们都知道,小红书平台是一个女性用户为主的平台。根据去年的平台用户调查,可以发现&a…

PID控制逻辑基本介绍

PID控制逻辑基本介绍 1. 源由2. PID基本框图3. PID公式变换4. PID参数释义4.1 比例因子Kp4.2 比例积分Ki4.3 比例微分Kd4.4 Kp/Ki关系4.5 Kp/Kd关系 5. 总结6. 附录6.1 了解 PID 控制,第 1 部分:什么是 PID 控制?6.2 Anti-windup for PID con…