2024年MathorCup数模竞赛C题问题一二+部分代码分享

news2024/11/30 0:52:38

C题持续更新中

  • 问题一
  • 问题二
  • 代码
    • 混合ARIMA-LSTM模型构建
    • 完整数据与代码
      • 第一问
      • 第二问

问题一

问题一要求对未来30天每天及每小时的货量进行预测。首先,利用混合ARIMA-LSTM模型进行时间序列预测。ARIMA模型擅长捕捉线性特征和趋势,而LSTM模型处理非线性关系和长期依赖。通过结合这两种模型,可以提高预测精度。具体步骤包括:

  1. 建立ARIMA模型,通过差分运算和ARMA模型组合来处理时间序列数据。
  2. 建立LSTM模型,利用其长短期记忆能力处理复杂的时间序列模式。
  3. 结合ARIMA和LSTM模型的预测结果,通过自适应混合算法调整权重,以提高预测准确性。
    在这里插入图片描述
    在这里插入图片描述

问题二

问题二要求在考虑运输线路改变的前提下,对未来30天每天及每小时的货量进行预测。解决方法涉及建立神经网络模型和聚类算法。具体步骤包括:

  1. 利用K-means算法对分拣中心的货量进行聚类,以理解不同类型货物的分布规律。
  2. 建立BP神经网络模型,通过特征选取和网络训练,预测货量变化。
  3. 基于聚类和BP神经网络的预测结果,分析运输线路变化对货量的影响,并通过回归图和折线图直观展示货量变化情况。在这里插入图片描述

代码

混合ARIMA-LSTM模型构建

clc
clear
close all;
load('appendix1.mat') %读入附件1
mape_record = [];
W_record = [];
pre_record = [];
for c=1:size(appendix1,2) % 遍历每一个分拣中心
    data = appendix1{1,c}; %将分拣中心另存出来
    train_num = 5; %用几期的值作为参考来训练权重
    %% 下面是ARIMA计算权重
    [y_train_ARIMA]=ARIMA(data(1:end-train_num,3),train_num); 
    y_ture_ARIMA = data(end-train_num+1:end,3);
    wmape_ARIMA = sum(abs(y_train_ARIMA-y_ture_ARIMA)./y_ture_ARIMA);
    % 下面计算MAPE
    APE_ARIMA = abs(y_ture_ARIMA - y_train_ARIMA) ./ abs(y_ture_ARIMA);  
    MAPE_ARIMA = mean(APE_ARIMA);
    %% 下面是LSTM计算权重
    ref = 30; %参考历史的多少期
    [y_train_LSTM]=LSTM(data(1:end-train_num,3),ref,train_num);
    y_ture_LSTM = data(end-train_num+1:end,3);
    wmape_LSTM = sum(abs(y_train_LSTM-y_ture_LSTM)./y_ture_LSTM);
    % 下面计算MAPE
    APE_LSTM = abs(y_ture_LSTM - y_train_LSTM) ./ abs(y_ture_LSTM);  
    MAPE_LSTM = mean(APE_LSTM);
    %% 下面计算权重
    W_ARIMA = (1/wmape_ARIMA)/((1/wmape_ARIMA)+(1/wmape_LSTM));
    W_LSTM = 1-W_ARIMA;
    W_record(c,1) = data(1,1); %记录id
    W_record(c,2) = W_ARIMA; %记录ARIMAMAPE
    W_record(c,3) = W_LSTM; %记录LSTMMAPE
    %% 下面记录MAPE
    mape_record(c,1) = data(1,1); %记录id
    mape_record(c,2) = MAPE_ARIMA; %记录ARIMAMAPE
    mape_record(c,3) = MAPE_LSTM; %记录LSTMMAPE
    %% 下面正式预测
    pre_step = 30; %预测未来多少期的值
    % ARIMA
    [pre_ARIMA]=ARIMA(data(:,3),pre_step); 
    % LSTM
    [pre_LSTM]=LSTM(data(:,3),ref,pre_step);
    % 混合
    pre = pre_ARIMA*W_ARIMA + pre_LSTM*W_LSTM;
    pre_record(1,c) = data(1,1); %记录id
    pre_record(2:1+pre_step,c) = pre; %记录预测值
end

完整数据与代码

第一问

在这里插入图片描述

第二问

在这里插入图片描述

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

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

相关文章

[stm32]DMA使用

自动重装和M2M(软件trig)不能一起使用,否则会停不下来 void MyDMA_Init(uint32_t AddrA,uint32_t AddrB,uint16_t Size){RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_InitTypeDef DMA_InitStructure;DMA_InitStructure.DMA_PeripheralBaseAddrAddrA;//外…

基于SpringBoot+Vue的校园网上店铺的设计与实现(源码+文档+包运行)

一.系统概述 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统校园店铺商品销售信息管理难度大,容错率…

c++取经之路(其六)——类与对象初始化列表,类的隐式转换,explict,static修饰成员

今天我们来讲一些很散的东西,通过这些很散的东西我们可以使我们之前学的东西更加通透,基本上把这些知识搞定,类与对象的知识基本上就差不多掌握了。 初始化列表: 定义:以一个冒号开始,接着是一个以逗号分…

Python景区票务人脸识别系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Facade 外观

意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一字系统更加容易使用。 结构 其中: Facade知道哪些子系统负责处理请求;将客户的请求代理给适当的子系统对象。 Subsystem classes…

Ai2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Adobe illustrator,常被称为“AI”,是一种应用于出版、多媒体和在线图像的工业标准矢量插画的软件。作为一款非常好的矢量图形处理工具,该软件主要应用于印刷出版、海报书籍排版、专业插画、多…

大数据测试:构建Hadoop和Spark分布式HA运行环境

随着大数据技术的不断发展,Hadoop和Spark已成为处理大规模数据的热门框架。在生产环境中,高可用性(HA)是至关重要的,以确保数据处理和分析任务不受中断。本文将详细介绍如何构建 Hadoop和Spark分布式HA运行环境&#x…

HarmonyOS开发实例:【任务延时调度】

介绍 本示例使用[ohos.WorkSchedulerExtensionAbility] 、[ohos.net.http]、[ohos.notification] 、[ohos.bundle]、[ohos.fileio] 等接口,实现了设置后台任务、下载更新包 、保存更新包、发送通知 、安装更新包实现升级的功能。 效果预览 使用说明 安装本应用之…

30K上岸,转鸿蒙开发之后直接乱杀!!

互联网太卷了,熬过了2023才发现,2024更难熬!只因行业发展多年,人才过度饱和!那前端的出路在哪里?我推荐大家学【华为鸿蒙原生应用开发】新兴行业需求大,各大厂都在高薪抢人,然后前端…

数据的表示和运算—2

1.算术逻辑单元(ALU) 输入信号:A和B为要进行计算的两个操作数。(本质上就是高低电频电信号) 输出信号:输出运算结果 控制信号:由控制单元(CU)发出,解析指令的含义,解析完发出控制信号,M表示做什么运算,M1(逻辑运算) M0(算术运算) S0 ~ S3指明…

Vue3从入门到实战:深度掌握组件通信(下部曲)

5.组件通信方式5-$attrs $attrs的概念: 在Vue中,$attrs 是一个特殊的属性,用于访问父组件向子组件传递的非特定属性。它可以让子组件轻松地获取父组件传递的属性,而无需在子组件中显式声明这些属性。 想象一下你有一个父组件和…

vue3第二十节(新增编译宏defineModel)

为什么会需要使用defineModel() 注意:defineModel() 需要在3.4及以上版本才可使用; 组件之间通讯,通过 props 和 emits 进行通讯,是单向数据流,比如:props是自上而下的(父组件数据修改导致子组件更新&…

别找了,这35份Excel自动排班表真的好用!

别再自己做排班表了,调了半天不好看格式还不对。 看看自己需要的是哪些类型的排班表?是公司值班,还是直播排班,还是考勤汇总,总有一个适合你。 刚整理的35份办公常用的排班表,希望能帮到你! …

[lesson39]逗号操作符的分析

逗号操作符的分析 逗号操作符 逗号操作符(,)可以构成逗号表达式 逗号表达式用于将多个子表达式连接成为一个表达式逗号表达式的值为最后一个子表达式的值逗号表达式中的前N-1个子表达式可以没有返回值逗号表达式按照从左向右的顺序计算每个子表达式的值 重载逗号操作符 在C…

李廉洋:4.17晚间现货黄金,WTI原油美盘晚间操作及策略。

现在是否正在上演货币战,这对外汇和股票交易员意味着什么?在我看来这并不是一场货币战。实际情况是美元强势升值和亚洲货币普遍贬值,这其实是二阶段效应。由于美国通胀较预期更有粘性,经济数据也强于预期,美联储又变的…

monkey大全!可直接运用在项目中的常规monkey命令

测试步骤 adb devices-----了解包名-----adb shell monkey -----p 包名 ----v 运行次数(多个参数的组合形成不同的用例以求最大的覆盖)-----当崩溃或无响应时分析monkey日志 常规monkey命令 (可直接在项目里使用) adb shell m…

【计算机考研】目标学校改考408,报考人数大量减少,第二年能捡漏吗?

关键还是要看往年,最近三年的成绩。如果突然暴跌的话一定要注意第二年是否会弹很厉害。有时候408的学校就是一场博弈论,选择大于努力。 从大部分情况来看,爆冷后第一年回弹还是有限,但是第三年可能会爆热。 然后谈一下备考。 首…

信息系统项目管理师0053:设计和实施(4信息系统管理—4.1管理方法—4.1.3设计和实施)

点击查看专栏目录 文章目录 4.1.3设计和实施1.设计方法2.架构模式4.1.3设计和实施 开展信息系统设计和实施,首先需要将业务需求转换为信息系统架构,信息系统架构为将组织业务战略转换为信息系统的计划提供了蓝图。信息系统是支持组织中信息流动和处理的所有基础,包括硬件、软…

Seaborn:推荐一个好用的Python可视化工具

1. 引言 Seaborn 是建立在 matplotlib 基础上的数据可视化库,并与 Python 中的 pandas 数据结构紧密结合。可视化是 Seaborn 的核心部分,有助于直观的理解数据。 闲话少说,我们直接开始吧! 2. 安装 Seaborn库主要提供以下功能…

论文DOI号相关及在latex中添加DOI跳转

DOI与ISBN, ISSN的不同之处 图书和期刊内容都使用DOI。 与ISBN和ISSN不同的是,ISBN喝ISSN可以识别图书或期刊,DOI可以识别单个章节或单篇文章。 所以,如果要搜寻某本书籍,需要用到的是ISBN号;如果要搜寻某本期刊&…