OR-Notes are a series of introductory notes on topics that fall under the broad heading of the field of operations research (OR). They were originally used by me in an introductory OR course I give at Imperial College. They are now available for use by any students and teachers interested in OR subject to the following conditions.

A full list of the topics available in OR-Notes can be found here.

The basic function of stock (inventory) is to insulate the production process from changes in the environment as shown below.

Note here that although we refer in this note to manufacturing, other industries also have stock e.g. the stock of money in a bank available to be distributed to customers, the stock of policemen in an area, etc).

One point to note from the above diagram is that most of the activities
are a cost - it is only at the final point (sales of finished goods) that
we get revenue to set against our costs and hopefully make a profit (=
revenue - cost). Hence if we have cost associated with stock we need to
deal with that stock in an **Effective, Efficient and Economic** manner
(the **3E's** as I tend to term it).

The question then arises: *how much stock should we have?* It is
this simple question that inventory control theory attempts to answer.

There are two extreme answers to this question:

*a lot*

- this ensures that we never run out
- is an easy way of managing stock
- is expensive in stock costs, cheap in management costs

*none/very little*

- this is known (effectively) as Just-in-Time (JIT)
- is a difficult way of managing stock
- is cheap in stock costs, expensive in management costs

We shall consider the problem of ordering raw material stock but the same basic theory can be applied to the problem of:

- deciding the finished goods stock; and
- deciding the size of a batch in a batch production process.

The costs that we need to consider so that we can decide the amount
of stock to have can be divided into stock *holding* costs and stock
*ordering* (and receiving) costs as below. **Note here that, conventionally,
management costs are ignored here. **

- storage costs
- rent/depreciation
- labour
- overheads (e.g. heating, lighting, security)
- money tied up (loss of interest, opportunity cost)
- obsolescence costs (if left with stock at end of product life)
- stock deterioration (lose money if product deteriorates whilst held)
- theft/insurance

- clerical/labour costs of processing orders
- inspection and return of poor quality products
- transport costs
- handling costs

Note here that a *stockout* occurs when we have insufficient stock
to supply customers. Usually stockouts occur in the order lead time, the
time between placing an order and the arrival of that order.

Given a stockout the order may be lost completely or the customer may
choose to *backorder*, i.e. to be prepared to wait until we have sufficient
stock to supply their order.

**Note here that whilst conceptually we can see that these cost elements
are relevant it can often be difficult to arrive at an appropriate numeric
figure (e.g. if the stock is stored in a building used for many other purposes,
how then shall we decide an appropriate allocation of heating/lighting/security
costs).**

To see how we can decide the stock level to adopt consider the very simple model below.

In this basic model we have the situation where:

- our company orders from an outside supplier;
- that outside supplier delivers to us
**precisely**the quantity we ask for; and - we pass that stock onto our customers (either external customers, or an internal customer within the same company (e.g. if ordering raw materials for use in the production process)).

Assume:

- Stock used up at a constant rate (R units per year)
- Fixed set-up cost c
_{o}for each order - often called the order cost - No lead time between placing an order and arrival of the order
- Variable stock holding cost c
_{h}per unit per year

Then we need to decide Q, the amount to order each time, often called
the *batch* (or *lot*) size.

With these assumptions the graph of stock level over time takes the form shown below.

Consider drawing a horizontal line at Q/2 in the above diagram. If you
were to draw this line then it is clear that the times when stock exceeds
Q/2 are exactly balanced by the times when stock falls below Q/2. In other
words we could equivalently regard the above diagram as representing a
**constant** stock level of Q/2 over time.

Hence we have that:

- Annual holding cost = c
_{h}(Q/2)

where Q/2 is the average (constant) inventory level

- Annual order cost = c
_{o}(R/Q)

where (R/Q) is the number of orders per year (R used, Q each order)

So total annual cost = c_{h}(Q/2) + c_{o}(R/Q)

Total annual cost is the function that we want to *minimise* by
choosing an appropriate value of Q.

Note here that, obviously, there is a purchase cost associated with the R units per year. However this is just a constant as R is fixed so we can ignore it here.

The diagram below illustrates how these two components (annual holding cost and annual order cost) change as Q, the quantity ordered, changes. As Q increases holding cost increases but order cost decreases. Hence the total annual cost curve is as shown below - somewhere on that curve lies a value of Q that corresponds to the minimum total cost.

We can calculate exactly which value of Q corresponds to the minimum total cost by differentiating total cost with respect to Q and equating to zero.

d(total cost)/dQ = c_{h}/2 - c_{o}R/Q² = 0 for
minimisation

which gives Q² = 2c_{o}R/c_{h}

Hence the best value of Q (the amount to order = amount stocked) is given by

- Q =(2Rc
_{o}/c_{h})^{0.5}

and this is known as the *Economic Order Quantity (EOQ)*

This formula for the EOQ is believed to have been first derived in the early 1900's and so EOQ dates from the beginnings of mass production/assembly line production.

To get the total annual cost associated with the EOQ we have from before
that total annual cost = c_{h}(Q/2) + c_{o}(R/Q) so putting
Q =(2Rc_{o}/c_{h})^{0.5} into this we get that
the total annual cost is given by

c_{h}((2Rc_{o}/c_{h})^{0.5}/2) + c_{o}(R/(2Rc_{o}/c_{h})^{0.5})
= (Rc_{o}c_{h}/2)^{0.5 }+ (Rc_{o}c_{h}/2)^{0.5
}= (2Rc_{o}c_{h})^{0.5 }

Hence total annual cost is (2Rc_{o}c_{h})^{0.5 }which
means that when ordering the optimal (EOQ) quantity we have that total
cost is proportional to the square root of any of the factors (R, c_{o
}and_{ }c_{h}) involved. For example, if we were to
reduce c_{o }by a factor of 4 we would reduce total cost by a factor
of 2 (note the EOQ would change as well). This, in fact, is the basis of
Just-in-Time
(JIT), to reduce (continuously) c_{o }and_{ }c_{h}
so as to drive down total cost.

To return to the issue of management costs being ignored for a moment the basic justification for this is that if we consider the total cost curve shown above, then - assuming we are not operating a policy with a very low Q (JIT) or a very high Q - we could argue that the management costs are effectively fixed for a fairly wide range of Q values. If this is so then such costs would not influence the decision as to what order quantity Q to adopt. Moreover if we wanted to adopt a more quantitative approach we would need some function that captures the relationship between the management costs we incur and our order quantity Q - estimating this function would certainly be a non-trivial task.

A retailer expects to sell about 200 units of a product per year. The storage space taken up in his premises by one unit of this product is costed at £20 per year. If the cost associated with ordering is £35 per order what is the economic order quantity given that interest rates are expected to remain close to 10% per year and the total cost of one unit is £100.

We use the EOQ formula,

EOQ = (2Rc_{o}/c_{h})^{0.5}

Here R=200, c_{o}=35 and the holding cost c_{h} is given
by

c_{h} = £20 (direct storage cost per unit per year) +
£100 x 0.10 (this term the money interest lost if one unit sits in
stock for one year)

i.e. c_{h} = £30 per unit per year

Hence EOQ = (2Rc_{o}/c_{h})^{0.5} = (2 x 200
x 35/30)^{0.5} = 21.602

But as we must order a whole number of units we have that:

EOQ = 22

We can illustrate this calculation by reference to the diagram below which shows order cost, holding cost and total cost for this example.

With this EOQ we can calculate our total annual cost from the equation

Total annual cost = c_{h}(Q/2) + c_{o}(R/Q)

Hence for this example we have that

Total annual cost = (30 x 22/2) + (35 x 200/22) = 330 + 318.2 = £648.2

**Note: **If we had used the exact Q value given by the EOQ formula
(i.e. Q=21.602) we would have had that the two terms relating to annual
holding cost and annual order cost would have been exactly equal to each
other

i.e. holding cost = order cost at EOQ point (or, referring to the diagram above, the EOQ quantity is at the point associated with the Holding Cost curve and the Order Cost curve intersecting).

i.e. (c_{h}Q/2) = (c_{o}R/Q) so that Q = (2Rc_{o}/c_{h})^{0.5}

**In other words, as in fact might seem natural from the shape of the
Holding Cost and Order Cost curves, the optimal order quantity coincides
with the order quantity that exactly balances Holding Cost and Ordering
Cost.**

Note however that this result only applies to certain simple situations. It is not true (in general) that the best order quantity corresponds to the quantity where holding cost and ordering cost are in balance.

We can also solve this problem using the package, the input and output being shown below. Note here that the package can deal with more complicated factors than we have considered in the simple example given above.

Note the appearance here of the figure of 20,000 relating to material
cost. This is calculated from using 200 units a year at a unit cost of
£100 each. Strictly, this cost term should have been added to the
total annual cost equation (c_{h}(Q/2) + c_{o}(R/Q)) we
gave above. We neglected it above as it was a constant term for this example
and hence did not affect the calculation of the optimal value of Q. However,
we will need to remember to include this term below when we come to consider
quantity discounts.

Suppose, for administrative convenience, we ordered 20 and not 22 at each order - what would be our cost penalty for deviating from the EOQ value?

With a Q of 20 we look at the total annual cost

= (c_{h}Q/2) + (c_{o}R/Q)

= (30 x 20)/2 + (35 x 200/20) = 300 + 350 = £650

Hence the cost penalty for deviating from the EOQ derived value of 22 and ordering 20 at each order is £650 - £648.2 = £1.8

Note that this is, relatively, a very small penalty for deviating from the EOQ value. This is usually the case in inventory problems i.e. the total annual cost curve is flat near the EOQ so there is only a small cost penalty associated with slight deviations from the EOQ value (see the diagram above).

This is an important point. Essentially we should view the EOQ as a
**ballpark** figure. That is it gives us a rough idea as to how many
we should be ordering each time. After all our cost figures (such as cost
of an order) are likely to be inaccurate. Also it is highly unlikely that
we will use items at a constant rate (as the EOQ formula assumes). However,
that said, the EOQ model provides a systematic and quantitative way of
getting an idea as to how much we should order each time. If we deviate
far from this ballpark figure then we will most likely be paying a large
cost penalty.

The above cost calculation can also be done using the package - see below.

In order to illustrate extensions to the basic EOQ calculation we will consider the following example:

A company uses 12,000 components a year at a cost of 5 pence each. Order costs have been estimated to be £5 per order and inventory holding cost is estimated at 20% of the cost of a component per year.

Note here that this is the sort of cheap item that is a typical non-JIT item.

**What is the EOQ?**

Here R=12000, c_{o}=5 and as the inventory holding cost is 20%
per year the annual holding cost per unit c_{h} = cost per unit
x 20% = £0.05 x 0.2 per unit per year = 0.01.

Hence EOQ = (2Rc_{o}/c_{h})^{0.5} = (2 x 12000
x 5/0.01)^{0.5} = 3464

The package output for this problem is shown below.

**If orders must be made for 1,2,3,4,6 or 12 monthly batches what order size would you recommend and when would you order?**

Here we do not have an unrestricted choice of order quantity (as the EOQ formula assumes) but a restricted choice as explained below.

This is an *important* point - the EOQ calculation gives us a *quantity*
to order, but often people are better at ordering on a *time* basis
e.g. once every month.

*In other words we need to move from a quantity basis to
a time basis*

For example the EOQ quantity of 3464 has an order interval of (3464/12000) = 0.289 years, i.e. we order once every 52(0.289) = 15 weeks. Would you prefer to order once every 15 weeks or every 4 months? Recall here that we saw before that small deviations from the EOQ quantity lead to only small cost changes.

Hence if orders must be made for 1,2,3,4,6 or 12 monthly batches the best order size to use can be determined as follows.

Obviously when we order a batch we need only order sufficient to cover the number of components we are going to use until the next batch is ordered - if we order less than this we will run out of components and if we order more than this we will incur inventory holding costs unnecessarily. Hence for each possible batch size we automatically know the order quantity (e.g. for the 1-monthly batch the order quantity is the number of components used per month = R/12 = 12000/12 = 1000).

As we know the order quantity we can work out the total annual cost of each of the different options and choose the cheapest option.

The total annual cost (with an order quantity of Q) is given by (c_{h}Q/2)
+ (c_{o}R/Q) and we have the table below:

Batch size option Order quantity Q Total annual cost Monthly 1000 65 2-monthly 2000 40 3-monthly 3000 35 4-monthly 4000 35 6-monthly 6000 40 12-monthly 12000 65

The least cost option therefore is to choose either the 3-monthly or the 4-monthly batch.

In fact we need not have examined all the options. As we knew that the
EOQ was 3464 (associated with the minimum total annual cost) we have that
the least cost option must be one of the two options that have order quantities
*nearest* to 3464 (one order quantity above 3464, the other below
3464) i.e. *either* the 3-monthly (Q=3000) *or* the 4-monthly
(Q=4000) options. This can be seen from the shape of the total annual cost
curve shown below. The total annual cost for these two options could then
be calculated to find which was the cheapest option.

**If the supplier offers the following quantity discount structure what effect will this have on the order quantity?**

Order quantity Cost (per unit) 0-4,999 £0.05 5,000-9,999 £0.05 less 5% 10,000-19,999 £0.05 less 10% 20,000 and above £0.05 less 15%

For example, were we to order 6000 units we would only pay 0.95(0.05) for each and every one of the 6000 units, i.e. the discount would be given on the entire order.

Here, as mentioned above, we need to remember to add to the total annual
cost equation (c_{h}(Q/2) + c_{o}(R/Q)) a term relating
to R multiplied by the unit cost, as the cost of a unit is now no longer
fixed but variable (unit cost = a function f(Q) of the order quantity Q).
Hence our total annual cost equation is

c_{h}(Q/2) + c_{o}(R/Q) +R[f(Q)]

It is instructive to consider what changes in this equation as we change
the order quantity Q. Obviously R and c_{o }remain unchanged, equally
obviously Q and f(Q) change. So what of c_{h}? Well it can remain
constant or it can change. You need to look back to how you calculated
c_{h}. If it included money tied up then, as the unit cost f(Q)
alters with Q, so too does the money tied up.

The effect of these quantity discounts (breaks in the cost structure) is to create a discontinuous total annual cost curve as shown below with the total annual cost curve for the combined discount structure being composed of parts of the total annual cost curves for each of the discount costs.

**The order quantity which provides the lowest overall cost will be
the lowest point on the Combined Cost Curve shown in the diagram above.**
We can precisely calculate this point as it corresponds to:

**either**an EOQ for one of the discount curves considered separately (note that in some cases the EOQ for a particular discount curve may not lie within the range covered by that discount and hence will be infeasible);**or**one of the breakpoints between the individual discount curves on the total annual cost curve for the combined discount structure.

We merely have to work out the total annual cost for each of these types of points and choose the cheapest.

First the EOQ's:

Discount Cost c_{h}EOQ Inventory Material Total cost cost cost 0 0.05 0.01 3464 34.64 600 634.64 5% 0.0475 0.0095 3554 Infeasible 10% 0.045 0.009 3651 Infeasible 15% 0.0425 0.0085 3757 Infeasible

Note here that we now include *material (purchase)* cost in total
annual cost.

The effect of the discount is to reduce the cost, and hence c_{h}
the inventory holding cost per unit per year - all other terms in the EOQ
formula (R and c_{o}) remain the same. Of the EOQ's only one, the
first, lies within the range covered by the discount rate.

For the breakpoints we have:

Order Cost c_{h}Inventory Material Total quantity cost cost cost 5,000 0.0475 0.0095 35.75 570 605.75 10,000 0.045 0.009 51 540 591 20,000 0.0425 0.0085 88 510 598

From these figures we can see that the economic order quantity associated with minimum total annual cost is 10,000 with a total annual cost of 591.

Note too here that this situation illustrates the point we made before
when we considered the simple EOQ model, namely that it is not true (in
general) that the best order quantity corresponds to the quantity where
holding cost and ordering cost are in balance. This is because the holding
cost associated with Q=10,000 is c_{h}(Q/2) = 0.009(10000/2) =
45, whilst the ordering cost is c_{o}(R/Q) = 5(12000/10000) = 6.

This problem can also be solved using the package - the input being shown below. Note that in the package one needs to use Edit Discount Breaks to enter the discount structure.

One also needs to use Edit Discount Characteristics. Below we have specified that holding cost is also discounted as the cost of an item changes.

The output from the package is shown below. Notice in that output how the package is considering the same choices (EOQ's and breakpoints) as in our manual calculation above.

Note here the use of discount analysis is not restricted to buyers, it can also be used by a supplier to investigate the likely effects upon the orders he receives of changes in the discount structure. For example if the supplier lowers the order size at which a particular discount is received then how might this effect the orders he receives - will they become bigger/smaller, less frequent/more frequent?

Consider a newsvendor who stands on the street and sells an evening paper, the Evening News. How many copies should he stock?

He sells the paper to his customers for 35 (pence) a copy. He pays his
supplier 20 (pence) a copy, but any unsold copies can be returned to the
supplier and he gets 10 (pence) back. This is known as a *salvage value*.
Assume that his demand for copies on any day is a Normal distribution of
mean 100 and standard deviation 7.

Before we can compute the amount he should order we need to work out his shortage cost per unit - how much does he lose if a customer wants a copy and he does not have a copy available?

As a first analysis he loses his profit (= revenue - cost = 35 - 20
=15) so we can *estimate* his shortage cost (opportunity cost) as
15 (this ignores any loss of goodwill and any loss of future custom that
might result from a shortage).

Giving this information to the package we get:

This tells us he should stock 104.7 (say 105) copies of the paper. This service level of 75% means that, on average, he will be able to completely supply his customers on 75 days in every 100, i.e. 3 days out of 4. The remainder of the time (1 day out of 4) he will experience shortages, some customers will not be able to buy a copy from him as he will have run out.

More sophisticated variants of this simple model can be used, for example, to decide how many copies of a magazine to have on a shelf in a newsagent (such as W.H.Smith).

Note that there is an important conceptual difference between this newsvendor problem and the EOQ/discount problems considered above. In those EOQ/discount problems we had a decision problem (how much to order) even though the situation was one of certainty - we knew precisely the rate at which we used items. In the newsvendor problem if we knew for certain how many customers will want a paper each day then the decision problem becomes trivial (order exactly that many). In other words:

**for the EOQ problem we had a decision problem even though there was no uncertainty****for the newsvendor problem it was only the uncertainty that created the decision problem**

There are many extensions to the simple EOQ models we have considered - for example:

- reorder lead time - allow a lead time between placing an order and
receiving it - this introduces the problem of when to reorder (typically
at some stock level called the
*reorder level*). You will see from the package input that the package allows for a reorder lead time. - stockouts - we can allow
*stockouts*(often called*shortages*) i.e. no stock currently available to meet orders. You will see from the package input that the package allows for shortage costs. - often an order is not received all at once, for example if the order
comes from another part of the same factory then items may be received
as they are produced. You will see from the package
input that the package allows for a
*replenishment*or*production*rate. - buffer (safety) stock - some stock kept back to be used only when necessary to prevent stockouts.