针对库存优化的最佳服务水平公式


首页 » 知识库 » 此处
作者:Joannès Vermorel,上次修订时间:2012 年 1 月

服务水平(存货)表示不发生缺货的预期概率。计算安全库存时需要用到该百分比值。从直观上说,服务水平表示存货成本与缺货(发生缺货将导致错过销售、浪费机会和客户失望等等)成本之间的取舍。在本文中,我们将详细说明如何优化服务水平值。然后会针对易腐食品的特情况进一步分析。

本文于 2011 年基于传统预测的观点撰写。但在几年后的今天,我们意识到从定量供应链的角度还可以提供好得多的选择,能够在采用概率预测技术时完全消除对优化服务水平的需要。

建模和公式

在涉及到数值时,传统供应链显得有点模糊不清,而服务水平则要使用具体的数值。在下文,我们将通过对存货和缺货的相应成本建模来计算最佳服务水平。

我们要引入以下几个变量:
  • $p$ 为服务水平,即发生缺货的可能性。
  • $H$ 为交付周期每件产品的持有成本 (1)。
  • $M$ 为缺货的边际单位成本 (2)。

下载 Excel 表: service-level-formula.xlsx(计算示例)

(1) 此处所考量的时间范围为交付周期。因此,我们不必考虑较常规的年度持有成本 $H_y$,只需要考虑 $H = \frac{d}{365}H_y$,其中 $d$ 为交付周期,单位为天。

(2) 缺货成本包含最低毛利润,即不发生缺货时产生的即时利润。但是,毛利润的损失并非只有产品:客户失望、失去客户忠诚度等等也应当予以考虑。根据经验,我们观察到许多食品零售商认为 $M$ 是毛利润的 3 倍。

最佳服务水平的公式为(下文会详细说明原因): $$p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)$$ 其中 $\Phi$ 为与正态分布相关的累积分布函数。在 Excel 中可以很容易计算此值,$\Phi$ 为 NORMSDIST 函数。为了便于进行数值计算:$\sqrt{2 \pi} \approx 2.50$

成本函数

要对成本函数建模,需要另外引入两个变量:
  • $Q$ 为平摊的库存量 (3),它是 $p$ 的函数。
  • $O$ 为发生缺货时的平均溢出需求。

(3) 在这里我们将采用平摊分析观点。库存水平始终在不断变化,但此处的目标是要进行实际分析,来获得与需求预测本身无相互影响的服务水平值。因此,将假定 $Q$ 等于再订货点(有关详细信息,请查看 安全库存)。

对于给定的服务水平,综合了存货成本与缺货成本的总成本 $C(p)$ 可以这样表示: $$C(p) = Q(p)H + (1-p)MO$$ 其中 $Q(p)H$ 为存货成本,$MO$ 为缺货成本,且发生的概率为 $1-p$。运用安全库存指南中介绍的公式,且 $Q(q)$ 等于再订货点,我们可以得出 $Q(p) = Z + \sigma \Phi^{-1}(p)$,其中 $Z$ 为交付需求,$\sigma$ 为预期的预测误差,$\Phi(p)^{-1}$ 为与标准正态分布(平均数为 0,方差为 1)相关的累积分布函数的倒数。

分析错过的平均销售量

对 $O$(错过的平均销售量)进行分析是一件很精细的工作。考虑到需求分布为正态分布 $\mathcal{N}$,$q$ 为可用存货,$O(q)$ 为 $x > q$ 时需求 $x$ 的条件平均数(减去可用存货 $q$),可以得出: $$O(q)=\frac{\int_q^\infty{x\mathcal{N}(x)dx}}{\int_q^\infty{\mathcal{N}(x)dx}}-q=\frac{1}{q}+\mathcal{o}\left(\frac{1}{q}\right)$$ 浏览 (1) 处的函数。

这个结果可以这样解读:如果需求严格遵循正态分布,那么发生缺货时错过的平均销售量将随着库存水平的增长而快速收敛至 0。

但根据我们的经验,预测误差并不会像正态分布所预测的那样收敛。所以,我们在下面将假定 $O=\sigma$,也就是说,错过销售量的平均值等于平均预测误差。很明显,相比深度分析,这种分析方法更加靠经验估计;但我们发现在实践中这种近似估计可以产生切合实际的结果。

成本函数的极小值

通过在 $C(p)$ 的表达式中应用上面所定义的替代值,可以得出: $$C(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H + (1-p)M\sigma$$ 然后 $C(p)$ 表达式可以对 $p$ 求微分: $$\frac{\partial C}{\partial p} = \sigma H \partial \Phi^{-1}(p) - \sigma M$$ 考虑到我们所探讨的是最小值,所以可以对 $\frac{\partial C}{\partial p} = 0$ 求解,得出: $$\sigma H \partial \Phi^{-1}(p) - \sigma M = 0$$ 去掉 $\sigma$,得出: $$H \partial \Phi^{-1}(p) - M = 0$$ 最后我们得到: $$\partial \Phi^{-1}(p) = \frac{M}{H}$$ 然后利用 $\partial \Phi^{-1}$ 与 $\Phi^{-1}$ 之间的关系: $$\partial \Phi^{-1}(p)=\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}$$ 有关该等式的直观证明,您可以比较 (1)(2)

利用这种关系,我们可以得出: $$\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}=\frac{M}{H}$$ $$\frac{1}{2}\Phi^{-1}(p)^2=\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)$$ 利用以下等式获取等式的正根解(负根对应于函数的局部极大值): $$\Phi^{-1}(p)=\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}$$ 最后对等式两边应用 $\Phi$,可以得出最佳服务水平: $$p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)$$

公式论述

这个公式中第一个有趣的方面是最佳服务水平只取决于 $H$(存货成本)和 $M$(缺货成本)。但是,交付周期还存在一层隐式的依赖关系,因为 $H$ 定义为交付周期内的持有成本。

第二个有趣的方面是存货成本越高,最佳服务水平越低;同理,缺货成本越高,服务水平越高。这一行为很直观,因为服务水平就是存货更多还是缺货更多之间的取舍。

再者,这个公式并非对 $M$ 和 $H$ 所有的值都有效。$\sqrt{2\pi}\frac{M}{H} > 1$,否则对数将产生不易处理的负值(考虑到外部平方根)。这样将得出 $M > \sqrt{2 \pi} H$,近似于 $M > 2.5 H$。如果不验证这一条件,则意味着原始成本函数 $C(p)$ 没有极小值,或者很可能极小值为 $p 的 $-\infty$ =0$。从实用的角度来说,$M < 2.5 H$ 可以按病理学情况解释,即最有利可图的库存水平就是库存为零(即 100% 缺货)。

实用示例

以 1 升装的牛奶为例,其售价为 1.5 欧元,利润为 10%(即毛利润为 0.15 欧元)。假设交付周期为 4 天。年持有成本为 1.5 欧元(因为牛奶属于高度易腐产品,所有此值较高)。假设缺货成本 3 倍于毛利润,即 0.45 欧元,可以得出 $M=0.45$ 和 $H=\frac{4}{365} 1.5\approx 0.0055$。

根据这些值以及上面得出的用于计算最佳服务水平的公式,可得出 $p\approx 98.5\%$,这就是为食杂店网络供货的仓库中存储的必备新鲜产品的典型值。

易腐食品

供应链专家 Vyacheslav Grinkevych 于 2012 年 2 月 13 日提出了以下问题:

在我从事的短生命周期乳制品的预测和供应规划工作领域,最佳服务水平是一个非常重要的主题。其中最有趣也最棘手的部分就是 H - 持有成本及其在实践中的适当值。

打个比方,对于短生命周期乳制品,H 的一个重要部分就是不仅有存货中冻结资金的纯财务成本和运营物流仓储成本,也有因过期产品冲销或对即将过期的产品清仓处理时打折销售导致的潜在损失成本。在销售量大大低于预测时就会发生这种情况。

这其中的折衷可以描述为潜在存货过多风险潜在缺货风险之间的权衡 – 这两种风险的作用方向相反,但却具有相同的来源:与安全库存息息相关。预测过高时通常会导致过期的问题,预测误差没有呈正态分布。因此我很纳闷如何更好地表现此类潜在存货过多的风险。

我们来回到公式上,经过进一步推导可以找出 H 与 P 之间的关系,或者将 H 作为 p 的函数,即 H(p),然后再来获取总成本 C(p) 的极小值。对此问题您有何见解?

上面的服务水平公式实际上基于存储和缺货的成本严格呈线性关系简单假设。但在实践中,例如在以下场合中会发现完全呈非线性:

  • 仓库已满,多一件存货会导致需要找另外一个仓储位置的巨大开销。
  • 缺货导致错过的销售量不断增加,进而达到少一件产品导致失去这个老客户的程度。

易腐产品还存在另外一个问题:如果存货保证期(也就是说存货用天表示,而不是用库存单位表示)接近产品过期时间,那么持有成本 $H$ 将无限增大。

实际上,$H$ 表示第一时间备置存货相关的阻力。存货保证期大于产品过期时间表示一种悖论,即假设为 FIFO(先进先出)存货,只要产品没有到过期日期,就不会被清理出储存位置。

为了对存货的易腐性效应建模,需要引入几个关键期限

  • $\lambda$ 为交付周期
  • $\lambda_\infty$ 为产品过期(即市场价值为零)前的期限。
  • $\lambda_½$ 是产品因失去市场价值而使原始持有成本翻倍的持续时间。
  • $\lambda_c(p)$ 为存货保证期,即存货用天表示而不是用产品单位表示。该持续时间取决于安全库存系数,即取决于 $p$。

透过这些期限可以对持有成本这样建模:

$$ H(p) = H \left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda_c(p)} \right) $$ 我们将详细介绍这其中的隐式假设,因为我们为了确定冲销风险系数,而在一定程度上歪曲了持有成本的常规概念

首先会得出 $H(0.5)=H$。这是根据上面的定义获得的。实际上,当服务水平为 50% 且存货保证期等于交付周期时,$\lambda_c(0.5)=\lambda$。在该模式中,$H$ 表示持有成本,与服务水平 50% 相关的冲销成本已纳入成本 $H$ 中。值得注意的是,安全库存为零并不表示冲销也为零,只表示冲销不常有

其次,对于服务水平 $p_½$,例如 $\lambda_c(p_½) = \lambda_½$,可以得出 $H(p_½)=2H$。同样,这也只是对 $H(p)$ 应用定义的结果。从直观上说,$\lambda_½$ 表示将持有成本与冲销成本之和翻倍的持续时间(相比安全库存为零的情形)。显而易见,在实践中,产品到期折扣与冲销所涉及的成本开销将进入分立阶段。但我们认为,通过典型的持续时间(实际上定义为产品生命周期的特定部分)表示这种开销很可能对于各种必须采用整体法的估算更有弹性,这一点与依赖于更多不确定变量的更加细粒化的模式是相反的。

最后,根据 $\lambda_c(p_\infty)=\lambda_\infty$,$p$ 趋于 $p_\infty$,通过定义 $H(p)$ 采用的函数,同样可以得出 $H(p)$ 趋于无穷。乍看之下,似乎越过产品单价获取持有成本有点奇怪,但其实并不矛盾。值 $H(p)$ 表示运送一件产品给客户的摩擦成本。鉴于大量冲销,为了将 1 件产品发运给最终客户,仓库平均会收到 3 件(2 件在交付前到期),则摩擦成本将远高于产品的原始单价。

总之,$\lambda_½$ 仅引入了一个不确定的变量。$\lambda$ 和 $\lambda_\infty$ 可以确定是已知变量。我们认为 $H(p)$ 的这种模式是在只额外引入一个变量的情况下所能实现的最简单的模式。对 $\lambda_c(p)$ 采用合适的估算,可以得出:

$$\lambda_c(p) = \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)$$ 实际上,存货保证期 $\lambda_c$ 可以视为交付周期内的某个比率,它包含了交付需求与正规化的安全库存系数。这样可以得出替代的成本函数:

$$C^*(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H\left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{ \lambda_\infty - \lambda_½}{\lambda_\infty - \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)} \right) + (1-p)M\sigma$$ 与之前的成本函数不同,这个函数似乎没有简单的代数极小值。但是,通过采用与计算经济订货量相似的方法,在 80% 至 99.9% 之间以 0.1% 的增量迭代,可以相对简单的求出近似解。这表明进行 200 次迭代以达到 0.1% 的精确度对于实用性来说远远足够了。

预期的实际应用

该服务水平公式附带几项近似计算,因此也许不能直接使用数值,一般需要略加调整。因子 $\frac{1}{\sqrt(2\pi)}\approx0.4$ 可以按需调整。但我们认为,通过这个公式可以很清楚地了解您的产品所要比较的相应服务水平。举个例子,有 A 和 B 两种产品,服务水平分别为 95%(A)和 90%(B),那么在最终的生产设置中,预计 A 的服务水平将高于 B 的服务水平。

考虑到上述分析的性质,我们认为这个公式不适用于需求较低或呈间歇式需求的产品。此类需求量低的产品一般再订货点较低 – 为 0 或 1 件;对产品的存储成本进行线性建模没有意义,因为也应考虑额外存储一件产品时的复杂度。

运用我们的库存预测 技术可获得经过优化的安全库存。Lokad 精通于通过需求预测来优化库存。Lokad 涵盖服务水平以及其他许多原生功能。