第三次继续写数模文章和思路代码了,不知道上次美赛和国赛大家有没有认识我,没关系今年只要有数模比赛艾特我私信我,要是我有时间我一定免费出文章代码好吧!博主参与过十余次数学建模大赛,三次美赛获得过二次M奖一次H奖,国赛二等奖。想要了解更多的欢迎联系博主,免费获取代码和更多细化思路,**只希望各位以后遇到建模比赛可以艾特认识一下我,我可以提供免费的思路和部分源码,以后的数模比赛只要我还有时间肯定会第一时间写出免费开源思路,你们的关注和点赞就是我写作的动力!!!**大家可以参考。
首先看题目问题以及要解决的目标是什么:
很明显题目就是想让你思考众多因素特征影响下包裹数量变化情况。
再看题目有没有透露出更多信息:
那么不用看问题我推测第一问肯定是想让你做个预测模型,第二第三问根据你的模型进行运筹达到最优运送方案。那么题目读到这里就很明朗了,没有什么很复杂的逻辑,我们先按照以往建模流程开始行动就好了。
我们来看第一问:
问题 1:建立线路货量的预测模型,对 2023-01-01 至 2023-01-31 期间每条线路每天的货量进行预测,并在提交的论文中给出线路 DC14-DC10.DC20-DC35、DC25DC62 的预测结果。
和我想的是一样的,此类预测运筹最优化的题目基本第一问就需要确定你的预测模型,也就是该预测模型作为你解题的中流砥柱,后续的一切问题都需要围绕你的预测模型效果进行开展,决定整篇论文的上下限,我们应该尽可能把该预测模型建立好。当然也需要我们对给出的数据充分处理好,决定模型的上限。
那么我们可以先不去看后续的问题,该问是其他问的基础上游,先优先将预测模型给搭建出来。
基本数据为:
可以看到有四个特征[场地1,场地2,日期,货量],共有177847行数据。
该两个特征不应该割裂开来单个使用,我们根据题意知道
线路 DC1→DC2 和线路 DC2→DC1 被认为是两 2 条线路。那么应该根据场地1进行分组,分别对不同地区不同路线进行建模。那么这时候我们可以发现,给出的数据集里边居然没有给我们其他因素的影响,那么这就是一个黑盒数据,我们无法清楚具体哪些因素影响了货量,可能会存在天气,节假日,路长,路况等具体因素,但是现在我们得不到这些具体特征的数值,因此利用传统的根据特征进行机器学习或者深度学习肯定是去得不到好效果。
很明显我们能够使用的只有日期这唯一的特征,那么怎么处理日期这一特征就显得尤为重要了,这时候我们需要使用时序数据预测模型,关于时序预测模型在我的个人技术博客已经将每种模型的算法和原理,以及可运行的代码都开放了出来:
有需要补充知识的小伙伴自行拿去就行。
货量也就是我们要求的Y了,唯一定量数据,我们需要根据分组来看看货量数据是否根据时间产生大幅度波动或者是呈现出一定的规律性,具体的来说就是判断是否为严平稳时间序列和宽平稳时间序列。这都影响我们模型的可信度和准确性。
那么我们先以问题一中需要我们预测的三条路线在2021-01-01到2022-12-31货量的数据展示:
DC20-DC35:
DC25-DC62:
十分典型的时序数据波动,我们知道日期的颗粒度为日,那么很容易联想到使用星期来拆分日期,那么相对应的还有节假日,天气我们无法获取。
想要得到更加精确的模型必须在此基础之上升维,也就是拆分日期。那么我们就先以数据量较少的DC25-DC62进行数据预处理,这里大家需要注意到的是并不是2021-10-31到2022-12-31的数据全都有,2021-10-31到2022-12-31总共是有426天而DC25-DC62的数据仅有370行,我们再数据维度变换的时候应该将数据空缺值填补完成。
填补我们无法根据一些机器学习算法或者均值填补,时序数据具有一些很强的时序性,我推荐先根据日期特征分类之后再根据数据波动进行二次指数平滑法填补空值数据。
倘若我们单单以星期数查看货量会发现十分不稳定:
标准差为3914.3835
周一:
标准差为4712.8095
周二:
标准差为5243.4463
同一周数下面差距这么大显然是不用直接用周数的,再次拆解:
到这一步其实大家就可以尝试构建一下预测模型了,效果不好再数据再处理一遍:
CatBoost:
ARIMA模型:
bp神经网络:
RF:
bp神经网络:
RF:
先写到这里,下一篇文章对数据再做优化和模型优化,更新余下几问。