発注点 \(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)\) に従う.
例 14.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 などを用いて求めることができる.
例 14.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% である.
例 14.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