2.5 Control of Single-item Inventory Systems
In this section, we analyze so-called single-item inventory systems under periodic review, which means that decisions to order a replenishment are made at the end of discrete intervals, e.g., daily. As a simple example, think of macaroni boxes on a supermarket shelf. At the end of each period (say, a day), the supermarket uses the remaining stock to decide whether a replenishment is necessary. If so, it orders in the evening a batch of, say, ten boxes to fill the stock. The batch will be delivered by truck at the start of the next day after which a stocker unpacks the batch and places all ten boxes on the shelf.
In general, there are many types of items in inventory, ranging from cheap to expensive; hence different rules are needed1 As such, inventory systems are examples of stochastic processes subject to control. to determine when and how much to order. We assume that demand is discrete, stochastic, and items are not too perishable2 Yogurt is acceptable, but fresh fish not. so unsold items carry over to the next period as on-hand inventory. With these assumptions, we can develop elegant formulas that allow us to simulate the discrete-time dynamics of common inventory-control systems. We then define a number of performance measures to assess their performance. We use the following notation, the meaning of which we explain below:
\begin{align*} Q_k &= \text{size of order placed at the \emph{start} of period~\(k\)}, \\ D_k &= \text{demand arriving \emph{during} period~\(k\)}, \\ \IL_k &= \text{inventory level at the \emph{start} of period~\(k\)}, \\ \IL_k^+ &= \text{inventory on hand at the \emph{start} of period~\(k\)}, \\ \IL_k^- &= \text{backlogged demand at the \emph{start} of period~\(k\)}. \\ \IP_k &= \text{inventory position at the \emph{start} of period~\(k\)}, \\ \leadtime &= \text{fixed lead time.} \end{align*}We are explicit about the timing of each of the variables and distinguish between the start and the end of a period. Quantities measured at the end of a period are marked with a prime, for instance \(I_k'\).
The inventory dynamics can be constructed simply if we are given period demands \(\{D_k, k=1, 2, \ldots\}\) and order sizes \(\{Q_k, k=0, 1, \ldots\}\), but first we need to address a subtle point. In many inventory systems, there is a delay between placing and receiving a replenishment order: only after the receipt can the order be used to replenish on-hand stock and serve demand. The time between placing the order and its arrival is called the lead time \(\leadtime\); the number of orders under way are the outstanding orders. We assume \(\leadtime\) to be constant and independent of the number of outstanding orders.3 If \(\leadtime=0\), the order arrives immediately. Then, when placing an order of size \(Q_{k-\leadtime}\) at the start of period \(k-\leadtime\) so that it arrives at the start of period~\(k\), the inventory level follows the rules
\begin{align*} \IL_{k-1}' &= \IL_{k-1} - D_{k-1}, & \IL_{k} &= \IL_{k-1}' + Q_{k-\leadtime}. \tag{2.5.1} \end{align*}In words, the inventory level at the end of the period is the level at the start of the period minus the period's demand. The level at the start of the next period includes any replenishments.
We call \(I_k^{+} = \max\{I_k,0\}\) the inventory on hand, as these items can directly meet demand from stock. Next, \(I^{-}_k = \max\{-I_k, 0\}\) is the backlogged demand, as it represents demand waiting for future replenishments.
Clearly, if we used the inventory level to determine when and how much to order, we might receive replenishments too late because of the lead time between placing and receiving them. The inventory position is a more suitable control variable to compensate for this delay. It updates according to the rules
\begin{align*} \IP_{k-1}' &= \IP_{k-1}- D_{k-1}, & \IP_k &= \IP_{k-1}' + Q_k. \tag{2.5.2} \end{align*}Thus, the inventory position includes outstanding orders directly on the books, so it accounts for orders under way but not yet arrived. Next, we study a number of inventory control policies. Note that these policies use the inventory position, not the inventory level, to decide when and how much to order.
The /base-stock policy/ places an order for each unit demanded. Specifically, the size of the order is given by
\begin{equation*} Q_k = S-\IP_{k-1}', \end{equation*}where \(S\) is the order-up-to level.4 The amount ordered depends on the end-of-period inventory position. From Eq. (2.5.2) we see that \(\IP_k=S\) for all~\(k\).
A base-stock policy is often used to control the inventories of expensive items when the ordering cost~\(K\) is small relative to the item's price. For example, when someone buys a washing machine, the customer typically pays for delivery and installation. Moreover, customers rarely buy multiple washing machines at once; hence, any ordering or setup cost must be covered per sale.
An /\((s,S)\) policy/ is appropriate in situations where delivery sizes can vary and order costs are significant. When the inventory position is at or below the reorder level \(s\), we place an order up to \(S\), specifically,
\begin{equation*} Q_k = (S-\IP_{k-1}')\1{\IP_{k-1}' \leq s}. \tag{2.5.3} \end{equation*}Note that the base-stock policy is a special case of the \((s,S)\) policy by setting \(S=s+1\).
Supermarkets could use \((s,S)\) policies to control the inventory of yogurt, for instance, as yogurt has a fixed amount of shelf space, thereby setting the order-up-to level \(S\).
The /\((Q,r)\) policy/ is useful when the ordering cost is relatively large and replenishments arrive in fixed-size batches. The order quantity is a multiple of a minimal order quantity \(Q\) such that \(\IP_{k}\) always lies between the reorder level \(r\) and \(r+Q+1\).5 It may seem a bit odd that the \((Q,r)\) policy is not called the \((Q,s)\) policy, but this is the conventional terminology. In a formula,
\begin{equation*} Q_k = Q \left\lceil \frac{r+1-\IP_{k-1}'}{Q} \right\rceil \1{\IP_{k-1}'\leq r}. \end{equation*}So, a base-stock policy is a \((Q,r)\) policy with \(Q=1\) and \(r=s\).
The \((Q,r)\) policy is used mainly in supermarket supply chains. Factories pack items in batches and ship them on pallets to distribution centers, which then send smaller batches to supermarkets, where staff unpacks and shelves single items. Thus, to reduce ordering costs, the entire supply chain handles batches instead of single units.
Finally, the \((T,S)\) policy specifies ordering up to \(S\) once every \(T\) periods. In a formula:
\begin{equation*} Q_k = (S-\IP_{k-1}')\1{\text{mod}\{k, T\}=0}, \end{equation*}where \(\text{mod}\{k, T\}\) is the remainder of \(k/T\).
This policy can be used by, for instance, gas stations at which every three days a truck refills all tanks.
Clearly, when given a sequence of period demands \(D_{1}, D_{2}, \ldots\) and a chosen inventory control rule, we simulate how the inventory level and position behave over time. It remains to develop a number of KPIs to assess how the inventory control rule performs. We can then search for a good policy by running simulations for various policy parameters and compare their performance using these KPIs.
For cost computations, we have to account for the cost of inventory and backlog. Here we choose to charge at the start of the period: each backlogged unit costs \(b\) euros, and each unit in stock costs \(h\) euros. If there is a cost \(K\) per order placed, the average cost up to period \(n\) is
\begin{align*} K q + h I^+ + b I^-, \end{align*}where the order frequency, the average on-hand inventory, and the average backlog are given by, respectively,
\begin{align*} q&= \frac 1n \sum_{k=1}^n \1{Q_{k}>0}, & I^+ &= \frac 1n \sum_{k=1}^n \IL_k^+, & I^- &= \frac 1n \sum_{k=1}^n \IL_k^-. \end{align*}Service levels form another set of KPIs to quantify how well demand is met. We discuss three such measures. The ready rate is the fraction of periods in which the end-of-period inventory is non-negative, i.e.,
\begin{equation*} \alpha := \frac 1n \sum_{k=1}^n \1{\IL_k'\geq 0}. \end{equation*}The fill rate \(\beta\) measures the fraction of demand satisfied from on-hand stock. In each period, we can serve the demand \(D_{k}\) as long as it does not exceed the on-hand stock \(I_{k}^{+}\):
\begin{equation*} \beta := \frac{\sum_{k=1}^n \min\{D_k, \IL_k^{+}\}}{\sum_{k=1}^n D_k}. \tag{2.5.4} \end{equation*}The third measure is cycle service level, which is defined as the fraction of cycles6 A cycle consists typically of many periods; it is not a single period. in which the inventory was not negative; a cycle is the time between the arrival of two consecutive replenishments. To capture this we use Eq. (2.5.1). A cycle ends just in period \(k-1\) if in period \(k-\leadtime\) a replenishment is placed.7 A replenishment placed in period \(k-\leadtime\) arrives just before period \(k\) starts. Thus, the cycle ends in period \(k-1\) when \(Q_{k-\leadtime}> 0\). When in this case \(I_{k-1}'\geq 0\) , there is still on-hand inventory. Thus, the number of cycles in which the inventory was non-negative is \(\sum_{k=\leadtime+1}^n \1{Q_{k-\leadtime}>0}\1{I_{k-1}'\geq 0}\), The cycle service level then follows from averaging over the total number of cycles \(\sum_{k=\leadtime+1}^n \1{Q_{k-\leadtime}>0}\):
\begin{equation*} \alpha_c = \frac{\sum_{k=\leadtime+1}^n \1{Q_{k-\leadtime}>0}\1{I_{k-1}'\geq 0}}{\sum_{k=\leadtime+1}^n \1{Q_{k-\leadtime}>0}}. \end{equation*}The cycle service level is much used in practice because it is simple to measure: when a replenishment arrives, check whether there is still on-hand stock. However, in plain terms, it is a poor performance measure because it completely ignores the amount of unmet demand.8 It is an ideal performance measure for managers: easy to understand, but not very informative. Knowing only that stock was empty provides little information about how much demand was lost.
Claim: In a single-item inventory system, the inventory level triggers orders.
Solution
Solution, for real
False. It is the inventory position.
Claim: In a single-item inventory system, the inventory level depends on the lead time \(\leadtime\) when \(\leadtime>0\).
Solution
Solution, for real
True.
Claim: In a single-item inventory system, the inventory position and inventory level coincide when the lead time \(\leadtime=0\).
Solution
Solution, for real
True.
The base-stock and \((s,S)\) models assume that the order size is unlimited. Suppose now that it can be maximally \(Q\). Claim: These recursions cover this case.
\begin{equation*} Q_k = \min\{Q, S-\IP_{k-1}'\}. \end{equation*}Solution
Solution, for real
True. Variation. Consider the \((T,S)\) model. Then \(Q_k = \min\{Q, S-\IP_{k-1}'\}\) only if \(k\) is a multiple of \(T\).
Claim: In an \((s,S)\) inventory policy, an order is placed at the end of every period.
Solution
Solution, for real
False. An order is placed only when the inventory position drops to or below the reorder level \(s\). If the position is above \(s\), no order is placed.
In production environments it is important to decide which products should be make-to-order (MTO) or make-to-stock (MTS). Why can a queueing system model MTO production? What inventory control model would best model a queueing system and what are the parameters?
Solution
Solution, for real
In a queueing system, an item is not produced before the demand for it arrives. This is a cost-effective way to produce when items are very expensive, so holding cost is high, or customer specific. In addition, services (which are not products) cannot be put on stock. For instance, keeping an inventory of haircuts seems impossible.
Note that in a queueing system, the server has a finite capacity. In the inventory models above, the production capacity is assumed infinite.
A base-stock model with \(s=-1\) is appropriate. When a customer arrives, the server switches on, and keeps on producing until there are no further jobs in queue. Note also that a job in queue corresponds to a customer in backlog.
Suppose \(h\gg b\), i.e., inventory on hand is much more expensive than demand in backlog. For any of the above inventory control models, how would you prefer to perform on the three service levels?
Solution
Solution, for real
We would prefer all service levels to be zero. If \(h\gg b\) for some inventory system, the cost structure expresses that we dislike stock on hand. In other words, \(h\gg b\) expresses that we want to produce according to MTO, that is, as a queueing system with zero on-hand inventory.
Which variables (period, order quantity) are fixed, which can vary, in each of the inventory policies we discussed above? Which policy should be able to achieve the lowest cost?
Solution
Solution, for real
Note the differences between these schemes. In the \((s,S)\) policy, the order level is fixed, but in the case of stochastic demand, the specific period in which an order is triggered is not fixed. The order quantity (which is not the same as the order-up-to level) may vary from period to period. In the \((Q,r)\) policy, the quantity of orders is always a multiple of \(Q\), but the specific period in which a replenishment order is triggered varies in general. The \((T,S)\) policy fixes the period but leaves the order quantity free. The \((s,S)\) policy can achieve the lowest average cost, because it is the least constrained of the policies.
So far, we assumed that demand in excess of the stock level is backlogged. Modify the recursions of the base-stock model such that it can cope with lost demand. For example, if at the start of period \(k\) the inventory level \(\IL_{k}= 5\) and \(D_k=9\), then 4 items are lost and 5 are fulfilled. How are the \((s,S)\) and \((Q,r)\) policies affected by loss? How is the average cost affected?
Solution
Solution, for real
Since only the on-hand inventory \(I_{k}\) is available to meet demand, the rules for a loss system become
\begin{align*} D_k' &= \min\{\IL_k, D_k\} & \text{accepted demand}\\ L_k &= D_{k} - D_{k}' & \text{lost demand}\\ \IP_k' &= \IP_{k} - D_k', &\text{subtract the accepted demand}\\ \IL_k' &= \IL_{k} - D_k', &\text{subtract the accepted demand}. \end{align*}Then use the standard rules to compute \(Q_{k+1}\), and update \(P_{k+1}\) and \(I_{k+1}\) accordingly. The \((s,S)\) and \((Q,r)\) policy do not control demand, so these rules for \(D_{k}', \ldots\) apply then too.
For the cost, it is evident that there is no backlog. However, we should include a term for the fraction of lost demand, for instance, proportional to \(n^{-1}\sum_{k=1}^{n} L_{k}\).
Can-order policies are often used in joint inventory systems in which items can share a delivery (Replenishing supermarkets with trucks forms an example.) Placing an order includes a common setup cost \(K\) plus a (much smaller) cost \(K'\) for each item included. The can-order policy is characterized by three parameters. If the inventory position \(\IP_{i,k}\) of item \(i\), \(i=1, \ldots, N\), falls at or below its reorder level \(s_{i}\) in period \(k\), this item triggers a joint order. Make the recursions to simulate this situation. Find an expression for the cost up to period \(n\). Explain why searching for good parameters with just simulation is not quite possible for any joint inventory system of reasonable size.
Solution
Solution, for real
The variable \(O_{k} = 1 - \prod_{i=1}^{N} \1{\IP_{i, k-1} > s_{i}}\) equals \(1\) if an order is placed at the end of period \(k-1\), otherwise it is \(0\). Then take \(Q_{i,k} = (S_{i}-\IP_{i,k-1}') O_{k} \1{\IP_{i,k-1}' \leq c_{i}}\), and \(\IP_{i,k} = \IP_{i,k-1}' + Q_{i,k}\). For the cost, \(\sum_{k=1}^{n} \rb{ K O_{k} + K' \sum_{i=1}^{N}\1{Q_{k,i} > 0} }\).
Suppose we have set \(S_{i} - s_{i} = 10\) for all items. Then \(c_{i}\) can take \(10\) values, hence the total number of can-order levels is \(10^{N}\). A supermarket has \(N \gg 100\) item types (SKUs).