定量発注法とMin-Max発注法を同じ需要データで比較できるシミュレーションアプリ

Photo by Igor Omilaev on Unsplash

定量発注方式Min-Max発注方式も物量があまり多くない、いわゆるBC商品に使われることが多いのですが、

「両方式の違いがよくわからない。うちの商品にはどちらが適しているのだろう?」

と思ったことはありませんか?

 

そのような方は是非このアプリでシミュレーションしてみて下さい。

>>定量発注 & Min-Max発注のシミュレーションアプリ|ロジギーク 

いろいろと条件を変えながらシミュレーションすることで、両発注方式の違いが見えてきます。

 

当ページのリンクには広告やプロモーションが含まれています。

定量発注方式とは?

定量発注方式とは、その名の通りいつも同じ数量を発注する発注方式です。

発注するタイミングは発注点を下回った時です。

ですので、定量発注方式で重要な設定点は発注点発注量です。

 

発注点は通常

発注点=リードタイム期間中の需要予測数+安全在庫

で計算します。

 

発注量は輸送コスト(発注コスト)が一定の場合にはEOQ(経済的発注量)を使いますが、実はこれが満たされるケースは稀です。

その場合は平均需要の倍数、つまりx日分の需要という形で表します。

このxはあまり短すぎると欠品を起こしますので、ある程度長く取るのが普通です。

通常は4以上に設定します。

 

詳しくはこちらの記事で解説しています。

【定量発注方式】PythonInventorizeライブラリで在庫シミュレーションしてみた

【定量発注方式】PythonのInventorizeライブラリで在庫シミュレーションしてみた

 

Min-Max発注方式とは?

Min-Max発注方式は発注点を下回ったら発注をかけるという点では定量発注方式と似ていますが、発注量は一定ではありません。

予めMaxを決めておいて、庫内在庫量との差を発注します。

 

勘がいい人は、MaxMinの差が定量発注の発注量になるようにMaxを設定すれば、Min-Max発注と定量発注はほとんど同じだということに気づくでしょう。

確かに発注点を1でも下回った時点で発注できるなら両者は同じになります。

でもそのようなことはむしろ稀で、大抵はそれ以上下回った時点で発注することになります。

発注点を下回っているかをチェックするのは一日一回なので、前日まで発注点+1の在庫があったとしても、その日に10個出荷されれば在庫が(発注点-9)の時に発注することになるからです。

 

このような理由から、Min-Max発注の方が定量発注よりも欠品率は少し低くなります。

しかし発注量をEOQ(経済的発注量)にすることによるメリットがある時には定量発注の方が物流コストが低くなるため、どちらの発注方式を採用するかは総合的に判断する必要があります。

 

アプリの使い方

本アプリでは同じ需要データを使い、定量発注とMin-Max発注で在庫推移やトータル物流コストなどにどのような違いが出るかをシミュレーションすることができます。

以下、そのやり方を説明します。

 

パラメータの設定方法

シミュレーションに必要なデータはサイドバーにある【条件設定画面】で入力して下さい。

需要データの読み込み」、「訓練データと検証データの比率」、「発注関連パラメータ」、「物流コスト」に大きく分かれています。

スマホの場合は画面左上にある「」をクリックすると

このような【条件設定画面】が現れます。

 

需要データの読み込み

シミュレーションしたい商品アイテムの日別の需要データを下記のようにExcel等で入力した後、csv形式ファイルで保存してアップロードして下さい。

日付を入力する必要はありません。

100日分以上の需要データを取得することをお勧めします。

上限はありません。

用意できるデータがなくても、デフォルトで下記グラフのような180日分のデータが入っているので大丈夫です。

 

訓練データと検証データの比率

安全在庫理論では需要の平均標準偏差を使いますが、これらは過去データから計算します。

一方、シミュレーションは「まだ見ぬデータ」でするものなので、過去データとシミュレーションするデータに分けます。

そして過去データを訓練データ、シミュレーションするデータを検証データと呼ぶことにします。

ここでは検証データの比率を指定します。

デフォルトでは70になっています。

アップロードした需要データの前半30%を訓練データとし、後半70%を検証データにするということです。

 

発注関連パラメータ

ここでは納品リードタイム許容欠品率発注数(定量発注の場合)MaxMin-Max発注の場合)を指定します。

発注数とMaxはそれぞれ平均需要の何日分という形で設定して下さい。

デフォルトではそれぞれ3744になっています。

 

物流コスト

ここでは輸送コスト保管コスト欠品コストを指定します。

輸送コストについては定量発注とMin-Max発注のそれぞれの場合で別々に設定できるようになっています。

これは先に説明したように定量発注ではEOQにより最適発注量を決めるケースがあるためです。

 

シミュレーション結果の見方

以上の条件を設定すると即座にシミュレーション結果に反映されます。

定量発注の場合もMin-Max発注の場合も、下記項目のシュミレーション結果を見ることができます。

 

入出庫推移表

毎日の入出庫や在庫などのシミュレーション結果が表形式でまとめられています。

赤で囲ったボタンを押すことによってデータをcsv形式でダウンロードすることもできます。

 

庫内在庫推移グラフ

上記表の庫内在庫の推移をグラフにしたものです。

 

主要在庫指標

本シミュレーションでは安全在庫は

安全在庫=√(リードタイム)×需要の標準偏差×安全係数

で、発注点は

発注点=1日当たりの平均出荷量×リードタイム日数+安全在庫

で計算しています。

安全在庫の役割りと標準偏差を使った計算方法をわかりやすく解説します。

【安全在庫の計算式】標準偏差と安全係数から計算する式をわかりやすく

【発注点の求め方】日/アイテム/在庫拠点別の出荷データからPythonで求める方法を実演

【発注点の求め方】日/アイテム/在庫拠点別の出荷データからPythonで求める方法を実演

 平均在庫はシミュレーション期間における庫内在庫の平均値、サービス率は

サービス率=欠品になった日数÷シミュレーション日数

欠品率は

充足率=欠品になった総数÷需要の総数

で算出しています。

 

物流コスト

シミュレーション期間中における物流関連のコストを次のように計算して表示します。

トータル輸送コスト=輸送コスト単価発注回数

トータル保管コスト=∑(輸送コスト単価庫内在庫数)

トータル欠品コスト=欠品コスト単価欠品総数

トータルロジスティクスコスト=上記3コストの合計

 

定量発注とMin-Max発注の比較

デフォルトの条件で定量発注とMin-Max発注のシミュレーション結果を比較してみましょう。

まず定量発注ではサービス率と充足率が低くなっていることがわかります。

これは定量発注の方が発注量が少ないためです。

その分、在庫が足りなくなる確率、つまり欠品率が高くなるのです。

 

そのため欠品コストは定量発注の方が高くなっています。

 

また同じ理由から、定量発注の方が在庫が少なくなります。

そのため保管コストは定量発注の方が低くなっています。

 

定量発注の方が発注量が少ないということは、発注回数は多くなります。

実際、シミュレーション期間中の発注回数を調べてみると、定量発注が32回、Min-Max発注が29回でした。

定量発注の方が回数が多いのですが、発注1回当たりの輸送コストが安いため、全体の輸送コストは若干低くなっています。

 

以上を合計したトータルロジスティクスコストはMin-Max発注の方が若干低くなっています。

 

ところがこれは条件を少し変えるだけで結果が変わってしまいます。

発注量やMaxを決めるための需要日数を4日から5日に変えてみましょう。

結果は次のように逆になります。

このように定量発注とMin-Max発注のどちらを採用するかは、欠品率や発注回数などを考慮して総合的に判断する必要があります。

>>定量発注 & Min-Max発注のシミュレーションアプリ|ロジギーク