inventory_models

# Courseware: Inventory Models

NOTE: Exercises below may link to supporting files in a GitHub repository. If you follow such links and (at the GitHub website) right-click a file and choose “Save link as…”, it will appear to download a desired file but may in fact fail. A failure will be discovered when trying to open the downloaded file, usually in MATLAB, and learning that it is not in fact a MATLAB script, function, or SimEvents simulation model.

A remedy is to, at the GitHub website, back up to the project root (e.g. Courseware or Software), choose “Download ZIP” for the entire project, and find the desired file within the project's ZIP. Our apologies for the inconvenience.

## Exercises

### EOQ: Analytical and Simulation

A store sells basketballs at a fairly steady rate of 320/yr. The balls are purchased from a supplier for \$4/unit. The store estimates that it costs \$40 in paperwork and labor to place an order for basketballs, and unit holding costs are computed using a 20% annual interest rate.

1. If the store wants to place an average of 20 orders per year, what order quantity should be used? What is the corresponding purchase cost, annual inventory holding cost, and annual fixed ordering cost associated with this policy?
2. Determine the order quantity for basketballs that minimizes the total annual costs. What is the average number of orders per year for this order quantity? What is the corresponding purchase cost, annual inventory holding cost, and annual fixed ordering cost associated with this policy?
3. Open the simulation model ProdSystem_EOQAssumptionsAndCosts.slx. Using a simulation time unit of days, configure the model with the given parameters (for deterministic parameters, use the normal distribution with stdev=eps or the triangular distribution with min=max=mode). Use the EOQ calculated in (b), simulate the model four times with run lengths {365, 730, 1095, 1460} days, and use the Simulation Data Inspector (accessible next to the stop time box) to visualize both inventory level and gross cost (the sum of purchase costs, inventory holding costs, and fixed ordering costs). Copy & paste your figures below for the longest run length, and compare analytical and simulation results for gross cost.
4. Open the MATLAB script DEMO_EOQ_SweepOrderQtyQ_VisualizeCosts.m (which controls the simulation model ProdSystem_EOQAssumptionsAndCosts.slx through the wrapper function SimWrapper_ProdSystem_ EOQAssumptionsAndCosts.m). Configure the model (in the script’s top section, not the simulation model itself) with the given parameters, and sweep over Q values from 20 to 300 with a step size of your choice. Do you expect a saw-tooth nature to the cost curves, and why? The SimWrapper employs a random run-length strategy for a reason you hopefully just identified. Use this knowledge (that randomness is present, even if not in the demand arrival process) to choose the number of replications per point, and copy & paste the visualization of costs below.

BIG PICTURE: (1) practices the cost computation, (2) introduces the EOQ formula, and (3) provides an analytical versus simulation comparison in which results are expected to be quite similar. (4) uses simulation to sweep over Q and visualize the cost components; it would be ideal if we maintained two versions of the SimWrapper - one with run length randomization and one without - but unfortunately we did not build in that flexibility. With no randomness, sawtooth cost curves are expected following from the timing of the last reorder relative to the simulation stop, and to smooth out the curves a random run-length strategy is employed. Randomness in the demand arrival process can also have the same smoothing effect.

### EOQ: Parameter Sensitivity and Model Variations

A store sells basketballs at a fairly steady rate of 320/yr. The balls are purchased from a supplier for \$4/unit. The store estimates that it costs \$40 in paperwork and labor to place an order for basketballs, and unit holding costs are computed using a 20% annual interest rate.

1. Suppose that the store makes a mistake in estimating parameters, and that the fixed ordering cost is not \$40 but really only \$10. What is the error in the annual inventory holding cost and annual fixed ordering cost which results from optimizing with the wrong parameter value?
2. Suppose the store can only place orders in multiples of 50; how many basketballs should they order each time? How long will it be between orders? What is the corresponding purchase cost, annual inventory holding cost, and annual fixed ordering cost associated with this policy?
3. With a fixed ordering cost of \$40, suppose that the company wants to do a “powers of two” ordering policy with a base interval of one week. What are the appropriate order interval and quantity? What is the corresponding purchase cost, annual inventory holding cost, and annual fixed ordering cost associated with this policy?
4. With a fixed ordering cost of \$40, suppose that the company receives a 10% discount if the ordered quantity exceeds 200 basketballs and a 20% discount if the ordered quantity exceeds 400 basketballs. What are the appropriate order interval and quantity? What is the corresponding purchase cost, annual inventory holding cost, and annual fixed ordering cost associated with this policy?

BIG PICTURE: This is expected to be a straightforward exercise which explores variations on the plain-vanilla EOQ model. (1) concerns parameter sensitivity, (2) restricts the range of choices for Q, (2) compares EOQ with a commonly-implemented reordering policy (powers of two means that order interval choices are {1, 2, 4, 8, …} weeks), and (3) introduces the common scenario of quantity discounts.

For the football game this Saturday, the Booster Club sees a great opportunity to sell commemorative t- shirts. Shirts can be purchased for \$7 each, and the club thinks they can sell for \$20 before the game but only \$5 after the game.

1. If the demand is normally distributed with a mean of 2500 and a standard deviation of 500, how many shirts should the club purchase?

2. Open the MATLAB script DEMO_Newsvendor_SweepOrderSizeQ_VisualizeExpProfit.m (which controls the function NewsvendorMonteCarloSimulation.m). Configure the model (in the script’s top section, not the simulation function) with the given parameters for purchase cost and sales price, normally-distributed demand with a mean of 2500, and demand variability and salvage price for each row in the table below. Find the empirical Q* (note that you may have to adjust the search range and also the number of replications), add it to the table, and explain any trends in the results.

SCV of Demand Salvage Value Q* E[Profit] Pr[Profit < 0]
0.1 5
0.5 5
1.0 5
1.5 5
2.0 5
0.5 6
0.5 4
0.5 2
0.5 0

3. Using the original cost parameters and the demand parameters from (1), use the MATLAB script DEMO_Newsvendor_SweepOrderSizeQ_ VisualizeExpProfit.m to perform a Monte Carlo simulation. For any Q which yields 98% or more of the expected profit at Q*, which value would you choose and why? What factors would change your answer?

BIG PICTURE: (1) is plug-and-chug, and (2) examines Q* trends as various parameter values change. (3)'s purpose is that if Newsvendor concerns a one-time decision, then maximizing expected profit may not be the best decision rule, and reducing risk may also be important. If the decision is recurring and periodic losses are tolerable, however, then more risk may be welcomed in a bid to capture larger-than-expected demand. An example of results:

SCV of Demand Salvage Value Q* E[Profit] Pr[Profit < 0]
0.1 5 3465 29000 0.01
0.5 5 4630 27800 0.14
1.0 5 5220 27600 0.24
1.5 5 5900 28000 0.29
2.0 5 6350 28600 0.32
0.5 6 5205 30000 0.11
0.5 4 3910 26000 0.16
0.5 2 3565 23000 0.20
0.5 0 3185 20500 0.22

### Newsvendor: Performance Measures and Parameter Sensitivity

[This assignment is based on Hopp & Spearman chapter 2, problem 11 (ed. 2), which begins with the sentence “Slaq Computer Company manufactures notebook computers.”]

A company is a value-added reseller of consumer technology products. Such products have short market lifetime, so supply contracts for a production run are negotiated one-time and up-front. Demand for a particular product is estimated as normally-distributed with a mean of 10,000 units and standard deviation of 2500 units. The net revenue from a sale is \$500, and the main critical part costs \$200 with no salvage value.

1. Use analytical results for the Newsvendor model to compute an “optimal” purchase quantity of the main critical part.
2. Use the MATLAB script DEMO_Newsvendor_SweepOrderSizeQ_VisualizeExpProfit.m (which controls the function NewsvendorMonteCarloSimulation.m) to compute an “optimal” purchase quantity, and compare with the analytical result. What is the probability of losing money with this purchase quantity? For any Q which yields 98% or more of the expected profit at Q*, which value would you choose and why?
3. Suppose that the company's estimate of the demand distribution type may be incorrect. How does this affect their purchase quantity decision and expected profit? Use the MATLAB script DEMO_Newsvendor_SweepQandDemandDistrib_VisExpProfit.m, and try the uniform, triangular, gamma, lognormal, and normal distributions for demand.
4. Suppose that the company’s estimate of demand's standard deviation is off by a factor of 2, 3, 4, or 5. How does this affect their purchase quantity decision and expected profit? Use the MATLAB script DEMO_Newsvendor_SweepQandDemandSCV_VisExpProfit.m. If the estimate of demand's standard deviation was off by a factor of 2, what is the most money you would spend (on advertising, for example) to reduce it back to the original value?
5. Suppose that the company’s estimate of demand's standard deviation is off by a factor of 2, 3, 4, or 5. How does this affect their risk, both upside (probability of hitting a home run), and downside (probability of losing money)? Use the MATLAB script DEMO_Newsvendor_FixQ_VisualizeProfitPDFandCDF.m.

BIG PICTURE: This should be a straightforward exercise to investigate the Newsvendor model. Simulation is used to explore risk-related performance measures and demand distribution sensitivity. An expected result is that more demand variability decreases expected profit, increases the probability of losing money, and increases Q* (depending on demand's distribution!). The final question also provides practice interpreting empirical CDF plots.

### Base Stock: Analytical and Simulation

A certain dealership sells pickup trucks, and the average demand is 15 per month. When a truck is sold then a new one is ordered, which takes about ½ month to arrive. The average price of the trucks purchased is \$20,000 and the average selling price is \$23,000. The dealership figures that it costs about 5% a year to hold trucks in inventory, because in addition to the usual carrying cost they must keep washing them. If a customer wants a truck and none are in stock, trucks can be backordered, but persuading the customer to wait for delivery requires offering a rebate such that the average cost of a backorder is approximately \$1500 per year.

1. Suppose the base stock level is 10 trucks. If you treat demand as a Poisson random variable, what would you estimate the fill rate to be?
2. What should the base stock level be to achieve a fill rate of 90% or better?
3. What is the expected backorder level for a base stock level of 10?
4. What base stock level would minimize the annual cost of inventory, including the rebates for out-of-stock trucks?
5. If you approximate the Poisson random variable using the Normal distribution, what base stock level would minimize the annual cost?
6. Open the MATLAB script DEMO_BaseStock_SweepR_VisualizeCostsAndFillRate.m (which controls the simulation model ProdSystem_BaseStockAssumptionsAndCosts.slx through the wrapper function SimWrapper_ProdSystem_ BaseStockAssumptionsAndCosts.m). Configure the model (in the script’s top section, not the simulation model itself) with the given parameters; assume that demand is exponentially distributed, that replenishment lead time is deterministic (use eps, not 0, for variability), and consider (if it does not affect the result) setting trucks' purchase cost to 0. How do simulation results compare with analytical ones? What recommendation would you make for the base stock level, and why?
7. Open the MATLAB script DEMO_BaseStock_SweepBackorderCostB_VisualizeFillRate.m. Configure the model with the same assumptions as in (1). What can you say about the impact of backorder cost on the fill rate? From these results, do you think reducing the backorder cost by 50% would significantly change your recommendation for the base stock level?

BIG PICTURE: (1) through (5) are plug-and-chug using Base Stock analytical approximations. (6) and (7) concern the tradeoff between cost and fill rate, and an expected result is that for the given backorder cost (which is only 1.5 times the inventory holding cost), the fill rate at R* will be unacceptably low, a higher fill rate will be chosen despite the higher cost, and therefore reducing the backorder cost should bring no benefit.

### Qr: Analytical and Simulation

An automotive service department stocks repair parts. For example, part X is known to regularly fail, and about 100 customers need replacements per year. The cost of the part is \$250, and it takes about six weeks to get a replenishment order. The service department estimates that it costs about \$10 dollars to place and receive an order for the part (regardless of quantity), and that the per-unit inventory cost is about 15 percent per year. The service department also estimates that a backorder costs around \$120 per year in lost customer satisfaction, because customers do not leaving their cars in the shop overnight.

1. When should the service department order more of the part, and how many should be ordered each time to minimize purchase, inventory holding, and backorder costs?
2. What backorder level would result from these choices?
3. What service level would result from these choices?
4. Open the MATLAB script DEMO_Qr_SweepQandR_VisualizeCostAndFillRate.m (which controls the simulation model ProdSystem_QrAssumptionsAndCosts.slx through the wrapper function SimWrapper_ProdSystem_QrAssumptionsAndCosts.m. Use the PARALLEL version if possible.). Configure the model (in the script’s top section, not the simulation model itself) with the given parameters; assume that demand is exponentially distributed, that replenishment lead time is deterministic (use eps, not 0, for variability), and consider (if it does not affect the result) setting parts' purchase cost to 0. How do simulation results compare with analytical ones? What recommendation would you make for the reorder point R and the lot size Q, and why?
5. Suppose that poor customer service is penalized in a different way. Rather than penalize the time that backorders remain unfilled, instead incur a one-time cost for every demand that cannot be filled from stock, e.g. the cost of a backorder is a \$1500 rebate per customer to persuade them to wait for delivery. Based on a 90% fill rate, determine the reorder point using both type I and type II service approximations.

BIG PICTURE: (1), (2), (3), and (5) are plug-and-chug using Qr analytical approximations, and using a spreadsheet may help with the computations. An expected result is that analytical and simulation results will generally agree, but may diverge somewhat if the cost surface is relatively flat around the optimum. If true, then one might take advantage of the flat region to increase R or Q and hence the fill rate. 