【全网最细致】2024妈妈杯mathorcup C题详细思路代码讲解

本文详细解读了2024年妈妈杯C题中的数据预测问题,涉及57个分拣中心的货量预测,包括异常值处理、ARIMA和SARIMAX模型应用,以及如何根据运输路线调整和员工安排优化效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2024 年妈妈杯C 题的第一问代码我们已经全部完成了,所以本期视频我们就针对第一问代码以及剩下的 234 问进行一整个思路讲解以及代码讲解。那么首先看到我们的问题,一是对于这个 57 个分拣中心的未来 30 天以及每小时的一个货量进行预测,然后我们将结果预表放在表一表 2 就行了。那么对于这个问题,我们首先肯定是要看他给我们的附件一二的一个数据,对不对?我们先切换到我们这里代码这一部分,我们对于数据进行一个可视化,分子结果就大概展示在这里,就是这个是每日的一个总的进货量,然后根据不同的分拣中心,它呈现出不同的一个变化。

在这里插入图片描述

在这里插入图片描述

这个图看着比较乱,我们可以看到一个小一点的,这样就是他们整一个就是都成一个比较规律的一个变化波动。就比如说可能在这个 11 月份的时候,他可能就是出售了,就是就双十一它这个所以货量会大幅的上升,然后像这里可能是有什么特殊的情况,然后就导致大家都不在网上买东西,可以看到这一整个都会有这么一个波动趋势,所以我们在预测的时候,我们需要对这些异常值进行一个处理。然后在其余的时间变化,我们可以看到它其实是比较波动、比较稳定的,也就是说我们这一个就是一,某一个风险中心,它的一个货量情况,它其实随时间变化其实是比较小的,就是它的一个波动更像是一个随机扰动,除了一些特殊节日以外,它会明显的下降或上升以外。所以我们对于第一题要想要预测每日的未来 30 天每日的货量变化,首先我们要考虑它是否会存在异常值的这么一个情况。我们知道它除了双十一这个进货量会明显上升以外,还有双 12 前后它那个快递站的一个分拣中心,它这个货量也会明显上升。因此我们在预测的过程中我们需要考虑这个因素,然后加上这一部分的异常情况,那我们这里就是对于每一个分拣中心进行采用了这个ARIMA模型进行预测。

在这里插入图片描述

这边展示的其实是小时货物量变化的一个情况,我们之后讲小时的运测时候会再接着讲。那么先直接看到我们这里用ARIMA模型预测的一个方法,我们这里采取了两种方法,一就是通过一个自动选取马参数的,就是它不是包含了 PDQ 3 个参数吗?我们通过它自动选取的一个方法,嗯,找到一个最小的 AIC 值,然后来表示它这个 PDQ 是一个最好的一个参数,然后我们对于来进行预测,然后我们这是绘制的一个 a C f 和 p a C f 图,它的一个展示结果就表示在下面。
在这里插入图片描述

然后我们通过对它找到了最合适的参数之后我们用我们对未来 30 天进行预测,我可以看到这里在有的分裂中心,它因为它的波动情况实在是太小了,所以他们最后使用ARIMA预测模型,就基本上每天都是保持一样的值,那当然也是有不一样的。对于这里,比如说像这里它其实是会看出有些变化情况,所以对于这个问题我们考虑就是首先就引入了这个异常,就是双 12 异常值的一个情况,我们用了方法二,这一个方法我们使用的是这个模型来代替r,英文模型来考虑双 12 的这种额外的变量。我们通过就是标记是否是活动的这么一个情况来进行预测,那么最终预测结果就是比我们上一个模型预期结果就要会好一些,然后我们也将结果图进行保存。下面我们来讲一下我们如何对每天的这个小时进行预测。
我们的进阶模型采用SARIMAX方法。
在这里插入图片描述

首先我们也是可视化它的一个小时情况,就是同一天下,就是 11 月 1 号,同一天下不同的分拣中心,它的一个货量随小时变化的一个情况,这么可以看到它会随时间有一个关系,但它影响并不大。嗯,然后就是特定的某一个小时可能会特别少或者特别高。那么对于如何处理这一个问题,这样子我们这里的小事我们就不能单独的看作一个时间变量来考虑它,我们需要把它离散出来,就是说这个小时里它的进货量,它只跟这个小时有关,只跟这个节点有关系。所以我们对它进行的一个操作就是对我们元数据进行一个汪浩的编码,然后将不同的小时单独的抽离出来,那么这里除了对于小时情况,那还对于这一个分拣中心进行单独的考虑,然后我们得到了一个 82 列的这么一个数据,然后我们拿去喂给我们的神经网络。然后我们的输出量就是我们的货量情况,然后我们的最终预测结果,我们就直接的就拿它进行一个检验,然后我们来计算我们的loss,来用神经网络进行预测,随后我们想要知道未来 30 天每小时内的一个变化情况,这个需要我们自己构建我们的数据集,就是我们根据分拣中心日期以及小时,我们构建了一个这种 57 乘以 30 乘以 24 的这么一个,根据这个结构表 2 进行这么一个构建。构建完了之后我们通过同样的 one hot 编码方式把它转换成这种 one hot 编码的这种数据格式。然后我们对于日期,我们需要对它进行一个规矩化的处理,方便我们这个预测。然后我们处理好了之后,我们再对它进行预测,我们预测结果就展示在这里。

在这里插入图片描述

那么以上就是我们问题一的一个全部的代码讲解,下面我们进行讲解,我们整一题的一个思路,我们现在看到我们的题目是在这里我们先简单的过一下问题234,像问题 2 中它其实是说调整了这个运输的路线,那我们这个对应的分拣中心它的一个货量情况也会发生改变,然后我们如何根据这种运输路线的改变对这个它未来 30 天货量情况进行预测?那么问题3,其实问题 3 和 4 就是正时工跟临时工的一个员工安排如何让?就是用最少的人天数,然后达到最高的一个效率。那么问题四呢?就是考虑了正施工的一个休假情况。那么我们先看问题2,对于问题 2 而言,对于问题 2 而言,我们直接看这个题,其实没有什么太大的思路。我们来看一下我们这里的数据。我们首先看到我们的附件3。

附件 3 的数据展现在这里,我们可以看到的就是它有一个始发的分拣中心和到站的分拣中心,然后以及对应的一个每天的平均的货量情况,那我们统计一下。就是比如说就是这个 SC 8,它的整天的就是所有发往 SC 8 的一个总的货量情况是怎么样的?我们可以这样子写一下。统计一下,得到一个结果,我们可以看到它这个平均每天从其他的分拣中心发现 SC 8 它一共是有 2, 000 件这个货量。那我们再看一下附件一中,我们找一下这个 SC 8,它平均的一个,就是随便哪一天它的一个情况。我们找到日这里它有个三万多或者是五万多, 3 万多,嗯,可以从这里看出来,就是说我们这一个从其他分拣中心运用 SC8 的其实只是它的一部分,就是跟它能影它会波动的影响我们这一个分拣中心它的一个货量,但它只是一小部分,它更大的因素比如说是跟这个分拣中心的地理位置有关系,所以说我们对于这个分拣中心它一个整体它变化是不会很大的。那么如何就是考虑就是原先的这些分拣中心路线和新的这么一个分拣路线对它的一个影响呢。那我们这里就要构建一个理想的模型,就是我们对于分拣中心发往另一个分拣中心这个快递的比例,这个是比较恒定的。

我们可以通过我们的数据进行算出来它的一个比例大概是多少,比如说4%、5%,然后我们根据这个分解中心它的一天的平均,就是平均它每天能收到的一个货量情况来乘上这一个发往其他分拣中心的一个系数,我们就可以得到了这条路线上的一个货量情况,我们消除原先这个原先的这个路线的一个影响,然后再引入新的这一个路线的一个影响,来修正我们一开始得到的一个附件一的一个结果。这样子我们就可以计算出他整的这么一个。

就可以计算出问题二想要的这么一个结果,让我们将预测结果放到下面就可以了。这里注值得注意的就是他每天和每小时他们的一个整体变化,应该是就是按比例变进行一个波动的。因为可以结合附件三四的数据,它其实没有细分到每一个小时,所以我们只是需要类似于对每天这个货量情况进行操作,相同就是直接类似于给每小时的一个货量乘上一个系数,我们就可以得到总共的结果。

对于我们的问题,三四我们应该是这么来看,那这一天就是根据我们的这一个结果,我们直接拿着正是员工 60 名,让他们工作尽可能多的天数来对应的,如果哪一天他的货量比较多,我们就加一些临时工,少的话我们就少的话我们给就给一些正式工放价。嗯,通过这种方式我们来计算这一个人天数,这一点是比较好实现的。然后对于问题四我们需要考虑一个出勤率的影响,他说 30 天内不能高于85%, 85% 是一个很巧妙的一个点,因为我们知道我们一周工作六天,然后这样子一天的一个出行率正好是 85.3% 左右,所以为了达到这个要求,我们需要一天, 30 天中我们需要工作,就是最高一个正式工可以工作 25 天,然后连续出行不能超过 7 天的话,我们就是在最后的休息的一天再给他加上这么一天。因为我们不需要考虑下个月,我们只要考虑未来 30 天的一个排班情况就可以了。

然后我们就根据他这一个要求,就是说哪名工人在哪个班次出勤,我们其实可以简单的根据我们这个得到的每日的一个随小时变化的这么一个货量情况,知道安排正时工出勤,然后根据他的这个四个、六个班次的一个倒的情况,我们就对它进行。就是我们在时间高的时候就多安排几个正式工去那边做,时间少了我们就相应的减少人数,那我们之后会出详细的代码教程,同学们可以期待一下。

【腾讯文档】2024妈妈杯助攻合集
https://docs.qq.com/doc/DVWtKSFhTbnJ6Rm9V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千千小屋grow

感谢支持,干杯

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值