Min-Max 発注は (s,S) 方式で、Min は発注点、Max は補充上限
Min-Max 発注は、在庫ポジションが Min(s)以下になったら、Max(S)まで補充する量を発注する方式です。文献では (s,S) 方式と呼ばれます。発注量は毎回「S − その時点の在庫ポジション」で決まり、一定ではありません。
s(Min) = d × L + SS = 発注点
S(Max) = s + Q Q は EOQ などで決めた基準発注量
発注量 = S − 在庫ポジション (在庫ポジション ≤ s のとき)
| 記号 | 意味 | 単位 | 数値例 |
|---|---|---|---|
| d | 1日あたり平均需要 | 個/日 | 100(標準偏差30) |
| L | リードタイム | 日 | 9 |
| SS | 安全在庫(サイクルサービス率95%) | 個 | 1.645×30×√9=148 |
| Q | 基準発注量 | 個 | 800(EOQの数値例) |
| s | Min | 個 | 900+148=1,048 |
| S | Max | 個 | 1,048+800=1,848 |
在庫ポジションは手持在庫に発注残を足し、引当と受注残を引いた値です。定義は発注点の計算と同じです。在庫が連続的に減り、Min を割った瞬間に発注できるなら、発注量はちょうど Q になり、定量発注と同じ動きをします。
Min に安全在庫を入れる誤設定がいちばん多い
ERP の品目マスタで「最小在庫」「Min」という項目名を見ると、安全在庫を入れたくなります。しかし Min は発注を始める水準であり、安全在庫ではありません。Min=148個、Max=948個とすると、在庫が148個まで減ってから発注することになり、リードタイム9日間の平均需要900個がまるごと不足します。
需要を正規乱数(平均100個、標準偏差30個)で40万日分発生させ、毎日の終わりに在庫ポジションを判定して発注、9日後に入庫する条件で模擬計算した結果が次の表です。欠品分は後で出荷するバックオーダーとして扱いました。
| 設定 | 判定 | サイクルサービス率 | フィルレート | 平均手持在庫 |
|---|---|---|---|---|
| Min=148(安全在庫)、Max=948 | 毎日 | 0.0% | 7.6% | 2個 |
| Min=1,048、Max=1,848 | 毎日 | 83.2% | 98.97% | 475個 |
| Min=1,103、Max=1,903(アンダーシュート補正) | 毎日 | 93.6% | 99.68% | 529個 |
| Min=1,048、Max=1,848 | 週1回 | 0.5% | 70.5% | 309個 |
| Min=1,797、Max=2,597(R+L で計算) | 週1回 | 99.1% | 99.97% | 973個 |
1行目のとおり、Min に安全在庫を入れると需要の9割以上を即納できません。実際の工場でこれが起きていないように見えるのは、担当者が欠品を見て手で追加発注しているからで、システムの設定としては機能していません。
日次判定では「アンダーシュート」の分だけサービス率が落ちる
2行目は式どおりの Min・Max ですが、サイクルサービス率は目標95%に対して83.2%でした。原因はアンダーシュートです。判定が1日の終わりにまとめて行われるので、在庫ポジションは Min ちょうどではなく、Min を少し下回った時点で発注されます。下回った分だけ、リードタイム中に使える在庫が減ります。
模擬計算での平均アンダーシュートは54.4個でした。判定周期あたりの需要を X とすると、平均アンダーシュートは次の近似で求められます。
E[アンダーシュート] ≈ E[X²] ÷ (2 × E[X]) = (σ² + μ²) ÷ (2μ)
= (30² + 100²) ÷ (2 × 100) = 54.5 個
Min をこの分だけ引き上げて1,103個にすると、3行目のとおりサービス率は93.6%まで戻ります。残る差は、アンダーシュート自体のばらつきによるものです。1回の出庫が大きい品目、たとえば平均100個でも1回500個ずつまとめて払い出す品目では、アンダーシュートがさらに大きくなり、補正の効果も大きくなります。
週1回の判定なら Min は R+L 日分で計算する
4行目は、毎日判定する前提で計算した Min を週1回の判定にそのまま使った場合です。在庫ポジションが Min をわずかに上回っていれば発注されず、次の判定は7日後なので、その間に Min を大きく割り込みます。サービス率は0.5%まで落ちます。
週1回判定では、Min が守るべき期間は R+L=16日です。
s = d × (R+L) + z × σd × √(R+L) = 100 × 16 + 1.645 × 30 × 4 = 1,797 個
5行目のとおりサービス率は99.1%で、目標を上回ります。在庫ポジションが Min のすぐ上で判定を通過した最悪の場合に95%を守る設計なので、多くのサイクルでは余裕が出て、平均手持在庫は973個と毎日判定の約2倍になります。在庫を減らしたいなら、判定を毎日にするか、定期発注の (R,S) 方式に切り替えて Max を R+L 日分の水準に合わせるのが筋です。
Max の決め方と、運用で見るべき数字
Max と Min の差は、毎回の発注量の基準になります。この差を小さくすると発注回数が増え、大きくすると平均在庫が増えます。EOQ を初期値にし、荷姿や最小発注量、保管スペースで調整します。Max は「置ける上限」として決める現場もありますが、保管スペースから決めた Max と EOQ から決めた Max が大きく違う場合は、どちらの制約が効いているのかを明示しておきます。
運用開始後は、品目ごとに次の3つを月次で見ます。
- 実績のサイクルサービス率(欠品したサイクルの割合)
- 平均アンダーシュート(発注時の在庫ポジションと Min の差)
- Max を超えて入庫した回数(手配の重複や最小発注量の影響)
よくある質問
Min-Max と発注点方式は何が違いますか
発注点方式は毎回同じ量 Q を発注し、Min-Max は Max との差を発注します。判定時に在庫が Min を大きく下回っていた場合、Min-Max は下回った分も含めて発注するので、アンダーシュートの影響を発注量で取り戻せます。
保守部品にも Min-Max は使えますか
安価で1回にまとまって出る消耗品には向いています。高価で1個ずつしか出ない部品は、Min=S−1、Max=S とした基準在庫方式(1個出たら1個発注)のほうが在庫を抑えられます。
この記事に出てくる用語
安全在庫の式は、どこで嘘をつくか
需要が正規分布でないとき、リードタイムがばらつくとき。教科書の式と現場の欠品率がずれる理由 全17本
- 安全在庫の計算式:安全係数×標準偏差×√リードタイムの前提と数値例
- リードタイムがばらつくときの安全在庫の式と、遅延が偏るときの補正
- サイクル在庫・輸送中在庫・季節在庫:在庫を6つの機能で分けて計算する
- 発注点の計算:リードタイム需要+安全在庫と、発注残・引当の扱い
週刊 在庫KPI
業種別の在庫KPIベンチマークの更新と、その週の新着記事5本を毎週月曜にお届けします。無料・いつでも解除できます。