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 のとき)
記号意味単位数値例
d1日あたり平均需要個/日100(標準偏差30)
Lリードタイム日9
SS安全在庫(サイクルサービス率95%)個1.645×30×√9=148
Q基準発注量個800(EOQの数値例)
sMin個900+148=1,048
SMax個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本

  1. 安全在庫の計算式:安全係数×標準偏差×√リードタイムの前提と数値例
  2. リードタイムがばらつくときの安全在庫の式と、遅延が偏るときの補正
  3. サイクル在庫・輸送中在庫・季節在庫:在庫を6つの機能で分けて計算する
  4. 発注点の計算:リードタイム需要+安全在庫と、発注残・引当の扱い
特集の記事をすべて見る →

この記事を書いた人

株式会社サオス

株式会社サオス 製造DX部

DELMIA Apriso を中核とした MES / 製造DX の導入・運用・人材育成と、製造業のデータ活用・AI の調査・開発・教育を手がけるITコンサルティング企業。ISO 9001:2015 / ISO 27001:2022 認証取得。 日本・中国・米国で製造業のMES・在庫・データ基盤を手がけた実務者が、計算式を検算し、欧米・中国の一次情報にあたって書いています。

週刊 在庫KPI

業種別の在庫KPIベンチマークの更新と、その週の新着記事5本を毎週月曜にお届けします。無料・いつでも解除できます。

登録によりプライバシーポリシーに同意したものとします。配信は株式会社サオスが行います。