安全在庫

learn menu
Joannès Vermorelによる、2007年12月(最終更新:2012年1月)

安全在庫は、所定のサービスレベル目標を達成するために、予想される需要を超えて保持する必要がある在庫の最適化手法です。余分な在庫は、「安全」バッファとして機能し、将来の予測される変動に対して企業を保護します。安全在庫の式は、将来の需要と将来のリードタイムの両方に依存します。不確実性は、両方の要素に対して正規分布と仮定されます。安全在庫の式は、ほとんどの在庫管理システム、特にERPやMRPなどに広く存在しています。

2020年7月の更新:以下に詳細に説明されているアプローチは、「教科書的な」サプライチェーンですが、非常に機能不全です。特に、将来の需要も将来のリードタイムも正規分布ではありません(つまり、ガウス分布ではありません)。さらに、すべてのSKU(在庫管理単位)は、会社が注文または生産できる同じリソースを競合します。実際のサプライチェーンに関しては、安全在庫モデルは使用しないことを強くお勧めします。

対象読者: このドキュメントは、小売業や製造業のサプライチェーンの専門家を主な対象としています。ただし、このドキュメントは、在庫管理機能を拡張したい会計/ERP/eコマースソフトウェアの開発者にとっても役立ちます。

数学的な要件をできるだけ低く抑えるように努力していますが、安全在庫の計算方法を説明する実践的なガイドであるため、すべての式を完全に回避することはできません。

ダウンロード: calculate-safety-stocks.xls (Microsoft Excelスプレッドシート)

はじめに

在庫管理は、在庫コストストックアウトコストの間の財務的なトレードオフです。在庫が多ければ多いほど、必要な運転資本も多くなり、在庫の減価償却も増えます。一方、十分な在庫がないと、在庫切れが発生し、潜在的な売上を逃す可能性があり、生産プロセス全体が中断する可能性もあります。

在庫は、主に2つの要素に依存します。

しかし、これらの2つの要素は不確実性の対象です。

  • 需要の変動:顧客の行動は予測困難な方法で変化する可能性があります。
  • リードタイムの変動:サプライヤーや輸送業者は予期しない困難に直面する可能性があります。

安全在庫のレベルを決定することは、不確実性を考慮して、これらのコストのトレードオフを行うことと同等です。

在庫コストとストックアウトコストのバランスは、非常にビジネスに依存します。そのため、これらのコストを直接考慮する代わりに、古典的な「サービスレベル」の概念を紹介します。

サービスレベルは、あるレベルの安全在庫がストックアウトにつながらない確率を表します。安全在庫が増えると、サービスレベルも高くなります。安全在庫が非常に大きくなると、サービスレベルは100%に近づきます(つまり、ストックアウトの確率はゼロになります)。

サービスレベル、つまりストックアウトの許容確率を選択することは、このガイドの範囲外ですが、最適なサービスレベルの計算については別のガイドがあります。

在庫補充モデル

リオーダーポイントは、注文をトリガーするべき在庫の量です。不確実性がない場合(つまり、将来の需要が完全に把握され、供給が完全に信頼できる場合)、リオーダーポイントは単にリードタイム中の予測需要の合計、つまりリードタイム需要とも呼ばれるものに等しくなります。

実際には、不確実性のために、次のようになります。

リオーダーポイント = リードタイム需要 + 安全在庫

予測が「バイアスのない」(統計的に言えば)場合、安全在庫がゼロの場合、サービスレベルは50%になります。実際には、バイアスのない予測は、将来の需要がリードタイム需要よりも大きくなるか小さくなるかのどちらかの可能性が同じであることを意味します(リードタイム需要は単なる予測値であることを覚えておいてください)。

注意: 予測は正確である必要はありませんが、バイアスがない場合もあります。バイアスは、予測モデルによる系統的なエラーを示します(例:需要を常に20%過大評価する)。

誤差の正規分布

この時点で、リードタイム需要の不確実性を表現する方法が必要です。以下では、誤差が正規分布していると仮定します。以下の図を参照してください。

正規分布、またはガウス分布とも呼ばれる。

統計的な注意: この正規分布の仮定は完全に任意ではありません。特定の状況では、統計的な推定量は中心極限定理によって正規分布に収束することが示されています。ただし、これらの考慮事項はこのガイドの範囲外です。

正規分布は、その平均と分散の2つのパラメーターでのみ定義されます。予測がバイアスのないものであると仮定するため、誤差分布の平均はゼロであると仮定しますが、これは誤差がゼロであることを意味しません。

予測誤差の分散を決定することはより難しい課題です。Lokadや他の多くの予測ツールキットは、予測に関連付けられたMAPEの推定値(平均絶対パーセンテージ誤差)を提供しています。完全性のために、この問題を解決するためにどのように簡単なヒューリスティックスが使用されるかを説明します。

特に、過去のデータ内の分散は、予測誤差の分散を推定するための良いヒューリスティックスとして使用できます。また、分散式では平均需要ではなく予測需要を使用することを提案しているDavid Piaseckiもいます。つまり、次のようになります

$${σ^2 = E[ (y_t - y')^2 ]}$$

ここで、$$E$$は_mean_演算子、$$y_t$$は期間$$t$$の過去の需要(通常は販売量)、$$y’$$は予測需要です。

この仮定の背後にある主要なアイデアは、予測誤差が非常に頻繁に予想される変動量と相関していることです。つまり、将来の変動が大きければ大きいほど、予測の誤差も大きくなります。

実際には、この誤差分散の計算にはいくつかの微妙な点があり、以下で詳しく説明します。

セーフティストックの式

この時点で、平均と分散の両方を決定したため、誤差分布がわかりました。この分布内での_許容可能な_誤差レベルを計算する必要があります。ここでは、そのためにサービスレベル(パーセンテージ)の概念を導入しました。

: _静的_リードタイムを仮定しています。ただし、リードタイムが変動する場合にも非常に似たアプローチが使用できます。以下を参照してください。

サービスレベルを_誤差レベル_(またはサービスファクターとも呼ばれる)に変換するために、逆累積正規分布(逆正規分布とも呼ばれることがあります)を使用する必要があります(対応するExcel関数のNORMSINVを参照)。複雑に聞こえるかもしれませんが、そうではありません。より視覚的な理解を得るために、正規分布アプレットを見てみることをおすすめします。見るとわかるように、累積関数はパーセンテージを曲線下の面積に変換し、X軸の閾値はサービスファクターの値に対応します。

直感的には、次のように計算します

セーフティストック = 誤差の標準偏差 * サービスファクター

より形式的には、$$S$$をセーフティストックとすると、次のようになります

$$S = \sigma \cdot \text{icdf}(P)$$

ここで、$$\sigma$$は標準偏差(つまり、上記で定義された分散$$\sigma^2$$の平方根)、$$cdf$$は_正規化された_累積正規分布(平均がゼロで分散が1)であり、$$P$$はサービスレベルです。

リードタイム需要+セーフティストックであることを思い出してください

再発注点 = リードタイム需要 + セーフティストック

$$R$$を再発注点とすると、次のようになります

$$R = y' + \sigma \cdot \text{icdf}(P)$$

リードタイムと予測期間の一致

これまでは、特定の_リードタイム_に対して、対応する将来の需要予測を直接作成できると仮定していました。しかし、実際にはそううまくいきません。通常、過去のデータの分析はデータを時間の期間(通常は週または月)に集約することから始まります。

ただし、選択した期間がリードタイムと完全に一致しない場合、リードタイム需要とそれに関連する分散を表すためにさらなる計算が必要です(前のセクションで詳細に説明したように、予測誤差に対して正規分布を仮定しているとします)。

直感的には、リードタイム需要は、リードタイムセグメントと交差する将来の期間の予測値の合計として計算できます。最後の予測期間を適切に調整する必要があります。

形式的には、$$T$$を期間、$$L$$をリードタイムとします。次のように書きます

$$L = k \cdot T + \alpha \cdot T$$

ここで、$$k$$は整数であり、$$0 ≤ α < 1$$です。$$D$$をリードタイム需要とします。すると、リードタイム需要の最終的な式が得られます

$$ D = \sum_{t=1}^k y'_t + \alpha y'_{k+1} $$

ここで、$$y’_n$$は将来の$$n^{th}$$期間の予測需要です。

同じ正規分布の仮定を考慮して、予測誤差の分散を次のように計算できます

$$\sigma^2 = E\left[ (y_t - y')^2 \right]$$

ここで、$$y’$$は期間ごとの平均予測です

$$y' = \frac{D}{k + \alpha}$$

ただし、ここで計算される$$\sigma^2$$は期間ごとの分散であり、リードタイムに一致する分散が必要です。$$\sigma_{L}^2$$を調整されたリードタイムごとの分散とすると、次のようになります

$$\sigma_{L}^2 = (k + \alpha) \sigma^2$$

最終的に、再発注点を次のように再表現できます

$$R = D + \sigma_{L} \cdot \text{cdf}(P)$$

Excelを使用して再発注点を計算する

このセクションでは、Microsoft Excelを使用して再発注点を計算する方法について説明します。提供されているサンプルのExcelスプレッドシートをご覧いただくことをおすすめします。

安全在庫の計算式を示すExcelシート。

サンプルシートは基本的に2つのセクションに分かれています。上部には仮定があり、下部には計算があります。予測は仮定の一部とされていますが、販売(または需要)の予測はこのガイドの範囲外です。詳細については、Microsoft Excelを使用した販売予測のチュートリアルを参照してください。

前のセクションで紹介されたほとんどの数式は、Microsoft Excelで非常に簡単に実行できる非常に単純な操作(加算、乗算)です。ただし、2つの関数が特筆されます

  • NORMSINV(Microsoft KB):累積正規分布を推定し、上記のcdfとして表記されます。
  • STDEV(Microsoft KB):標準偏差を推定し、上記の$$σ$$として表記されます。標準偏差$$σ$$は分散$${σ^2}$$の平方根であることを再確認します。

簡単のため、最初のシートでは、サービスファクターを計算する際にヒューリスティック$${σ^2 = E[ (y_t - y’)^2 ]}$$を実装していません。このアプローチはSheet2(Excelドキュメントの2番目のスプレッドシート)で実装されています。例では、予測が定常であると仮定しているため、このヒューリスティックの有無に関係なく、再発注点は同じままです。

リソース

在庫管理と生産計画とスケジューリング、Edward A. Silver、David F. Pyke、Rein Peterson、Wiley; 3版、1998年