文章目录
- C 题 电商物流网络包裹应急调运与结构优化问题
- 解题思路
- 数据进行预处理
- 将数据转换为 stationary 数据
- 底部
C 题 电商物流网络包裹应急调运与结构优化问题
(赛题出来以后第一时间在CSDN分享,文章底部)
最新进度在文章最下方卡片,加入获取思路数据代码论文:2023十三届MathorCup交流
电商物流网络由物流场地(接货仓、分拣中心、营业部等)和物流场地之间的运输线路组成,如图 1 所示。受节假日和“双十一”、“618”等促销活动的影响,电商用户的下单量会发生显著波动,而疫情、地震等突发事件导致物流场地临时或永久停用时,其处理的包裹将会紧急分流到其他物流场地,这些因素均会影响到各条线路运输的包裹数量,以及各个物流场地处理的包裹数量。
如果能预测各物流场地及线路的包裹数量(以下简称货量),管理者将可以提前安排运输、分拣等计划,从而降低运营成本,提高运营效率。特别地,在某些场地临时或永久停用时,基于预测结果和各个物流场地的处理能力及线路的运输能力,设计物流网络调整方案,将会大大降低物流场地停用对物流网络的影响,保障物流网络的正常运行。
附件 1 给出了某物流网络在 2021-01-01 至 2022-12-31 期间每天不同物流场地之间流转的货量数据,该物流网络有 81 个物流场地,1049 条线路。其中线路是有方向的,比如线路 DC1→DC2 和线路 DC2→DC1 被认为是两条线路。假设每个物流场地的处理能力和每条线路的运输能力上限均为其历史货量最大值。基于以上背景,请你们团队完成以下问题:
解题思路
问题 1:建立线路货量的预测模型,对 2023-01-01 至 2023-01-31 期间每条线路每天的货量进行预测,并在提交的论文中给出线路 DC14→DC10、DC20→DC35、DC25→DC62 的预测结果。
建立线路货量的预测模型,对 2023-01-01 至 2023-01-31 期间每条线路每天的货量进行预测,并在提交的论文中给出线路 DC14→DC10、DC20→DC35、DC25→DC62 的预测结果。
建立线路货量的预测模型的步骤如下:
- 数据预处理:对于每条线路和每个物流场地,计算其历史货量的平均值、方差等统计量,并进行缺失值填充。
- 特征工程:根据历史货量的时间序列数据,提取相关特征,如趋势、周期性、节假日影响等。
- 模型选择:选择适合时间序列预测的模型,如 ARIMA、SARIMA、Prophet 等。
- 模型训练:使用历史数据训练模型,并根据模型的性能对模型进行调优。
- 模型预测:对于每条线路和每个物流场地,使用训练好的模型进行预测,并计算预测结果的置信区间。
数据进行预处理
可以看到附件1中部分数学出现缺失或为零,为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。
注:因为此题数据众多,我们强烈推荐使用Python进行数据处理(当然Matlab也可以)
import pandas as pd
# python的第三方库
data = pd.read_csv(data_file)
# 修改为文件目录
inputs = data.iloc[:]
# 使用平均进行插值(均是数值缺失)
inputs = inputs.fillna(inputs.mean())
print(inputs)
# 也可以删除缺失行
n, m = data.shape
for i in range(m):
for j in range(n):
if pd.isnull(data.iloc[j][i]):
data.drop(j)
break
将数据转换为 stationary 数据
再将附件一中的货量数据按照每条线路每天的形式进行整理,并将时间序列数据转换为 stationary 数据,以便进行时间序列建模。代码如下
import pandas as pd
import numpy as np
from statsmodels.tsa.stattools import adfuller
# 读入数据
data = pd.read_csv('附件1.csv')
# 将数据按照每条线路每天的形式进行整理
data = data.pivot_table(index='日期', columns=['起点', '终点'], values='货量')
# 将数据转换为 stationary 数据
def make_stationary(ts):
rolmean = ts.rolling(window=7).mean() # 滑动平均
rolstd = ts.rolling(window=7).std() # 滑动标准差
# 计算差分序列
ts_diff = ts - rolmean
ts_diff.dropna(inplace=True)
# 检查差分序列是否 stationary
dftest = adfuller(ts_diff, autolag='AIC')
print('ADF检验统计量: ', dftest[0])
print('p-value: ', dftest[1])
print('滞后阶数: ', dftest[2])
print('观察数: ', dftest[3])
print('拒绝原假设的最小 p-value: ', dftest[4]['1%'])
return ts_diff
data_diff = make_stationary(data['DC3']['DC10']) # 以 DC3→DC10 为例进行差分操作
问题 2:如果物流场地 DC5 于 2023-01-01 开始关停,请在问题 1 的预测基础上,建立数学模型,将 DC5 相关线路的货量分配到其他线路使所有包裹尽可能正常流转,并使得 DC5 关停前后货量发生变化的线路尽可能少,且保持各条线路的工作负荷尽可能均衡。如果存在部分日期部分货量没有正常流转,你们的分流方案还应使得 2023-01-01 至 2023-01-31 期间未能正常流转的包裹日累计总量尽可能少。正常流转时,请给出因 DC5 关停导致货量发生变化的线路数及网络负荷情况;不能正常流转时,请给出因 DC5关停导致货量发生变化的线路数、不能正常流转的货量及网络的负荷情况。
待完善
问题 3:在问题 2 中,如果被关停的物流场地为 DC9,同时允许对物流网络结构进行动态调整(每日均可调整),调整措施为关闭或新开线路,不包含新增物流场地,假设新开线路的运输能力的上限为已有线路运输能力的最大值。请将 DC9 相关线路的货量分配到其他线路,使所有包裹尽可能正常流转,并使得 DC9 关停前后货量发生变化的线路数尽可能少,且保持各条线路的工作负荷尽可能均衡。如果存在部分日期没有满足要求的流转方案,你们的分流方案还应使得 2023-01-01 至 2023-01-31 期间未能正常流转的包裹日累计总量尽可能少。正常流转时,请给出因 DC9 关停导致货量发生变化的线路数及网络负荷情况;不能正常流转时,请给出因 DC9 关停导致货量发生变化的线路数、不能正常流转的货量及网络的负荷情况;同时请给出每天的线路增减情况。
待完善
问题 4:根据附件 1,请对该网络的不同物流场地及线路的重要性进行评价;为了改善网络性能,如果打算新增物流场地及线路,结合问题 1 的预测结果,探讨分析新增物流场地应与哪几个已有物流场地之间新增线路,新增物流场地的处理能力及新增线路的运输能力应如何设置?考虑到预测结果的随机性,请进一步探讨你们所建网络的鲁棒性。
待完善