2024 年第十四届 Mathorcup 数学应用挑战赛题目C 题 物流网络分拣中心货量预测及人员排班完整思路以及源代码分享,仅供学习

本文主要是介绍2024 年第十四届 Mathorcup 数学应用挑战赛题目C 题 物流网络分拣中心货量预测及人员排班完整思路以及源代码分享,仅供学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

电商物流网络在订单履约中由多个环节组成,图1是一个简化的物流网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同流向进行分拣并发往下一个场地,最终使包赛到达消费者手中。分拣中心管理效率的提升,对整体网络的履约效率和运作成本起着十分重要的作用,分拣中心的货量预测是电商物流网络重要的研究问题,对分拣中心货量的精准预测是后续管理及决策的基础,如果管理者可以提前预知之后一段时间各个分拣中心需要操作的货量,便可以提前对资源进行安排。在此场景下的货量预测目标一般有两个:一是根据历史货量、物流网络配置等信息,预测每个分拣中心每天的货量;二是根据历史货量小时数据,预测每个分拣中心每小时的货量。 分拣中心的货量预测与网络的运输线路有关,通过分析各线路的运输货量,可以得出各分拣中心之间的网络连接关系。当线路关系调整时,可以参考线路的调整信息,得到各分拣中心货量更为准确的预测。 基于分拣中心货量预测的人员排班是接下来要解决的重要问题,分拣中心的人员包含正式工和临时工两种:正式工是场地长期雇佣的人员,工作效率较高:临时工是根据货量情况临时招募的人员,每天可以任意增减,但工作效率相对较低、雇佣成本较高。根据货量预测结果合理安排人员,旨在完成工作的情况下尽可能降低人员成本。针对当前物流网络,其人员安排班次及小时人效指标情况如下: 1)对于所有分拣中心,每天分为6个班次,分别为:00:00-08:00,05:00-13:00,08:00-16:00,12:00-20:00,14:00-22:00,16:00-24:00,每个人员(正式工或临时工)每天只能出勤一个班次;2)小时人效指标为每人每小时完成分拣的包裹量(包裹量即货量),正式工的最高小时人效为 25 包裹/小时,临时工的最高小时人效为 20包裹/小时。 该物流网络包括57个分拣中心,每个分拣中心过去4个月的每天货量如附件1所示,过去 30天的每小时货量如附件2所示。

问题 1:建立货量预测模型,对57 个分拣中心未来 30 天每天及每小时的货量进行预测,将预测结果写入结果表1和表2中。

为了建立一个货量预测模型,我们将使用季节性时间序列模型来预测每个分拣中心未来30天的每天及每小时的货量。在这里,我们将使用季节性ARIMA(SARIMA)模型,它是非常适合处理具有季节性模式的时间序列数据的。

1. 数据探索和预处理

假设我们的时间序列是 yt​,其中 t 表示时间点。

数据清洗:

检查缺失值:如果在 yt​ 中存在缺失值,我们需要决定是填补这些缺失值还是删除相关的时间点。

异常值处理:识别并处理任何异常值,例如,通过箱型图识别的离群点。

2. 季节性时间序列建模:SARIMA模型

SARIMA模型的全称是季节性自回归积分滑动平均模型,表示为 SARIMA(,,P,D,Q)s​,其中:

p:非季节性自回归项的阶数。

d:非季节性差分次数。

q:非季节性移动平均项的阶数。

P:季节性自回归项的阶数。

D:季节性差分次数。

Q:季节性移动平均项的阶数。

s:时间序列的季节长度。

SARIMA模型的数学表示:

3. 参数估计

在SARIMA模型的参数估计中,最常用的方法是最大似然估计(MLE)。假设我们的时间序列数据为 y1​,y2​,…,yn​,模型参数集合为 θ=(p,d,q,P,D,Q,s) 和其他相关参数,如自回归和移动平均参数。最大似然估计旨在找到参数集合 θ 的值,使得观察到的数据出现的可能性(似然函数)最大。

似然函数 L 通常表示为:

其中 (∣)f(y∣θ) 是给定参数 θ 下观察数据 y 的概率密度函数。

最大化似然函数等价于最大化其对数形式,即最大化对数似然函数 ℓ()ℓ(θ):

 

参数估计的目标是:

4. 模型检验

赤池信息准则(AIC)

AIC是一种衡量统计模型拟合优度的准则,它旨在选择最佳模型,并对模型复杂度进行惩罚。AIC的计算公式为:

其中,k 是模型参数的数量,L 是最大似然函数的值。

贝叶斯信息准则(BIC)

BIC与AIC相似,但对模型中参数的数量给予更大的惩罚。BIC的计算公式为:

其中,n 是样本大小,k 和 L 的定义同上。

残差诊断

对于残差 εt​,我们希望它们是白噪声序列。这可以通过残差的自相关函数(ACF)和偏自相关函数(PACF)图来检查,或者使用Ljung-Box Q检验来统计检验残差序列中的自相关性是否显著不同于零。

Ljung-Box Q检验的假设检验公式为:

其中,n 是样本大小,^ρ​k​ 是残差序列的自相关系数,m 是滞后期数。检验的目的是确定序列中是否存在显著的自相关性。

通过上述步骤,您可以对模型进行充分的参数估计和模型检验,以确保预测的准确性和可靠性。

源代码以及结果如下,完整见附件!

问题2:过去 90天各分拣中心之间的各运输线路平均货量如附件3所示。若未来30 天分拣中心之间的运输线路发生了变化,具体如附件4所示。根据附件 1-4,请对 57个分拣中心未来30天每天及每小时的货量进行预测,并将预测结果写入结果表3和表4中。

问题2要求基于现有和未来的运输线路变化来预测各分拣中心未来30天的每天及每小时货量。这个问题的建模过程需要考虑分拣中心间的运输线路变化对货量的影响。具体的数学建模过程和公式如下:

数据预处理

加载数据:加载四个附件的数据,理解其结构和内容。

数据合并:将过去的货量数据(附件1和附件2)、当前运输线路的平均货量数据(附件3)和未来运输线路变化(附件4)整合,以便分析。

建模过程

基础货量预测:首先,像问题1一样,对每个分拣中心进行货量预测,忽略运输线路的影响,得到基础预测值。

线路影响分析:分析附件3中的运输线路平均货量数据,计算每条线路对应分拣中心的平均影响值。

未来线路调整:根据附件4的未来线路变化,计算每个分拣中心因线路变化而增减的货量。

综合预测修正:将步骤1的基础预测值与步骤3的调整值相结合,得到最终的货量预测。

假设 ,Yc,t​ 表示分拣中心 c 在时间 t 的货量预测,,,Lc,l,t​ 表示分拣中心 c 在时间 t 通过线路 l 的平均货量,Ac,l,t​ 表示线路调整后分拣中心 c 在时间 t 通过线路 l 的额外货量。

问题3:假设每个分拣中心有60名正式工,在人员安排时将优先使用正式工,若需额外人员将使用临时工。请基于问题2的预测结果建立模型,给出未来 30 天每个分拣中心每个班次的出勤人数,并写入结果表5中。要求在每天的货量处理完成的基础上,安排的人天数(例如30天每天出勤200名员工,则总人天数为6000)尽可能少,且每天的实际小时人效尽量均衡。


问题4:研究特定分拣中心的排班问题,这里不妨以SC60为例,假设分拣中心 SC60 当前有 200名正式工,请基于问题2的预测结果建立模型确定未来 30 天每名正式工及临时工的班次出勤计划,即给出未来 30 天每天六个班次中,每名正式工将在哪些班次出勤,每个班次需要雇佣多少临时工,并写入结果表6中。每名正式工的出勤率(出勤的天数除以总天数30)不能高于85%,且连续出勤天数不能超过7天。要求在每天货量处理完成的基础上,安排的人天数尽可能少,每天的实际小时人效尽量均衡,且正式工出勤率尽量均衡。

完整内容见附件!

附件:

这篇关于2024 年第十四届 Mathorcup 数学应用挑战赛题目C 题 物流网络分拣中心货量预测及人员排班完整思路以及源代码分享,仅供学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898099

相关文章

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多

在Ubuntu上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

mybatis直接执行完整sql及踩坑解决

《mybatis直接执行完整sql及踩坑解决》MyBatis可通过select标签执行动态SQL,DQL用ListLinkedHashMap接收结果,DML用int处理,注意防御SQL注入,优先使用#... 目录myBATiFBNZQs直接执行完整sql及踩坑select语句采用count、insert、u

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

nodejs打包作为公共包使用的完整流程

《nodejs打包作为公共包使用的完整流程》在Node.js项目中,打包和部署是发布应用的关键步骤,:本文主要介绍nodejs打包作为公共包使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言一、前置准备二、创建与编码三、一键构建四、本地“白嫖”测试(可选)五、发布公共包六、常见踩坑提醒

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二