発注点 r
リードタイム期間中に発生する需要は D_L \sim N(\mu_L, \sigma_L^2) とし,正規分布の再生性により,
\mu_L = \mu L, \quad \sigma_L^2 = \sigma^2 L
になる.すなわち,リードタイム期間中の平均需要は \mu_L = \mu L ,標準偏差は \sigma_L = \sigma \sqrt{L} である.
X_1, X_2, \ldots, X_n が独立に同一の正規分布 N(\mu, \sigma^2) に従うならば,Y = X_1 + X_2 + \cdots + X_n は正規分布 N(n\mu, n\sigma^2) に従う.
例 15.3 単位期間あたりの需要 D が正規分布 N(100, 20^2) に従うと仮定する.リードタイム L = 4 のとき,リードタイム期間中の平均需要 \mu_L と標準偏差 \sigma_L を求めよ.
\mu_L = \mu L = 100 \cdot 4 = 400
\sigma_L = \sigma \sqrt{L} = 20 \sqrt{4} = 40
これにより,リードタイム期間中の需要 D_L は正規分布 N(400, 40^2) に従うことがわかる.
発注点 r を決めるためには,サービスレベル (service level)を考える.ここでは,サービスレベルを,リードタイム期間中に需要を満たす確率と定義する.サービスレベルを \alpha とし,0 < \alpha < 1 とする.
与えられたサービスレベル \alpha に対して,D_L が発注点 r 以下になる確率(欠品が発生しない確率,つまり,サービスレベル)が \alpha になるように発注点 r を決定する.
\mathbb{P}(D_L \leq r) = \alpha
もし,発注点 r = \mu_L とすると,
\mathbb{P}(D_L \leq \mu_L) = \mathbb{P}\left(\frac{D_L - \mu_L}{\sigma_L} \leq 0\right) = \Phi(0) = 0.5
が得られる.すなわち,50% の確率で欠品が発生することになる.したがって,サービスレベル \alpha > 0.5 の場合,発注点 r は平均需要 \mu_L より大きくなる必要がある.
発注点が平均需要を上回る部分,すなわち,r - \mu_L を安全在庫 (safety stock)と呼び,s と表す.
s = r - \mu_L
この式を変形すると,発注点 r は次のように表される.
r = \mu_L + s
従って,サービスレベル P(D_L \leq r) = \alpha は次のように表される.
\mathbb{P}(D_L \leq \mu_L + s) = \alpha
与えられたサービスレベル \alpha に対して,安全在庫 s \geq 0 を求める.
\begin{align}
\mathbb{P}(D_L - \mu_L \leq s) &= \alpha \\
\mathbb{P}\left(\frac{D_L - \mu_L}{\sigma_L} \leq \frac{s}{\sigma_L}\right) &= \alpha \\
\Phi\left(\frac{s}{\sigma_L}\right) &= \alpha \\
\frac{s}{\sigma_L} &= \Phi^{-1}(\alpha) \\
s &= \sigma_L \Phi^{-1}(\alpha) \\
s &= \sigma \sqrt{L} \Phi^{-1}(\alpha)
\end{align}
ここで,\Phi(\cdot) は標準正規分布の累積分布関数であり,\Phi^{-1}(\alpha) はその逆関数である.したがって,発注点 r は次のように表される.
r = \mu_L + s = \mu L + \sigma \sqrt{L} \Phi^{-1}(\alpha)
\Phi^{-1}(\alpha) は標準正規分布表,Excel,Python などを用いて求めることができる.
例 15.4 単位期間あたりの需要 D が正規分布 N(100, 20^2) に従うと仮定する.リードタイム L = 4 ,発注点 r = 500 のとき,安全在庫 s とサービスレベル \alpha を求めよ.
リードタイム期間中の平均需要は \mu_L = 400 である.したがって,安全在庫 s は次のように求められる.
s = r - \mu_L = 500 - 400 = 100
サービスレベル \alpha は次のように求められる.
\alpha = \mathbb{P}(D_L \leq r) = \Phi\left(\frac{r - \mu_L}{\sigma_L}\right) = \Phi\left(\frac{100}{40}\right) = \Phi(2.5) \approx 0.99379
発注点 r = 500 のとき,安全在庫 s は100,サービスレベル \alpha は約 99.379% である.
例 15.5 リードタイム L = 4 ,平均需要 \mu = 100 ,需要の標準偏差 \sigma = 20 ,サービスレベル \alpha = 0.95 のとき,発注点 r と安全在庫 s を求める.
リードタイム期間中の平均需要と標準偏差は次のように計算される.
\begin{align}
\mu_L &= \mu L = 100 \cdot 4 = 400 \\
\sigma_L &= \sigma \sqrt{L} = 20 \sqrt{4} = 40 \\
\end{align}
標準正規分布表から \Phi^{-1}(0.95) \approx 1.64485 を得る.これを用いて安全在庫 s と発注点 r を求める.
\begin{align}
s &= \sigma_L \Phi^{-1}(0.95) \approx 40 \cdot 1.64485 \approx 65.79 \\
r &= \mu_L + s \approx 400 + 65.79 \approx 465.79
\end{align}
したがって,発注点 r は約465.79,必要な安全在庫 s は約65.79となる.
Python では,以下のように計算できる.
from scipy.stats import norm
L = 4
mu = 100
sigma = 20
alpha = 0.95
mu_L = mu * L
sigma_L = sigma * (L ** 0.5 )
s = sigma_L * norm.ppf(alpha)
r = mu_L + s
print (f"reorder point: { r:.2f} , safety stock: { s:.2f} " )
reorder point: 465.79, safety stock: 65.79