时序预测

2023-11-07

时序预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元时间序列预测

预测效果

1
2
3
4

基本介绍

MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元时间序列预测,运行环境Matlab2020b及以上。优化正则化率、学习率、隐藏层单元数。

模型描述

智能优化算法是受到大自然生物的启发,模拟自然界中的一些事物或生物的行为规律,在解空间内进行全局寻优。近几年新的群智能算法不断涌现,专家学者们通过模拟各种生物,提出了一系列群智能优化算法。这其中薛建凯等于2020年提出的麻雀搜索优化算法(SSA)是一种较新颖的智能优化算法。将麻雀搜索算法与2010年以来提出的蝙蝠、灰狼、蜻蜓、鲸鱼、蝗虫优化算法进行对比,通过单模态和多模态的测试函数检验这几种优化算法的收敛速度,结果证明麻雀搜索算法处理单模态测试函数时,性能表现优越,其最优解和平均解都比其余五种算法要高,且后期收敛速度加快,在处理多模态测试函数时,其收敛速度也远高于其他算法,所以麻雀搜索算法相比其他算法更具有高性能的全局搜索能力。实验结果综合对比来看,2020年提出的麻雀搜索算法各方面的性能都远超其他五种优化算法,较近几年提出的群智能算法而言是一种性能比较优越的算法,其收敛速度,鲁棒性,稳定性都较高。

5
6

程序设计

  • 完整源码和数据私信博主获取或同等价值程序兑换获取。
%% SSA优化参数设置
SearchAgents = 5;     % 种群数量  
Max_iterations = 20 ; % 迭代次数
% 正则化参数、初始学习率、隐藏层单元数
lowerbound = [1e-3 0.001 10 ];%三个参数的下限
upperbound = [1e-1 0.01 100 ];%三个参数的上限
dimension = 3;%数量,即要优化的GRU参数个数
%% SSA优化GRU
%%  参数设置       
ST = 0.8;                    % 预警值
PD = 0.2;                    % 发现者的比列,剩下的是加入者
PDNumber = SearchAgents * PD;         % 发现者数量
SDNumber = SearchAgents - SearchAgents * PD;   % 意识到有危险麻雀数量

%%  判断优化参数个数
if(max(size(upperbound)) == 1)
   upperbound = upperbound .* ones(1, dimension);
   lowerbound = lowerbound .* ones(1, dimension);  
end

%%  种群初始化
pop_lsat = initialization(SearchAgents, dimension, upperbound, lowerbound);
pop_new  = pop_lsat;

%%  计算初始适应度值
fitness = zeros(1, SearchAgents);
for i = 1 : SearchAgents
   fitness(i) =  fun(pop_new(i,:),Train_xNorm,Train_yNorm,Test_xNorm,Test_y,yopt,k);
end

%%  得到全局最优适应度值
[fitness, index]= sort(fitness);
GBestF = fitness(1); 

%%  得到全局最优种群
for i = 1 : SearchAgents
    pop_new(i, :) = pop_lsat(index(i), :);
end

GBestX = pop_new(1, :);
X_new  = pop_new;

%%  优化算法
for i = 1: Max_iterations

   BestF = fitness(1);
   R2 = rand(1);

   for j = 1 : PDNumber
      if(R2 < ST)
          X_new(j, :) = pop_new(j, :) .* exp(-j / (rand(1) * Max_iterations));
      else
          X_new(j, :) = pop_new(j, :) + randn() * ones(1, dimension);
      end     
   end
   
   for j = PDNumber + 1 : SearchAgents
        if(j > (SearchAgents - PDNumber) / 2 + PDNumber)
          X_new(j, :) = randn() .* exp((pop_new(end, :) - pop_new(j, :)) / j^2);
        else
          A = ones(1, dimension);
          for a = 1 : dimension
              if(rand() > 0.5)
                A(a) = -1;
              end
          end
          AA = A' / (A * A');     
          X_new(j, :) = pop_new(1, :) + abs(pop_new(j, :) - pop_new(1, :)) .* AA';
       end
   end
   
   Temp = randperm(SearchAgents);
   SDchooseIndex = Temp(1 : SDNumber); 
   
   for j = 1 : SDNumber
       if(fitness(SDchooseIndex(j)) > BestF)
           X_new(SDchooseIndex(j), :) = pop_new(1, :) + randn() .* abs(pop_new(SDchooseIndex(j), :) - pop_new(1, :));
       elseif(fitness(SDchooseIndex(j)) == BestF)
           K = 2 * rand() -1;
           X_new(SDchooseIndex(j), :) = pop_new(SDchooseIndex(j), :) + K .* (abs(pop_new(SDchooseIndex(j), :) - ...
               pop_new(end, :)) ./ (fitness(SDchooseIndex(j)) - fitness(end) + 10^-8));
       end
   end

%%  边界控制
   for j = 1 : SearchAgents
       for a = 1 : dimension
           if(X_new(j, a) > upperbound(a))
              X_new(j, a) = upperbound(a);
           end
           if(X_new(j, a) < lowerbound(a))
              X_new(j, a) = lowerbound(a);
           end
       end
   end 

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128564123?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

时序预测 的相关文章

  • 将字符串转化为整数

    Java内部实现 param s the code String containing the integer representation to be parsed param radix the radix to be used whi

随机推荐

  • unet测试评估metric脚本

    全部复制的paddleseg的代码转torch import argparse import logging import os import numpy as np import torch import torch nn functio
  • 第十三届蓝桥杯 2022年省赛真题(Java 大学C组)

    蓝桥杯 2022年省赛真题 Java 大学C组 目录 试题 A 排列字母 试题 B 特殊时间 试题 C 纸张尺寸 试题 D 求和 试题 E 矩形拼接 试题 F 选数异或 试题 G GCD 试题 H 青蛙过河 试题 I 因数平方和 试题 J
  • 43 openEuler搭建Apache服务器-配置文件说明和管理模块

    文章目录 43 openEuler搭建Apache服务器 配置文件说明和管理模块 43 1 配置文件说明 43 2 管理模块和SSL 43 2 1 概述 43 2 2 加载模块 43 2 3 SSL介绍 43 openEuler搭建Apac
  • 浅谈(Java)JUC线程池ScheduledThreadPoolExecutor

    博主介绍 程序员悟啦 乌拉 个人仓库 码云 座右铭 懒 对一个人的毁灭性有多大 早起的重要性就多大 免责声明 文章由博主原创 部分文章整理于网络 仅供学习和知识分享 相遇是缘 既然来了就拎着小板凳 坐下来一起唠会儿 如果在文中有所收获 请别
  • 《银行法律法规》二、银行业务——3、结算、代理、托管业务

    第三章 结算 代理及托管业务 第一节 支付结算业务 考点1 国内结算 支付结算 是指结算客户之间由于商品交易 劳务供应等经济活动而产生的债权债务关系 通过银行实现资金转移而完成的结算过程 支付结算是银行的一项基础性服务 支付结算应遵循恪守信
  • 《北京市政务服务领域区块链应用创新蓝皮书(第一版)》正式发布

    为加快推动区块链技术和产业创新发展 北京市政务服务管理局 北京市科委 北京市经济和信息化局组织相关单位抓紧推进政务服务领域区块链应用建设 取得阶段性成果 在此基础上 北京市区块链工作专班专家组编制了 北京市政务服务领域区块链应用创新蓝皮书
  • SDC设计约束——IO延时约束

    原文链接 https juejin cn post 7123461617299226660 约束命令 set input delay clock CLK max 2 0 get ports IN set input delay clock
  • 百度地图+谷歌地图 勾画 行政区块边界

    最近公司做项目 需要用在谷歌地图上勾勒出搜索的行政区块的轮廓 于是在找各种资料 最后好像是有末尾CSDN的网友提供了思路 具体看正文 效果如下 先贴代码 html view plain copy
  • npm更换成淘宝镜像源以及cnpm

    需求由来 由于node安装插件是从国外服务器下载 受网络影响大 速度慢且可能出现异常 所以如果npm的服务器在中国就好了 所以我们乐于分享的淘宝团队 阿里巴巴旗下业务阿里云 干了这事 来自官网 这是一个完整 npmjs org 镜像 你可以
  • EasyPoi实现excel多sheet导入

    EXCEL 导入模板 MAVEN
  • 驱动开发--汇总

    一 驱动相关概念 1 什么是驱动 能够驱使硬件实现特定功能的软件代码 根据驱动程序是否依赖于系统内核将驱动分为裸机驱动和系统驱动 2 逻辑驱动和系统驱动的区别 裸机驱动 编写的驱动代码中没有进行任何内核相关API的调用 开发者自己配置寄存器
  • CMake的安装及使用

    1 安装 windows下安装 首先下载 CMake官网下载地址 里面好多版本 根据自己需要版本进行下载 安装过程中选择了自动添加环境 所以安装完后不用手动添加环境了 但是此时必须得重启电脑 变量才能使用 否则无法对Cmake安装进行测试
  • SpringMVC学习记录

    提示 这只是个人学习时的总结 无指导意义 目录 前置 Spring的基本知识 HelloWorld Step 1 创建Maven项目 2 导入pom依赖 3 加入JavaWeb环境 4 配置Web xml 5 配置springmvc ser
  • Redis安装只看这一篇文章就够了

    目录 一 单机安装Redis 1 1 安装Redis依赖 1 2 上传安装包并解压 1 3 启动 1 3 1 默认启动 1 3 2 指定配置启动 1 3 3 开机自启 二 Redis客户端 2 1 Redis命令行客户端 2 2 图形化桌面
  • AI那些事儿之验证集、shuffle作用

    验证集干啥的 验证集合测试集哪个更重要 一句话 训练集用于 自动地 训练调整模型中网络参数 weights 验证集用于调超参数 epochs轮数 几层比较合适 啥时候过拟合 要不要dropout 要多大程度 测试集测试模型泛化能力 验证集和
  • 多元分类预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元分类预测 Matlab 灰狼算法 GWO 优化xgboost的分类预测模型 多特征输入模型 GWO xgboost分类预测 多特征输入单输出的二分类及多分类模型 程序
  • SQL 时间计算

    select from unixtime unix timestamp to date now yyyy mm dd yyyymmdd 时间差 转化为小时 保留两位小数 select round unix timestamp 2022 02
  • Linux(Ubuntu)下PyQt WebEngineView加载本地HTML文件及显示空白问题

    1 加载本地Html网页 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets import from PyQt5 QtWebEng
  • VC编程unicode字符集下char数组转化为CString

    struct sockaddr in addr int addr len sizeof struct sockaddr in CString strState 记得要用char接收数据 因为网络中传输的数据只是和编码方式无关的字节流 所以接
  • 时序预测

    时序预测 MATLAB实现SSA CNN GRU麻雀算法优化卷积门控循环单元时间序列预测 目录 时序预测 MATLAB实现SSA CNN GRU麻雀算法优化卷积门控循环单元时间序列预测 预测效果 基本介绍 模型描述 程序设计 参考资料 预测