最適サービスレベルの数式(サプライチェーン)
在庫サービスレベルは、ストックアウトを回避するための期待確率を表します。この割合は安全在庫を算出するために必要です。直感的には、サービスレベルは在庫コストと在庫切れ発生時のコスト(販売機会損失、機会損失、顧客の不満など)の間のトレードオフを示しています。本記事では、サービスレベルの値を最適化する手法について詳述し、その後、腐りやすい食品という特殊な場合について解析を深めます。
モデルと数式
古典的なサプライチェーンの文献では、サービスレベルに採用すべき数値がやや曖昧に扱われています。以下では、在庫コストと在庫切れコストをモデル化することにより、_最適な_サービスレベルを算出する方法を提案します.
以下の変数を導入します:
- \({p}\) はサービスレベル、すなわち在庫切れとならない確率を表します.
- \({H}\) はリードタイム期間中の単位あたりの_保管コスト_を表します (1).
- \({M}\) は在庫切れ時の限界単位コストを表します (2).
Download Excel sheet: service-level-formula.xlsx (計算例)
(1) ここで考慮している時間範囲はリードタイムです。したがって、通常の年間保管コスト\({H_y}\)ではなく、リードタイム(日数で表す\(d\))を仮定して \({H = \frac{d}{365}H_y}\) を用います.
(2) 在庫切れコストには、最低でも粗利益、すなわち在庫切れがなければ即時に得られたであろう利益が含まれます。しかし、粗利益の損失だけでなく、例えば顧客の不満や顧客の忠誠心の低下も考慮すべき要素です。経験則として、多くの食品小売業者は \({M}\) を粗利益の3倍と見なしています.
_最適な_サービスレベルは(以下に詳細な理論を示します)次のように与えられます:
ここで \({\Phi}\) は正規分布に関連する累積分布関数です。この値はExcelで容易に計算でき、\({\Phi}\) はNORMSDIST関数により求められます。また、数値計算のために \({\sqrt{2 \pi} \approx 2.50}\) として近似します.
コスト関数
コスト関数をモデル化するため、さらに2つの変数を導入します:
- \({Q}\) は_償却済み_の在庫量 (3)であり、\({p}\) に依存する関数です.
- \({O}\) は在庫切れ発生時の_平均_超過需要量を表します.
(3) ここではアモータイズド解析の視点を採用しています。在庫水準は常に変動しますが、実践的な解析を行うため、需要予測と切り離されたサービスレベルの値を求めることが目標です。したがって、詳細は安全在庫のガイドをご参照の上、\({Q}\) をリオーダーポイントと等しいと仮定します.
特定のサービスレベルに対して、在庫保管コストと在庫切れコストの両方を組み合わせた総コスト \({C(p)}\) は次のように表せます:
ここで \({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}\) を超えた場合の条件付き平均(利用可能在庫 \({q}\) を差し引いたもの)となります。つまり:
関数の詳細は (1) でご確認ください.
この結果は、需要が厳密に正規分布に従うならば、在庫切れという(条件付き)事象における平均逸失販売量が在庫水準の増加とともに急速にゼロに収束することを意味します.
しかし、実際の経験では、予測誤差の収束は正規分布が予測するほど良好ではありません。したがって、ここでは \({O=\sigma}\) と仮定します。すなわち、逸失販売量の平均は_平均予測誤差_と等しいとみなします。これは詳細な解析というよりもあくまで経験則ですが、実際にはこの近似が妥当な結果をもたらすことが分かっています.
コスト関数の最小化
上記で定義した置換を \({C(p)}\) の式に適用すると、次の式が得られます:
次に、\({C(p)}\) の式を \({p}\) で微分すると、
最小値を求めるため、\({\frac{\partial C}{\partial p} = 0}\) を解くと、
ここで \({\sigma}\) で簡単化すると、
そして最終的に:
次に、\({\partial \Phi^{-1}}\) と \({\Phi^{-1}}\) の関係式を用います:
この等式の視覚的な証明については、(1) と (2) を比較してください.
この関係式により、次の式が得られます:
この方程式の正の解(負の解は関数の局所最大に対応する)を採用して、
そして、両辺に \({\Phi}\) を適用することで、最適なサービスレベルが得られます:
数式の考察
この数式の第一の興味深い点は、最適なサービスレベルが \({H}\)(在庫コスト)と \({M}\)(在庫切れコスト)のみに依存している点です。しかし、\({H}\) はリードタイム期間中の保管コストとして定義されているため、リードタイムに対する暗黙の依存性があります.
第二に、在庫コストが大きいほど最適なサービスレベルは低下し、一方で在庫切れコストが大きいほどサービスレベルは上昇します。この挙動は、サービスレベルが多くの在庫と在庫切れとのトレードオフであるため、直感的に理解しやすいものです.
また、この数式は \({M}\) と \({H}\) の全ての値に対して有効というわけではありません。対数内部が負の値とならないために \({\sqrt{2\pi}\frac{M}{H} > 1}\)、すなわち \({M > \sqrt{2 \pi} H}\)(概ね \({M > 2.5 H}\) と近似される)が必要です。この条件が満たされない場合、初期のコスト関数 \({C(p)}\) に最小値が存在しない、あるいは \({p=0}\) において最小値が \({-\infty}\) となることを意味します。実用的な観点からは、\({M < 2.5 H}\) は、最も利益が出る在庫レベルがゼロ在庫、すなわち100%の在庫切れ状態であるという異常な状況と捉えることができます.
実例
例えば、1Lのミルクパックを販売価格1.50€、10%のマージン(すなわち粗利益0.15€)で販売していると仮定します。リードタイムは4日、年間の保管コストは1.50€です(ミルクは非常に腐りやすい製品であるため、この値は高めです)。在庫切れコストは粗利益の3倍、すなわち0.45€と仮定します。これにより、\({M=0.45}\) および \({H=\frac{4}{365} 1.5\approx 0.0055}\) となります.
これらの値と上述の最適サービスレベルの数式に基づくと、\( p \approx 98.5 \text{\%} \) となり、これは食料品店ネットワークに供給するウェアハウスに保管される、必須の新鮮な製品に見られる典型的な値です.
腐りやすい食品
2012-02-13にサプライチェーンの専門家であるVyacheslav Grinkevychから提起された質問:
私は短寿命の乳製品の予測および供給計画に取り組んでおり、その中で最適なサービスレベルは非常に重要なテーマとなっています。ここで最も興味深く厄介な要素は H 、すなわち保管コストと、その実用上適切な値の設定に関する問題です.
例えば、短寿命の乳製品では、H の重要な部分として、在庫に凍結される現金や運用物流の保管費用などの純粋な金銭的コストだけでなく、期限切れ製品の償却損失や、賞味期限直前の在庫一掃販売時の割引による潜在的な損失のコストも含むべきです。これは、実際の売上が予測を大幅に下回った場合に生じます.
このトレードオフは、潜在的な過剰在庫リスクと潜在的な在庫切れリスクとして説明できます。これら二つのリスクは本質的には同じ起源、すなわち安全在庫と相互に関連しているにもかかわらず、逆方向に作用します。大幅な過大予測が行われると、通常は期限切れの問題を引き起こし、予測誤差は正規分布しなくなります。そこで、私はこのような_潜在的な過剰在庫リスク_をどのようにより良く表現できるか疑問に思っています.
あなたの数式に戻ると、さらなる発展として、総コスト C(p) の最小化に入る前に、H と p の間の関係を見出す、または H を p の関数、すなわち H(p) とする試みが考えられます。この点について、どのようにお考えでしょうか?
ここで示したサービスレベルの数式は、実際、保管および在庫切れの両コストが厳密に線形であるという単純化された仮定に基づいています。しかし、実際には以下のような厳しい非線形性が見られる場合があります:
- 倉庫が満杯の場合、追加の1単位の在庫が実際には追加の保管場所確保という莫大な経費を伴うことがある.
- 在庫切れによって累積する販売機会の損失が、最終的には1回の在庫切れで継続的な顧客の喪失を招く場合がある.
腐りやすい製品にはさらに別の側面があります。すなわち、在庫が単位数ではなく日数で表される在庫カバーが製品の有効期限に近づくと、保管コストである \({H}\) が無限大に向かって増加します.
実際、\({H}\) はそもそも在庫を持つことに伴う_摩擦_を表しています。製品の有効期限を超える在庫カバーは、FIFO(先入先出法)を仮定した場合、いかなる製品も保管場所から取り出されることなく、まず有効期限に達してしまうという非常識な状況を意味します.
在庫の_腐りやすさ_の影響をモデル化するため、いくつかの重要な期間を導入します:
- \({\lambda}\) はリードタイムを表します.
- \({\lambda_\infty}\) は製品が完全に期限切れ(市場価値ゼロ)になるまでの寿命を表します.
- \({\lambda_{½}}\) は、市場価値の損失により製品の元の保管コストを倍増させる期間を表します.
- \({\lambda_c(p)}\) は在庫カバー、すなわち製品単位ではなく日数で表される在庫量を意味し、この期間は安全在庫係数に依存するため \({p}\) にも依存します.
これらの期間を用いて、保管コストは次のようにモデル化できます:
ここでの暗黙の仮定を詳述します。これは、償却リスクを反映するために、通常の保管コストの概念をやや歪める形になっている点に留意してください.
まず、\({H(0.5)=H}\)とする。これは前述の定義から得られるものである。実際、\({\lambda_c(0.5)=\lambda}\)、サービスレベルが50%の場合、在庫カバーはリードタイムと等しくなる。したがって、本モデルでは\(H\)は、50%のサービスレベルに伴う廃棄費用が既に織り込まれた運搬費用を表すことになる。なお、安全在庫がゼロであっても、廃棄費用がゼロになるわけではなく、まれに廃棄が発生するだけである.
次に、サービスレベルが\({p_½}\)、すなわち\({\lambda_c(p_½) = \lambda_½}\)の場合、\({H(p_½)=2H}\)となる。これもまた、\({H(p)}\)の定義に起因する結果に過ぎない。直感的には、\({\lambda_½}\)は、安全在庫ゼロの場合と比較して、運搬費用と廃棄費用の合計が倍になる期間を表す。実際、ライフエンドディスカウントや廃棄に伴う追加費用は段階的に発生する。しかし、こうした追加費用を、実際には製品寿命のある割合として定義される典型的な期間で表現しようとする試みは、より不確実な変数に依存する細かいモデルに比べ、全体の近似に対してはるかに堅牢であると考えられる.
最後に、\({p}\)が\({p_\infty}\)に近づくにつれて(\({\lambda_c(p_\infty)=\lambda_\infty}\))、\({H(p)}\)は採用された\({H(p)}\)の関数定義により無限大に発散する。一見、運搬費用が製品の単位価格を上回るのは奇妙に感じられるかもしれないが、これは矛盾ではない。ここで\(H(p)\)が表すのは、顧客に1単位を出荷するための摩擦費用である。もし、大量の廃棄が原因で、最終顧客に1単位を出荷するために倉庫が平均して3単位を受け取り(そのうち2単位が配送前に期限切れとなる)場合、摩擦費用は元の製品単価をはるかに上回ることになる.
要するに、\({\lambda_½}\)は導入される不確実な変数のひとつにすぎない。\({\lambda}\)と\({\lambda_\infty}\)は既知であると安全に仮定できる。本モデルの\({H(p)}\)は、たった1つの追加変数を導入することで実現可能な最も単純なモデルであると考える。それから、\({\lambda_c(p)}\)について、控えめな近似として以下のようになる:
実際、\({\lambda_c}\)、すなわち在庫カバーは、リードタイムに対する比率として、リード需要と正規化された安全在庫係数を含むと見なすことができる。これにより、以下の代替的な費用関数が得られる:
先の費用関数とは異なり、この関数には単純な代数的最小値が存在しないようである。しかし、経済発注量の計算に用いられるアプローチに類似した方法を採用することで、80%から99.9%まで0.1%刻みで反復することにより、概算の解を比較的容易に求めることができる。これは、実用上十分な0.1%の精度を得るために200回の反復を意味する.
想定される実用例
サービスレベルの式にはいくつかの近似が含まれているため、数値はそのままでは利用できず、通常はいくらかの調整が必要となる。特に、係数\({\frac{1}{\sqrt(2\pi)}\approx0.4}\)は必要に応じて調整可能である。しかし、この式は、各商品のそれぞれのサービスレベルがどのように比較されるべきかについて良い洞察を与えると考えている。例えば、製品AとBのサービスレベルがそれぞれ95%(Aの場合)と90%(Bの場合)であれば、最終的な生産体制においてはAのサービスレベルがBより高いことが期待される.
ここまでの解析の性質を考慮すると、この式は需要が低いまたは断続的な製品には適さないと考えられる。実際、そのような少量生産の製品は通常、0または1単位という低い補充点と関連しており、製品の保管費用を線形にモデル化することは、追加の品目を保管する際の複雑さも考慮すべきであるため、必ずしも意味をなさない.