GPT打数模——电商品类货量预测及品类分仓规划

背景

电商企业在各区域的商品存储主要由多个仓库组成的仓群承担。其中存储的商品主要按照属性(品类、件型等)进行划分和打标,便于进行库存管理。图 1 是一个简化的示意图,商品品类各异,件数众多,必须将这些商品分散到各个仓库存储。品类分仓规划决定各商品存放在哪些仓库问题,合理的品类分仓规划对提升每个仓的管理效率、降低总体仓储成本至关重要。

准确的仓储货量预测是品类分仓规划的重要依据,对于准确的预测结果能够预见性地决定未来的仓储资源使用决策,以提前规划仓储资源,减少冗余场地的投入。一般来说,该场景需要预测两个目标,分别为库存量和销量。其中,库存量为该品类在全部仓库所需存放的总库存,分仓结果中受到仓库的仓容限制;销量为该品类在全部仓库所需打包出库的总量,分仓结果中受到产能限制。

目标和约束

在得到未来各品类的预测货量后,各个品类的分仓规划是供应链规划者的重要研究问题。若将品类集中存放在数量较少的仓库中,则将超过该仓的仓容及产能上限,造成履约问题;若同一品类分在多个仓库中,则会显著增加仓库数量,增大品类库存的管理难度及总成本。此场景需考虑的上限包括两个,分别为仓容上限和产能上限,其中仓容上限为某仓库可以存放的最高库存量,产能上限为某仓库一天可以出库的最高销量。另外,若将相似的品类(使用品类关联度衡量相似性)放在同一个仓库中,同一订单中的商品更可能集中出货,可以在实际履约中减少包裹数量,从而降低履约成本。

约束的详细说明

合理的品类分仓方案,应该同时考虑仓群的复杂度及单仓仓容及产能约束,给出最优的分仓结果需综合考虑以下指标:

  1. 仓容利用率:单仓总库存/仓容上限;
  2. 产能利用率:单仓总出库量/产能上限;
  3. 总仓租成本:使用仓库的仓租成本之和;
  4. 品类分仓数:单品类存放的仓库数量;
  5. 品类关联度:存放在同一仓库的所有品类之间的关联度之和。

需要明确考虑的指标,就一定要算这些

现有一个仓储网络,包含140个仓库以及350种品类,附件1及附件2分别为各品类的历史库存量及销量,附件3为不同仓库相关信息(仓租日成本、仓容上限、产能上限),附件4为不同品类之间的关联度(表中未出现的品类组合关联度设为0),附件5为不同品类的相关信息(品类编码、件型)。基于以上数据,请完成以下问题:

问题

问题 1

建立货量预测模型,对该仓储网络350个品类未来3个月(7-9月)每个月的库存量及销量进行预测,其中库存量根据历史每月数据预测月均库存量即可,填写表1的预测结果并放在正文中,并将完整结果填写在 result 表格文件中的"月库存预测结果"的表单中;销量需给出未来每天的预测结果,填写表2的预测结果并放在正文中,并将完整结果填写在 result 表格文件中的"日销量预测结果"的表单中。

表 1:月库存量预测结果

7 月库存量 8 月库存量 9 月库存量
category1
category31
category61
category91
category121
category151
category181
category211
category241
category271
category301
category331

表 2:日销量预测结果

7.1 7.11 7.21 7.31 8.1 8.11 8.21 8.31 9.1 9.11 9.21
category1
category31
category61
category91
category121
category151
category181
category211
category241
category271
category301
category331

问题 2

假设当前限定每个品类只能放在一个仓库中,即一品一仓,各品类之间请基于问题1的预测结果建立规划模型,综合考虑多个业务目标,求得品类的分仓方案,包括:应使用哪些仓库,使用的仓库需存放哪些品类的库存。填写表3的分仓结果并放在正文中,并将完整品类分仓结果填写在 result 表格中的"一品一仓分仓方案"表单中。

表 3:"一品一仓"分仓方案

warehouse
category1
category31
category61
category91
category121
category151
category181
category211
category241
category271
category301
category331

问题 3

现在为每个品类按照件型及高级品类进行打标(如附件5),并放开一品一仓假设,即允许一个品类存放于多个仓库,但同一品类存放的仓库数量不能超过3个,并希望同件型、同高级品类尽量放在一个仓库中。假设同一品类在不同仓库之间分布的库存量比例及出库量比例相同,当前业务的首要目标是最大品类关联度,同时兼顾其他指标。请基于问题1的预测结果建立规划模型,求得新的品类分仓方案,并分析不同方案中各业务指标的表现。填写表4的分仓结果并放在正文中,并将完整品类分仓结果填写在 result 表格中的"一品多仓分仓方案"表单中。

warehouse warehouse warehouse
category1
category31
category61
category91
category121
category151
category181
category211
category241
category271
category301
category331

数据

附件1.csv如下:

品类 月份 库存量
category225 2023/6/1 4676058
category84 2023/1/1 4421974
category21 2023/1/1 4411095
category84 2022/7/1 3689222
category84 2023/2/1 3431261
category225 2023/3/1 3133157
category225 2022/7/1 3095300
category225 2023/1/1 2966388
category84 2023/6/1 2913526
category225 2023/2/1 2890619
... ... ...
category214 2022/9/1 14491
category300 2022/9/1 14484
category228 2023/2/1 14446
category127 2023/3/1 14432
category214 2023/6/1 14405
category214 2023/3/1 14339
category238 2022/9/1 14333
category127 2022/8/1 14331
category91 2022/9/1 14304
category271 2022/8/1 14279
... ... ...
category210 2022/7/1 1
category210 2022/8/1 1
category210 2023/1/1 1
category326 2023/3/1 1
category326 2023/4/1 1
category326 2023/5/1 1
category329 2022/7/1 1
category336 2022/7/1 1
category336 2022/9/1 1
category336 2022/8/1 1

附件2.csv如下:

品类 日期 销量
category84 2023/6/18 141914
category21 2022/8/31 130556
category84 2023/6/1 115928
category225 2023/6/1 110234
category21 2022/8/29 110020
category21 2022/9/30 104616
category254 2023/6/18 100254
category84 2023/6/19 98706
category21 2023/6/18 96650
category21 2023/6/16 94176
... ... ...
category257 2022/7/14 164
category78 2022/9/17 164
category78 2023/5/24 164
category78 2023/4/7 164
category296 2022/7/30 164
category13 2022/7/22 164
category52 2023/6/1 164
category261 2023/4/19 164
category74 2023/4/25 164
category80 2023/6/23 164
... ... ...
category210 2022/9/11 0
category210 2022/8/19 0
category210 2023/6/27 0
category210 2023/6/7 0
category210 2023/4/29 0
category210 2022/9/30 0
category210 2022/8/18 0
category210 2023/5/2 0
category210 2022/8/5 0
category210 2022/8/22 0

附件3.csv如下:

仓库 库存上限 产能上限 库存周转成本
warehouse1 618887 20310 1826.33
warehouse2 1200847 41117 7073.34
warehouse3 781957 33857 6018.78
warehouse4 1112506 35571 11591.8
warehouse5 42989 61 172.46
warehouse6 1200 58 6.94946
warehouse7 162246 11196 660.839
warehouse8 225918 9674 1350.82
warehouse9 860000 20366 7866.29
warehouse10 1800000 19120 19424.5
... ... ...
warehouse66 555049 18889 909.825
warehouse67 2825685 9722 12177.7
warehouse68 1354130 21518 3821.84
warehouse69 1020000 35933 3766.58
warehouse70 7572 302 64.9634
warehouse71 245098 6809 1418.85
warehouse72 560000 10701 3942.35
warehouse73 499613 4045 5407.63
warehouse74 241274 2241 1530.96
warehouse75 436724 10686 4694.82
... ... ...
warehouse131 200475 13285 1416.02
warehouse132 950012 47356 151.808
warehouse133 2078326 80907 7303.47
warehouse134 13300000 27501 64136.7
warehouse135 271627 14900 578.705
warehouse136 302874 28175 2125.37
warehouse137 277876 17593 2967.97
warehouse138 8708 26 59.061
warehouse139 13500000 92020 43302
warehouse140 4482310 39201 43424.8

附件4.csv如下:

品类1 品类2 关联度
category157 category195 103
category157 category226 7448
category157 category60 45
category157 category279 119
category195 category226 3139
category195 category86 370
category195 category307 515
category195 category60 3012
category195 category191 2813
category195 category173 78
... ... ...
category254 category34 609
category254 category325 1235
category254 category160 249
category254 category201 17
category254 category227 62
category254 category301 12
category254 category155 30
category254 category236 175
category254 category273 711
category254 category56 208
... ... ...
category71 category153 13
category229 category59 145
category229 category343 23
category202 category291 11
category202 category139 49
category291 category139 12
category139 category255 47
category139 category234 17
category139 category204 14
category204 category273 273

附件5.csv如下:

品类 高级品类 级别
category165 high_category1 B
category204 high_category2 A
category134 high_category3 A
category110 high_category4 A
category199 high_category5 B
category26 high_category6 C
category304 high_category7 A
category287 high_category6 B
category227 high_category8 C
category57 high_category5 B
... ... ...
category226 high_category24 B
category68 high_category5 B
category27 high_category3 B
category322 high_category3 B
category205 high_category3 C
category145 high_category2 C
category138 high_category3 C
category197 high_category21 C
category190 high_category28 C
category253 high_category1 B
... ... ...
category333 high_category24 A
category332 high_category3 A
category338 high_category5 C
category336 high_category31 A
category345 high_category31 C
category347 high_category23 A
category346 high_category43 A
category348 high_category3 A
category349 high_category44 A
category350 high_category45 A

思路

问题 1:货量预测模型建立

1.1 库存量预测

目标:预测未来3个月(7-9月)每个品类的月均库存量。

步骤概述

  1. 数据加载与预处理

    • 读取数据
      • 加载附件1.csv,获取350个品类的历史月库存量数据。
      • 加载附件5.csv,获取每个品类的高级品类和级别信息。
    • 日期处理
      • 将"月份"列转换为日期格式(如datetime类型)。
      • 将"月份"设为时间序列索引。
    • 缺失值处理
      • 检查并填补缺失月份的数据,常用方法包括前向填充(ffill)或插值。
    • 数据合并
      • 附件5.csv中的高级品类和级别信息与库存数据合并,形成完整的数据集。
  2. 特征工程

    • 时间特征
      • 提取月份、季度等时间相关特征,以捕捉季节性和趋势性。
    • 品类特征
      • 对高级品类和级别进行独热编码(One-Hot Encoding),将类别信息转化为数值特征。
    • 滞后特征
      • 创建滞后库存量特征,如前1月、前2月、前3月的库存量,以捕捉时间依赖性。
    • 移动平均
      • 计算库存量的移动平均(如3个月移动平均),以平滑数据波动。
    • 其他特征
      • 根据需要,考虑添加其他相关特征,如促销活动、节假日影响等,以提高模型的预测能力。
  3. 模型训练与预测

    • 模型选择
      • 时间序列模型:SARIMA、SARIMAX,适用于具有季节性和趋势性的品类。
      • 机器学习模型:随机森林、梯度提升树(如XGBoost、LightGBM),适用于多特征的预测。
      • 深度学习模型:LSTM(长短期记忆网络),适用于捕捉复杂的时间依赖关系。
    • 模型训练
      • 针对每个品类,使用历史库存数据训练不同的模型。
      • 采用交叉验证(如时间序列交叉验证)评估模型性能,选择表现最优的模型。
    • 模型评估
      • 使用评估指标如MAE(平均绝对误差)、RMSE(均方根误差)等,确保预测的准确性。
    • 预测
      • 使用训练好的模型预测7月、8月和9月的库存量。
      • 对每个品类选择最佳模型的预测结果作为最终预测值。
    • 结果保存
      • 将预测结果汇总并保存到result.xlsx的"月库存预测结果"表单中,确保数据格式与表1一致。

调整与优化建议

  • 模型多样性:不同品类可能具有不同的库存模式,建议对每个品类尝试多种模型,并选择表现最优的模型进行预测。
  • 并行处理:由于品类数量较多(350个),建议使用并行计算方法(如多线程或多进程)以提高计算效率。
  • 特征丰富性:根据实际情况,添加更多相关特征(如促销活动、市场趋势等),以提升模型的预测能力。

1.2 销量预测

目标:预测未来3个月(7-9月)每天的销量。

步骤概述

  1. 数据加载与预处理

    • 读取数据
      • 加载附件2.csv,获取350个品类的历史日销量数据。
      • 加载附件5.csv,获取每个品类的高级品类和级别信息。
    • 日期处理
      • 将"日期"列转换为日期格式(如datetime类型)。
      • 将"日期"设为时间序列索引。
    • 缺失值处理
      • 检查并填补缺失日期的数据,常用方法包括填零或前向填充。
    • 数据合并
      • 附件5.csv中的高级品类和级别信息与销量数据合并,形成完整的数据集。
  2. 特征工程

    • 时间特征
      • 提取星期几、是否周末、是否节假日等时间相关特征,以捕捉日销量的周期性和异常性。
    • 品类特征
      • 对高级品类和级别进行独热编码(One-Hot Encoding)。
    • 滞后特征
      • 创建滞后销量特征,如前1天、前7天的销量,以捕捉短期和长期依赖性。
    • 移动平均
      • 计算销量的移动平均(如7天移动平均),以平滑数据波动。
    • 其他特征
      • 根据需要,考虑添加其他相关特征,如促销活动、天气数据等,以提高模型的预测能力。
  3. 模型训练与预测

    • 模型选择
      • 时间序列模型:Prophet,适用于具有明显趋势和季节性的时间序列数据。
      • 机器学习模型:XGBoost、LightGBM,适用于多特征的日销量预测。
      • 深度学习模型:LSTM,适用于捕捉复杂的时间依赖关系。
    • 模型训练
      • 针对每个品类,使用历史日销量数据训练不同的模型。
      • 采用交叉验证(如时间序列交叉验证)评估模型性能,选择表现最优的模型。
    • 模型评估
      • 使用评估指标如MAE、RMSE等,确保预测的准确性。
    • 预测
      • 使用训练好的模型预测未来90天(7-9月)的每日销量。
      • 对每个品类选择最佳模型的预测结果作为最终预测值。
    • 结果保存
      • 将预测结果汇总并保存到result.xlsx的"日销量预测结果"表单中,确保数据格式与表2一致。

调整与优化建议

  • 模型多样性:不同品类可能具有不同的销量模式,建议对每个品类尝试多种模型,并选择表现最优的模型进行预测。
  • 节假日处理:确保在模型中正确处理节假日对销量的影响,Prophet提供了内置的节假日处理功能,可以利用。
  • 数据分布:对销量数据进行分析,确定是否需要对数据进行平滑处理或转换(如对数转换)以提高模型效果。
  • 并行处理:由于品类数量较多,建议使用并行计算方法以提高计算效率。

问题 2:一品一仓分仓方案

目标:每个品类只能放在一个仓库中,综合考虑仓容、产能、仓租成本及品类关联度,求得最优分仓方案。

步骤概述

  1. 数据加载与预处理

    • 读取预测结果
      • result.xlsx的"月库存预测结果"表单中读取每个品类的7-9月库存量预测。
      • result.xlsx的"日销量预测结果"表单中读取每个品类的7-9月日销量预测,并计算总销量(如7-9月每日销量之和)。
    • 读取仓库信息
      • 加载附件3.csv,提取每个仓库的仓容上限、产能上限和仓租日成本。
      • 计算每个仓库在3个月内的总仓租成本(仓租日成本 × 90天)。
    • 读取关联度数据
      • 加载附件4.csv,构建品类之间的关联度矩阵。未出现的品类组合关联度设为0。
  2. 计算总库存量和总销量

    • 对于每个品类,计算7-9月的总库存量(3个月库存量之和)。
    • 对于每个品类,计算7-9月的总销量(90天日销量之和)。
  3. 构建优化模型

    • 决策变量
      • x i , j x_{i,j} xi,j:二元变量,表示品类 i i i是否分配到仓库 j j j(1为是,0为否)。
      • z j z_j zj:二元变量,表示仓库 j j j 是否被使用(1为是,0为否)。
    • 目标函数
      • 主要目标:最大化总品类关联度。
      • 次要目标:最小化总仓租成本。
      • 综合目标 :采用加权和的方法,将两者结合起来,如:
        Maximize ∑ j ( ∑ i ∑ k 关联度 ( i , k ) ⋅ x i , j ⋅ x k , j ) − λ ⋅ ∑ j 仓租成本 j ⋅ z j \text{Maximize } \sum_{j} \left( \sum_{i} \sum_{k} \text{关联度}(i,k) \cdot x_{i,j} \cdot x_{k,j} \right) - \lambda \cdot \sum_{j} \text{仓租成本}_j \cdot z_j Maximize j∑(i∑k∑关联度(i,k)⋅xi,j⋅xk,j)−λ⋅j∑仓租成本j⋅zj
        其中,( \lambda ) 是权重系数,用于平衡关联度和仓租成本。
    • 约束条件
      • 一品一仓
        ∀ i , ∑ j x i , j = 1 \forall i, \sum_{j} x_{i,j} = 1 ∀i,j∑xi,j=1
      • 仓容约束
        ∀ j , ∑ i 总库存量 i ⋅ x i , j ≤ 仓容上限 j \forall j, \sum_{i} \text{总库存量}i \cdot x{i,j} \leq \text{仓容上限}_j ∀j,i∑总库存量i⋅xi,j≤仓容上限j
      • 产能约束
        ∀ j , ∑ i 总销量 i ⋅ x i , j ≤ 产能上限 j \forall j, \sum_{i} \text{总销量}i \cdot x{i,j} \leq \text{产能上限}_j ∀j,i∑总销量i⋅xi,j≤产能上限j
      • 仓库使用定义
        ∀ j , ∑ i x i , j ≤ M ⋅ z j \forall j, \sum_{i} x_{i,j} \leq M \cdot z_j ∀j,i∑xi,j≤M⋅zj
        其中, M M M是一个足够大的常数,确保只要有任何品类分配到仓库 j j j,$z_j $ 就为1。
      • 关联度计算
        • 由于直接在目标函数中计算 x i , j × x k , j x_{i,j} \times x_{k,j} xi,j×xk,j 会导致非线性,建议采用线性化方法或近似策略:
          • 预计算关联度:将每对品类的关联度分配到同一仓库的贡献预先计算为一个常数,利用线性化方法表示。
          • 使用辅助变量:引入辅助变量表示某对品类是否共同分配到同一仓库,并将其与关联度结合。
          • 简化目标:考虑仅最大化每个仓库内品类的总关联度,而非逐对品类计算。
  4. 求解优化模型

    • 优化工具
      • 推荐使用高级优化求解器如Gurobi、CPLEX,因为模型规模较大(350品类 × 140仓库 = 49,000个决策变量)且涉及混合整数规划(MIP)。
      • 如果使用PuLP,建议结合其与Gurobi或CPLEX接口,以提升求解效率。
    • 模型优化
      • 变量剪枝:提前排除不可能的仓库分配,如某些仓库的仓容或产能不足以容纳某品类的库存量或销量。
      • 分步优化:优先分配高库存量和高销量的品类,减少模型复杂度。
      • 迭代优化:根据初步结果调整模型参数和约束条件,以进一步优化分仓方案。
  5. 保存结果

    • 将分仓结果(每个品类对应的仓库)保存到result.xlsx的"一品一仓分仓方案"表单中,确保数据格式与表3一致。

调整与优化建议

  • 目标函数线性化:由于目标函数中涉及 ( x_{i,j} \times x_{k,j} ) 的非线性项,建议采用以下方法保持模型的线性性:

    • 预计算关联度贡献 :对每对品类 ( i , k ) (i,k) (i,k),计算其在同一仓库中的关联度贡献,将其转化为线性表达。
    • 辅助变量引入 :引入新的变量 y i , k , j y_{i,k,j} yi,k,j 表示品类 i i i和 k k k 是否同时分配到仓库 j j j,并添加约束 y i , k , j ≤ x i , j y_{i,k,j} \leq x_{i,j} yi,k,j≤xi,j和 y i , k , j ≤ x k , j y_{i,k,j} \leq x_{k,j} yi,k,j≤xk,j,以及 y i , k , j ≥ x i , j + x k , j − 1 y_{i,k,j} \geq x_{i,j} + x_{k,j} - 1 yi,k,j≥xi,j+xk,j−1。
    • 简化目标:如关联度计算复杂度过高,可考虑仅最大化每个仓库内品类的总关联度,而非逐对品类计算。
  • 仓库使用变量 :通过引入辅助变量 z j z_j zj,确保只计算被使用仓库的仓租成本。

  • 模型规模优化:通过预筛选仓库(例如,基于地理位置、服务区域等)来减少决策变量数量,提高求解效率。


问题 3:一品多仓分仓方案

目标:允许每个品类分配到最多3个仓库,同时尽量将同件型和同高级品类的品类集中在同一仓库中,最大化品类关联度,兼顾仓容、产能和其他指标。

步骤概述

  1. 数据加载与预处理

    • 读取预测结果
      • result.xlsx的"月库存预测结果"表单中读取每个品类的7-9月库存量预测。
      • result.xlsx的"日销量预测结果"表单中读取每个品类的7-9月日销量预测,并计算总销量(如7-9月每日销量之和)。
    • 读取仓库信息
      • 加载附件3.csv,提取每个仓库的仓容上限、产能上限和仓租日成本。
      • 计算每个仓库在3个月内的总仓租成本(仓租日成本 × 90天)。
    • 读取关联度数据
      • 加载附件4.csv,构建品类之间的关联度矩阵。未出现的品类组合关联度设为0。
    • 读取品类高级信息
      • 加载附件5.csv,获取每个品类的高级品类和级别信息,用于特征工程和聚类分析。
  2. 计算总库存量和总销量

    • 对于每个品类,计算7-9月的总库存量(3个月库存量之和)。
    • 对于每个品类,计算7-9月的总销量(90天日销量之和)。
  3. 构建优化模型

    • 决策变量
      • x i , j x_{i,j} xi,j:二元变量,表示品类 ( i ) 是否分配到仓库 ( j )(1为是,0为否)。
      • y i , j y_{i,j} yi,j:连续变量,表示品类 ( i ) 在仓库 ( j ) 的库存量比例(0到1)。
      • z j z_j zj:二元变量,表示仓库 ( j ) 是否被使用(1为是,0为否)。
    • 目标函数
      • 主要目标:最大化总品类关联度。
      • 次要目标:最小化总仓租成本和总库存周转成本。
      • 综合目标 :采用加权和的方法,将多目标结合起来,如:
        Maximize ∑ j ( ∑ i ∑ k 关联度 ( i , k ) ⋅ x i , j ⋅ x k , j ) − λ 1 ⋅ ∑ j 仓租成本 j ⋅ z j − λ 2 ⋅ ∑ j 库存周转成本 j ⋅ ∑ i y i , j \text{Maximize } \sum_{j} \left( \sum_{i} \sum_{k} \text{关联度}(i,k) \cdot x_{i,j} \cdot x_{k,j} \right) - \lambda_1 \cdot \sum_{j} \text{仓租成本}j \cdot z_j - \lambda_2 \cdot \sum{j} \text{库存周转成本}j \cdot \sum{i} y_{i,j} Maximize j∑(i∑k∑关联度(i,k)⋅xi,j⋅xk,j)−λ1⋅j∑仓租成本j⋅zj−λ2⋅j∑库存周转成本j⋅i∑yi,j
        其中, λ 1 \lambda_1 λ1 和 λ 2 \lambda_2 λ2是权重系数,用于平衡不同目标。
    • 约束条件
      • 分仓数量
        ∀ i , ∑ j x i , j ≤ 3 \forall i, \sum_{j} x_{i,j} \leq 3 ∀i,j∑xi,j≤3
      • 仓容约束
        ∀ j , ∑ i ( 总库存量 i ⋅ y i , j ) ≤ 仓容上限 j \forall j, \sum_{i} (\text{总库存量}i \cdot y{i,j}) \leq \text{仓容上限}_j ∀j,i∑(总库存量i⋅yi,j)≤仓容上限j
      • 产能约束
        ∀ j , ∑ i ( 总销量 i ⋅ y i , j ) ≤ 产能上限 j \forall j, \sum_{i} (\text{总销量}i \cdot y{i,j}) \leq \text{产能上限}_j ∀j,i∑(总销量i⋅yi,j)≤产能上限j
      • 库存比例约束
        ∀ i , j , y i , j ≤ x i , j ⋅ 总库存量 i \forall i,j, y_{i,j} \leq x_{i,j} \cdot \text{总库存量}_i ∀i,j,yi,j≤xi,j⋅总库存量i
      • 仓库使用定义
        ∀ j , ∑ i x i , j ≥ z j \forall j, \sum_{i} x_{i,j} \geq z_j ∀j,i∑xi,j≥zj
      • 品类聚集约束
        • 同件型和同高级品类聚集 :通过引入额外的约束或目标项,鼓励将同件型和同高级品类的品类分配到同一仓库。例如:
          • 奖励项:在目标函数中增加同组品类共同分配到同一仓库的奖励项。
          • 限制项:限制同组品类分配到不同仓库的数量。
  4. 求解优化模型

    • 优化工具
      • 推荐使用高级优化求解器如Gurobi、CPLEX,因为模型规模较大且涉及混合整数规划(MIP)。
      • 可以结合使用PuLP与高级求解器接口,以提升求解效率。
    • 模型优化
      • 变量剪枝:提前排除不可能的仓库分配,如某些仓库的仓容或产能不足以容纳某品类的库存量或销量。
      • 分步优化:优先分配高库存量和高销量的品类,减少模型复杂度。
      • 聚类分析:在优化模型前,对品类进行聚类分析,根据高级品类和件型进行分组,然后在优化模型中优先将同一组内的品类分配到同一仓库。
      • 目标函数奖励:在目标函数中增加同组品类共同分配到同一仓库的奖励项,以鼓励聚集。
      • 库存比例约束:确保分配到多个仓库的库存比例合理,避免某些仓库库存过多或过少。可以引入额外的约束条件,如限制每个仓库分配给某品类的库存比例范围(例如,至少10%,至多70%)。
  5. 保存结果

    • 将分仓结果(每个品类对应的一个或多个仓库及其库存量比例)保存到result.xlsx的"一品多仓分仓方案"表单中,确保数据格式与表4一致。

调整与优化建议

  • 目标函数线性化 :由于目标函数中涉及 x i , j × x k , j x_{i,j} \times x_{k,j} xi,j×xk,j 的非线性项,建议采用以下方法保持模型的线性性:

    • 预计算关联度贡献 :对每对品类 ( i , k ) (i,k) (i,k),计算其在同一仓库中的关联度贡献,将其转化为线性表达。
    • 辅助变量引入 :引入新的变量 y i , k , j y_{i,k,j} yi,k,j 表示品类 i i i和 k k k 是否同时分配到仓库 j j j,并添加约束 y i , k , j y_{i,k,j} yi,k,j l e q x i , j leq x_{i,j} leqxi,j、 y i , k , j ≤ x k , j y_{i,k,j} \leq x_{k,j} yi,k,j≤xk,j、 y i , k , j ≥ x i , j + x k , j − 1 y_{i,k,j} \geq x_{i,j} + x_{k,j} - 1 yi,k,j≥xi,j+xk,j−1。
    • 简化目标:如关联度计算复杂度过高,可考虑仅最大化每个仓库内品类的总关联度,而非逐对品类计算。
  • 品类聚集实现

    • 聚类分析:对品类进行聚类分析,根据高级品类和件型进行分组,确保同一组内的品类优先分配到同一仓库。
    • 目标函数奖励:在目标函数中增加同组品类共同分配到同一仓库的奖励项,以鼓励聚集。
  • 库存比例约束:确保分配到多个仓库的库存比例合理,避免某些仓库库存过多或过少。可以引入额外的约束条件,如限制每个仓库分配给某品类的库存比例范围(例如,至少10%,至多70%)。

  • 模型规模优化:通过预筛选仓库(例如,基于地理位置、服务区域等)来减少决策变量数量,提高求解效率。


业务指标分析

在完成分仓方案后,需要对不同方案的业务指标进行评估,以确保满足业务需求。以下是关键指标及其评估方法:

1. 仓容利用率

仓容利用率 = 单仓总库存量 仓容上限 \text{仓容利用率} = \frac{\text{单仓总库存量}}{\text{仓容上限}} 仓容利用率=仓容上限单仓总库存量

评估方法

  • 对每个仓库,计算其分配到的所有品类的总库存量。
  • 将总库存量除以该仓库的仓容上限,得到仓容利用率。
  • 汇总所有仓库的仓容利用率,计算平均值或其他统计指标。
  • 目标:保持仓容利用率在合理范围内(如70%-90%),避免仓库过度或不足利用。

2. 产能利用率

产能利用率 = 单仓总出库量 产能上限 \text{产能利用率} = \frac{\text{单仓总出库量}}{\text{产能上限}} 产能利用率=产能上限单仓总出库量

评估方法

  • 对每个仓库,计算其分配到的所有品类的总销量。
  • 将总销量除以该仓库的产能上限,得到产能利用率。
  • 汇总所有仓库的产能利用率,计算平均值或其他统计指标。
  • 目标:保持产能利用率在合理范围内,确保仓库的出库能力得到充分利用,避免产能过剩或不足。

3. 总仓租成本

总仓租成本 = ∑ j 仓租成本 j ⋅ z j \text{总仓租成本} = \sum_{j} \text{仓租成本}_j \cdot z_j 总仓租成本=j∑仓租成本j⋅zj

评估方法

  • 汇总所有被使用仓库的仓租成本,即所有被分配至少一个品类的仓库的仓租成本之和。
  • 目标:最小化总仓租成本,同时满足库存和销量需求。

4. 品类分仓数

评估方法

  • 一品一仓方案
    • 确保每个品类仅分配到一个仓库。
  • 一品多仓方案
    • 确保每个品类最多分配到三个仓库。
  • 统计每个品类被分配到的仓库数量,验证是否符合约束。
  • 目标:确保分仓数满足"一品一仓"或"一品多仓"的约束,避免超出分配限制。

5. 品类关联度

品类关联度总和 = ∑ j ∑ i ∑ k 关联度 ( i , k ) ⋅ x i , j ⋅ x k , j \text{品类关联度总和} = \sum_{j} \sum_{i} \sum_{k} \text{关联度}(i,k) \cdot x_{i,j} \cdot x_{k,j} 品类关联度总和=j∑i∑k∑关联度(i,k)⋅xi,j⋅xk,j

评估方法

  • 基于附件4.csv,计算同一仓库内所有品类对的关联度之和。
  • 汇总所有仓库的品类关联度,得到总品类关联度。
  • 目标:最大化总品类关联度,以提高履约效率和降低成本。

6. 库存周转成本

评估方法

  • 对每个仓库,计算其分配到的品类的库存量与仓库的库存周转成本的乘积。
  • 汇总所有仓库的库存周转成本,得到总库存周转成本。
  • 目标:控制库存周转成本,确保分仓方案在成本控制方面表现良好。

7. 仓库使用率

评估方法

  • 评估各仓库的使用情况,计算被使用仓库的比例。
  • 确保仓库使用均衡,避免部分仓库过度使用而其他仓库闲置。
  • 目标:均衡仓库使用,优化资源分配。

业务指标分析方法

1. 指标计算

仓容利用率

  • 对每个仓库,计算其总库存量(分配到该仓库的所有品类的库存量之和)。
  • 将总库存量除以该仓库的仓容上限,得到仓容利用率。

产能利用率

  • 对每个仓库,计算其总销量(分配到该仓库的所有品类的销量之和)。
  • 将总销量除以该仓库的产能上限,得到产能利用率。

总仓租成本

  • 汇总所有被使用仓库的总仓租成本,即所有被分配至少一个品类的仓库的仓租成本之和。

品类关联度总和

  • 基于附件4.csv,计算同一仓库内所有品类对的关联度之和。
  • 汇总所有仓库的品类关联度,得到总品类关联度。

库存周转成本

  • 对每个仓库,计算其分配到的品类的库存量与仓库的库存周转成本的乘积。
  • 汇总所有仓库的库存周转成本,得到总库存周转成本。

仓库使用率

  • 评估各仓库的使用情况,计算被使用仓库的比例。
  • 确保仓库使用均衡,避免部分仓库过度使用而其他仓库闲置。

2. 可视化

利用数据可视化工具(如Matplotlib、Seaborn、Tableau)进行数据可视化,展示各仓库的利用率、成本分布和关联度分布等,便于直观分析。

示例可视化

  • 仓容利用率分布:展示各仓库的仓容利用率分布情况。
  • 产能利用率分布:展示各仓库的产能利用率分布情况。
  • 总仓租成本柱状图:展示各仓库的总仓租成本。
  • 品类关联度热力图:展示不同仓库内品类关联度的热力分布。

3. 优化调整

根据指标评估结果,调整优化模型的权重和约束条件,反复迭代优化分仓方案,直至满足业务需求。例如:

  • 仓容利用率过低:调整模型中的权重系数,增加对仓库使用的激励,或通过调整品类分配策略来优化。
  • 产能利用率不均衡:重新调整产能约束,确保各仓库的产能得到合理利用。
  • 总仓租成本过高:优化模型中的成本权重,寻找更具成本效益的分仓方案。
  • 品类关联度不足:增强目标函数中对关联度的权重,或通过增加品类聚集的奖励项,提高关联度优化效果。

拓展建议

  1. 问题1

    • 模型多样性:不仅限于SARIMA和Prophet,建议尝试多种模型(如随机森林、XGBoost、LightGBM、LSTM)并选择最佳模型。
    • 并行处理:利用多线程或多进程提高预测效率,尤其在处理350个品类时。
    • 特征丰富性:根据实际情况,添加更多相关特征(如促销活动、市场趋势等),以提升模型准确性。
    • 模型评估与选择:采用多个评估指标(如MAE、RMSE)进行模型评估,选择表现最优的模型。
  2. 问题2

    • 关联度计算优化:采用线性化方法或辅助变量来处理目标函数中的非线性关联度计算,确保模型的线性性和可求解性。
    • 仓库使用变量:通过辅助变量 ( z_j ) 正确反映仓库是否被使用,并在目标函数中合理引入仓租成本。
    • 模型规模优化:通过预筛选仓库(如基于地理位置、服务区域等)来减少决策变量数量,提高求解效率。
    • 使用高效求解器:推荐使用高级求解器(如Gurobi、CPLEX),以处理大规模优化问题。
  3. 问题3

    • 品类聚集实现:通过引入聚类分析或在优化模型中增加聚集约束,确保同件型和同高级品类的品类尽量集中分配。
    • 库存比例约束:引入库存比例约束,确保每个品类在多个仓库之间的库存分配合理,避免某些仓库库存过多或过少。
    • 目标函数细化:进一步细化目标函数,明确各项指标的权重和优先级,确保模型能够平衡多种业务目标。
    • 变量剪枝与模型优化:提前排除不可能的仓库分配,使用高效的优化求解器(如Gurobi、CPLEX),并优化模型结构以减少计算时间。
  4. 业务指标分析

    • 全面评估:确保全面计算和分析所有关键业务指标,如仓容利用率、产能利用率、总仓租成本、品类关联度等。
    • 可视化呈现:通过数据可视化工具,直观展示分仓方案的各项指标,便于决策和优化。
    • 迭代优化:根据指标评估结果,调整优化模型的权重和约束条件,反复迭代优化分仓方案,直至满足业务需求。
  5. 技术实现

    • 优化求解器选择 :对于大规模优化问题,建议使用高效的求解器(如Gurobi、CPLEX),而不仅依赖于PuLP的默认CBC求解器。
    • 代码优化与调试:确保代码高效、可读,并通过小规模测试验证模型和代码的正确性。
    • 自动化流程:建议将预测和分仓过程自动化,定期更新预测数据和分仓方案,适应市场变化。

本篇文章完整思路和整理由GPT提供,仅供参考。使用地址::https://vlink.cc/mosha

相关推荐
IT古董1 小时前
【机器学习】如何使用Python的Scikit-learn库实现机器学习模型,并对数据进行预处理和特征缩放以提高模型性能?
python·机器学习·scikit-learn
Want5952 小时前
Python绘制太极八卦
开发语言·python
翀哥~2 小时前
python VS c++
开发语言·c++·python
财富探秘者2 小时前
贵州茅台[600519]行情数据接口
大数据·c语言·python·算法·金融·restful
刘天远3 小时前
django实现paypal订阅记录
后端·python·django
菜鸟小贤贤4 小时前
python+pytest+allure利用fix实现接口关联
python·macos·自动化·pytest
vvvae12345 小时前
Python 网络爬虫操作指南
python
hummhumm5 小时前
第33章 - Go语言 云原生开发
java·开发语言·后端·python·sql·云原生·golang
web安全工具库5 小时前
Python 列表元素的访问、出现次数统计及成员资格判断
python
湫ccc5 小时前
《Python基础》之列表推导式(列表生成式)
开发语言·python