【GRU回归预测】基于matlab粒子群算法优化门控循环单元PSO-GRU神经网络回归预测(多输入单输出)【含Matlab源码 2286期】

news2024/9/25 19:14:47

⛄一、CNN-GRU数据预测

1 理论基础
1.1 CNN算法

负荷序列数据为一维数据,用一维卷积核对数据进行卷积处理,以获取数据的特征。
现设定卷积核的维度为3,移动步长为1,对输入数据进行卷积,以获得特征图图谱,即:
在这里插入图片描述
式中:yj为第j个位置的特征值输出;xj为第j个位置的数据值;uj为第j个位置的卷积核值。

1.2 GRU算法
将经过卷积之后产生的特征序列作为GRU的输入。GRU由LSTM发展而来,LSTM是RNN的变体。RNN网络通过对输入信号的循环保证了信号的持续存在。LSTM是由RNN网络改进而来,在RNN的基础上加入了记忆单元和门机制,有效地解决了长序列训练中存在的梯度消失和梯度爆炸问题。

LSTM用输入门、遗忘门和输出门3个门函数来控制输入值、遗忘值和输出值。GRU网络较LSTM网络有所简化,GRU网络由新门和重置门两个门函数构成,其结构如图1所示。
在这里插入图片描述
图1 GRU的网络结构图
zt为更新门,用来决定上一层隐藏层状态中有多少信息传递到当前的隐藏状态ht中,经过sigmoid函数将结果映射到0~1之间,即:
在这里插入图片描述
rt为重置门,决定上一时刻隐藏层状态有多少信息需要被遗忘,经过sigmoid函数将结果映射到0~1之间,越接近1信息越容易被保留,即:
在这里插入图片描述
确定当前的记忆内容,将重置门rt与ht–1进行Hadamard乘积决定当前的记忆内容中要遗忘多少上一时刻的隐藏层的内容,然后与新的输入数据结合放入tanh激活函数中,即:
在这里插入图片描述
最后确定当前隐藏层保留的信息,通过zt和1–zt确定哪些历史数据和当前数据需要更新,即:
在这里插入图片描述
2 PSO原理
粒子群算法(PSO)是一种群体智能优化算法。该算法最早由Kennedy和Eberhart在1995年提出的。该算法最早来源于对鸟类搜寻食物行为的研究[10]。算法中粒子的速度和位置会发生相应的变化,在每一次迭代过程中,粒子根据自身适应度值调整下次飞行的方向和速度。粒子是有记忆的,每一次迭代都会更新种群的最优解,速度和位置更新公式如式(10)和(11):
在这里插入图片描述

⛄二、部分源代码

%% 清空环境变量
warning off % 关闭报警信息
clear all % 清空变量
clc % 清空命令行
% close all % 关闭开启的图窗

%% 导入数据
% 训练集——190个样本
P_train = xlsread(‘data1’,‘training set’,‘B2:G191’)‘; T_train= xlsread(‘data1’,‘training set’,‘H2:H191’)’;
% 测试集——44个样本
P_test=xlsread(‘data1’,‘test set’,‘B2:G45’)‘;T_test=xlsread(‘data1’,‘test set’,‘H2:H45’)’;
shuru_num = size(P_train ,1); % 输入维度
shuchu_num=1;
N = size(P_test, 2); % 测试集样本数
M = size(P_train, 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);

%% 优化算法
pop = 20; %种群数量
Max_iter = 20; %最大迭代次数
lb = [10 0.001] ; %下边界
ub = [200 0.015]; %上边界
dim = 2; %维度
fobj=@(X)fobj(X,p_train,t_train,p_test,t_test,shuru_num,shuchu_num );
[ Best_score, Best_P,curve] = PSO(pop, Max_iter, lb, ub, dim, fobj);

%% 重新训练
disp([‘最佳光滑因子值为’,num2str(Best_P)])
Best_P(1)=round(Best_P(1));
layers = [ …
sequenceInputLayer(shuru_num)
gruLayer(Best_P(1))
fullyConnectedLayer(shuchu_num)
regressionLayer];
options = trainingOptions(‘adam’, … % 梯度下降
‘MaxEpochs’,50, … % 最大迭代次数
‘GradientThreshold’,1, … % 梯度阈值
‘InitialLearnRate’,Best_P(2));
net = trainNetwork(p_train,t_train,layers,options);
%% 预测
net = resetState(net);% 网络的更新状态可能对分类产生了负面影响。重置网络状态并再次预测序列。
% [~,t_sim1]= predictAndUpdateState(net,p_train);%% 采用最佳方法建立GRU网络
[~,t_sim1]= predictAndUpdateState(net,p_train); %训练集预测
[net,t_sim2]= predictAndUpdateState(net,p_test); %测试集预测

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

%% 均方根误差
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);

%% 适应度曲线
figure
plot(1 : length(curve), curve,‘r-’, ‘LineWidth’, 1.5);
title(‘PSO-GRU’, ‘FontSize’, 13);
xlabel(‘迭代次数’, ‘FontSize’, 10);
ylabel(‘适应度值’, ‘FontSize’, 10);
grid off

⛄三、运行结果

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

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]王超,刘世明.基于PSO-GRU的光伏电站短期功率预测研究[J].工业控制计算机. 2021,34(10)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

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

相关文章

WordCount 案例实操

文章目录WordCount 案例实操一、案例需求二、案例分析三、代码实现1、Map阶段代码WordCount 案例实操 一、案例需求 1、需求:在给定的文本文件中统计输出每一个单词的总次数 2、期望输出数据 atguigu 2 banzhang 1 cls 2 hadoop 1 jiao 1 ss 2 xue 1 二、案例分…

java和springboot开发祭祀小程序扫墓系统代祭小程序

介绍 绿色祭祀小程序,用户微信授权登录后可以发布纪念馆(祭祀名人,祭祀英烈,祭祀个人,可以设置成公开状态或者隐私状态)购买祭祀礼物和留言,用户还可以发布代祭的信息 演示视频 小程序 https:…

计算机毕业设计ssm+vue基本微信小程序的购物商城小程序

项目介绍 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用购物平台小程序也在不断的使用,本文首先分析了购物平台小程序应用程序的需求,从系统开发…

Spark SQL执行计划到RDD全流程记录

目录 0、样例说明 1、解析词义,语义,生成语法树 1.1、概念 1.2、根据样例跟踪Spark代码 2、Unresolved Logical Plan 3、Analyzed Logical Plan 源码 SessionCatalog Analyzer Rule Batch 对比 4、Optimized Logical Plan 5、Physical Plan …

vue3组件基础,组件引用与使用、向子组件传递数据与事件prop、emit

vue3组件基础&#xff0c;组件引用与使用、向子组件传递数据与事件prop、emit 一、组件模板 组成&#xff1a;template(必要)&#xff0c;script&#xff0c;style 例子&#xff1a;模板名称 Hello.vue <template><div class"msgStyle">{{ msg }}</di…

Java项目:ssm校园在线点餐系统源码

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 系统主要分为前台和后台&#xff0c;分为管理员与普通用户两种角色&#xff1b; 前台主要功能有&#xff1a;用户注册、用户登录、我的购物车、…

大学生零基础学编程要多久呢

众所周知现在的程序员都是高薪工作&#xff0c;很多人会通过自学或培训去获得一些编程知识&#xff0c;那“学编程需要什么基础呢&#xff1f;” 编程培训已经成为了很多大学毕业生缓解就业压力的一种方式&#xff0c;毕业之后找一份高薪工作是许多大学生最基本想法&#xff0…

【学习打卡03】可解释机器学习笔记之CAM类激活热力图

可解释机器学习笔记之CAM类激活热力图 文章目录可解释机器学习笔记之CAM类激活热力图CAM介绍CAM算法原理GAP全局平均池化GAP VS GMPCAM算法的缺点及改进CAM可视化同张图&#xff0c;不同类别不同图&#xff0c;同个类别CAM弱监督定位用语义特征编码进行分类CAM各种有意思的应用…

Linux系统中DDR3硬件初始化实验

大家好&#xff0c;我是ST。 今天的话&#xff0c;主要和大家聊一聊&#xff0c;如何使用Cortex-A芯片自带的RAM&#xff0c;很多时候要运行Linux的话是完全不够用的&#xff0c;必须要外接一片RAM芯片&#xff0c;驱动开发板上的DDR3。 目录 第一&#xff1a;何为RAM和ROM …

为什么要学习Python爬虫与数据可视化?

提到Python爬虫与数据可视化&#xff0c;我们都不陌生。因为我们早已身在大数据驱动的时代&#xff0c;数据分析已然成为了一项必备技能。可能有人会问&#xff0c;为什么要学习Python爬虫与数据可视化&#xff1f; 答案是显而易见的&#xff0c;无论是出于时代发展的要求&…

redis之如何支持秒杀场景

写在前面 本文一起看下Redis在秒杀场景中的应用。 1&#xff1a;秒杀都有哪些阶段 redis并非在秒杀的所有阶段都需要使用到&#xff0c;为了更好的了解redis在秒杀场景中的应用&#xff0c;我们先来看下秒杀的不同阶段&#xff0c;基本可以分为秒杀前&#xff0c;秒杀进行时&…

什么是用户增长? (超详细)

一.概况 原因&#xff1a;随着人口红利的衰减&#xff0c;互联网流量红利的马太效应显现&#xff0c;这意味着成本的大幅度增加&#xff0c;企业必须改变过去粗放型的营销和运营方式&#xff0c;用更高效更低成本实现快速增长 定义&#xff1a;通过实验和数据驱动&#xff0c…

5.Linux实用操作

文章目录零、学习目标一、软件安装1、Linux系统的应用商店2、yum命令3、apt命令 - 扩展二、systemctl命令三、软连接四、下载和网络请求1、ping命令2、wget命令3、curl命令五、端口1、概念2、查看端口占用六、进程管理1、概念2、查看进程3、查看指定进程4、关闭进程七、主机状态…

SAP ABAP 开发管理 代码增强标记 位置使用清单(Mark of enhancement)

SAP ABAP 开发管理 代码增强标记 位置使用清单&#xff08;Mark of enhancement&#xff09; 引言&#xff1a; 代码增强标记 &#xff08;Mark of enhancement&#xff09;是我在 ABAP 开发中对增强管理的方法之一&#xff0c;是对 SAP 系统增强管理工具的补充。通过对代码增…

自学Python找不到工作?只要掌握这七大块,月薪15K轻轻松松

1. 开发环境和开发工具 python3.6下载 Download Python sublime Text 3 Sublime Text - Download pycharm下载 PyCharm :: Download Latest Version of PyCharm 2. python语法知识 个人推荐《Python从入门到实践》、《Python编程快速上手》 3. web框架 djangoh中文文档 D…

九、Docker 复杂安装之mysql主从复制

前面我们介绍了Docker 安装单机版mysql,如果没有看可以先看下:https://blog.csdn.net/u011837804/article/details/128315385 本篇学习的前提是懂得mysql主从复制的原理,话不多说,我们开始。 1、下载mysql5.7镜像 涉及命令: 查看本地镜像命令:docker images拉取mysql5…

最近邻 M 点

一 问题描述 在 K 维空间中有很多点&#xff0c;给定一个点&#xff0c;找出最近的 M 个点。点 p 和点 q 之间的距离是连接它们的直线段的长度。 二 输入和输出 1 输入 有多个测试用例。第 1 行包含两个非负整数 n 和 k &#xff0c;分别表示点数和维数&#xff0c;1≤n≤5…

Python: unittest框架

目录 1.0 接口自动化框架设计 2.0 分层设计框架 3.0 接口配置文件 3.1 测试用例数据 4.0 框架执行入口 4.1 测试函数 4.1.1 参数替换 4.1.2 发送请求处理 4.1.3 响应断言 4.1.4 提取全局变量 4.1.5 数据库断言 5.0 工具类 5.1.1 excel文件处理 5.1.2 数…

直呼内行阿里离职带出内网专属“高并发系统设计”学习笔记

前言 我们知道&#xff0c;高并发代表着大流量&#xff0c;高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案&#xff0c;从而抵抗巨大流量的冲击&#xff0c;带给用户更好的使用体验。这些方案好似能操纵流量&#xff0c;让流量更加平稳得被系统中的服务…

python 之 pandas数据处理

目录 一&#xff1a;读取文件 二&#xff1a;查看数据 三&#xff1a;获取数据 四&#xff1a;按标签选择 五&#xff1a;按照位置选择 六&#xff1a;布尔索引 七&#xff1a;缺失值 一&#xff1a;读取文件 read_csv 加载文件 df pd.read_csv("classify.csv&quo…