• C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测


    C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

    效果一览

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    基本介绍

    1.Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测(完整源码和数据),优化学习率,BiGRU的神经元个数,滤波器个数, 正则化参数;
    2.输入多个特征,输出单个变量,回归预测,自注意力机制层,运行环境matlab2023及以上;
    3.命令窗口输出R2、MAE、MAPE、 RMSE多指标评价;
    4.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。

    在这里插入图片描述

    程序设计

    • 完整源码和数据获取方式私信博主回复Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测
    %%  清空环境变量
    close all               % 关闭开启的图窗
    clear                   % 清空变量
    clc                     % 清空命令行
    warning off             % 关闭报警信息
    %% 导入数据
    res = xlsread('data.xlsx');
    
    %%  数据分析
    num_size = 0.7;                              % 训练集占数据集比例
    outdim = 1;                                  % 最后一列为输出
    num_samples = size(res, 1);                  % 样本个数
    res = res(randperm(num_samples), :);         % 打乱数据集(不希望打乱时,注释该行)
    num_train_s = round(num_size * num_samples); % 训练集样本个数
    f_ = size(res, 2) - outdim;                  % 输入特征维度
    
    %%  划分训练集和测试集
    P_train = res(1: num_train_s, 1: f_)';
    T_train = res(1: num_train_s, f_ + 1: end)';
    M = size(P_train, 2);
    
    P_test = res(num_train_s + 1: end, 1: f_)';
    T_test = res(num_train_s + 1: end, f_ + 1: end)';
    N = size(P_test, 2);
    
    %%  数据归一化
    [p_train, ps_input] = mapminmax(P_train, 0, 1);
    p_test = mapminmax('apply', P_test, ps_input);
    
    [t_train, ps_output] = mapminmax(T_train, 0, 1);
    t_test = mapminmax('apply', T_test, ps_output);
    
    %%  格式转换
    for i = 1 : M 
        vp_train{i, 1} = p_train(:, i);
        vt_train{i, 1} = t_train(:, i);
    end
    
    for i = 1 : N 
        vp_test{i, 1} = p_test(:, i);
        vt_test{i, 1} = t_test(:, i);
    end
    
    disp('程序运行时间较长,需迭代popsize*maxgen次!可自行调整运行参数')
    
    function [Alpha_score,Alpha_pos,Convergence_curve]=GWO(SearchAgents_no,Max_iteration,lb,ub,dim,fobj)
    
    %%  优化算法初始化
    Alpha_pos = zeros(1, dim);  % 初始化Alpha狼的位置
    Alpha_score = inf;          % 初始化Alpha狼的目标函数值,将其更改为-inf以解决最大化问题
    
    Beta_pos = zeros(1, dim);   % 初始化Beta狼的位置
    Beta_score = inf;           % 初始化Beta狼的目标函数值 ,将其更改为-inf以解决最大化问题
    
    Delta_pos = zeros(1, dim);  % 初始化Delta狼的位置
    Delta_score = inf;          % 初始化Delta狼的目标函数值,将其更改为-inf以解决最大化问题
    
    %%  初始化搜索狼群的位置
    Positions = initialization(SearchAgents_no, dim, ub, lb);
    
    %%  用于记录迭代曲线
    Convergence_curve = zeros(1, Max_iteration);
    %%  循环计数器
    iter = 0;
    
    %%  优化算法主循环
    while iter < Max_iteration           % 对迭代次数循环
        for i = 1 : size(Positions, 1)   % 遍历每个狼
    
            % 返回超出搜索空间边界的搜索狼群
            % 若搜索位置超过了搜索空间,需要重新回到搜索空间
            Flag4ub = Positions(i, :) > ub;
            Flag4lb = Positions(i, :) < lb;
    
            % 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界
            % 若超出最小值,最回答最小值边界
            Positions(i, :) = (Positions(i, :) .* (~(Flag4ub + Flag4lb))) + ub .* Flag4ub + lb .* Flag4lb;   
    
            % 计算适应度函数值
    %         Positions(i, 2) = round(Positions(i, 2));
    %         fitness = fical(Positions(i, :));
              fitness = fobj(Positions(i, :));
            % 更新 Alpha, Beta, Delta
            if fitness < Alpha_score           % 如果目标函数值小于Alpha狼的目标函数值
                Alpha_score = fitness;         % 则将Alpha狼的目标函数值更新为最优目标函数值
                Alpha_pos = Positions(i, :);   % 同时将Alpha狼的位置更新为最优位置
            end
    
            if fitness > Alpha_score && fitness < Beta_score   % 如果目标函数值介于于Alpha狼和Beta狼的目标函数值之间
                Beta_score = fitness;                          % 则将Beta狼的目标函数值更新为最优目标函数值
                Beta_pos = Positions(i, :);                    % 同时更新Beta狼的位置
            end
    
            if fitness > Alpha_score && fitness > Beta_score && fitness < Delta_score  % 如果目标函数值介于于Beta狼和Delta狼的目标函数值之间
                Delta_score = fitness;                                                 % 则将Delta狼的目标函数值更新为最优目标函数值
                Delta_pos = Positions(i, :);                                           % 同时更新Delta狼的位置
            end
    
        end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100

    参考资料

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

  • 相关阅读:
    基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。
    Concanavalin A-N3,叠氮修饰刀豆球蛋白A,azide-Con A
    Java基于Hadoop及微服务架构的前后端分离购物系统(源码)
    ModStartBlog 现代化个人博客系统 v5.2.0 主题开发增强,新增联系方式
    【Android系统蓝牙开发】蓝牙基础知识-蓝牙核心系统架构
    YOLOv5/YOLOv7损失函数改进:SlideLoss创新升级,结合IOU动态调整困难样本的困难程度,提升小目标、遮挡物性能
    WVP+ZLMediaKit+MediaServerUI实现摄像头GB28181推流播放录制---经验避免刚接触视频的小伙伴踩坑
    阿里顶级架构师多年总结的JVM宝典,哪里不会查哪里。
    好细的Vue安装与配置
    HTTPS协议和SOCKS5协议的区别
  • 原文地址:https://blog.csdn.net/kjm13182345320/article/details/137296103