供应链 | 需求不确定情况下的物料需求规划: 基于随机优化的研究

news2024/12/26 1:18:29

在这里插入图片描述

作者:Simon Thevenin, Yossiri Adulyasak, Jean-Francois Cordeau​
引用:Thevenin S, Adulyasak Y, Cordeau J F. Material requirements
planning under demand uncertainty using stochastic optimization[J].
Production and Operations Management, 2021, 30(2): 475-493.​
文章链接:https://doi.org/10.1111/poms.13277

1 问题背景

企业资源规划 (Enterprise Resource Planning, ERP) 系统,将财务、会计、人力资源、供应链管理和客户关系管理等各种业务功能集成到一个综合系统中,通过提供实时的关键绩效指标可见性和自动化例行任务,进而提高业务运营的效率和效力。ERP系统的核心是物料需求规划 (Material Requirements Planning, MRP) 逻辑:根据最终产品的需求,MRP系统计算每个周期中需要生产(或订购)每个零部件的批次大小。物料清单 (Bill of Materials, BOM), 即产品结构以及生产每个最终产品或后续组件所需的组件数量,显示组件的层次结构,为此类计算的基础。

MRP 系统经常用于不确定环境中。然而尽管最新的需求数据可以快速在系统中进行更新,但所产生的响应性 (reactive) 变化仍缺乏最优性。实际上,针对未来的生产计划受既往制约,并缺乏应对未来需求不确定性的积极性 (proactive) 对策。现有方法对于此问题有两类改善方法:1. 提高对需求预测的准确度;2. 通过随机分布对需求建模。文章采用后者,研究了随机优化在MRP系统中的应用。

该论文针对多层级 (multi-echelon) 多品种 (multi-item) 的批量生产问题。此类问题的研究由最早采用基于简单逻辑的启发式批量生产规则,到近些年的混合整数线性规划 (mixed integer linear programming, MILP),多数沿用确定性需求 (determinstic demand) (以对冲不确定性,作为问题目标的安全库存被单独计算)。然而在实际操作中,可适行方法主要采用库存基准策略 (base stock policy).

库存基准策略是一种常见的库存管理策略,旨在确保企业在供应链中的库存水平满足特定的服务水平要求。在库存基准策略中,企业将库存水平设置为一个基准值(即基础库存水平),并根据销售需求和库存水平的变化来进行库存管理。当库存水平低于基准值时,系统会及时采购新的库存,以保持库存水平不低于基准值。与其他库存管理策略相比,库存基准策略具有简单易用、成本低廉、适用性广泛等优点。

通过库存基准策略,库存水平可以被写成随机需求的函数,进而计算出安全库存,以满足给定的服务水平 (service level). 但在此类系统中,批量大小 (lot size) 的确定必须考虑多层级、设置成本、库存容量等复杂因素;这致使模型很难得到最优解 (NP-hard)。因此,在实践中通常使用次优的安全库存水平(不与批量大小一起确定):即

  1. 安全库存水平在主生产规划(MPS)层面上手动计算,或
  2. 在假设采用库存基准策略的情况下计算。

文章为此提出 static-static 及 static-dynamic 两类决策框架。

  1. 在 static-static 框架下,在时间 0(需求实现之前的当前周期)决定设置决策 (setup decision, 是否生产) 和生产数量。
  2. 在 static-dynamic 框架下,系统设置在时间 0 决定整个规划范围的设置决策 ,而第 t + 1 t+1 t+1期的生产数量是在观察到第 t t t期需求后决定。

文章对于后者提出了两种从随机模型的解中派生出的实时执行策略,简称 S-策略 和 Q-策略. 同时,基于Bookbinder & Tan (1988) 的研究,提出了 dynamic-dynamic 框架,并采用滚动规划法 (rolling-horizon) 进行求解。以上提到的建模策略以及求解方法概括如下:

建模策略模型求解方法评估方法
static-static两阶段法两阶段法观察(无需重新规划)
static-dynamic多阶段法两阶段启发式、多阶段、修复和优化、S-策略重新规划 (replanning)
dynamic-dynamic-两阶段启发式、多阶段启发式、修复和优化、S-策略、Q-策略滚动规划模拟

2 Static-static 框架下的两阶段随机MRP模型

Q i t Q_{it} Qit表示品种 i ∈ I i\in\mathcal{I} iI在第 t ∈ H = { 1 , … , T } t\in\mathcal{H}=\{1,\ldots,T\} tH={1,,T}时期的生产数量,其中 I = I e ∪ I c \mathcal{I} = \mathcal{I}_e \cup \mathcal{I}_c I=IeIc为品类集合, I e \mathcal{I}_e Ie I c \mathcal{I}_c Ic分别表示成品 (end item) 集合和零部件 (components) 集合,且零部件只考虑生产过程中的需求,无外部其他需求。模型已知:

•BOM( R i j R_{ij} Rij, 即生产1单位产品 j j j所需的产品 i i i的数量)

•交货期 (lead time) L i L_{i} Li

•成品需求的随机分布 D ~ i t \tilde{D}_{it} D~it

•生产能力 (capacity) C k C_k Ck,其中对于每个资源 k ∈ K k\in\mathcal{K} kK,给定每个单位的产品 i i i对资源的消耗为 K i k K_{ik} Kik.

对于每一个产品 i i i模型考虑的成本包括:

•库存持有成本 h i h_{i} hi

•固定设置成本 s i s_{i} si

•单位生产成本 v i v_{i} vi

•成品的滞后 (back log) 成本 b i b_{i} bi和失去销售 (lost sale) 的成本 e i e_{i} ei。物品 i i i在时期 t t t的未满足需求将被滞后(可以在随后的时期中满足),但每个滞后单位在每个时期都会产生惩罚成本 b i b_{i} bi.

对于多层次多品项有限制的批量生产问题 (MMCLP),文章考虑需求情景集合 Ω \Omega Ω;对于任一情景 ω ∈ Ω \omega\in\Omega ωΩ p ω > 0 , Σ ω ∈ Ω p ω = 1 p_{\omega} >0, \Sigma_{\omega\in\Omega} p_{\omega}=1 pω>0,ΣωΩpω=1),目标函数为最小化预期总成本。在 static-static 框架下,模型通过两阶段法进行表述:阶段一,在时期0 (需求未知)做出设置决策 Y i t = { 0 , 1 } Y_{it} = \{0,1\} Yit={0,1}且在时期 t t t求解生产数量 Q i t Q_{it} Qit;阶段二,在满足需求后,对于每一个情景 ω \omega ω观测期末库存量 I i t ω I_{it}^{\omega} Iitω B i t ω B_{it}^{\omega} Bitω,其中 B i T ω B_{iT}^{\omega} BiTω为在规划时间结束时情景 ω \omega ω中物品 i i i剩余的总滞后数量,被视为失去销售。由于设置和生产数量决策是在观察到需求之前做出的,因此对于所有情景,其均为相同;相反,第二阶段的变量对于每个情景都不同。

  1. min ⁡ ∑ ω ∈ Ω p ω ( ∑ t ∈ H ∑ i ∈ I ( h i I i t ω + s i Y i t + v i Q i t ) + ∑ i ∈ I e ( ∑ t = 1 T − 1 b i B i t ω + e i B i T ω ) ) \min \sum_{\omega\in\Omega}p_{\omega}\left(\sum_{t\in\mathcal{H}}\sum_{i\in\mathcal{I}}(h_iI_{it}^{\omega} + s_iY_{it}+ v_iQ_{it}) + \sum_{i\in\mathcal{I}_e}\left(\sum_{t=1}^{T-1} b_iB_{it}^{\omega} + e_iB_{iT}^{\omega}\right)\right) minωΩpω(tHiI(hiIitω+siYit+viQit)+iIe(t=1T1biBitω+eiBiTω))

该目标函数考虑了所有情景的预期总成本,包括库存成本、设置成本、单位生产成本、滞后成本和规划结束时失去销售成本。

  1. ∑ τ = 1 t − L i Q i τ + I i 0 − ∑ τ = 1 t D i τ ω − I i t ω + B i t ω = 0 , i ∈ I e , t ∈ H , ω ∈ Ω ; \sum_{\tau=1}^{t-L_i}Q_{i\tau}+I_{i0} - \sum_{\tau=1}^t D_{i\tau}^{\omega} - I_{it}^{\omega} + B_{it}^{\omega} = 0, \quad i\in\mathcal{I}_e, t\in\mathcal{H}, \omega\in\Omega; τ=1tLiQiτ+Ii0τ=1tDiτωIitω+Bitω=0,iIe,tH,ωΩ;

该约束设置了成品的滞后和库存数量的值,均取决于生产数量和外部需求。

  1. ∑ τ = 1 t − L i Q i τ + I i 0 − ∑ τ = 1 t ( ∑ j ∈ I R i j Q j t ) − I i t ω = 0 , i ∈ I c , t ∈ H , ω ∈ Ω ; \sum_{\tau=1}^{t-L_i} Q_{i\tau} + I_{i0} - \sum_{\tau=1}^t\left(\sum_{j\in\mathcal{I}}R_{ij}Q_{jt}\right) - I_{it}^{\omega} = 0, \quad i\in\mathcal{I}_c, t\in\mathcal{H}, \omega\in\Omega; τ=1tLiQiτ+Ii0τ=1t(jIRijQjt)Iitω=0,iIc,tH,ωΩ;

该约束设定了零部件取决于内部需求的库存水平,并注意,因零部件为生产必需,不允许有滞后。

  1. Q i t ≤ M i Y i t , i ∈ I , t ∈ H ; Q_{it}\leq M_iY_{it},\quad i\in\mathcal{I}, t\in\mathcal{H}; QitMiYit,iI,tH;

该约束表述了生产数量与设置决策的关系,其中 M i M_i Mi为产品 i i i的生产数量上限。该上限可设置为产品 i i i的需求推断得出的上限 M i 1 M_i^1 Mi1和由生产能力推断得出的上限 M i 2 M_i^2 Mi2之间的最小值,其中

M i 1 = { max ⁡ ω ∈ Ω ∑ t ∈ H D i t ω , i ∈ I e ; ∑ j ∈ I R i j M j 1 , i ∈ I c . M_i^1 = \left\{ \begin{array}{ll} \displaystyle\max_{\omega\in\Omega} \sum_{t\in\mathcal{H}}D_{it}^{\omega}, & \hbox{$i\in\mathcal{I}_e$;} \\ \displaystyle\sum_{j\in\mathcal{I}}R_{ij}M_j^1, & \hbox{$i\in\mathcal{I}_c$.} \end{array} \right. Mi1= ωΩmaxtHDitω,jIRijMj1,iIe;iIc.

M i 2 = min ⁡ k ∈ K ∣ K i k > 0 C k K i k M_i^2 = \displaystyle\min_{k\in\mathcal{K}|K_{ik}>0} \frac{C_k}{K_{ik}} Mi2=kKKik>0minKikCk

同时, M i 1 M_i^1 Mi1的设置表示,生产数量不能大于最大总需求量。

  1. ∑ i ∈ I K i k Q i t ≤ C k , k ∈ K , t ∈ H ; \sum_{i\in\mathcal{I}}K_{ik}Q_{it}\leq C_k,\quad k\in\mathcal{K}, t\in\mathcal{H}; iIKikQitCk,kK,tH;

该约束确保生产能力不被违反。

  1. B i t ω , I i t ω ≥ 0 , t ∈ H , ω ∈ Ω ; Q i t ≥ 0 , Y i t ∈ { 0 , 1 } , i ∈ I , t ∈ H . B_{it}^{\omega}, I_{it}^{\omega} \geq 0, \quad t\in\mathcal{H}, \omega\in\Omega;Q_{it}\geq 0, Y_{it}\in\{0,1\},\quad i\in\mathcal{I}, t\in\mathcal{H}. Bitω,Iitω0,tH,ωΩ;Qit0,Yit{0,1},iI,tH.

3 Static-dynamic 框架下的多阶段随机MRP模型

Static-dynamic 框架下的模型类似于上述模型,但生产数量是与情景相关的,并且模型中包括了非预测性约束,如下:
Q i t + 1 ω = Q i t + 1 ω ′ , I i t ω = I i t ω ′ , B i t ω = B i t ω ′ , ∀ i ∈ I , t ∈ H , ω , ω ′ ∣ D ω 1 , … , t = D ω ′ 1 , … , t . Q_{it+1}^{\omega} = Q_{it+1}^{\omega'}, I_{it}^{\omega} = I_{it}^{\omega'}, B_{it}^{\omega} = B_{it}^{\omega'},\quad \forall i\in\mathcal{I}, t\in\mathcal{H}, \omega, \omega'|D_{\omega}^{1,\ldots,t} = D_{\omega'}^{1,\ldots,t}. Qit+1ω=Qit+1ω,Iitω=Iitω,Bitω=Bitω,iI,tH,ω,ωDω1,,t=Dω1,,t.

即时期 t t t的生产数量取决于时期 1 , … , t − 1 1,\ldots,t-1 1,,t1中需求的实现。因此,产品 i i i在时期 t t t中生产的数量 Q i t ω Q_{it}^{\omega} Qitω取决于情景 ω \omega ω。该约束确保了在所有与时期 t t t相同的难以区分的情景中做出相同的决策,于是其强制要求对于所有在时期 1 到 t t t中具有相同需求 D ω 1 , … , t D_{\omega}^{1,\ldots,t} Dω1,,t的情景 ω \omega ω,在时期 t + 1 t+1 t+1中的生产数量相等。与生产数量不同,库存和滞后水平在需求确定后被观测到。因此,非预测性约束中使用的指标是 t t t(而不是 t + 1 t+1 t+1).

4 模型的结构性质和管理洞见​

尽管两阶段和多阶段模型对应不同的决策框架,但由这些模型产生的生产计划之间的差异并不明显。文章通过三个命题,凸显了多阶段模型的优势,其主要可总结为:多阶段模型为生产计划员提供了更高的反应能力,通过创建零部件的安全库存和动态订单决策的生产数量调整。

命题1​
对于static-static MMCLP的两阶段模型,其最优解除了组成完整规划周期内所需数量之外,最后一期的零部件库存为零,除非其初始库存量超过成品的要求量。

命题2​
对于static-dynamic MMCLP的多阶段规划,最优解可以在计划时间段结束时有正的零部件库存水平。

命题1表明,两阶段模型导致生产所需的零部件数量完全相同。相反,多阶段模型会在时间段结束时留下一些剩余零部件(命题2),因为多阶段模型考虑到了当需求低时保留零部件(而不是将它们转化为最终产品)的可能性。也就是说,零部件库存被计算出以适当地响应观测到的需求。这种多阶段模型的行为可以与在零部件级别上创建安全库存相类比。鉴于此,文章表示,多阶段模型比两阶段模型更具反应性,生产计划者可以通过调整生产量和创建零部件的安全库存来更好地适应需求变化(文章原文附有命题证明)。​

在 static-dynamic 框架下,减少交货期会推迟生产数量的决策。于是,在下达订单时,系统有更多可用信息,且生产数量将根据观测到的需求进行调整。这种行为发生在 static-dynamic 决策框架中,但不会在 static-static 中。然而,在两阶段模型中减少交货期可能会影响生产数量,因为存在生产能力和库存守恒约束。为了分离附加信息对批量大小的影响,文章考虑无限容量的单一项目的特殊情况。命题3表明,减少提前期不会改变 static-static 的解决方案,但会改变 static-dynamic 的解决方案。

命题3​
对于具有单一物品和无限容量的MMCLP特例情况,当初始库存覆盖从周期1到交货期的需求时,减少交货期时长不会影响static-static 框架下的总成本,只会使生产数量发生位移。相反,在 static-dynamic决策框架下,减少交货期时长将影响生产数量和总成本。

5 求解方法

5.1 需求情景抽样

对于 static-static(或 static-dynamic)框架下的决策模型,在需求不确定性下,可通过二阶段(或多阶段)法考虑所有可能情况的 Ω \Omega Ω集合,进而得出static-static(或 static-dynamic)框架下真正的最优解。但由于完整的情景集 Ω \Omega Ω通常过大,在 MILP 求解中对大规模问题不可实现,因此文章通过情景抽样来近似问题。

值得注意的是,两阶段模型和多阶段模型中的情景表示不同。在两阶段模型中,一个情景是一个向量,其组成部分是每个期间中每个成品的需求量;而多阶段模型中,情景是通过一个情景树生成的:树的每个层次对应于一个时期 (period),某个节点的子节点是 t + 1 t+1 t+1时期的可能需求实现,进而树中的每条路径对应于一个情景;于是在情景树中,针对1到 t − 1 t-1 t1时期的需求,实现了 t t t T T T的多种需求。因此,对于多阶段模型,需要在情景树的每个节点上独立地抽样,于是多阶段模型需要抽样向量,其分量是单个期间的需求(即向量的维数是终端项数)。

文章基于多阶段模型中组成情景所需的树状结构,先后采用了简单蒙特卡罗(CMC)、准蒙特卡罗(QMC)和随机准蒙特卡罗(RQMC)三种抽样方法。其中,CMC 随机地生成 n n n个向量,每个向量都有相等的概率 1 / n 1/n 1/n(根据需求的概率分布)。当情景数足够大时,CMC的平均近似值与真正的最优预期成本相等,但方差较大 于 RQMC ( r 2 / n r^2/n r2/n, r 2 r^2 r2为最优预期成本方差)。QMC 和 RQMC 首先选择一组在空间 [ 0 , 1 ] d [0,1]^d [0,1]d中均匀分布的向量 V n V_n Vn,其中 d d d为样本向量的维数,并从 V n V_n Vn中使用需求的累积概率分布的反函数生成需求向量(所有向量都有相等的概率 1 / n 1/n 1/n)。

此处,有两种方法可以生成 V n V_n Vn, 即网格规则 (lattice rules) 和数字网格 (digital nets). 文章使用秩为1的网格规则(在实践中较少使用更高秩的点阵),定义为 V n = { i ⋅ α ⃗ / n + δ ⃗ mod 1 ∀ i = 1 , … , n } V_n = \{i\cdot \vec{\alpha}/n + \vec{\delta} \text{mod} 1 \forall i=1,\ldots,n\} Vn={iα /n+δ mod1∀i=1,,n}, 其中 α ⃗ \vec{\alpha} α 为生成向量,其质量由网格确定, δ ⃗ \vec{\delta} δ 为用于移动格点的随机点;若 δ ⃗ = 0 \vec{\delta}=0 δ =0, 采样则为 QMC, 为一种确定性采样;若 δ ⃗ > 0 \vec{\delta}>0 δ >0则为 RQMC,为一种随机性采样。文章在实验中使用Lattice Builder软件来生成 α ⃗ \vec{\alpha} α ,该软件可实现多种算法来构建优秀的秩1网格规则。

网格规则:指一种用于计算多元函数数值积分的方法。基本思想是将多元函数分解为一个基函数的线性组合,并在一个规则的网格上对这个基函数进行采样,即在网格节点上计算基函数的函数值。然后,通过对基函数的函数值进行线性组合,得到对整个区域上的函数值的估计。网格规则的优点在于其计算效率高、易于实现和控制误差,通常与随机数生成器结合使用,以产生更精确的数值积分结果。

数字网格:指一种在高维空间中分布均匀的点集合。与传统的伪随机数生成器不同,数字网格在高维空间中可以更好地分布均匀,并且可以控制其生成的随机性质,如低位相关性、数学上的均匀性等。数值计算中,数字网格可提高随机数生成的效率和精度,从而减少计算量和误差,常被用于需要进行大量随机模拟的问题中。

最后,由于需求是整数,QMC 或 RQMC 样本可能会包含一个向量的多个实例(即使 V n V_n Vn完全是投影正则的)。对于相同的向量,依照概率,将其相加合并为一个向量。为了更好地控制情景数,样本大小会增加直到获得预定义的 n n n个不同向量。这种合并在需求不连续的情况下尤其有用(很大概率0需求)。

5.2 求解 static-dynamic 模型

多阶段模型的情景数随着时间段的增加呈指数级增长;为缩小模型规模,文章使用单个变量代替每组相同变量,对模型加入隐式建模的非先知性约束 (implicit non-anticipativity) 。

在随机优化中,隐式建模方法通常使用随机样本来近似目标函数,这些样本由随机过程、随机游走或随机搜索等方法生成。这些随机样本中的每个样本点都可以用来计算目标函数的值,并用于估计目标函数的性质和行为。该方法通常适用于无法直接计算目标函数的问题,或目标函数的计算很高的情况。

非先知性约束是在随机优化中用来描述决策变量在不同情境下的相互依赖关系的一种约束条件。在随机优化中,决策变量的最优值通常依赖于随机变量的取值,因此需要考虑随机变量的可能取值对决策变量的影响。其作用为限制决策变量在不同情境下的取值,以保证决策的可行性和稳健性。

具体来说,令 Q i t + 1 D ( 1 , … , t ) Q_{it+1}^{D(1,\ldots,t)} Qit+1D(1,,t)代替 { Q i t ω ∣ D ω 1 , … , t = D ( 1 , … , t ) } \{Q_{it}^{\omega}|D_{\omega}^{1,\ldots,t} = D(1,\ldots,t)\} {QitωDω1,,t=D(1,,t)}表示在不同情景 ω \omega ω中,满足1至 t t t期间相同需求 D ( 1 , … , t ) D(1,\ldots,t) D(1,,t)的变量集合。类似地,变量 I i t D ( 1 , … , t ) I_{it}^{D(1,\ldots,t)} IitD(1,,t) B i t D ( 1 , … , t ) B_{it}^{D(1,\ldots,t)} BitD(1,,t)分别代替集合 { I i t ω ∣ D ω 1 , … , t = D ( 1 , … , t ) } \{I_{it}^{\omega}|D_{\omega}^{1,\ldots,t} = D(1,\ldots,t)\} {IitωDω1,,t=D(1,,t)} { B i t ω ′ ∣ D ω 1 , … , t = D ( 1 , … , t ) } \{B_{it}^{\omega'}|D_{\omega}^{1,\ldots,t} = D(1,\ldots,t)\} {BitωDω1,,t=D(1,,t)}. 结合公式 (1)–(6),模型可实现1到 t t t期(而不是每个情景)、针对不同物品的需求。此外,为了加快问题的解决速度,两阶段模型的解决方案被用作多阶段模型的热启动。

基于更新后的模型,文章提出两种用于 static-dynamic 框架的启发式算法,分别称为两阶段启发式 (two-stage heuristic) 和固定-优化启发式 (fix-and-optimize heuristic).

•两阶段启发式,简单地解决模型(1)–(6),忽略动态生产数量决策。

•固定-优化启发式,除模型(1)–(6) 外,附加如下约束。
Q i t ω = Q i t ω ′ , ∀ i ∈ I , t ∈ T , ω , ω ′ ∈ Ω . Q_{it}^{\omega} = Q_{it}^{\omega'}, \forall i\in\mathcal{I}, t\in\mathcal{T}, \omega, \omega' \in \Omega. Qitω=Qitω,iI,tT,ω,ωΩ.

算法包含两步:

  1. 通过求解两阶段模型来确定设置决策,
  2. 代入1中的设置决策,求解多阶段模型。由于第二步中的非固定变量(生产数量、库存水平、积压订单、失去的销售机会)是连续的,因此得到的模型是一个线性规划。

相比之下,固定优化算法复杂于两阶段算法,且需要更多的计算时间。但是,如果两种算法使用完美的情景集合,则固定-优化算法可产生固定设置决策下的最优生产数量。

文章随后分析了仅具有单个物品和无限容量的MMCLP的特殊情况下两种算法的表现,结果显示:固定-优化启发式算法优于两阶段启发式算法(这种特殊情况对应于仅包含成品的MPS级别的传统MRP问题)。同时,文章通过命题4表明,在只考虑成品的MPS问题上,两阶段启发式会导致过量生产。

命题4
对于单品、无限产能以及 σ ( 1 ) = L \sigma(1) = L σ(1)=L的 static-dynamic MMCLP特殊情况,两阶段启发式策略在 σ ( 1 ) \sigma(1) σ(1)期完成的生产数量不少于使用固定-优化启发式所得的生产数量。

σ ( k ) \sigma(k) σ(k)表示为第 k k k批生产完成的时间。

5.3 MRP 执行策略

为了简化多阶段模型在 static-dynamic 决策框架中的使用,文章从多阶段模型的解中派生出基于生产设置的补货上限策略(order-up-to-level policy, 简称S-策略)。S-策略基于层级库存 E i t E_{it} Eit(第 t t t期系统中产品 i i i的总量,包括产品 i i i的库存、产品 i i i在下游产品库存中的组成部分以及前期订购但尚未生产的数量),需要从多阶段模型的解中获取每个时期 t t t和物品 i i i的设置决策 Y i t Y_{it} Yit,并推断出补货水平 S i t S_{it} Sit的值:对于每个优化情景 ω \omega ω,计算补货水平 S i t ω = E i t ω + Q i t ω S_{it}^{\omega} = E_{it}^{\omega} + Q_{it}^{\omega} Sitω=Eitω+Qitω(仅考虑 Q i t ω Q_{it}^{\omega} Qitω未受到容量或流量守恒约束的情景;但若所有情景中的数量都受到约束,则考虑所有情景),再令 S i t S_{it} Sit为以上情景中 S i t ω S_{it}^{\omega} Sitω的平均值。

在应用S-策略时,对于每个生产时期 t t t(即 Y i t = 1 Y_{it}=1 Yit=1),计算每个物品 i i i的订购量 Q i t = S i t − E i t Q_{it}=S_{it} - E_{it} Qit=SitEit;然该数值须不超过生产能力且满足流量守恒约束(即,零件库存必须足够生产该产品)。若某数值违反了流量守恒约束,则将其减少到最大可行数量;若资源容量超过限制,则将所有使用该资源的物品的数量按相同百分比减少。

对于单一物品无限产能的 static-dynaic MMCLP 特例,如命题5所示,存在最优的S-策略。但其不能拓展到多层级有限产能的情况:如果最优补货量违反容量限制(或导致部件库存的负值),则必须决定将补货分配给产品。文章随后通过实验表明,S-策略在无容量产能的 MMCLP 上表现得非常好,但在有容量限制的 MMCLP 上表现不佳。

命题5
对于单一物品和无限产能的静态动态MMCLP特例而言,存在最优的S策略。

5.4 滚动规划框架下的生产计划

文章详述了将生产计划模型在滚动规划框架下的步骤,其引申到 dynamic-dynamic 决策框架下的启发式算法:在第0期,优化并实施前 H \mathcal{H} H期的生产计划;随后观测得到第0期的实际需求,并得到滞后需求和库存。重复该步骤并在第1到 H + 1 \mathcal{H}+1 H+1期上重新优化直至 T T T.

6 比较方法和模拟框架

基准测试:对于上述所提出的随机优化方法,在文章中将经典的确定性MRP方法和批量规则(按需批量生产 (lot-for-lot)、沿用经济订货量及周期、采用Silver-Meal方法)作为基准测试并考虑计算安全库存的两类假设:

1.安全库存仅在MPS级别上为成品计算;或

2.考虑非稳态需求的多级别供应链的基本库存策略 Graves和Willems(2008).

Silver-Meal方法首先确定在没有任何库存的情况下所需的初始订货量,并在随后每次需要补货时,将当前库存量与预测需求量进行比较,如果库存量不足,则订货量为使库存达到最大允许水平所需的最小数量,以最小化订货成本和库存成本的总和。如果库存量足够,则不需要订货,只需更新库存量即可。

评估框架:文章模拟了5000个评估情景,其与用于优化情景不同,但由对相同的分布中抽样所得。模拟每个独立的情景 ω \omega ω并得到执行解决方案 s s s( Y s Y_s Ys Q s Q_s Qs). 该解 s s s可直接用于 static-static决策框架,而 static-dynamic框架下的模拟则基于最新需求信息的每个时期的生产计划。 s s s的成本由确定性模型与情景 ω \omega ω共同确定,其中设置决策和生产数量分别固定为 Y s Y_s Ys Q s Q_s Qs.

Static-dynamic框架下的重新规划方法(参见问题背景部分的表格):对于一个MMCLP 实例 P \mathcal{P} P的解 Y i t Y_{it} Yit Q i 0 Q_{i0} Qi0, 给定评估情景 ω \omega ω, 生产数量 Q i τ Q_{i\tau} Qiτ依次按序考虑 τ > 0 \tau >0 τ>0时期的需求信息而求得。具体而言, Q i τ Q_{i\tau} Qiτ P τ ω \mathcal{P}_{\tau}^{\omega} Pτω(不同于
P \mathcal{P} P)确定:

a.更新规划范围为 τ , … , T \tau,\ldots, T τ,,T.

b.赋每期的设置决策为 Y i t , ∀ t = τ , … , T Y_{it}, \forall t=\tau,\ldots,T Yit,t=τ,,T;

c.根据 Q i 0 , Q i 1 ω , … , Q i τ − 1 ω Q_{i0}, Q_{i1}^{\omega},\ldots, Q_{i\tau-1}^{\omega} Qi0,Qi1ω,,Qiτ1ω D i 0 ω , … , Q i τ − 1 ω D_{i0}^{\omega},\ldots, Q_{i\tau-1}^{\omega} Di0ω,,Qiτ1ω计算初始库存 I i τ − 1 ω I_{i\tau-1}^{\omega} Iiτ1ω和滞后库存水平 B i τ − 1 ω B_{i\tau-1}^{\omega} Biτ1ω.

•调整批量规则:实例 P τ ω \mathcal{P}_{\tau}^{\omega} Pτω后,调整批量规则为,若设置决策为0 ( Y i t = 0 Y_{it}=0 Yit=0) 则不生产 ( Q i t = 0 Q_{it}=0 Qit=0);否则沿用基准测试中的准则。

•调整优化模(线性)模型:在两阶段、多阶段和确定性模型中,设置决策给定,因此其他连续变量可通过线性模型解得,命名为 L P τ LP_{\tau} LPτ,其根据 P τ ω \mathcal{P}_{\tau}^{\omega} Pτω调整所得(并非重构):包括更新初始库存水平(可负)和 M i t M_{it} Mit以考虑生产可能的积压库存;这里的 L P τ LP_{\tau} LPτ$ L P τ LP_{\tau} LPτ通过障碍法 (barrier method) 求解。

**Barrier Method(障碍法)**是一种用于非线性规划问题求解的优化算法。该方法通过引入障碍函数来处理约束条件(转化为代价函数),将原问题转化为无约束问题,从而可以应用无约束优化算法进行求解(求解代价函数的极小值)。其优点在于可以有效地处理带有约束条件的非线性优化问题,且收敛速度较快。

•不需要调整S-政策:其由层级库存 P τ ω \mathcal{P}_{\tau}^{\omega} Pτω是基于初始状态计算的, Q i 0 ω Q_{i0}^{\omega} Qi0ω的值如 5.3 MRP 执行策略所述计算。

•不需要调整随机需求:批量规则和确定性模型考虑带有安全库存的平均需求,而二阶段和多阶段模型使用情景样本;实践中注意情景树与优化树的区别。

7 数值实验

综合上文以及经典库存方法,文章所涉及的数值实验方法(及其简称)如下表所示。

简称方法简称方法
Average不考虑安全库存的确定性模型2-stage两阶段模型
SS考虑安全库存的确定性模型M-stage多阶段模型
LL按需批量生产规则2-stage-H两阶段启发式算法
EOQ经济订货量Fix-&-Opt固定-优化算法
SMSilver-Meal 方法S-PolicyS-策略
MPS在主生产规划层面上计算安全库存Q-策略固定两阶段模型所得的生产数量方法
GS安全库存(Graves & Willems, 2008)CMC简单蒙特卡罗情景抽样方法
QMC准蒙特卡罗情景抽样方法RQMC随机准蒙特卡罗情景抽样方法

上述所涉及方法的代码可通过如下地址获得:https://github.com/StochasticLotSizing/StochasticMRP

对于以上方法,文章进行多角度的数值实验,其目的包括两方面:

  • 评估与经典安全库存方法相比,随机优化对MRP系统的好处。
  • 研究在需求不确定性下MRP的解决方案的性能。

关于目标1,结果表明,与使用传统安全库存方法解决确定性模型(或简单的批量规则)相比,随机优化模型能够显著降低成本。此外,随机优化产生的解决方案使得总生产成本的波动更低。具体而言,当新信息可用时,调整决策会减少随机优化的总成本,而当使用确定性模型或简单批量规则进行规划时,更新决策会增加成本。

关于目标2,结果表明,使用 RQMC 或 QMC 采样的情景可很好地近似两阶段模型。因此,解决两阶段模型不需要大量计算。相反,结果良好的多阶段模型近似需要使用 RQMC 的大量采样(3200个情景),因此多阶段模型较难解决。但是,所提出的两种启发式方法非常有效。

文章生成两个测试样本进行针对不同目的的实验:Tempelmeier & Derstrof (1996) A系列测试样本、Willems (2008) 测试样本。具体实验分析如下。

7.1 采样方法的有效性(目标1)

通过使用不同情景生成方法 (CMC, QMC, RQMC) 和不同样本大小 (1600, 3200, 6400, 12800, 25600) 进行数值实验。文章发现,RQMC 优于 CMC,即使用 RQMC 或 QMC 采样少量情景可以得到与使用 CMC 采样更多情景相当的近似精度,并且使用RQMC采样6400个情景可以解决具有较大时间跨度的问题。

对于需求分布较小的实例 (情景集可以枚举且大小可管理),通过与真实最优解比较,文章结果显示运用 RQMC 情景采样的实例产生与实际最优解最接近的解,且其对于static-static 和 static-dynamic 决策框架下的完美信息的期望值 (expected value of perfect information, EVPI) 分别为55.96%和49.77%。

在 static-dynamic 决策框架下,文章简要比较了多阶段模型、两阶段启发式和固定-优化启发式的性能。结果表明,固定-优化启发式的效率最高;而多阶段模型花费时间较长但结果更好。两阶段启发式所得的期望成本略微更高但计算成本较少。此外,文章附录还报告了五种不同运行方法的结果,这也说明了所涉及方法的稳健性 (robust)

7.2 随机模型在需求不确定性下对MRP的有效性(目标2)

针对产能是否受限,文章针对需求不确定性,通过与传统方法相比,讨论了随机优化在MRP中的有效性。具体包括:

产能不受限,static-static 框架:结果表明,两阶段法所得的预期成本最低,其次是 SS-MPS 和 SS-GS. 在考虑的批量规则中,SM-MPS和SM-GS 表现最佳。

产能不受限,static-dynamic 框架:结果表明,Average、LL-GS 和 LL-MPS 在static-dynamic 框架下的总成本static-static 环境,但安全库存可缓解该问题(例如 SS-MPS 的 static-dynamic 表现优于 static-static),因此采用随机优化方法可在生产次数更少的情况下获得更优的结果(每次生产覆盖范围更广,且生产更大的批量有助于抵御需求不确定性)。所以,批量大小和安全库存计算在MRP系统中的整合非常重要。

产能受限:文章使用经典方法和随机优化方法求解多阶段的 MMCLP。结果表明,随机优化方法可以显著降低生产计划的运营成本,在有容量限制的环境下,两阶段方法在 static-static 框架下的表现明显优于 SS-MPS,在static-dynamic 框架下的表现也优于 SS-MPS 和 SS-GS。当需求不确定性较大、零部件转化为成品所需的时间较短、产品价值在每个生产步骤中显著增加或产能紧张时,随机优化方法的优势更加明显。但在容量紧张的情况下,除了S-policy外,所有方法的表现都不佳。此外,文章提出的随机MRP模型和多阶段随机模型可以更好地考虑需求不确定性和动态决策框架,具有较好的实际应用价值。

7.3 滚动规划模拟(目标2)

文章针对所提出的滚动规划方法(本文5.4节),讨论了规划范围对模型性能的影响。在实验中,文章采用不同的规划范围对具有大时间跨度的实例进行滚动规划模拟,并对多种方法进行了比较。结果表明,较长的规划范围会产生更低的成本。在 dynamic-dynamic 决策框架下,随机优化方法在MRP中的优势更为明显,并且在滚动视窗框架中表现更好。

7.4 大规模供应链实例

文章最后评估了固定-优化方法在大规模供应链管理问题上的性能和局限性。这部分实例由实际派生 (Willems 2008) ,其中包括生产(MRP)和分销(Distribution, DRP)系统。结果表示,该方法其可解决多达58个产品17个周期内的优化问题;对于CPLEX无法得到第一步(固定)对应的两阶段模型的最优解的偶发情况,该方法仍可保证与确定模型较小的差距;总体来说,所提出的固定-优化方法表现良好。

8 结论

为了共同优化批量大小和安全库存的决策,文章研究了在 MRP 系统中使用随机优化的方法。具体而言,文章提供了针对 MRP 系统中多层级、多产品、产能受限 批量大小问题的两阶段和多阶段方法,分别基于 static-static 和static-dynamic 决策框架。Static-static 环境下的两阶段模型可以直接实现在MRP系统中,但多阶段模型需要大量的计算时间。文章提出了两种启发式方法与从随机 MRP 模型解决方案中所得的补货上限 (S) 策略相结合,以在 static-dynamic 框架的执行期间进行实时决策。

文章的数值实验结果表明,生产公司应考虑采用将批量大小和安全库存计算整合到同一框架中的随机优化方法。相反,基于情景的随机优化方法非常灵活,且它不需对概率分布进行限制性假设;类似地,情景法还可适应于除需求外其他参数的不确定性(如提前期、流程持续时间等)。

参考文献
Bookbinder J H, Tan J Y. Strategies for the probabilistic lot-sizing problem with service-level constraints[J]. Management Science, 1988, 34(9): 1096-1108.

Thevenin S, Adulyasak Y, Cordeau J F. Material requirements planning under demand uncertainty using stochastic optimization[J]. Production and Operations Management, 2021, 30(2): 475-493.

Tempelmeier H, Derstroff M. A Lagrangean-based heuristic for dynamic multilevel multi-item constrained lot-sizing with setup times[J]. Management Science, 1996, 42(5): 738-757.

Willems S P. Data set—real-world multi-echelon supply chains used for inventory optimization[J]. Manufacturing & service operations management, 2008, 10(1): 19-23.

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

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

相关文章

react的项目实战 2

入口文件引入了app这个组件 app这个组件又引入了header这个组件。 然后外面引入这个组件 进行页面的显示 它不会影响到其他页面的组件的样式。 ​​​​​​​

面试必备:接口自动化测试精选面试题大全

目录 一、 请问你是如何做接口测试的? 二、接口测试如何设计测试用例? 三、接口测试执行中需要比对数据库吗? 四、接口测试质量评估标准是什么? 五、接口产生的垃圾数据如何清理 六、其他接口要先获取接口信息,如…

利用wenda实现本地多模态数据的知识获取和推理

近年来,大型语言模型(LLM)技术取得了令人瞩目的进展,为自然语言处理领域带来了巨大的变革,但是大多数LLM都面临着领域适应性的问题,因为它们使用的数据都是公开的数据,在国内,有很多…

Day960.架构现代化-微服务 -遗留系统现代化实战

架构现代化-微服务 Hi,我是阿昌,今天学习记录的是关于架构现代化-微服务的内容。 在自治气泡模式的基础上,通过事件拦截来实现数据同步,给气泡和遗留系统之间又加上 API 访问这个通信渠道。 这时的自治气泡就和真正的微服务差不…

Rust - 变量与数据的交互方式(move)

变量与数据的交互方式 - 移动 Rust 中的多个变量可以采用一种比较独特的方式和同一个数据进行交互,如下代码所示,将变量x的值赋给y: fn main() {let x 1;let y x; }我们大概可以推论出上述代码的原理:将1这个整数绑定给x变量&…

Mybatis读取和存储json类型的数据

目录 一、测试使用JSONObject来获取json二、设置TableName的autoResultMap为true,TableField的typeHandler为JacksonTypeHandler.class三、设置xml当中的resultMap四、JacksonTypeHandler讲解五、新增假如是JSONObject 不管数据库当中是以json还是longtext数据类型来…

树莓派Opencv调用摄像头(Raspberry Pi 11)

前言:本人初玩树莓派opencv,使用的是树莓派Raspberry Pi OS 11,系统若不一致请慎用,本文主要记录在树莓派上通过Opencv打开摄像头的经验。 1、系统版本 进入树莓派,打开终端输入以下代码(查看系统的版本&…

“人工智能教父”从谷歌离职 称后悔发展AI,为世人敲响警钟?

在加入谷歌的第十年、深度学习迎来爆发式发展的当下,被誉为“人工智能教父”的Geoffrey Hinton已从谷歌离职,只是为了告诫人们AI已经变得很危险。 公开资料显示,Geoffrey Hinton在2013年加入谷歌,曾任副总裁,研究机器学…

Python每日一练:硬币的面值奇偶排序陶陶摘苹果(花样解法)

Python每日一练 文章目录 Python每日一练前言一、硬币的面值二、奇偶排序三、陶陶摘苹果总结 前言 很显然,Python的受众远远大于C,其实笔者本人对Python的理解也是远强于C的,C纯粹是为了假装笔者是个职业选手才随便玩玩的,借着十…

【是C++,不是C艹】 缺省参数 | 函数重载 | 内联函数

💞💞欢迎来到 Claffic 的博客 💞💞 👉 专栏:《是C,不是C艹》👈 前言: 上期,我带大家给C打了招呼,捎带着认识了命名空间和输入输出,那…

SPSS如何使用基础功能?

文章目录 0.引言1.菜单栏2.工具栏 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结合网上相关资料进行学习笔记总结,本文对软件界面基础功能进行阐述。    1.菜单栏 &am…

如何向面试官正确地提问?

你好,我是朱显杰。今天我们来聊一聊面试时,如何向面试官正确提问。 我做过8年面试官,面试过500多人。在面试的过程中,我发现了一个普遍现象,就是大部分候选人都不知道如何向面试官正确提问。要么不问,白白…

RocketMq源码分析(六)--消息消费者启动流程

文章目录 一、消息消费者模式二、消费者启动流程1、 push模式1)类关系2)类构造器3)启动流程 2、pull模式1)类关系2)类构造器3)启动流程 一、消息消费者模式 消息消费分两种模式:推(p…

【Redis】Redis缓存双写一致性之更新策略

介绍 面试题 1、只要用到缓存,就可能会涉及到Redis缓存与数据库双存储双写,只要是双写,就一定会有数据一致性问题,怎么解决一致性问题? 2、双写一致性,先动缓存redis还是数据库mysql?为什么&a…

剪枝与重参第十课:RepVGG重参

目录 RepVGG重参前言1. RepVGG2. RepVGG网络搭建2.1 conv_bn2.2 RepVGG Block初始化2.3 forward2.4 branch的合并2.5 重参的实现2.6 整体网络结构搭建2.7 模型导出 3. 完整示例代码总结 RepVGG重参 前言 手写AI推出的全新模型剪枝与重参课程。记录下个人学习笔记,仅…

了解npm run指令

了解npm run指令 在package.json文件中的script字段,可以定义脚本命令,通过npm run指令运行该脚本。 比如简单定义一个输出打印的shell脚本。 {"script": {"hw": "echo hello world!"} }执行npm run hw可以看到终端上打…

Python---正则表达式与递归

1. 正则表达式: 是一种字符串验证的规则,通过特殊的字符串组合来确立规则 用规则去匹配字符串是否满足 如(^[\w-](\.[\w-])*[\w-](\.[\w-])$)可以表示为一个标准邮箱的格式 re模块的三个主要方法: re.match: re.match(匹配规…

电子电气架构——车辆E/E架构Software独立性

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人只有在举棋不定,无从把握的时候才感到疲惫。只有去行动就能获得解放,哪怕做的不好也比无所作为强! 本文主要介绍车辆E/E架构常识,主要涉及E/E架构车载…

Java 操作ElasticSearch

Java REST提供了两种风格的客户端连接工具,Java High Level REST Client、Java Low Level REST Client,这里我就不去细说Java Low Level REST Client了,因为这我确实没用到过,也不是很了解,我说一下Java High Level RE…

LVS 负载均衡群集的 NAT 模式和 DR 模式

文章目录 一、NAT 模式和 DR 模式的介绍DR模式NAT模式两种模式的区别 二、DR模式集群构建配置 一、NAT 模式和 DR 模式的介绍 DR模式 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间PREROUTING链首先会接收到…