# Safety Stock with Fill Rate Criterion

When applying the base stock inventory policy, assuming the daily demands are normally distributed with parameter $$(\mu, \sigma)$$, we can find the optimal parameter $$S$$ (the base stock level) in several different ways: (say we have 0 lead time and review period is 1 unit period, and assume infinite horizon)

1. From the holding cost/stockout cost criterion: if holding cost per item is $$h$$ and stockout cost per item is $$p$$, then $$S = \mu + \sigma\Phi^{-1}(\frac{p}{p+h})$$, where $$\Phi$$ is the cdf of the standard normal distribution.
2. If the stockout cost $$p$$ is difficult to estimate for the firm, then a service-level-based approach is used, in particular, the two most basic types of service levels are Cycle Service Level (type 1 service rate) and Fill Rate (type 2 service rate): To achieve a type 1 service level of $$\alpha$$, we simply have $$\alpha = \Phi((S-\mu)/\sigma)$$, so the base stock level $$S = \mu + \sigma\Phi^{-1}(\alpha)$$.
3. For a type 2 service level, the calculation is more complicated. The usual formula for approximating the fill rate is $$\beta = 1-\frac{n(S)}{\mu}$$, where $$n(S) = \sigma \mathcal{L}(z), z=(S-\mu)/\sigma$$, and $$\mathcal{L}(z)$$ is the standard normal loss function (see e.g. in the appendix of this book).

The first two approaches give the base stock level a nice structure: $$\mu$$ is the cycle stock to cover the average demand in lead time and review period, while $$\sigma \Phi^{-1}(\alpha)$$ is the safety stock to buffer the fluctuations in lead time demand, and we have a rather simple description of the relation between the safety stock and the service level $$\alpha$$. However, when using the fill rate approach, the base stock level $$S$$ is found by solving the nonlinear equation $$\beta = 1-n(S)/\mu$$, we can still compute the associated base safety stock level $$ss = S-\mu$$, but we no longer have a simple description on the relationship bewteen the safety stock level, the fill rate $$\beta$$ and the demand standard deviation $$\sigma$$.

So my question is: is there any approximate formula/asymptotic expression (as $$\beta$$ approaches $$1$$) that gives the rough relation between the safety stock level $$ss = S-\mu$$ and the fill rate $$\beta$$ when $$S$$ is found by solving the fill rate constraint?

We can work from scratch. Rearrange $$\beta=1-n(S)/\mu$$ to get $$-\frac{\mu\sqrt{2\pi}}\sigma(\beta-1)=e^{-z^2/2}-z\sqrt{2\pi}+z\int_0^z\sum_{k=0}^\infty\frac{(-t^2/2)^k}{k!}\,dt$$ on using $${\cal L}(z)=\phi(z)-z(1-\Phi(z))$$ and $$\Phi'(z)=\phi(z)=e^{-z^2/2}/\sqrt{2\pi}$$. This gives \begin{align}y:=\frac{\mu\sqrt{2\pi}}\sigma(\beta-1)&=-\sum_{k=0}^\infty\frac{z^{2j}}{(-2)^jj!}+z\sqrt{2\pi}-\sum_{k=0}^\infty\frac{z^{2k+2}}{(-2)^k(2k+1)k!}\\&=-1+z\sqrt{2\pi}+\sum_{k=1}^\infty\frac{z^{2k}}{(-2)^k(2k-1)k!}\\&=\sum_{i=0}^\infty a_iz^i\end{align} where $$a_0=-1$$, $$a_1=\sqrt{2\pi}$$ and $$(-2)^k(2k-1)k!a_{2k}=1$$.

It is now possible to reverse the series to represent $$z$$ as a function of $$\beta-1$$. Let $$z=\sum_{j=0}^\infty A_jy^j$$ so that \begin{align}y&=\sum_{i=0}^\infty a_i\left(\sum_{j=0}^\infty A_jy^j\right)^i=\sum_{i=0}^\infty a_i\sum_{m=0}^\infty c_m(i)y^m=\sum_{m=0}^\infty\sum_{i=0}^\infty a_ic_m(i)y^m\end{align} where $$c_0(i)=A_0^i$$ and $$c_m(i)=\frac1{mA_0}\sum_{n=1}^m(ni-m+n)A_nc_{m-n}(i)$$ for $$m>0$$. When $$m=0$$, we have $$0=\sum_{i=0}^\infty a_iA_0^i\implies 1=a_1A_0+a_2A_0^2+\cdots$$ so $$A_0\approx0.4363$$. When $$m=1$$, we have $$1=A_1\sum_{i=1}^\infty ia_iA_0^{i-1}\implies A_1=\left(\sqrt{2\pi}+2\sum_{i=1}^\infty ia_{2i}A_0^{2i-1}\right)^{-1}$$ so $$A_1=\left(\sqrt{2\pi}+2\sum_{i=1}^\infty\frac{iA_0^{2i-1}}{(-2)^i(2i-1)i!}\right)^{-1}\approx0.4900.$$ Therefore, a rough linear approximation as $$\beta\to1$$ is given by $${\sf SS}=\sigma z=0.4363\sigma+1.2282\mu(\beta-1)+{\cal O}((\beta-1)^2).$$

• Sorry for the late reply, this is great, thank you! – TTY Feb 2 at 2:16
• One question though, as $\beta \to 1$, the safety stock should approach infinity (you need a lot of safety stocks to ensure high service level), why the approximation should be linear? – TTY Feb 2 at 2:48
• @TTY The linear approximation was only meant to be an example of how the series reversion would be carried out, as you can obtain many more terms using the recursive approach. I did this by hand but I'm sure a program can handle quadratic, cubic terms and so on. – TheSimpliFire Feb 2 at 8:48
• You are right, I think the problem is not about the linear approximation though. The approximation should approach $\infty$ as $\beta \to 1$, which means the power series should not be developed around $(\beta-1)$. I think the problem comes from that since $z(y=0) = A_0 \neq 0$, the power series representing the functional inverse $y = y(z)$ should be expanded around $z(0) = A_0$ instead of $0$. @TheSimpliFire – TTY Feb 2 at 9:35
• @TTY Wow that went over my head, thanks for your explanation. Expanding about $A_0$ might be easier. I don't have time this week, but I'll revisit this at the weekend. – TheSimpliFire Feb 2 at 12:08

You can solve:

$$\beta = 1-\frac{n(S)}{\mu}$$ wrt $$\mathcal{L}(z)$$

which gives you:

$$\mathcal{L}(z) = \frac{\mu\times(1-\beta)}{\sigma}$$

Then there is a a good approximation function (don't have the specific reference to it) that can convert $$\mathcal{L}(z)$$ to $$z$$:

$$z = 4.85-\mathcal{L}(z)^{1.3}\times0.3924-\mathcal{L}(z)^{0.135}\times 5.359$$

Then the safety stock can be found as:

$$ss = \sigma \times z$$

Example:

$$\beta$$ or fill rate $$= 0.98$$, $$\sigma = 5$$ and $$\mu=30$$

$$\mathcal{L}(z) = \frac{30\times(1-0.98)}{5}$$

$$\mathcal{L}(z) \approx 0.12$$

then

$$z = 4.85-0.12^{1.3}\times0.3924-0.12^{0.135}\times 5.359$$

$$z \approx 0.8$$

and

$$safety\space stock = 5\times 0.8$$

$$\approx4$$