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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】文件IO深度解析:文件描述符与重定向的奥秘

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 C语言中文件IO操作 🥝 1.C语言中的开关读写文件🦋 1.1 fopen()🦋 1.2 fclose()🦋 1.3 fwrite()&#x1f98…

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战 0. 前言1. PRCV 20241.1 大会简介1.2 生成式 Al 时代的内容安全与系统构建加速 2. 生成式 AI2.1 生成模型2.2 生成模型与判别模型的区别2.3 生成模型的发展 3. GAI 内容安全3.1 GAI 时代内容安全挑战3.2 图像…

面试宝典(五):用三个线程按顺序循环打印123三个数字,比如123123123

要使用三个线程按顺序循环打印123三个数字,势必要控制线程的执行顺序,可以使用java.util.concurrent包中的Semaphore类来控制线程的执行顺序。 代码示例 import java.util.concurrent.Semaphore;public class SequentialPrinting123 {private static Se…

第T8周:猫狗识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 🍺 要求: 了解mode…

离线电脑 Visual Studio Community 2017:您的许可证已过期

VS 2017社区版,打开后提示: “您的许可证已过期,必须进行更新。请确保已连接Internet,然后检查更新的许可证以继续使用本产品” 解决办法: (1)在另一台可以联网的电脑上,更新VS20…

8.Linux按键驱动-中断下半部

1.编程思路 1.1在gpio结构体中添加tasklet_struct结构体 1.2在probe函数中初始化tasklet结构体 1.3在中断服务程序中调度tasklet 1.4在这个函数中执行其它任务 2.代码: 应用程序和Makefile和上节一致 https://blog.csdn.net/weixin_40933496/article/details/1…

通过call指令来学习指令摘要表的细节

E8 cw cw 表示E8后面跟随2 字节 (什么数不知道) rel16 指在与指令同一代码段内的相对地址偏移 D ,指向Instruction Operand Encoding 表中的D列, 他告诉我们 操作数1 是一个0FFSET N.S. 在64位模式下,某些指令需要使用“地址覆盖前缀”(address over…

RL学习笔记-马尔可夫过程

参考资料:蘑菇书、周博磊老师课程 在强化学习中,智能体与环境交互是通过马尔可夫决策过程来表示的,因此马尔可夫决策过程是强化学习的基本框架。 马尔可夫性质 指一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件…

Golang | Leetcode Golang题解之第506题相对名次

题目: 题解: var desc [3]string{"Gold Medal", "Silver Medal", "Bronze Medal"}func findRelativeRanks(score []int) []string {n : len(score)type pair struct{ score, idx int }arr : make([]pair, n)for i, s : …

BERT语言模型详解【Encoder-Only】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 三、Transformer图文详解【Attention is all you need】 四、大语言模型的Scaling Law【Power Low】 五、大语言模型微调方法详解【全量微调、PEFT、…

Android Studio 导入/删除/新建库的模块(第三方项目) - Module

文章目录 一、导入module项目 Module空项目如何导入Project工程项目二、删除module项目三、新建module项目(不常用) 一、导入module项目 首先,你必须要有一个工程(Project),才可以打开项目(Module) 第一步骤:右键项目依次点击 New -> Module 1、工…

LLM | 论文精读 | 基于大型语言模型的自主代理综述

论文标题:A Survey on Large Language Model based Autonomous Agents 作者:Lei Wang, Chen Ma, Xueyang Feng, 等 期刊:Frontiers of Computer Science, 2024 DOI:10.1007/s11704-024-40231-1 一、引言 自主代理(…

AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南

这段时间 GPT4 多了很多功能,今天主要是增加了 GPTs Store 的介绍和 创建 GPTs 的简单方法,那么我们开始吧,文末有彩蛋。 这里主要讲解如下几个点: 1: ChatGPT 4.0 插件的使用 2:ChatGPT 4.0 高级数据分…

【已解决】【hadoop】【hive】启动不成功 报错 无法与MySQL服务器建立连接 Hive连接到MetaStore失败 无法进入交互式执行环境

启动hive显示什么才是成功 当你成功启动Hive时,通常会看到一系列的日志信息输出到控制台,这些信息包括了Hive服务初始化的过程以及它与Metastore服务连接的情况等。一旦Hive完成启动并准备就绪,你将看到提示符(如 hive> &#…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode(独立服务器模式) 2、two server mode(双服务器模式) 3、distributed multiple-executor mode(分布式多…

FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)

前言 在FPGA设计中,Xilinx Vivado软件是一款功能强大的设计工具,它不仅支持硬件描述语言(HDL)的开发,还提供了丰富的图形化设计界面,方便用户进行硬件设计、调试和测试。这里我们将详细介绍,如…

RabbitMQ 高级特性——事务

文章目录 前言事务配置事务管理器加上Transactional注解 前言 前面我们学习了 RabbitMQ 的延迟队列,通过延迟队列可以实现生产者生产的消息不是立即被消费者消费。那么这篇文章我们将来学习 RabbitMQ 的事务。 事务 RabbitMQ 是基于 AMQP 协议实现的,…

Gstreamer的webrtcbin插件

1、输入参数 static GOptionEntry entries[] {{"peer-id", 0, 0, G_OPTION_ARG_STRING, &peer_id, "String ID of the peer to connect to", "ID"},{"server", 0, 0, G_OPTION_ARG_STRING, &server_url, "Signalling se…

unity项目导出安卓工程后,在AndroidStudio打包报错:unityLibrary:BuildIl2CppTask‘.

下面这个是我在unity开发者社区提问后,他们回答得: 解决方案:我这边按照这几个方案检查了下,NDK和JDK都没问题,最后重启电脑才解决的,应该是文件被锁定了,我用的windows系统的。 验证&#xff…

一篇文章快速认识YOLO11 | 旋转目标检测 | 原理分析 | 模型训练 | 模型推理

本文分享YOLO11的旋转目标检测任务,在原始目标检测中,添加多一个角度预测,实现定向边界框检测。 其中旋转角度算法设计中,通过回归预测实现的。 目录 1、旋转目标检测概述 2、YOLO11中的OBB数据格式 3、分析模型配置参数 4、…