回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测

news2024/11/19 13:37:55

回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测

目录

    • 回归预测 | MATLAB实现基于QPSO-BiGRU、PSO-BiGRU、BiGRU多变量回归预测
      • 效果一览
      • 基本描述
      • 程序设计
      • 参考资料

效果一览

1
2
3
4
5
6
7
8
9

13

12

基本描述

1.Matlab实现QPSO-BiGRU、PSO-BiGRU和BiGRU双向门控循环单元多变量回归预测;
2.输入数据为多输入单输出数据,输入多个特征,输出单个变量;
3.运行环境Matlab2020及以上,依次运行Main1GRUNN、Main2PSOBiGRUNN、Main3QPSOBiGRUNN、Main4CDM即可,其余为函数文件无需运行,所有程序放在一个文件夹,data为数据集,输入多个特征,输出单个变量;
BiGRU(双向门控循环单元模型)与粒子群算法优化后的BiGRU(PSOBiGRU)以及量子粒子群算法优化后的BiGRU(QPSOBiGRU)对比实验,可用于风电、光伏等负荷预测,时序预测,数据为多输入单输出预测,最后一列输出,PSO、QPSO优化超参数为隐含层1节点数、隐含层2节点数、最大迭代次数和学习率。
4.命令窗口输出MAE、MAPE、RMSE和R2;

程序设计

  • 完整程序和数据下载:私信博主。
Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper) 设定适应度函数
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);  %设定边界以及优化函数

N=20;
M=1000;
[xm1,trace1]=pso(N,M,dim,lb,ub,fobj);
[xm2,trace2]=qpso(N,M,dim,lb,ub,fobj);

figure('Position',[269   240   660   290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])

%Draw objective space
subplot(1,2,2);
plot(trace1,'Color','b','linewidth',1.5)
hold on
plot(trace2,'Color','r','linewidth',1.5)
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');

axis tight
grid on
box on
legend('PSO','QPSO')

%% 取对数 更方便看
figure
plot(log10(trace1),'linewidth',1.5)
hold on
plot(log10(trace2),'linewidth',1.5)
legend('PSO','QPSO')
title('PSO VS QPSO')
xlabel('iteration/M')
ylabel('fitness value(log10)')
function func_plot(func_name)

[lb,ub,dim,fobj]=Get_Functions_details(func_name);

switch func_name 
    case 'F1' 
        x=-100:2:100; y=x; %[-100,100]
        
    case 'F2' 
        x=-100:2:100; y=x; %[-10,10]
        
    case 'F3' 
        x=-100:2:100; y=x; %[-100,100]
        
    case 'F4' 
        x=-100:2:100; y=x; %[-100,100]
    case 'F5' 
        x=-200:2:200; y=x; %[-5,5]
    case 'F6' 
        x=-100:2:100; y=x; %[-100,100]
    case 'F7' 
        x=-1:0.03:1;  y=x  %[-1,1]
    case 'F8' 
        x=-500:10:500;y=x; %[-500,500]
    case 'F9' 
        x=-5:0.1:5;   y=x; %[-5,5]    
    case 'F10' 
        x=-20:0.5:20; y=x;%[-500,500]
    case 'F11' 
        x=-500:10:500; y=x;%[-0.5,0.5]
    case 'F12' 
        x=-10:0.1:10; y=x;%[-pi,pi]
    case 'F13' 
        x=-5:0.08:5; y=x;%[-3,1]
    case 'F14' 
        x=-100:2:100; y=x;%[-100,100]
    case 'F15' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F16' 
        x=-1:0.01:1; y=x;%[-5,5]
    case 'F17' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F18' 
        x=-5:0.06:5; y=x;%[-5,5]
    case 'F19' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F20' 
        x=-5:0.1:5; y=x;%[-5,5]        
    case 'F21' 
        x=-5:0.1:5; y=x;%[-5,5]
    case 'F22' 
        x=-5:0.1:5; y=x;%[-5,5]     
    case 'F23' 
        x=-5:0.1:5; y=x;%[-5,5]  
end    

    

L=length(x);
f=[];

for i=1:L
    for j=1:L
        if strcmp(func_name,'F15')==0 && strcmp(func_name,'F19')==0 && strcmp(func_name,'F20')==0 && strcmp(func_name,'F21')==0 && strcmp(func_name,'F22')==0 && strcmp(func_name,'F23')==0
            f(i,j)=fobj([x(i),y(j)]);
        end
        if strcmp(func_name,'F15')==1
            f(i,j)=fobj([x(i),y(j),0,0]);
        end
        if strcmp(func_name,'F19')==1
            f(i,j)=fobj([x(i),y(j),0]);
        end
        if strcmp(func_name,'F20')==1
            f(i,j)=fobj([x(i),y(j),0,0,0,0]);
        end       
        if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 ||strcmp(func_name,'F23')==1
            f(i,j)=fobj([x(i),y(j),0,0]);
        end          
    end
end

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/127596777?spm=1001.2014.3001.5501
[2] https://download.csdn.net/download/kjm13182345320/86830096?spm=1001.2014.3001.5501

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

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

相关文章

Win11转移conda环境——从C盘转移到D盘

原本就是将Anaconda安装到了C盘,结果发现环境他还是默认安装到了C盘,就打算再转移一下 conda版本为 首先找到Win11下面的环境位置 C:\Users\用户名\.conda\envs比如我的就是 C:\Users\Arona\.conda\envs找到D盘安装Anaconda的位置 D:\ProgramData\an…

vue项目系统内路由无权限跳转404改为跳转401

当客户进入新页面无权限时,打开一个新页签,提示客户“sorry! 你没有权限去该页面” 。系统外路由还是跳转404. 解决思路: 这里需要后端提供个接口,传当前路由,如果是系统内路由接口返回true,如果不是返回false. 在路由跳转404的时候进行调接口判断。如果返回true .则跳…

数字化转型|银行业数据中心数字化转型之模型篇 02

导语: 银行业数据中心数字化转型是一项系统性工程,既涉及管理层面转型——包括数字化转型战略、基础架构和技术架构转型、技术创新和知识体系转型,又涉及执行层面转型——包括人员管理(P)、流程管理(P&…

CAD Voronoi 3D三维泰森多边形维诺图插件三维狄利克雷镶嵌(Dirichlet tessellation)

三维Voronoi Voronoi又名泰森多边形或Dirichlet图、维诺图等,三维Voronoi是由连接两邻点直线的垂直平分面组成的连续三维多面体结构。Voronoi在各个学科中应用广泛,如进行区域规划、晶体塑性有限元研究、路径优化、地形简化、多孔结构力学等方面的分析。…

PSD笔记

在实际应用中,一个信号我们不可能获得无穷长时间段内的点,对于数字信号,只能通过采样的方式获得N个离散的点。上文提到,实际信号基本上是随机信号,由于不可能对所有点进行考察,我们也就不可能获得其精确的功…

DETR:End-to-End Object Detection with Transformers笔记

文章目录 End-to-End Object Detection with Transformers摘要本文方法损失函数 代码实现 End-to-End Object Detection with Transformers 摘要 提出了一种将目标检测视为直接集预测问题的新方法。我们的方法简化了检测管道,有效地消除了许多手工设计的组件&…

Win10实时保护老是自动开启怎么办?

Win10实时保护老是自动开启怎么办?使用Win10电脑的用户遇到了实时保护老是自动开启的问题,想知道怎么操作才能解决此问题,这时候用户需要打开电脑的组策略编辑器,然后找到管理模板中的Windows Defender选项,点击关闭Wi…

Intellij IDEA HTTP Request 请求设置Cookie

使用Intellij IDEA 的 HTTP Request 请求中带有Cookie时,需要将 Cookie单词要写成全小写的“cookie”,否则设置的Cookie不会生效。 POST http://localhost:9091/rest/miracle/findList Content-Type: application/json cookie: JSESSIONIDce22a4ed-b185…

Redis基本数据类型

string(字符串):最常见的用户是缓存用户信息,将用户信息结构体使用JSON序列化成字符串,然后将序列化后的字符串塞进Redis来缓存,然后取用户信息的过程会经历一次反序列化的过程。 Redis的字符串是动态字符…

互联网+洗鞋店预约小程序新模式;

互联网洗鞋店预约小程序 1、线上线下业务的结合。 传统的线下业务消费者到店可以向其推介线上的预约到家服务,让线下的消费者成为小程序内的会员,留存客户之后线上可直接触达,减少与消费者的距离,从等待客户到可以主动出击&…

Mac 配置Flutter开发环境遇到的坑

1. flutter doctor 命令无反应; 加sudo 执行; sudo flutter doctor执行完后, 在执行flutter doctor就好使了, 就很神奇;(还不行就重启再试试) 2. 创建项目提示没权限, 照提示命令赋予权限即可;(应该是前面sudo命令引起的, 但没找到其他好办法) 最后一个提示的没权限, 照提示运…

MAC中clion的默认clang的bug

问题描述 用clion运行上述代码info报错 >>报错,这个应该是代码风格的问题,还有部分大括号也会报错 解决方法 怀疑是编译器的问题,把clang改成gcc就好了

2023年7月1日(星期六):骑行小石林

2023年7月1日(星期六):骑行小石林(大青山),早8:30到9:00, 大观公园门囗集合,9:30点准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点: 大观公园门囗集合,…

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第六章

实例5:识别黑白图中的服装图案 Fashion-MNIST是手写数字数据集MNIST的一个替代品,常常被用来测试网络模型,如果在该数据集上效果都不好,其他数据集上的效果可想而知。其单个样本为28X28,6万张训练集,1万张…

【多线程】实现一个线程池

1. 线程池的概念 1.1 什么是线程池? 线程池也是一种线程的使用方式,前面刚开始学习多线程的时候,我们了解到线程太多,会带来 CPU 的调度开销。 以前我们都是一个线程执行一个任务(一个run方法),就好比搬砖,…

【Neo4j】图数据库安装和演示

部署图库 环境Win10Docker Desktop Neo4j 寻找容器,拉取容器,查询容器 docker search neo4j docker pull neo4j docker images参考说明 docker run -d --name neo4j \ //-d表示容器后台运行 --name指定容器名字-p 17474:7474 -p 17687:7687 \ //映射…

Tex表格代码--stat期刊

Tex表格代码1: \begin{center} \begin{table*}[t]% \caption{AAAAAA.\label{Table:BBB}} \centering \begin{tabular*}{500pt}{{\extracolsep\fill}lccD{.}{.}{3}c{\extracolsep\fill}} \toprule &\multicolumn{2}{{}c{}}{\textbf{Spanned heading\tnote{1}}} …

Python(六)函数

函数是一个工具,在输入和输出之间构造一个关系;使用函数方便了代码的复用,避免重新造轮子; 目录 函数的分类 内置函数 自定义函数 函数几种格式对比 无参数,无返回值 有参数,无返回值 无参数&#…

ElasticSearch——地理坐标查询

Elasticsearch 语雀(完整笔记) 所谓的地理坐标查询,其实就是根据经纬度查询,官方文档:Geo queries | Elasticsearch Guide [8.8] | Elastic 常见的使用场景包括: 携程:搜索我附近的酒店滴滴…

Linux服务器Jenkins部署打包Flutter

程序猿日常 记Jenkins部署打包Flutter参考Linux服务器Jenkins部署打包Flutter 安装Flutter环境 Flutter SDK 下载地址 配置服务器Flutter环境变量 创建任务 #!/bin/bash -ilex source /etc/profileflutter clean flutter pub get flutter build apk