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

news2025/1/12 21:06:57

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

摘要

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

首先,通过对附件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)

 

 

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

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

相关文章

分享一个有意思的键盘,我们就只会ctrl c+v

先上效果图&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>* {border: 0;box-sizing: border-box;margin: 0;padding: 0;}:roo…

【pyTorch学习笔记④】PyTorch基础·中篇

文章目录 三、Numpy与Tensor3.Tensor的索引4.Tensor的广播机制5.逐元素操作6.归并操作7.比较操作8.矩阵操作9.PyTorch与Numpy的比较 相关推荐 三、Numpy与Tensor 3.Tensor的索引 &#xff08;1&#xff09;item&#xff1a;若Tensor为单元素&#xff0c;则返回标量&#xff0…

驱动开发:通过MDL映射实现多次通信

在前几篇文章中LyShark通过多种方式实现了驱动程序与应用层之间的通信&#xff0c;这其中就包括了通过运用SystemBuf缓冲区通信&#xff0c;运用ReadFile读写通信&#xff0c;运用PIPE管道通信&#xff0c;以及运用ASYNC反向通信&#xff0c;这些通信方式在应对一收一发模式的时…

【Java笔试强训 8】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;两种排…

【Java笔试强训 6】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;不要二 …

权限提升:本地权限提升.(AT || SC || PS )

权限提升&#xff1a;本地权限提升. 权限提升简称提权&#xff0c;由于操作系统都是多用户操作系统&#xff0c;用户之间都有权限控制&#xff0c;比如通过 Web 漏洞拿到的是 Web 进程的权限&#xff0c;往往 Web 服务都是以一个权限很低的账号启动的&#xff0c;因此通过 Web…

JavaScript用map实现Hashmap

&#x1f4dd;个人主页&#xff1a;爱吃炫迈 &#x1f48c;系列专栏&#xff1a;数据结构与算法 &#x1f9d1;‍&#x1f4bb;座右铭&#xff1a;道阻且长&#xff0c;行则将至&#x1f497; 文章目录 正如我们已经看到的&#xff0c;Map 对象是一个键值对。最初&#xff0c;M…

〖Python网络爬虫实战⑲〗- 数据存储之CSV文件

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

第二部分——长难句——第二章——复合句——第一节——名词性从句

首先复合句是什么呢&#xff1f; 多件事一样重要就叫并列句&#xff0c;如果不一样重要就叫并列句。 复合句主句从句 下面我们来看一个例句&#xff1a; 找到从句之后剩下来的不就是主句吗&#xff1f; 一&#xff0c;宾语从句 &#xff08;一&#xff09;宾语从句的含义 一…

字符串中的第一个唯一字符

题目&#xff1a;字符串中的第一个唯一字符 思路一&#xff1a;暴力查找&#xff0c;时间复杂度 思路一&#xff1a;开辟检查重复数组,以空间换时间&#xff0c;时间复杂度 这段代码的作用是在一个字符串 s 中找到第一个不重复&#xff08;只出现一次&#xff09;的字符&#…

kafka和rocketmq区别对比

Kafka和RocketMQ是目前非常流行的分布式消息系统&#xff0c;它们都能够高效地处理海量的消息数据。在本文中&#xff0c;我们将对Kafka和RocketMQ进行技术比较&#xff0c;分析它们在各方面的优缺点&#xff0c;以便读者在选择消息系统时能够做出更加明智的决策。 一、架构设计…

Java-volatile实现详解(从java到汇编)

在Java内存模型一节&#xff0c;除了synchronized外&#xff0c;我们还提到一个常用关键词----volatile&#xff0c;我们说过volatile保证了并发环境的可见性和顺序性&#xff0c;使用volatile修饰的变量&#xff0c;当然值发生改变时&#xff0c;可以同步到其他线程&#xff0…

【python】你的表情包缺不缺?我猜你缺了~来批量获取一波吧~

目录 前言环境使用:模块使用:如何去实现本次案例: <通用模板>代码展示尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 在我们的生活中&#xff0c;总少不了表情包来调剂 少了表情包就会少了很多趣味 今天就来教大家如何批量下载我们的表情包 环…

力扣刷题2023-04-29-1——题目:1431. 拥有最多糖果的孩子

题目&#xff1a; 给你一个数组 candies 和一个整数 extraCandies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子&#xff0c;检查是否存在一种方案&#xff0c;将额外的 extraCandies 个糖果分配给孩子们之后&#xff0c;此孩子有 最多 的糖果…

接触Word的编辑保护【简单版】

首先&#xff0c;我们遇到的情况是下图这样的&#xff1a; 点一下停止保护&#xff0c;是下图这样的&#xff1a; 开始解决&#xff1a; 第一种方式&#xff1a;另存为Word Xml 存好了&#xff0c; 打开如下图&#xff08;我用VS打开的&#xff0c;最好找个能够格式化代码的编…

秘密是如何被泄露的?自建文件分享神器HFS

近年来&#xff0c;随着互联网技术的飞速发展&#xff0c;我们对于互联网的依赖也日益增加。利用互联网这种高效便捷的工具&#xff0c;我们可以随时随地进行文件的传输、图片的分享以及与他人的交流。然而&#xff0c;看似安全的聊天窗口&#xff0c;其实背后是庞大的互联网算…

MybatisPlus动态表名

核心代码 mybatisplus的配置 Configuration public class MybatisPlusConfig {// 这里是存储需要动态变化的表&#xff0c;防止乱操作static List<String> tableList() {List<String> tables new ArrayList<>();//表名tables.add("user");return…

Flask框架的学习---01

1.工程搭建&#xff1a; 安装flask: pip3 install flask 终端运行&#xff1a;flask run 绑定IP地址和端口&#xff1a;Flask run -h 127.0.0.1 -p 8083 修改端口号生产环境&#xff1a;set FLASK_ENVproduction开发模式&#xff1a;set FLASK_ENVdevelopment 虽然 flask …

ChatGPT真的有那么牛吗?

ChatGPT真的有那么牛吗&#xff1f;ChatGPT真的有那么牛吗&#xff1f; 作为一款大型语言模型&#xff0c;ChatGPT确实具有很高的自然语言处理和生成能力&#xff0c;可以生成流畅、准确和有逻辑性的语言&#xff0c;而且能够理解和回答广泛的问题。 它是目前最先进和最强大的…

《HelloGitHub》第 85 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …