2023五一数学建模B题完整模型代码【原创首发】

已经完成五一数学建模全部内容,大家可以文末查看!!供参考使用!

摘要

随着网络购物的普及和发展,快递行业需求持续增长,对于快递公司来说,准确预测运输需求以及合理规划运输线路和仓库布局变得越来越重要。本文针对某快递公司提供的站点城市间快递运输数据,建立了数学模型,从多个角度对站点城市的重要程度进行综合排序,并预测未来运输需求及最低运输成本。

首先,通过对附件1中2018年4月19日至2019年4月17日的快递运输数据进行处理,本文综合考虑了发货量、收货量、快递数量增长/减少趋势和相关性等因素,建立了评价站点城市重要程度的数学模型。得到重要程度排名前5的站点城市,这一结果可为快递公司规划仓库和运输线路提供参考。

本文利用附件1数据,建立时间序列分析模型,预测了2019年4月18日和4月19日各“发货-收货”站点城市之间的快递运输数量以及当日所有“发货-收货”站点城市之间的总快递运输数量。预测结果在表2中呈现。针对附件2提供的2020年4月28日至2023年4月27日的快递运输数量数据,本文考虑了突发事件对部分城市之间快递线路运输的影响。通过建立预测模型,我们预测了2023年4月28日和4月29日可正常“发货-收货”的站点城市对,并判断了表3中指定站点城市对是否能正常发货。对于能正常发货的站点城市对,我们还给出了对应的快递运输数量。

本文还考虑了铁路运输网络对快递公司运输成本的影响。在已知铁路运输网络及其固定成本和额定装货量的条件下,我们建立了数学模型,求解了成本最低的运输方案。利用附件2和附件3的数据,计算了该公司2023年4月23日至27日每日的最低运输成本,通过研究了快递需求的组成,并将其划分为固定需求和非固定需求两部分。我们利用附件2中的数据,建立了数学模型,按季度估计固定需求常数,并验证了其准确性。同时,给出了非固定需求概率分布估计方法。将指定季度、指定“发货-收货”站点城市对的固定需求常数、非固定需求均值、标准差,以及当季度所有“发货-收货”城市对的固定需求常数总和、非固定需求均值总和、非固定需求标准差总和。

我们通过对现有数据的深入分析和综合运用数学模型,从多个角度解决了快递公司面临的实际问题,包括站点城市重要程度排序、未来运输需求预测、最低运输成本求解以及固定需求和非固定需求的分析。研究结果具有一定的理论指导意义和实际应用价值,可为快递公司提供有力支持,帮助其优化运营策略,降低运输成本,提高服务质量。

关键词:站点城市重要程度;时间序列模型;运输成本;固定需求

一、问题重述

1.1 问题背景

随着互联网技术的快速发展和电子商务的普及,网络购物已经成为人们生活中不可或缺的一部分。这一现象引发了快递服务需求的飞速增长,对我国经济发展产生了深远影响。在这个背景下,准确预测快递运输需求数量以及制定合理的运输策略对于快递公司的仓库布局、存储成本节约和运输线路规划具有重要意义。然而,由于受到诸如突发事件、季节性因素和市场竞争等多种因素的影响,快递需求呈现出较大的波动性,使得预测和规划变得更加困难。因此,本研究旨在通过建立数学模型,分析现有数据,以解决快递公司在运输过程中面临的实际问题。本研究旨在为快递公司提供有力支持,帮助其优化运营策略,降低运输成本,提高服务质量。

1.2 问题重述

1.通过对现有数据中发货量、收货量、快递数量增长/减少趋势等多角度因素的分析,建立数学模型对各站点城市的重要程度进行综合排序。通过这一排序结果,我们将能够了解哪些站点城市对快递公司的运营具有更高的重要性。

2.利用已有数据,建立数学模型来预测未来各“发货-收货”站点城市之间的快递运输数量。这将有助于快递公司制定更为合理的运输计划,从而降低成本并提高运营效率。

3.在受到突发事件影响的情况下,利用数学模型预测可正常发货的站点城市对以及对应的快递运输数量。这将有助于快递公司在面临不确定性因素时,作出更为稳妥的运输决策。

4.结合铁路运输网络和运输成本计算公式,建立数学模型以找出成本最低的运输方案。这将有助于快递公司在运输过程中实现成本最小化,从而提高整体利润水平。

5.从固定需求和非固定需求的角度分析快递需求,并按季度估计固定需求常数和非固定需求概率分布。这将有助于快递公司更好地了解需求变化的规律,为制定合适的运输策略提供依据。

二、问题分析

2.1 问题一思路分析

在问题一中,我们需要通过分析现有数据,从收货量、发货量、快递数量增长/减少趋势等多角度因素,建立数学模型对各站点城市的重要程度进行综合排序。要实现这个目标,首先需要对数据进行整理和清洗,以便于进行有效的分析。接着,我们可以利用统计学方法,如相关性分析、线性回归等,来量化城市间的联系强度。之后,我们可以建立综合评价指标体系,并通过权重法等方法来对各站点城市的重要程度进行排序。通过这种方法,我们可以更好地了解哪些站点城市对快递公司运营具有更高的重要性,并为快递公司提供有价值的参考信息。

2.2 问题二思路分析

我们需要利用已有数据,建立数学模型来预测未来各“发货-收货”站点城市之间的快递运输数量。为了实现这一目标,我们可以使用时间序列分析方法,自回归移动平均模型(ARIMA)来帮助我们分析历史数据中的趋势和周期性变化,从而为预测未来运输数量提供依据。通过对模型的调整和优化,我们可以使预测结果尽可能接近实际情况,为快递公司制定更合理的运输计划提供支持。

2.3 问题三思路分析

问题三要求我们在受到突发事件影响的情况下,利用数学模型预测可正常发货的站点城市对以及对应的快递运输数量。为了实现这一目标,我们需要首先对受影响的城市进行识别和剔除。接着,我们可以使用问题二中建立的数学模型对剩余的正常运输站点进行预测。考虑到突发事件可能会对运输需求产生影响,我们还需要对模型进行调整,以确保预测结果更符合实际情况。通过这种方式,我们可以帮助快递公司在面临不确定性因素时,作出更稳妥的运输决策。

2.4 问题四思路分析

问题四要求我们结合铁路运输网络和运输成本计算公式,建立数学模型以找出成本最低的运输方案。为了实现这一目标,我们可以将该问题转化为最优路径问题。通过使用图论中的算法,我们可以找到在给定条件下(如路径数限制等)的最低成本路径。在此基础上,我们还需要考虑实际装货量与额定装货量之间的关系,并将这一因素纳入模型中。通过对模型的优化和调整,我们可以为快递公司提供在不同情况下的最低运输成本方案,从而降低运营成本并提高运输效率。

2.5 问题五思路分析

问题五要求我们区分固定需求和非固定需求,并分别对这两部分需求进行预测。首先,我们可以通过对历史数据的分析,找到固定需求的下限,即在一定时间范围内的最小需求。接着,我们可以使用聚类分析、线性回归来估计固定需求常数。在固定需求的基础上,我们需要对非固定需求进行预测。这里,我们可以使用概率分布估计方法,来描述非固定需求的变化情况。通过对非固定需求的均值和标准差的估计,我们可以为快递公司提供更加精确的需求预测,从而帮助其更好地应对市场变化。

三、模型假设

针对本文提出的问题,我们做了如下模型假设:

1.假设历史数据足够反映各站点城市的实际情况。

2.假设需求的变化趋势在一定程度上遵循某种规律。

3.假设可正常发货与收货的站点城市对之间的运输需求不受突发事件的影响。

4.假设铁路运输成本仅与固定成本和实际装货量相关。

5.假设实际装货量可以超过额定装货量,但会导致成本增加。

6.假设同一“发货-收货”站点城市对的非固定需求服从某概率分布。

四、符号说明

本文常用符号见下表, 其它符号见文中说明

7a3146ed00124a0aa63d73ef03f5306f.png

 

五、建模与求解

5.1 问题一的建模与求解

5.1.1 数据处预处理

具体代码如下:

import pandas as pd

# 读取数据
data = pd.read_excel("附件1(Attachment 1)2023-51MCM-Problem B.xlsx")

# 检查缺失值
missing_values = data.isnull().sum()
print("缺失值数量:\n", missing_values)

# 如果有缺失值,可以选择删除缺失值所在的行
data = data.dropna()

# 检查数据类型
print("数据类型:\n", data.dtypes)

# 将日期列转换为日期类型(如果需要)
data['日期(年/月/日) (Date Y/M/D)'] = pd.to_datetime(data['日期(年/月/日) (Date Y/M/D)'])

# 检查异常值(例如,使用箱线图)
import matplotlib.pyplot as plt
plt.boxplot(data['快递运输数量(件) (Express delivery quantity (PCS))'])
plt.show()

# 处理异常值(例如,删除异常值所在的行或用合适的值替换)
# 这里我们假设异常值的定义为大于Q3+1.5*IQR或小于Q1-1.5*IQR的值
Q1 = data['快递运输数量(件) (Express delivery quantity (PCS))'].quantile(0.25)
Q3 = data['快递运输数量(件) (Express delivery quantity (PCS))'].quantile(0.75)
IQR = Q3 - Q1

# 删除异常值所在的行
data = data[~((data['快递运输数量(件) (Express delivery quantity (PCS))'] < (Q1 - 1.5 * IQR)) | (data['快递运输数量(件) (Express delivery quantity (PCS))'] > (Q3 + 1.5 * IQR)))]

# 计算每个城市的发货量和收货量
city_send = data.groupby('发货城市 (Delivering city)').sum(numeric_only=True).reset_index()
city_receive = data.groupby('收货城市 (Receiving city)').sum(numeric_only=True).reset_index()

# 将发货量和收货量合并为一个表格
city_stat = city_send.merge(city_receive, left_on='发货城市 (Delivering city)', right_on='收货城市 (Receiving city)', how='outer').fillna(0)

# 计算总运输量
city_stat['总运输量'] = city_stat['快递运输数量(件) (Express delivery quantity (PCS))_x'] + city_stat['快递运输数量(件) (Express delivery quantity (PCS))_y']

# 对城市进行排序
city_stat = city_stat.sort_values(by='总运输量', ascending=False)

# 输出排名前5的城市名称
top_cities = city_stat['发货城市 (Delivering city)'].head(5).tolist()
print("重要程度排名前5的站点城市名称:", top_cities)

 

我们可以得出结果

表1 问题1结果

排序12345
城市名称LGVQR

5.2 问题二的建模与求解

为了预测2019年4月18日和2019年4月19日各“发货-收货”站点城市之间的快递运输数量,以及当日所有“发货-收货”站点城市之间的总快递运输数量,我们可以采用时间序列分析方法。

我们首先从附件1中提取“发货-收货”站点城市对及其对应的快递运输数量,并将其转换为时间序列格式。

使用 ARIMA 模型进行建模。ARIMA模型包含三个部分:自回归模型(AR)、移动平均模型(MA)和差分整合模型(I)。ARIMA模型的参数包括p、d、q,其中p表示AR部分的阶数,d表示差分的阶数,q表示MA部分的阶数。选择合适的p、d、q值是建立ARIMA模型的关键。

我们需要通过自相关图(ACF)和偏自相关图(PACF)选择合适的p、d、q参数,最后,我们根据训练及代码,可以得到表2。

这里表二就不发,为了保护已经拿到结果的同学

部分代码如下:

1.所有“发货-收货”城市之间的总快递运输数量代码:

import pandas as pd
import numpy as np

# 读取数据
data = pd.read_excel('附件1(Attachment 1)2023-51MCM-Problem B.xlsx')

# 提取“发货-收货”站点城市对及其对应的快递运输数量,并将其转换为时间序列格式
ts = pd.Series(data['快递运输数量(件) (Express delivery quantity (PCS))'].values,
               index=pd.to_datetime(data['日期(年/月/日) (Date Y/M/D)'].values))

# 以天为单位重采样,并对缺失值进行插值处理
ts_day = ts.resample('D').sum().interpolate()

# 输出预处理后的数据
print(ts_day.head())

from statsmodels.tsa.arima.model import ARIMA
import warnings

# 关闭警告提示
warnings.filterwarnings("ignore")

# 选择p、d、q值
p, d, q = 2, 1, 2

# 拟合ARIMA模型
model = ARIMA(ts_day, order=(p, d, q)).fit()

# 预测2019年4月18日和2019年4月19日各“发货-收货”站点城市之间快递运输数量
pred = model.predict(start='2019-04-18', end='2019-04-19', dynamic=True)

# 输出预测结果
print(pred)

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

symfonos 2

目录 扫描 SMB SSH 提权 扫描 由于端口80是打开的,我们试图在浏览器中打开IP地址,但在网页上没有找到任何有用的信息。我们还尝试了dirb和其他目录暴力工具,但没有找到任何东西。 SMB 为了进一步枚举,我们使用Enum4Linux工具并找到了一些有用的信息。我们发现了一个名…

ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~

文章目录 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~HuggingFace 简介HuggingChat 登场展望 ChatGPT 平替天花板&#xff1a;HuggingFace 版 ChatGPT 来了&#xff0c;无需魔法无需等待直接起飞 ~ 二话不说上链接 htt…

TryHackMe-Lunizz CTF(boot2root)

Lunizz CTF 端口扫描 循例nmap Web枚举 进80&#xff0c;apache默认页面 gobuster扫一下目录 /hidden一个文件上传点, 图片上传后无权访问/hidden/uploads/ /whatever一个假的命令执行点 /instructions.txt 由 CTF_SCRIPTS_CAVE 制作&#xff08;不是真实的&#xff09;感谢…

Java中几种常量池面试总结

字符串常量池&#xff08;string pool&#xff09; 字符串常量池是JVM为了提升性能和减少内存消耗针对字符串&#xff08;String类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建。 当需要使用字符串时&#xff0c;先去字符串池中查看该字符…

java spring 实现 下载hls(m3u8+ts)实时流并进行合并mp4和压缩

参考连接 链接: java下载m3u8视频&#xff0c;解密并合并ts&#xff08;三&#xff09; 链接: Java 下载 HLS (m3u8) 视频 首先需要了解什么是HLS 链接: HTTP Live Streaming (HLS) - 概念 链接: M3U8是什么 简单理解就是, m3u8文件存放着可供客户端播放TS 片段 简单一点…

新写了的 AOP 日志切面,方便以后直接使用。

前言 最近项目进入联调阶段&#xff0c;服务层的接口需要和协议层进行交互&#xff0c;协议层需要将入参[json字符串]组装成服务层所需的json字符串&#xff0c;组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次&#xff0c;因此就想写一个请求日志切…

二叉搜索树(BST)详解

文章目录 性质二叉搜索树的遍历遍历伪代码实现 二叉搜索树的查找伪代码实现 二叉搜索树最大元素伪代码实现 二叉搜索树最小元素伪代码实现 二叉搜索树的插入伪代码实现 二叉搜索树的删除删除叶子节点&#xff08;对应上面第一种情况&#xff09;&#xff1a;删除度为1的节点&am…

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)

多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出) 目录 多维时序 | MATLAB实现BP神经网络多变量时间序列预测(考虑历史特征的影响,多指标、多图输出)预测效果基本介绍程序设计学习总结参考资料预测效果 基本介绍 MATLAB实现BP神经网…

【Fluent】接着上一次计算的结果继续计算,利用计算过程中得到的物理场(温度、速度、压力等)插值Interpolate文件初始化模型的方法

一、问题背景 因为fluent中支持的初始化无非三种类型。 1、Standard initialization 标准初始化 2、Hybridinitialization 混合初始化 3、FMG initialization FMG初始化 另外&#xff0c;还可以用UDF通过坐标判断的方式予以初始化。 但是这些初始化方法都没办法利用以前计算过…

电子数据取证之宝塔面板

一、宝塔面板介绍 1、官网bt.com&#xff0c;是提升运维效率的服务器管理软件&#xff0c;支持一键WAMP/LAMP/LNMP等100多项服务器管理功能&#xff1b;是跨平台的软件&#xff0c;同时支持Windows和Linux。开源永久免费。提高工作效率&#xff0c;对小白比较友好。 2、怎么看服…

操作系统2(多处理器编程)

一、并发 1.操作系统是最早的并发程序之一 2.并发的基本单位&#xff1a;线程 共享内存的多个执行流 执行流拥有独立的堆栈/寄存器共享全部的内存&#xff08;指针可以互相引用&#xff09; 3.实现原子性 lock(&lk)unlock(&lk) 实现临界区(critical section)之间…

Redis监控步骤get!Google精髓的四大法则直接掌握

Redis也是对外服务&#xff0c;所以Google四个黄金指标同样适用&#xff0c;还从延迟、流量、错误、饱和度分析Redis关键指标。 1 延迟 选择Redis是想得到更快响应速度和更高吞吐量&#xff0c;所以延迟数据对使用Redis的应用程序至关重要。 1.1 如何监控延迟 ① 客户端应用…

C++之深入解析如何实现一个线程池

一、基础概念 当进行并行的任务作业操作时&#xff0c;线程的建立与销毁的开销是&#xff0c;阻碍性能进步的关键&#xff0c;因此线程池&#xff0c;由此产生。使用多个线程&#xff0c;无限制循环等待队列&#xff0c;进行计算和操作&#xff0c;帮助快速降低和减少性能损耗…

Linux安装Mysql操作步骤详解

目录 1. 检测当前系统中是否安装了MySql数据库 2. 使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux 3. 解压并解包到/usr/local/mysql&#xff08;便于区分&#xff09; 第一步&#xff1a;将包先移动到该目录下 第二步&#xff1a;解压解包 第三步&#xff1a…

springboot的创建和使用

目录 1.springboot的优点 2.springboot项目创建 2.1使用idea创建 2. 2 ⽹⻚版创建 3.项⽬⽬录介绍和运⾏ 3.1运行项目 3.2输出hello world 4.注意事项 1.路径 2.约定大于配置 spring的诞生为了简化java程序,springboot的诞生为了简化spring程序开发 1.springboot的优点…

了解标量、向量和点积

数据科学基础数学&#xff1a;线性代数简介 了解标量、向量和点积 机器只能按着算法理解和处理数据结构存储的数字. 例如创建垃圾邮件检测器&#xff0c;则首先必须将文本数据转换为数字(通过单词嵌入)。 两个句子之间的余弦相似性 两个句子之间的余弦相似性可以通过它们的向量…

Python小姿势 - Python使用Jupyter Notebook

Python使用Jupyter Notebook Jupyter Notebook是一个开源的Web应用程序&#xff0c;可以用来创建和共享包含 live code&#xff0c;公式&#xff0c;可视化和解释性文本的文档。 安装Jupyter Notebook 首先&#xff0c;确保你安装了正确的Python版本和包管理器&#xff08;pip&…

java中的\t说明

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录 阅读前请看一下&#xff1a;我是…

加载自己的图像数据集

文章目录 1 加载图像数据集2 图像预处理3 再次加载数据集4 这里还有一个问题&#xff0c;我们没有验证集5 构建DataLoader6 检查是否正确导入数据集 原文链接&#xff1a;《加载自己的图像数据集》 ​ 数据集下载链接 1 加载图像数据集 目录结构&#xff1a; 针对这种非常典型…

while语句和until语句顺便带点小实验

while语句和until语句 一、while用法二、Until循环语句三、趣味小实验猜价格的游戏&#xff08;价格是随机数&#xff09;写一个计算器脚本闲来无事去购物 一、while用法 for循环语句非常适用于列表对象无规律&#xff0c;且列表来源以固定&#xff08;如某个列表文件&#xf…