2023mathorcup本科组C题电商物流网络包裹应急调运与结构优化问题保姆级思路

这篇具有很好参考价值的文章主要介绍了2023mathorcup本科组C题电商物流网络包裹应急调运与结构优化问题保姆级思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题 1:建立线路货量的预测模型,对2023-01-01 至 2023-01-31 期间每条线路每天的货量进行预测,并在提交的论文中给出线路DC14→DC10、 DC20→DC35、DC25→DC62 的预测结果。

这一问比较好上手,主要是预测模型。看到这种问题第一时间要想到,数学建模中常见的预测模型有哪些:

我列个个模型分类,大家看看:

1.线性回归模型:线性回归模型是一种基本的预测模型,用于建立自变量和因变量之间的线性关系。该模型的目标是最小化预测值与实际值之间的误差。

2.非线性回归模型:与线性回归模型不同,非线性回归模型可以建立非线性自变量和因变量之间的关系。这种模型通常用于描述数据中的复杂关系。

3.时间序列模型:时间序列模型是建立时间序列数据之间的关系的一种预测模型。该模型通常用于预测未来的趋势和季节性变化。

4.决策树模型:决策树模型是一种基于树形结构的预测模型,用于识别数据集中的模式和关系,并根据这些关系预测未来的结果。

5.神经网络模型:神经网络模型是一种模仿人脑神经元网络的预测模型,通过对大量数据进行训练来学习数据之间的复杂关系,并用于预测未来的结果。

欢迎关注gz号:数模孵化园!一起交流,获取更多免费思路

根据预测模型的使用场景我们可以判断,这里比较适合时间序列分析方法。这里,我们使用ARIMA(自回归移动平均模型)来进行预测。ARIMA 是一种线性模型,可以捕捉时间序列中的趋势、季节性和噪声成分。接着建立线路货量的预测模型

步骤如下:

1.数据预处理:

首先,将附件 1 中的数据导入到合适的数据结构中,如 pandas 的 DataFrame。然后对数据进行清洗和处理,确保没有缺失值和异常值。为了使用ARIMA 模型,需要将数据按照线路和日期进行重塑,以便得到每条线路的时间序列。

具体步骤:

首先,我们查看附件1中的数据,我把中文数据名字改一下,这样方便导入,名字命名为:d.xlsx,数据格式如下:

场地1  场地2  日期     货量

DC3   DC5    2021-01-01   3

DC3  DC10   2021-01-01   4

DC3  DC14   2021-01-01   4

DC5  DC3    2021-01-01   41

DC5  DC9    2021-01-01   3

DC5  DC10    2021-01-01  140

DC5  DC14   2021-01-01   57

导入到 pandas 的DataFrame中。然后对数据进行清洗和处理,确保没有缺失值和异常值,观察数据可以发现有的数据过大,有的没有,我们需要数据预处理,否则预测有问题。

下面给出代码:文章来源地址https://www.toymoban.com/news/detail-518143.html

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pmdarima import auto_arima
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_squared_error

# 1. 读取数据
data = pd.read_excel("d.xlsx")

# 2. 数据预处理
# 转换日期列为 datetime 类型
data["日期"] = pd.to_datetime(data["日期"])

# 设置日期列为索引
data.set_index("日期", inplace=True)

# 构建线路货量时间序列数据
lines = data.groupby(["场地1", "场地2"])

# 3. 训练和预测
predictions = {}
for line, group in lines:
    line_id = f"{line[0]}→{line[1]}"
    
    # 对该线路数据按日期排序
    group = group["货量"].sort_index()
    
    # 对数据进行重新采样,按天计算并使用向前填充方法填充缺失值
    group = group.resample("D").sum().fillna(method="ffill")
    
    # 检查数据量是否足够
    if len(group) < 10:
        continue

    # 使用 auto_arima 函数自动选择 ARIMA 参数
    arima_model = auto_arima(group, seasonal=False, stepwise=True,
                             suppress_warnings=True, trace=False,
                             error_action='ignore')
    
    # 拟合 ARIMA 模型
    arima_model.fit(group)
    
    # 对 2023-01-01 至 2023-01-31 期间货量进行预测
    pred = arima_model.predict(n_periods=31)
    
    # 保存预测结果
    date_range = pd.date_range("2023-01-01", "2023-01-31")
    predictions[line_id] = pd.Series(pred, index=date_range)

# 输出指定线路的预测结果
specified_lines = ["DC14→DC10", "DC20→DC35", "DC25→DC62"]
for line in specified_lines:
    if line in predictions:
        print(f"Line {line} prediction:")
        print(predictions[line])
        print()
    else:
        print(f"Line {line} has insufficient data for prediction.")
        print()

到了这里,关于2023mathorcup本科组C题电商物流网络包裹应急调运与结构优化问题保姆级思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包