OPSMGT 255: Modelling problems in Operations Management Inventory control using simulation
Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit
OPSMGT 255: Modelling problems in Operations Management
Tutorial – Inventory control using simulation
In this tutorial you will be introduced to a way to perform a simple simulation in a spreadsheet that will allow you to determine the impact of changing the reorder point used in an inventory management system.
This tutorial is based on the example “Inventory control: a simulation method” on page 304 in Excel Models for Business and Operations Management, 2nd ed. (Barlow, 2005)
Objectives
• To gain an understanding of simulation
• To understand the concept of service level
• To generate a simple simulation for an inventory management system
Learning outcomes
By the end of this tutorial the student should be able to:
• create a simple inventory simulation;
• demonstrate that changes to inventory policies can have large effects on the service level.
Notes: Rather than using a deterministic model this type of simulation is a little more realistic because it accounts for varied demand. The model presented here can be adjusted and expanded which can be useful if demand is very ‘lumpy’ . For example demand may usually be 5 units a day but once a month there may be a spike of demand for 25 units! In addition this model uses varied delivery times which can also cause difficulties. |
First things first
• Download the file, “Inventory Simulation_StartFile”, from CECIL and load it onto your J Drive.
The problem statement
Kim is in charge of inventory at Jandal Retailer Ltd (JRL). Kim wants to guarantee a high service level, at least 95%, for the premium line of jandals, product J. This means that JRL needs a policy that will ensure there is sufficient stock on hand to meet variable demand and also deal with the variability in the delivery of the products to his retail store. Currently JRL places an order for 10 units of product J whenever the on- hand inventory drops to the reorder point of 15 units of stock, or less.
A University of Auckland OM student studied the operations at Jandal Retailer for a class project. The student looked at the sales records and the orders and deliveries for the past year for product J and has given Kim some data to work with. Kim knows that the data presented in Table 1 is for the demand:
Table 1 Demand for product J |
|
||||||
Daily Demand for product J |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
Probability |
0.03 |
0.05 |
0.13 |
0.25 |
0.22 |
0.2 |
0.12 |
The following table gives the lead times:
Table 2 Lead times for orders of product J |
||||
Lead time (days) |
1 |
2 |
3 |
4 |
Probability |
0.2 |
0.6 |
0.15 |
0.05 |
Kim now wants to know whether the student can develop an inventory policy that will help him maintain a high service level of at least 95% while using the least amount of inventory.
Getting started
We are going to use the spreadsheets ability to generate random numbers to perform the simulation. Two tables will be set up in the spreadsheet containing the data in Table 1 & Table 2 on the previous page and the simulation will use a random number and then refer to these tables to get the appropriate value using the function
VLOOKUP.
You can see a screenshot of the working spreadsheet in the appendix.
From the EXCEL help files: “You can use the VLOOKUP function to search the first column of a rangeof cells, and then return a value from any cell on the same row of the range.” – Please see the help files for more information and images. |
Populating the Demand Table
The first step would be to set up the Demand Table – but this has already been completed for you. In cell D6 to cell D12 we have listed the different values demand can take, from 0-6 as shown in Table 1. Cells E6:E12 contain the corresponding probability from Table 1. Remember
that these probabilities are expressed as a fraction of 1 and you can multiply
them by 100 to get the percentage probability. To make sure that we have not
made any mistakes, we sum the column and it should give a total of 1.0 for
the column. These cells (D6:E12) have been highlighted (pale orange) to
remind your that these are cells you can change.
To the right in Figure 1 you can see the probabilities of units of demand and
the cumulative probability. The most common occurrence will be 3 units of
demand – the highest level that the red line reaches. It is generally common
for demand to be around 3, 4, or 5. The blue line takes the probability of
demand and adds it to a running sum to give the cumulative probability.
You will see that this reaches 1.0 or 100% for demand of 6 units.
Now notice the way that the Limits numbers in column B & C are increasing in a cumulative fashion. The value in the C12 should be equal to 1.0 and you might want to change the formatting in the cells which contain probabilities so that they show two decimal places.
The Demand table is going to be used in conjunction with a random number. Assume that a random number was generated and it was 0.15. Referring to Figure 2 the number 0.15 falls in the interval between 0.08 and 0.21 (this has been circled). This means that the corresponding level of demand would be 2 units. The final column, Pi, notes that there was a 13% chance that the demand would be 2 units. If the random number was 0.70 it would indicate that the demand was 5 units. If the random number was 0.95 it would mean that the demand was 6. The lead-time table will work in a similar fashion. In this simulation each day a random number will be generated and it will be used to figure out what the random level of demand is for the day.
Figure 2 Using the Demand Table
Because the Demand Table has been filled in for you, you can refer to this to understand what is happening when you now need to work out the Lead Time Table.
Populating the Lead Time Table
In much the same way as the Demand Table was done we are going to populate now the Lead Time Table. In I6 to I9 enter the number of days for the lead-time from Table 2.
In J6:J9 enter the corresponding probabilities from Table 2. This cell range (I6:J9) is also highlighted (pale orange) to remind you that these are cells that the user can change. From Figure 3 you can see that the most likely occurrence will be a lead-time of 2.
Use the information in Table 2 from these instructions to fill out the shaded cells in columns I & J of the lead-time table in the spreadsheet.
Figure 3 Probabilities for the lead-time
• Setting the limits for the lead-time table
Enter the value 0 (zero) in G6. Next to it in H6 enter
=J6
Now a similar procedure will be followed to generate the rest of the lead-time table. In cell G7 type
=H6
This makes sure that the new lower limit for a lead-time of 2 days is equal to the upper limit of the lead-time for 1 day. In H7 the upper limit will be derived from the previous upper limit and the probability for a lead-time of 2 days, so it will be =SUM($J$6:J7)
The formulas for cells G7 & H7 can be replicated down to G9:H9. Note that the value in H9 should be 1.0. You might want to change the formatting in the cells which contain probabilities so that they show two decimal places.
In cell J10 sum the values of J6:J9 to show that these probabilities add up to one. This is a useful thing to show on the spreadsheet so a user can make some quick adjustments and be sure that they have not made any errors.
It is a good idea to retain the summation of the probabilities to double-check they equal one.
Populating the Output Table
This table is the ‘meat’ of the simulation spreadsheet. Each row will represent a different day in the simulation. Demand from the customers will be decided using a random number. Changes will be made to the stock levels based on this demand. If new stock will be required an order will placed. This can be automated so that all the user is required to do is to refresh the spreadsheet (by pressing F9) and the table will generate new random numbers which will drive the actual demand for each period and the lead times for ordering if an order is placed.
• First set up the table so there are 100 days in column B.
• The beginning inventory levels
For Day 1 we need the value for our beginning inventory in cell D20. Take this value from the ‘order quantity’ listed at J13.
In Day 2 the beginning inventory (D21) is given by the inventory we started with on Day 1 minus the demand from Day 1 plus any new units received in Day 2. So in D21 we need
=D20+C21-F20 – This formula can be replicated all the way down to Day 100.
• The units received levels
On the first day we will not receive any units so this cell (C20) can be left blank.
For subsequent days it is a more complicated. We want to see if the day is listed as a receipt day in column L. If the current day is listed as a day when an order should be received then the units received in the current day will equal the order quantity (J13). This can be expressed using the COUNTIF function and having it count the occurrence of times that day is listed in column L. If it is listed there then the units received will be equal to the order quantity. For example if it is Day 2 the COUNTIF function will reference the number of the day (2) and will check to see if the number ‘2’ is listed as a Receipt Day in column L. If it is listed then it will add the order quantity to the Units Received.
In C21 it will require a formula like this:
=COUNTIF(L$20:L20, B21)*J$13 (Remember to use the absolute referencing as appropriate.)
If it was listed as a receipt day several times then the units received will be equal to several orders. We will be replicating this formula down the column until Day 100 so we want the COUNTIF function to check the range from the start at L20 (which is locked using an absolute reference) to whichever period we are at now. It checks how many times the value for that Days Number is listed in that range, and then multiplies this by the Order Quantity. So for Day 4 it will check from L20:L22 and count the number of times the number ‘4’ is listed there and will then multiply this by the order quantity.
• The random number column
Column E will contain random numbers generated by the spreadsheet. For Day 1 through to Day 100 the entry in column E should be =RAND( )
This function generates a random number between 0 & 0.99 which has many uses – some questions in your assignment contain numbers which we generate using this function!
• The demand column
These entries will use the random number in column E and refer to the Demand Table at the top left of the spreadsheet. These values will be selected using the VLOOKUP function in the spreadsheet. Selecting F20 the following formula can be typed in:
=VLOOKUP(E20,$B$6:$D$12,3)
This will take the value from E20 (the ‘lookup_value’) and then it will compare this array in the Demand Table in B6:D12. Make sure you use absolute cell references for the table so that the formula can be replicated down the column. The final part of the VLOOKUP function, the ‘3’, refers to the 3rd column of the array selected and this is what is returned. In this case it is the level of demand. So this function will take the random number generated in E20, it will then look down column B and find the value which the random number is higher than, and will then take the appropriate Demand level from that row (this was given in column 3 of the array we referenced with VLOOKUP) and return the value.
– Replicate this down to Day 100.
• The ending inventory column
This column keeps track of how much inventory is left at the end of the day. It simply takes the starting inventory and the demand and returns the value of starting inventory minus demand if this value is above zero. If demand was greater than inventory then the ending inventory will
be zero. (We are not going not include ‘backorders’ in this model.) In G20 the formula will look like this:
=IF(D20-F20>0,D20-F20,0)
Replicate this down to Day 100.
• The New Level column
Currently it is possible for this spreadsheet to generate too many orders. This can be prevented by tracking the on-hand stock levels and the scheduled receipts. This column needs to add scheduled receipts to the ending-inventory levels.
In Day 1 (cell H20) the value will equal the End Inventory for Day 1.
In subsequent days it needs to check whether there is an order placed in the previous day. If there is an order an amount equal to the Order Quantity is added to the Day 1 New Level and the Day 2 demand is subtracted. If there was no order placed in Day 1 then the Day 1 New Level
minus the Day 2 Demand is entered. This means the formula in H21 will look like:
=H20-F21+IF(J20="Yes",J$13,0)
Replicate this down to Day 100.
• The Order? Column
This column keeps track of whether or not a new order needs to be placed. This is performed by checking the New Level of stock against the Reorder level specified in J12. If the New Level for stock has slipped below the Reorder level then a new order will need to be placed. So in J20 this formula should be entered:
=IF(H20<J$12,"Yes","No")
Replicate this down to Day 100.
• The Lead Time column
This is the part of the spreadsheet which will check to see if an order is placed and then refer to the Lead-Time Table to determine what the lead time will be for this order. Again we will use the random number in column E and the VLOOKUP function to refer to the Lead-Time table. Use the VLOOKUP function to refer to the random number in column E. Compare this to the array in the Lead-Time table and return the appropriate
number. This is only done if the entry is “Yes” in the Order column for the current day. So the formula in K20 will look like: =IF(J20="Yes",VLOOKUP(E20,$G$5:$I$9,3),"")
Don’t forget to use absolute referencing using the $ signs and then you can replicate the formula down to Day 100.
• The Receipt Day column
This column will refer to the Lead Time column. If there is an entry for “Yes” for the
current day in the Order? column then the current day will be taken and the
appropriate number of days from the Lead Time column will be added to this. You
will need to add an extra day as well. At the end of each day the inventory is counted
and if the inventory has fallen below the reorder point an order is placed the next
day. So if the inventory levels fall below the reorder point on Day 5 the order will
be placed on Day 6 and it has a Lead Time of 2 days so it will be scheduled to be
received on Day 8. If there is no order being placed that day then the cell can be left
blank. You will need to type a formula like:
=IF(J20="Yes",B20+K20+1,"")
Replicate this down to Day 100.
• The Lost Sales column
This column records the number of lost sales for that day. If the beginning inventory
for that day is less than demand for that day then the lost sales will be the difference.
If beginning inventory for that day is greater than demand then all of the demand
can be met and there are no lost sales so a zero will be entered. This means that the
formula will look like:
=IF((D20-F20)<0,F20-D20,0)
Replicate this down to Day 100.
Working out the Service Level
The simulation is almost complete. Now all that needs to be done is work out the service levels so that a user (Bob) is able to figure out if the reorder point policy or ordering quantity policies need to be changed.
• The totals for Lost Sales and for Demand
To work out the service level the sum of the Demand (from the Output Table) should be calculated in J15. The sum of Lost Sales (from the Output Table) should be calculated in J16.
• Calculating the Service Level
Service level calculations are quite varied but in their simplest form they measure the proportion of time a customer will be served. So in this case Bob will want to know how often the customer demand was satisfied. The sum of lost sales divided by the total demand can be subtracted from 1 and this will give the proportion of time the customer demand was satisfied. Simply in J17 the formula should be:
=1-J16 / J15
• Finally the formatting for this cell (J17) should be changed to show a percentage.
Using this spreadsheet
Generally a specialist package will be used for a simulation. However this spreadsheet presents a simple simulation that can be used to evaluate reorder point and order quantity policies. The model can be updated with any change to the spreadsheet or by hitting F9.
To start the simulation, you need to specify numbers for both Reorder Level (J12) and Order Quantity&nbs
2023-06-19