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.17.117.217.318.18.118.218.319.19.119.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 表格中的“一品多仓分仓方案”表单中。

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

数据

附件1.csv如下:

品类月份库存量
category2252023/6/14676058
category842023/1/14421974
category212023/1/14411095
category842022/7/13689222
category842023/2/13431261
category2252023/3/13133157
category2252022/7/13095300
category2252023/1/12966388
category842023/6/12913526
category2252023/2/12890619
category2142022/9/114491
category3002022/9/114484
category2282023/2/114446
category1272023/3/114432
category2142023/6/114405
category2142023/3/114339
category2382022/9/114333
category1272022/8/114331
category912022/9/114304
category2712022/8/114279
category2102022/7/11
category2102022/8/11
category2102023/1/11
category3262023/3/11
category3262023/4/11
category3262023/5/11
category3292022/7/11
category3362022/7/11
category3362022/9/11
category3362022/8/11

附件2.csv如下:

品类日期销量
category842023/6/18141914
category212022/8/31130556
category842023/6/1115928
category2252023/6/1110234
category212022/8/29110020
category212022/9/30104616
category2542023/6/18100254
category842023/6/1998706
category212023/6/1896650
category212023/6/1694176
category2572022/7/14164
category782022/9/17164
category782023/5/24164
category782023/4/7164
category2962022/7/30164
category132022/7/22164
category522023/6/1164
category2612023/4/19164
category742023/4/25164
category802023/6/23164
category2102022/9/110
category2102022/8/190
category2102023/6/270
category2102023/6/70
category2102023/4/290
category2102022/9/300
category2102022/8/180
category2102023/5/20
category2102022/8/50
category2102022/8/220

附件3.csv如下:

仓库库存上限产能上限库存周转成本
warehouse1618887203101826.33
warehouse21200847411177073.34
warehouse3781957338576018.78
warehouse411125063557111591.8
warehouse54298961172.46
warehouse61200586.94946
warehouse716224611196660.839
warehouse822591896741350.82
warehouse9860000203667866.29
warehouse1018000001912019424.5
warehouse6655504918889909.825
warehouse672825685972212177.7
warehouse681354130215183821.84
warehouse691020000359333766.58
warehouse70757230264.9634
warehouse7124509868091418.85
warehouse72560000107013942.35
warehouse7349961340455407.63
warehouse7424127422411530.96
warehouse75436724106864694.82
warehouse131200475132851416.02
warehouse13295001247356151.808
warehouse1332078326809077303.47
warehouse134133000002750164136.7
warehouse13527162714900578.705
warehouse136302874281752125.37
warehouse137277876175932967.97
warehouse13887082659.061
warehouse139135000009202043302
warehouse14044823103920143424.8

附件4.csv如下:

品类1品类2关联度
category157category195103
category157category2267448
category157category6045
category157category279119
category195category2263139
category195category86370
category195category307515
category195category603012
category195category1912813
category195category17378
category254category34609
category254category3251235
category254category160249
category254category20117
category254category22762
category254category30112
category254category15530
category254category236175
category254category273711
category254category56208
category71category15313
category229category59145
category229category34323
category202category29111
category202category13949
category291category13912
category139category25547
category139category23417
category139category20414
category204category273273

附件5.csv如下:

品类高级品类级别
category165high_category1B
category204high_category2A
category134high_category3A
category110high_category4A
category199high_category5B
category26high_category6C
category304high_category7A
category287high_category6B
category227high_category8C
category57high_category5B
category226high_category24B
category68high_category5B
category27high_category3B
category322high_category3B
category205high_category3C
category145high_category2C
category138high_category3C
category197high_category21C
category190high_category28C
category253high_category1B
category333high_category24A
category332high_category3A
category338high_category5C
category336high_category31A
category345high_category31C
category347high_category23A
category346high_category43A
category348high_category3A
category349high_category44A
category350high_category45A

思路

问题 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(ik关联度(i,k)xi,jxk,j)λj仓租成本jzj
        其中,( \lambda ) 是权重系数,用于平衡关联度和仓租成本。
    • 约束条件
      • 一品一仓
        ∀ i , ∑ j x i , j = 1 \forall i, \sum_{j} x_{i,j} = 1 i,jxi,j=1
      • 仓容约束
        ∀ j , ∑ i 总库存量 i ⋅ x i , j ≤ 仓容上限 j \forall j, \sum_{i} \text{总库存量}_i \cdot x_{i,j} \leq \text{仓容上限}_j j,i总库存量ixi,j仓容上限j
      • 产能约束
        ∀ j , ∑ i 总销量 i ⋅ x i , j ≤ 产能上限 j \forall j, \sum_{i} \text{总销量}_i \cdot x_{i,j} \leq \text{产能上限}_j j,i总销量ixi,j产能上限j
      • 仓库使用定义
        ∀ j , ∑ i x i , j ≤ M ⋅ z j \forall j, \sum_{i} x_{i,j} \leq M \cdot z_j j,ixi,jMzj
        其中, 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,jxi,j y i , k , j ≤ x k , j y_{i,k,j} \leq x_{k,j} yi,k,jxk,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,jxi,j+xk,j1
    • 简化目标:如关联度计算复杂度过高,可考虑仅最大化每个仓库内品类的总关联度,而非逐对品类计算。
  • 仓库使用变量:通过引入辅助变量 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(ik关联度(i,k)xi,jxk,j)λ1j仓租成本jzjλ2j库存周转成本jiyi,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,jxi,j3
      • 仓容约束
        ∀ j , ∑ i ( 总库存量 i ⋅ y i , j ) ≤ 仓容上限 j \forall j, \sum_{i} (\text{总库存量}_i \cdot y_{i,j}) \leq \text{仓容上限}_j j,i(总库存量iyi,j)仓容上限j
      • 产能约束
        ∀ j , ∑ i ( 总销量 i ⋅ y i , j ) ≤ 产能上限 j \forall j, \sum_{i} (\text{总销量}_i \cdot y_{i,j}) \leq \text{产能上限}_j j,i(总销量iyi,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,jxi,j总库存量i
      • 仓库使用定义
        ∀ j , ∑ i x i , j ≥ z j \forall j, \sum_{i} x_{i,j} \geq z_j j,ixi,jzj
      • 品类聚集约束
        • 同件型和同高级品类聚集:通过引入额外的约束或目标项,鼓励将同件型和同高级品类的品类分配到同一仓库。例如:
          • 奖励项:在目标函数中增加同组品类共同分配到同一仓库的奖励项。
          • 限制项:限制同组品类分配到不同仓库的数量。
  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,jxk,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,jxi,j+xk,j1
    • 简化目标:如关联度计算复杂度过高,可考虑仅最大化每个仓库内品类的总关联度,而非逐对品类计算。
  • 品类聚集实现

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

评估方法

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

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} 品类关联度总和=jik关联度(i,k)xi,jxk,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Task :prepareKotlinBuildScriptModel UP-TO-DATE,编译卡在这里不动或报错

这里写自定义目录标题 原因方案其他思路 原因 一般来说,当编译到这个task之后,后续是要进行一些资源的下载的,如果你卡在这边不动的话,很有可能就是你的IDE目前没有办法进行下载。 方案 开关一下IDE内部的代理,或者…

Jetpack架构组件_LiveData组件

1.LiveData初识 LiveData:ViewModel管理要展示的数据(VM层类似于原MVP中的P层),处理业务逻辑,比如调用服务器的登陆接口业务。通过LiveData观察者模式,只要数据的值发生了改变,就会自动通知VIEW层&#xf…

C#里使用最高性的网络通讯例子

由于接收网络数据会不完整的包, 并且产生各种问题,导致大家都是使用最低效的内存保存数据,比如List<byte>这样的结构。 具体内容可以参考下面的大牛的文章: System.IO.Pipelines: High performance IO in .NET - .NET Blog (https://devblogs.microsoft.com/dot…

【Spring】详解SpringMVC,一篇文章带你快速入门

目录 一、初始MVC 二、SpringMVC 三、Spring MVC的运用 ⭕RequestMapping ⭕传递参数 1、传递单个参数 2、传递多个参数 3、参数重命名 4、传递数组与集合 5、获取路径参数 6、传递JSON数据 7、上传文件 一、初始MVC MVC&#xff08;Model-View-Controller&#…

在不能联网的电脑上安装库(PyEMD为例)

1、查看PyEMD需要什么依赖 需要numpy、pathos、scipy、tqdm依赖&#xff0c;我电脑上有了numpy, scipy&#xff0c;以另外两个为例 2、查看依赖的依赖 查看依赖是否还要依赖 可以看到pathos还要这四个依赖&#xff0c;以此类推&#xff0c;看还要哪些依赖&#xff0c;直至req…

2024.9.27华为笔试题解

第一题绩效互评人员分配 二分图判断模板,可以去看其他博客学习一下 #include <bits/stdc++.h> using namespace std;vector<int> GoodRelationships[105]; int color[105]; // 记录每个节点的颜色,0表示未染色,1和2表示不同的组 bool is_bipartite = true; …

【C】用c写贪吃蛇

1.输入正确的账号密码及其用户名&#xff0c;登录成功进入贪吃蛇游戏界面&#xff0c; 2.随机生成蛇头★、食物▲的位置(x,y)&#xff0c;并使用□打印地图 3.使用w s a d按键&#xff0c;完成蛇头的上下左右移动 4.蛇头碰撞到食物后&#xff0c;吃下食物变成蛇身的一部分●…

Mac 使用脚本批量导入 Apple 歌曲

最近呢&#xff0c;买了一个 iPad&#xff0c;虽然家里笔记本台式都有&#xff0c;显示器都是 2个&#xff0c;比较方便看代码&#xff08;边打游戏边追剧&#xff09;。 但是在床上拿笔记本始终还是不方便&#xff0c;手机在家看还是小了点&#xff0c;自从有 iPad 之后&…

【Java】java 集合框架(详解)

&#x1f4c3;个人主页&#xff1a;island1314 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1. 概述 &#x1f680; &#x1f525; Java集合框架 提供了一系列用于存储和操作…

实现uniapp天地图边界范围覆盖

在uniapp中&#xff0c;难免会遇到使用地图展示的功能&#xff0c;但是百度谷歌这些收费的显然对于大部分开源节流的开发者是不愿意接受的&#xff0c;所以天地图则是最佳选择。 此篇文章&#xff0c;详细的实现地图展示功能&#xff0c;并且可以自定义容器宽高&#xff0c;还可…

java项目之电影评论网站(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的电影评论网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 电影评论网站的主要使用者管…

UE5 源码学习 初始化

跟着 https://www.cnblogs.com/timlly/p/13877623.html 学习 入口函数 UnrealEngine\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp WinMain 入口 int32 WINAPI WinMain(_In_ HINSTANCE hInInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ char* p…

8.three.js相机详解

8.three.js相机详解 1、 认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera&#xff1a; 正投影和透视投影的区别是&am…

R语言编程

一、R语言在机器学习中的优势 R语言是一种广泛用于统计分析和数据可视化的编程语言,在机器学习领域也有诸多优势。 丰富的包:R拥有大量专门用于机器学习的包。例如,caret包是一个功能强大的机器学习工具包,它提供了统一的接口来训练和评估多种机器学习模型,如线性回归、决…

Excel:vba实现生成随机数

Sub 生成随机数字()Dim randomNumber As IntegerDim minValue As IntegerDim maxValue As Integer 设置随机数的范围(假入班级里面有43个学生&#xff0c;学号是从1→43)minValue 1maxValue 43 生成随机数(在1到43之间生成随机数)randomNumber Application.WorksheetFunctio…

Vue学习笔记(六、跑马灯效果)

下面是一段跑马灯效果的代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>VueBaseCode</title><script src"./lib/vue.js"></script> </head><b…

Python的两种循环结构和break与continue

在所有的循环中应当避免死循环的出现。死循环&#xff1a;条件始终为真的循环称为死循环在循环语句中&#xff0c;表达式永远为真&#xff0c;致循环持续执行程序无法终止。在开发的时候&#xff0c;死循环带来的麻烦是最直观最大的。 一. while循环 while循环的框架&#xff…

【大数据学习 | Zookeeper】Zookeeper服务端与客户端的工作流程

1. Zookeeper服务端 ZooKeeper 服务端通常是以集群的形式部署&#xff0c;这样可以提供高可用性和容错能力。ZooKeeper 集群中的每个节点都保存着几乎相同的数据副本&#xff08;除了领导者选举相关的数据&#xff09;。集群中有一个节点被选为领导者&#xff08;Leader&#…

element 按钮变形 el-button样式异常

什么都没动&#xff0c;element UI的按钮变形了&#xff0c;莫名其妙&#xff0c;连官网的也变形了&#xff0c;换了其它浏览器又正常&#xff0c; 难道这是element UI的问题&#xff1f;NO&#xff0c;是浏览器的插件影响到了&#xff01;去扩展插件里面一个个关闭扩展&#x…

时间序列预测(十)——长短期记忆网络(LSTM)

目录 一、LSTM结构 二、LSTM 核心思想 三、LSTM分步演练 &#xff08;一&#xff09;初始化 1、权重和偏置初始化 2、初始细胞状态和隐藏状态初始化 &#xff08;二&#xff09;前向传播 1、遗忘门计算&#xff08;决定从上一时刻隐状态中丢弃多少信息&#xff09; 2、…