`Notes on

Inventory Models

The focus of this set of notes is on inventory models with uncertain demand. In all the models the EOQ model is partially included. The solutions provided are exact if one accepts the average inventory cost approach.In some of these models we apply the cost minimization approach, in others the service level approach, or some combination of these two.

The Order Size Reorder Point (Q, R) inventory Model

This model deals with continuous review inventory system, uncertain demand with annual mean value of D units, and known lead time L. Mean lead time demand is L and the standard deviation of the lead time demand is L.Placing an order costs Co, and holding a unit for a year costs Ch. Because demand is uncertain shortages might occur, which incurs shortage costs. We assume unsatisfied demand is backordered (that is, sales are not lost). Two types of shortage costs will be discussed later which differ in the way shortage penalties are charged:(i) The unit shortage cost (ii) The cycle shortage cost. To control the amount of shortages (to some degree) a reorder inventory level is set; when the inventory reaches this level of R an order of size Q is placed.

The objective in the two models presented next is to minimize the expected costs, composed of ordering cost, holding cost, and shortage cost. The two models differ in the way shortage is looked at and being charged, but have the same annual ordering cost and holding cost. Thus we’ll discuss these two costs first and separate the discussion on shortage cost based on the two shortage assumptions. The decision variables are Q and R since both affect these costs (as can be seen below).

Annual Ordering cost: The average demand for the long run is D units per year, the average number of orders per year is D/Q and the annual ordering cost is Co(D/Q).

Annual Holding cost: As in the EOQ model, the holding cost is calculatedby
(Unit holding cost per year)*(Average inventory per year). In this model we need to make two observations that call for adjustments of Ch and of the average inventory:

(i)Scaling Ch - Holding cost is paid for the time inventory is actually exists. So we need to correct Ch relative to the actual time inventory is held. To do this note that the average shortage per cycle is S(R). Thus we estimate the maximum accumulated shortage per cycle by 2S(R), and reasonably approximate the proportion of time inventory is actually held the proportion (Q – 2S(R))/Q. So the unit holding cost for the time inventory is actually held is Ch(Q – 2S(R))/Q.

(ii)Scaling average inventory - we need to produce the average inventory for which holding cost is paid: When inventory drops to R an order is placed and is received L time units later when the average inventory is R - L. At this point in time a new cycle starts with an order of Q. The average inventory is therefore ½[(R – L) + (R – L + Q)] = R – L + Q/2, but this average contains also negative inventories (i.e. shortages, when DL>R); for the sake of holding cost calculation we are interested in the average inventory for which holding cost is actually paid. Therefore we “correct” the average inventory to become R – )L–S(R)) +Q/2.
The figure below demonstrates the situation.


Calculating S(R): As mentioned S(R) is the mean shortage per cycle. Its definition is thereforeS(R) (DL) is the density function of the lead time demand (later we’ll concentrate on the normal distribution).

Calculation of S(R) when demand is normally distributed

For the normal distribution where, and L(Z) is a function whose values have been calculated over a large range of Z; see the table called “Normal Partial Expected Value”. You can formulate an Excel function to calculate L(Z) yourself for any Z0 by: L(Z0) = (Z0) – 0(1 – (Z0)) [(Z) is the standard normal density function, and (Z) is the cumulative function, that is, (Z0) = Pr(Z<Z0). The Excel function to calculate L(Z0) is: = normdist(Z0,0,1,0) – 0[1 –normsdist(Z0)].

The cycle shortage cost model

Assume penalty of ‘Cb’ is paid for each cycle where stock out occurs. This may happen when the damage caused by any shortage is independent of the shortage magnitude. Under this assumption the shortage cost applies on the average to (D/Q)Pr(DL > R) cycles. So the expected annual shortage cost is Cb(D/Q)Pr(DL>R). The objective is

The optimal inventory policy is obtained by taking the partial derivatives with respect to Q and R.

From TV/Q = 0 we have the following result:

From here on we’ll use the common notation F(R) = P(DL < R).

The other partial derivation TV/R = 0 yields

Solution procedure

Generally, the procedure that solves the two equations manually is iterative. When no significant difference between two consecutive iterations is observed (in terms of Q and R) the process can stop. First calculate EOQ by EOQ = and substitute it for Q (call it Q0) in equation (3). Solve this equation for R0, and substitute it in equation (2) after obtaining S(R0) [how to calculate S(R) was discussed above]. Now solve the equation (2) for Q1, and return to equation (3) to obtain R1. Continue in this manner until Q and R don’t change by more than 1 unit each.

Practically, this procedure should be programmed being too hectic to perform by hand. Alternatively, we can minimize TV(Q,R) directly over Q and R using Excel-Solver. In case we are interested in graphical results we can use equation (2) to substitute Q*in equation (1), and minimize TV(Q(R),R) over R by Excel-Solver. This will make it possible to select a range of values for R and graph TV*(R).

Example 1:

Let Co = 40, Ch = 3, p = 45, D = 1200. Assume DL is normally distributed where L = 100 and L = 25. Let us first graph TV(Q(R),R) with respect to R to demonstrate the convex nature of the cost function.

The optimal values were found by minimizing TV over R using Solver; as explained we use equation (2) to express Q as a function of R (Q(R)), and apply Q(R) to equation (1).

Results: R* = 124.038; Q*= 194.97; TV* = 659.78. The safety stock held is
R*–L= 124 – 100 = 24. See Example1

The unit shortage cost model

Assume shortages are charged for every unit of unsatisfied demand ($Cb per unit short). This cost may reflect higher unit cost for rushing a special order to cover shortages, and/or additional administrative costs for putting a customer on backorder list. In this case we need to calculate the expected shortage per cycle (S(R)) and add the expected shortage cost of CbS(R)(D/Q) to the objective function. As mentioned, S(R) is the expected number of stock-outs per cycle, so CbS(R) is the expected shortage cost per cycle. When multiplied by D/Q we have the expected shortage cost per year.

Comment: There is another type of shortage cost that can be applied to the unit shortage cost case. This is the time-dependent unit shortage cost (Cs). This kind of cost is incurred when additional charge proportional to the time the shortage lasts is imposed on the inventory system. In this case Cs represents theunit shortage cost if a customer is waiting for a year for his/her order to be filled. Such a cost can represent for example loss of goodwill (which is assumed to grow linearly with the time the customer is waiting), or may represent the rental fees paid by management to rent a loaner and give it to the waiting customer until his order is shipped, etc. The annual expected shortage cost in this case is , and can be added to the shortage cost of the total expected cost function shown in (4) below. This will not be further pursued and developed to keep the mathematical complexity moderate. Therefore the equations presented next, obtained after taking derivatives, don’t include this time dependent shortage cost. However, in your assignments you’ll be asked to optimize the ordering policy using Solver for the full model.

Adding all the costs mentioned above we get the total variable cost function for the unit shortage cost model (omitting the time dependent shortage cost):

Ann. Ordering Cost Ann. Holding CostAnn. Shortage cost

To determine the optimal values of Q and R we take the partial derivatives of the objective function with respect to Q and R and set them equal to zero. The resulting equations are:


The results presented next were obtained by Solver when TV(Q, R) was minimized.

Example2

For the following information find the optimal Q and R.

C = $10; H = .20; Cb= $25; Co = $50; L = 100; L = 25; Demand is described by a normal distribution, and annual mean demand is 200.

Solution

The optimal values are: Q* = 100;R* = 143.83;TV* = $307.76

Let us provide a few more results regarding the above solution.

  1. Safety stock = R - L = 143.83 – 100 = 43.83
  2. Average time between orders (cycle time) = Q/D = 143.86/200


See Example2

The Q, R model and Service Level

The following service level approach allows management to consider shortages and to respond to its possible damage without the need to directly evaluate the shortage cost. This might be necessary when it is difficult to put a value on the shortage cost ‘p’ or Cb. In such cases acceptable Q and R can be found based on a pre-determined service level. Two types of service level can beused, which conform to the previously taken two approaches to shortage.

  • The cycle service level (called SL1)

We predetermine the required probability no stock-out occurs during lead time (SL1). That is


This means the long–run proportion of cycles where inventory is sufficiently large to meet all the demand, is SL1.

  • The unit service level (called SL2)

We predetermine the required probability demand is met from inventory. Note that the mean fraction of demands that stock out each cycle is . Then

Using SL1 to determine Q, R policies

Determining R: Equation (8) provides the required reorder point R. In example 1above assume SL1 = .90. Then .90 = P(DL≤R) or.90 = P[Z≤(R – 100)/25]. Since (from the normal table) Z.10 = 1.28 we have 1.28 = (R – 100)/25 or R* = 100 + 1.28 (25) = 132. [from Excel R = norminv(.9,100,25) = 132.04]; if R can take only whole values we’ll take R = 133. The safety stock is R – L = Z.10L= 32.04 (or 33).
Determining Q*: There are two options open for us:

(i)The order size commonly used is EOQ, and is determined independent of R.

(ii)The order size is optimized. For R* found by applying SL1 above (by (7)), we can now express ‘pD/Ch’ from equation (3) [don’t forget ‘p’ is assumed to be unknown],and substitute this expression into equation (2) to get a quadratic equation in Q. Its positive root is the optimal value of Q.

With the values provided in this example we have:; (EOQ = 178.88); also

. With the aid from Excel we have:

f(132.04) = normdist(132.04,100,25,0) = .007

F(132.04) = normdist(132.04,100,25,1) = .9

S(132.04) = LL(ZR) = 25L[(132.04-100)/25] = 1.185

After substitutions we get the following equation for pD/Ch:

pD/Ch = [1/((1-.9)32.04+1.185(1-2.9)+(1+.9)(Q/2)] = 457.3983+135.7164Q

This expression is now substituted in (2) in order to calculate Q*. Equation (2) becomes:

This is a quadratic equation in Q whose solution is Q* = 193.15. The implied penalty ‘p’ that justifies 10% of the cycles are out ofstockcan now be found by
p = (3/1200)(457.3983+135.7164(193.15)) = 66.67.

Determining R and Q when SL1 is a function of Q:

Sometimes management finds it more convenient to define the cycle service level in terms of the ratio of cycles where stock-out does not occur.


where‘n’ is the number of cycles per year in which inventory is insufficient to meet all the demand, and D/Q is the well-known expected number of cycles per year (D is the average annual demand). If ‘n’ is pre-specified and if Q = EOQ, SL1 can be computed, and we can proceed to determine the re-order point as before by equation (7). As you can see, in this case Q* and R* are not determined completely by cost minimization.Of course, as before, we can improve the solution suggested above once R* is determined by (7), by optimizing TV with respect to Q for the given R*.
Determining R* and Q* for a given number of “bad” cycles (n)

Supposea process is disrupted (the production line stops) when the stream of goods delivered by the inventory system is interrupted. In such a case it is as detrimental to have a shortage of one unit as it is to have a shortage of more units; yet the exact dollar value of the damage caused per interruption is unknown although it is assumed to be large. Management would like to limit the possible occurrences of such interruption (the number of cycles where stock out occurs) to some ‘n’. One might think of this as just another cycle service level case but a second look makes it clear that (9) can’t be used unless Q* was known. If it were not we need to optimize both Q and R using the expected cost function (1). The problem to solve is then

Subject to


Notice that the third term in the objective function becomes pn, a constant for any given ‘p’. This is fortunate, because we can now drop it when minimizing TV over Q and R.Furthermore, since Q = (D/n)(1 – F(R)), this problem can be solved taking a regular derivative [i.e. dTV/dR = 0]. Once Q* and R* are determined we can find the implied ‘p’ which justifies ‘n’ cycles of stock-out per year by using equation (3).

Using SL2 to determine Q, R policies

Determining Q:Usually taking Q = EOQ yields good results.
Determining R: S(R) = (1 – SL2)EOQ (see (8)). This equation is solved for R. In example 2 above suppose management has decided SL2 = .90. Then S(R) = (1 – .90)100 = 10. Since demand is normal S(R) = LL(Z) , so = 10/25 = .4, resulting in z = –.01, and R = L + zL = 100 – .01(25) = 99.75. Note: This reorder point results in negative safety stock (R – L = –.25) meaning, no safety stock is actually held, and on the average the inventory levels are replenished when .25 units are backordered. This assures the demand is met from stock 90% of the time.

Using SL2to determineoptimalQ, R policies

The solution above is non-optimal in the sense the expected total cost is not necessarily minimized. In what follows we’ll show how to minimize TV(Q,R) as presented in equation (4) under SL2. We’ll consider the existence of the unit shortage cost Cb although it is unknown, which is why the service level approach was applied in the first place.

Substituting pD/Chfrom(6) into (5) we get a quadratic equation in Q, whose solution is:


SL2 provides the second equation needed to solve for Q and R as follows:

Recall that we assume demand is normally distributed so, S(R)=LL(ZR), where
ZR=(R-L)/L.

Example 3:

Let us solve example 2 when n = 0.5 (onestock-out cycle in two years is allowed on the average(p is unknown).The results follow:

Q* / R* / TV(Q,R) / SL1 / Cb
192.24 / 135.11 / 681.37 / 92% / 184.96

It is optimal to order 192.24units, each time the inventory drops to 135.11units. The cycle service level achieved is 1-n(Q*/D) = 1 - .5(192.24/1200) = 92%. For this policy to be optimal the penalty on cycle stock-out is (See equation (11)) p = $184.96, (which was unknown before, but was reflected in management’s decision to limit the expected number of stock-out cycles to 0.5 per year).

Estimating the lead time mean demand and standard deviation of the demand

So far the lead time mean demand and its standard deviation were known. In real problems one need to estimate them from the data collected. Note that these estimates are made for future values of the time series; therefore the forecast values need to be part of these estimates.

  • The estimated mean demand per period is the next period forecast of the demand (Ft+1). So the estimated mean per lead time as of time ‘t’ is L = L*Ft+1.
  • The estimated standard deviation of the demand per period as of time ‘t’is taken as the estimated standard deviation of the error term in the forecasting model used. This is done by tracking the mean absolute deviation MADtas follows:
    MADt = MADt-1 + (1 – )|Ft – Dt|. Now the estimate of the standard deviation of the error term per period is about1.25MADt, and therefore the standard deviation of the lead time demand as of time ‘t’ is L = 1.25MADt. Good values to use for  are around 0.9 [We can follow a simple procedure to help find a good Gamma: For the sampledtime series calculate the standard deviation SDtby for all t = 3, 4, … , n, (et is the error in period tand is the mean error by time t). Then build an objective function that calculates the absolute value of the sum of differences between SDt and 1.25MADt. This function depends on the Gamma selected. Find Gamma that minimizes this function. In other words minimize by finding the optimal value of ]. This procedure, as well as other concepts covered above, is demonstrated in the following example.

Example 4:

A paint store is using a (Q, R) inventory system to control its stock levels. For a particular paint historical data show demand is approximately normally distributed, but the owner is reluctant to use old estimates of the mean and standard deviation. Replenishment lead time is 14 weeks; each can of paint costs the store $6; excess demand is backordered at a cost of $10 per unit; ordering cost is $15 per order, and annual holding rate is 30%.

(a)What are the optimal lot size and reorder point for this paint?

(b)What is the optimal safety stock?

(c)If management feels unease about the backorder cost of $10, and would rather use a cycle service level of 90%, what is the resulting (Q,R) policy?

(d)Repeat part (c) for a 90% unit service level.

(e)Can the store save on holding cost by using a unit service level rather than a cycle service level? How much?

Solution

Before turning to answer the questions above we need to estimate  and  from the data.
The data were collected weekly over the last 20 weeks. We use the FORECAST template to calculate the optimal alpha for the exponential smoothing model (we assume the time series is indeed stationary, and arbitrarily decide to use the exponential smoothing approach to perform forecasts). After running Solver we find that alpha = 0.42 performs best for the exponential smoothing model when using MAD to optimize it. Note that the values ofet= |Ft – dt| are already calculated under “Absolute error”, so they will be used in our next step. In addition we can now estimate the weekly mean demand by . Here is how we proceed to calculate the estimate of the weekly variance.

(i)In the template add a column for MADtas follows: MAD2 = |E2| (that is, the absolute value of the forecast error at t = 2).

(ii)For all t = 3, 4, …, 20 calculate MADt = MADt-1 + (1 – )|Ft – Dt|. Since is yet unknown use an empty cell where its value will be found by Solver under “Changing Cells”.

(iii)For all t = 3, 4, …, 20 calculate (i) 1.25MADt, (ii) the errors’ standard deviation (SDt) for periods 2 through ‘t’.

(iv)For all t = 3, 4, … , 20 determine the difference |SDt – 1.25MADt|; then sum them up.

(v)Use Solver to minimize the sum calculated in part (iv) above. The decision variable is , selected under the “Changing Cells”, and there is one constraint: ≤1. [Also use non-negativity under Options].

After running the template with the data and using Solver to optimize , we get= 0.78. The estimate of the standard deviation at t=20 is .68 per week. For details see the template results at the Appendix. We are ready to answer the rest of the questions.