多维时序 | MATLAB实现GA-BP多变量时间序列预测(遗传算法优化BP神经网络)

news2024/12/29 9:52:01

多维时序 | MATLAB实现GA-BP多变量时间序列预测(遗传算法优化BP神经网络)

目录

    • 多维时序 | MATLAB实现GA-BP多变量时间序列预测(遗传算法优化BP神经网络)
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

在这里插入图片描述

在这里插入图片描述

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

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

基本介绍

1.MATLAB实现GA-BP多变量时间序列预测(遗传算法优化BP神经网络);
2.运行环境为Matlab2018b;
3.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测;
4.data为数据集,MainGABPNTS.m为主程序,运行即可,所有文件放在一个文件夹;
5.命令窗口输出R2、MSE、MAE、MAPE和MBE多指标评价;

程序设计

  • 完整程序和数据下载:私信博主回复MATLAB实现GA-BP多变量时间序列预测(遗传算法优化BP神经网络)
%%  设置优化参数
gen = 50;                       % 遗传代数
pop_num = 5;                    % 种群规模
S = size(p_train, 1) * S1 + S1 * size(t_train, 1) + S1 + size(t_train, 1);
                                % 优化参数个数
bounds = ones(S, 1) * [-1, 1];  % 优化变量边界
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  初始化种群
prec = [1e-6, 1];               % epslin 为1e-6, 实数编码
normGeomSelect = 0.09;          % 选择函数的参数
arithXover = 2;                 % 交叉函数的参数
nonUnifMutation = [2 gen 3];    % 变异函数的参数

initPpp = initializega(pop_num, bounds, 'gabpEval', [], prec);  

%%  优化算法
[Bestpop, endPop, bPop, trace] = ga(bounds, 'gabpEval', [], initPpp, [prec, 0], 'maxGenTerm', gen,...
                           'normGeomSelect', normGeomSelect, 'arithXover', arithXover, ...
                           'nonUnifMutation', nonUnifMutation);
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  获取最优参数
[val, W1, B1, W2, B2] = gadecod(Bestpop);
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  参数赋值
net.IW{1, 1} = W1;
net.LW{2, 1} = W2;
net.b{1}     = B1;
net.b{2}     = B2;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  模型训练
net.trainParam.showWindow = 1;       % 打开训练窗口
net = train(net, p_train, t_train);  % 训练模型
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  仿真测试
t_sim1 = sim(net, p_train);
t_sim2 = sim(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(trace(:, 1), 1 ./ trace(:, 2), 'LineWidth', 1.5);
xlabel('迭代次数');
ylabel('适应度值');
string = {'适应度变化曲线'};
title(string)
grid on
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  绘图
figure
plot(1: M, T_train, 'y-', 1: M, T_sim1, 'b-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'训练集预测结果对比'; ['RMSE=' num2str(error1)]};
title(string)
xlim([1, M])
grid
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
figure
plot(1: N, T_test, 'm-', 1: N, T_sim2, 'g-', 'LineWidth', 1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string = {'测试集预测结果对比';['RMSE=' num2str(error2)]};
title(string)
xlim([1, N])
grid
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%%  相关指标计算
%  R2
R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
R2 = 1 - norm(T_test -  T_sim2)^2 / norm(T_test -  mean(T_test ))^2;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
disp(['训练集数据的R2为:', num2str(R1)])
disp(['测试集数据的R2为:', num2str(R2)])
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%  MAE
mae1 = sum(abs(T_sim1 - T_train)) ./ M ;
mae2 = sum(abs(T_sim2 - T_test )) ./ N ;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['测试集数据的MAE为:', num2str(mae2)])
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
%  MBE
mbe1 = sum(T_sim1 - T_train) ./ M ;
mbe2 = sum(T_sim2 - T_test ) ./ N ;
%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
disp(['训练集数据的MBE为:', num2str(mbe1)])
disp(['测试集数据的MBE为:', num2str(mbe2)])
————————————————
版权声明:本文为CSDN博主「机器学习之心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kjm13182345320/article/details/127993418

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

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

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

相关文章

Linux IP地址、主机名

查看ip地址指令 ifconfig 如无法使用ifconfig命令,可以安装 yum -y install net-tools ip address show--显示协议地址

AEM TESTPRO K50 ROADSHOW华南区路演

AEM的测试和测量解决方案是由一个具有四十多年经验的团队为企业和汽车客户的解决方案而设计开发的。AEM的解决方案也是专为用户在整个产品生命周期阶段,包括布线和连接器,无论是制造和实验室环境,在安装或日常网络故障排除方面,其…

Zabbix5.0_介绍_组成架构_以及和prometheus的对比_大数据环境下的监控_网络_软件_设备监控_Zabbix工作笔记001

z 这里Zabbix可以实现采集 存储 展示 报警 但是 zabbix自带的,展示 和报警 没那么好看,我们可以用 grafana进行展示,然后我们用一个叫睿象云的来做告警展示, 会更丰富一点. 可以看到 看一下zabbix的介绍. 对zabbix的介绍,这个zabbix比较适合对服务器进行监控 这个是zabbix的…

Win11系统安装WSA 的简单方式

Win11 WSA 的简单安装方式,无需开启Hyper-V,无需下载安装包。 ​ Win11系统安装WSA 1. 开启虚拟机 注:我只开启了虚拟机平台和Bios的虚拟化,其他没有操作,其他人出现问题可以用通过Hyper-v解决,但我并不…

jvm垃圾回收机制概述

一、jvm内存的分区 JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。 其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收…

boost序列化单例3

源码见文章底部。 class singleton 声明了一个静态引用 static T & m_instance; 这个静态引用是用来干嘛的呢&#xff1f;注意到该文件末尾有如下代码&#xff1a; template<class T> T & singleton< T >::m_instance singleton< T >::get_instan…

第8讲:Vue 对象的生命周期

Vue 实例在创建时有一系列初始化步骤——例如&#xff0c;它需要建立数据观察&#xff0c;编译模板&#xff0c;创 建必要的数据绑定。在此过程中&#xff0c;它也将调用一些生命周期钩子&#xff0c;给自定义逻辑提供运行机 会。 生命周期图示 Vue 对象的生命周期函数 1、bef…

04 Zookeeper集群详解

上一篇&#xff1a;03-Zookeeper客户端使用 Zookeeper 集群模式一共有三种类型的角色 Leader: 处理所有的事务请求&#xff08;写请求&#xff09;&#xff0c;可以处理读请求&#xff0c;集群中只能有一个LeaderFollower&#xff1a;只能处理读请求&#xff0c;同时作为 Le…

TCP连接的三次握手与四次挥手【重点】

TCP的运输连接管理概述 TCP是面向连接的协议&#xff0c;它基于运输连接来传送TCP报文段 TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程 TCP运输连接有以下三个阶段 TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行 TCP建立连接的三次握手&a…

ChatGPT 在机器学习中的应用

办公室里一个机器人坐在人类旁边&#xff0c;Artstation 上的流行趋势&#xff0c;美丽的色彩&#xff0c;4k&#xff0c;充满活力&#xff0c;蓝色和黄色&#xff0c; DreamStudio出品 一、介绍 大家都知道ChatGPT。它在解释机器学习和深度学习概念方面也非常高效&#xff0c;…

springboot 简单配置mongodb多数据源

准备工作&#xff1a; 本地mongodb一个创建两个数据库 student 和 student-two 所需jar包&#xff1a; # springboot基于的版本 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…

csdn未经允许将我的文章设置成vip收费

以前在csdn写了一些笔记&#xff0c;后来不用csdn了&#xff0c;想着留下这些笔记或多或少能帮助其他初学者&#xff0c;就没管它。结果csdn把文章设置成收费了&#xff0c;这个收费不是我本人弄的&#xff0c;是csdn弄的&#xff01;我现在只能把这些文章删除掉了。

ThreeJS-3D教学三:平移缩放+物体沿轨迹运动

我们在项目中会有一些这样的需求&#xff0c;我们可视化一个场景&#xff0c;需要俯视、平移、缩放&#xff0c;方便观察场景中的数据或者模型&#xff0c;之所以把这个案例拿出来 1、这是个很实用的需求&#xff0c;我相信很多人会用到 2、我自己认为在实际案例中我们可以学习…

高手必备!电脑剪辑视频的实用方法

随着数码时代的到来&#xff0c;越来越多的人开始使用电脑剪辑视频。电脑剪辑视频不仅可以为日常生活留下美好回忆&#xff0c;还可以为专业人士提供更多的创作可能性。在本文中&#xff0c;我们将介绍两种电脑剪辑视频的方法&#xff0c;不需要专业技能&#xff0c;只需要一台…

精细高效 智慧公厕为城市公共厕所联网管理装上“智慧中枢”

近年来&#xff0c;随着城市化进程的加速&#xff0c;城市公共设施的更新与改进也成为各地的重要任务之一。而其中&#xff0c;城市公共厕所的建设和管理更是备受关注。为了提高公厕的服务水平和城市形象&#xff0c;各地纷纷采取创新的智能化手段&#xff0c;将公厕与互联网技…

MT41K128M16JT DDR3寻址

MT41K128M16JT该DDR3共有27bit地址&#xff0c;分别如下&#xff1a; 因为DDR3控制器IP与DDR3的数据端口是128bit&#xff0c;而ddr3的物理宽度是16bit&#xff0c;所以ddr3写一次地址增加3。 ddr3控制器地址26–0&#xff0c;能访问到的最高地址是26-323。 ddr3控制器给出的地…

在线客服系统源码/在线对话聊天/多商户在线客服系统源码(可机器人自动聊天/支持app公众号网页H5)

源码介绍 在线客服系统源码/在线对话聊天/多商户在线客服系统源码&#xff0c;它是一款基于Web的在线客服系统&#xff0c;适用于实现企业与客户之间的在线沟通以及咨询服务。该系统支持多商户、无限座席&#xff0c;可以为多个企业提供在线客服服务&#xff0c;不受座席数量的…

跨境电商下半年如何布局,旺季销售策略全盘点,为火爆季节做准备

1.了解跨境电商市场趋势&#xff1a;在下半年旺季之前&#xff0c;了解目标市场的消费趋势、流行产品和购物偏好等因素非常重要。研究和分析市场数据&#xff0c;以及观察竞争对手的动向&#xff0c;可以帮助您更好地制定布局策略。 2.优化产品和供应链&#xff1a;确保您的产…

一文读懂云计算、云原生!

“上云”是一种大趋势。 根据Gartner的数据&#xff0c;未来云计算市场规模仍将保持20%以上的增长速度。到2025年&#xff0c;预计将有80%的企业会将其业务上云。 云的发展为何备受企业青睐&#xff1f;近年来火爆的云原生和云计算的区别到底是什么呢&#xff1f;为什么它如此…

工作流引擎笔记 20230927

现在需要一个管理数据业务流程配置功能。想到了workflow manage system/engine 概念调研 在工作流管理系统中&#xff0c;工作流引擎是核心组件&#xff0c;它负责驱动和执行定义好的工作流程。本文将详细介绍工作流引擎的关键特性、类型、与状态机的差异&#xff0c;以及设计…