INVENTORY CONTROL IN THE RETAIL SECTOR: A CASE STUDY …
Transcript of INVENTORY CONTROL IN THE RETAIL SECTOR: A CASE STUDY …
I N V E N T O R Y C O N T R O L IN T H E R E T A I L S E C T O R A C A S E STUDY O F C A N A D I A N TIRE PACIFIC ASSOCIATES
by
BRIAN A N T H O N Y K A P A L K A
BSc(CE) The University of Manitoba 1992 BSc The University of Manitoba 1992
A THESIS SUBMITTED IN PARTIAL F U L F I L L M E N T OF
T H E REQUIREMENTS FOR T H E D E G R E E OF
MASTER OF SCIENCE (BUSINESS ADMINISTRATION)
in
T H E F A C U L T Y OF G R A D U A T E STUDIES
(Department of Commerce and Business Administration)
We accept this thesis as conforming to the required standard
T H E UNIVERSITY OF BRITISH COLUMBIA
April 1995
reg Brian Anthony Kapalka 1995
In presenting t h i s thesis i n p a r t i a l f u l f i l l m e n t of the requirements for an advanced degree at the University of B r i t i s h Columbia I agree that the Library s h a l l make i t f r e e l y a v a i l a b l e for reference and study I further agree that permission for extensive copying of t h i s thesis for scholarly purposes may be granted by the head of my department or by h i s or her representatives I t i s understood that copying or pub l i c a t i o n of t h i s thesis for f i n a n c i a l gain s h a l l not be allowed without my written permission
Department of Cotv^errg- ftni)gt ^osmecs AAnmna-WoAor
The University of B r i t i s h Columbia Vancouver Canada
Date ZS A y r A 9 9 5
Abstract
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia and a central warehouse in Burnaby In this thesis we formulate
a single-product single-location model of its inventory system as a first step in developing an
integrated interactive inventory control system Specifically we formulate a Markov chain
model for a periodic review system with a deterministic lead time and lost sales The model
utilizes empirical demand data to calculate the long-run average cost of inventory for a given
(sS) policy We then develop a heuristic that locates a near optimal policy quickly The
heuristic incorporates a constraint on the customer service level makes use of an updating
technique for the transition probability matrix and is based on assumptions regarding the
properties of the solution space Next we create a prototype of the interface that enables
managers to use the model interactively Finally we compare the existing inventory policy to
the optimal policy for each of 420 products sold at one of the stores This thesis finds that
Canadian Tire Pacific Associates is currently holding excessively large in-store inventory and
that it could reduce its cost of inventory by approximately 40 to 50 We estimate that
implementing optimal inventory control in the stores would result in annual savings of between
$55 and $7 million
ii
Table of Contents
Abstract ii
Table of Contents iii
List of Tables v
List of Figures vi
Acknowledgement vii
I INTRODUCTION 1
II T H E INVENTORY SYSTEM A T CANADIAN TIRE PACIFIC ASSOCIATES 8 A Background 8 B The Problem 11 C The Project 15 D The Demand Data 17 E The Cost Data 18
III M O D E L FORMULATION 20 A Terminology 20 B Assumptions 21 C A Markov Chain Model 22 D The Transition Probability Matrix 25 E The Steady State Probabilities 27 F The Cost of Inventory 29 G The Customer Service Level 31 H A Methodology for Evaluating an (sS) Policy 34
IV A N ALGORITHM FOR OBTAINING T H E OPTIMAL (sS) POLICY 35 A Introduction 35 B A Grid Search 36 C A Technique for Updating the Transition Probability Matrix 41
A new policy (s+mS) 41 A new policy (sS+m) 42 The modified algorithm 43
D A Lower Bound on S 45 E A Heuristic Search 48
V T H E INTERFACE 52
iii
VI RESULTS A N D SENSITIVITY ANALYSIS 55 A Comparison of Current Policies to Optimal Policies 55 B Sensitivity Analysis on the Ordering Cost and Holding Rate 62 C Sensitivity Analysis on the Demand Probability Mass Function 65
VII CONCLUSION 70
Afterword 73
Bibliography 74
Appendix A A Portion of the Sales File for Product 200001 a 30-amp
Inline Fuse 76
Appendix B Sample Distribution Files 77
Appendix C A Proof that the Limiting Distribution is Independent of the
Initial State 79
Appendix D A Measure for the Steady State Customer Service Level 83
Appendix E The Calculation of the Conditional Expected Demand Not Satisfied
During a Period of T Consecutive Days 86
Appendix F Justification of the Updating Technique for the New Policy (s+mS) 87
Appendix G Justification of the Updating Technique for the New Policy (sS+m) 92
Appendix H A Hypothetical Consultation 97
Appendix I The Source Code for the Interface Module 104
Appendix J The Source Code for the Main Module 119
Appendix K Current and Optimal Policies for Product Category 20 at Store 6 131
iv
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
In presenting t h i s thesis i n p a r t i a l f u l f i l l m e n t of the requirements for an advanced degree at the University of B r i t i s h Columbia I agree that the Library s h a l l make i t f r e e l y a v a i l a b l e for reference and study I further agree that permission for extensive copying of t h i s thesis for scholarly purposes may be granted by the head of my department or by h i s or her representatives I t i s understood that copying or pub l i c a t i o n of t h i s thesis for f i n a n c i a l gain s h a l l not be allowed without my written permission
Department of Cotv^errg- ftni)gt ^osmecs AAnmna-WoAor
The University of B r i t i s h Columbia Vancouver Canada
Date ZS A y r A 9 9 5
Abstract
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia and a central warehouse in Burnaby In this thesis we formulate
a single-product single-location model of its inventory system as a first step in developing an
integrated interactive inventory control system Specifically we formulate a Markov chain
model for a periodic review system with a deterministic lead time and lost sales The model
utilizes empirical demand data to calculate the long-run average cost of inventory for a given
(sS) policy We then develop a heuristic that locates a near optimal policy quickly The
heuristic incorporates a constraint on the customer service level makes use of an updating
technique for the transition probability matrix and is based on assumptions regarding the
properties of the solution space Next we create a prototype of the interface that enables
managers to use the model interactively Finally we compare the existing inventory policy to
the optimal policy for each of 420 products sold at one of the stores This thesis finds that
Canadian Tire Pacific Associates is currently holding excessively large in-store inventory and
that it could reduce its cost of inventory by approximately 40 to 50 We estimate that
implementing optimal inventory control in the stores would result in annual savings of between
$55 and $7 million
ii
Table of Contents
Abstract ii
Table of Contents iii
List of Tables v
List of Figures vi
Acknowledgement vii
I INTRODUCTION 1
II T H E INVENTORY SYSTEM A T CANADIAN TIRE PACIFIC ASSOCIATES 8 A Background 8 B The Problem 11 C The Project 15 D The Demand Data 17 E The Cost Data 18
III M O D E L FORMULATION 20 A Terminology 20 B Assumptions 21 C A Markov Chain Model 22 D The Transition Probability Matrix 25 E The Steady State Probabilities 27 F The Cost of Inventory 29 G The Customer Service Level 31 H A Methodology for Evaluating an (sS) Policy 34
IV A N ALGORITHM FOR OBTAINING T H E OPTIMAL (sS) POLICY 35 A Introduction 35 B A Grid Search 36 C A Technique for Updating the Transition Probability Matrix 41
A new policy (s+mS) 41 A new policy (sS+m) 42 The modified algorithm 43
D A Lower Bound on S 45 E A Heuristic Search 48
V T H E INTERFACE 52
iii
VI RESULTS A N D SENSITIVITY ANALYSIS 55 A Comparison of Current Policies to Optimal Policies 55 B Sensitivity Analysis on the Ordering Cost and Holding Rate 62 C Sensitivity Analysis on the Demand Probability Mass Function 65
VII CONCLUSION 70
Afterword 73
Bibliography 74
Appendix A A Portion of the Sales File for Product 200001 a 30-amp
Inline Fuse 76
Appendix B Sample Distribution Files 77
Appendix C A Proof that the Limiting Distribution is Independent of the
Initial State 79
Appendix D A Measure for the Steady State Customer Service Level 83
Appendix E The Calculation of the Conditional Expected Demand Not Satisfied
During a Period of T Consecutive Days 86
Appendix F Justification of the Updating Technique for the New Policy (s+mS) 87
Appendix G Justification of the Updating Technique for the New Policy (sS+m) 92
Appendix H A Hypothetical Consultation 97
Appendix I The Source Code for the Interface Module 104
Appendix J The Source Code for the Main Module 119
Appendix K Current and Optimal Policies for Product Category 20 at Store 6 131
iv
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
Abstract
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia and a central warehouse in Burnaby In this thesis we formulate
a single-product single-location model of its inventory system as a first step in developing an
integrated interactive inventory control system Specifically we formulate a Markov chain
model for a periodic review system with a deterministic lead time and lost sales The model
utilizes empirical demand data to calculate the long-run average cost of inventory for a given
(sS) policy We then develop a heuristic that locates a near optimal policy quickly The
heuristic incorporates a constraint on the customer service level makes use of an updating
technique for the transition probability matrix and is based on assumptions regarding the
properties of the solution space Next we create a prototype of the interface that enables
managers to use the model interactively Finally we compare the existing inventory policy to
the optimal policy for each of 420 products sold at one of the stores This thesis finds that
Canadian Tire Pacific Associates is currently holding excessively large in-store inventory and
that it could reduce its cost of inventory by approximately 40 to 50 We estimate that
implementing optimal inventory control in the stores would result in annual savings of between
$55 and $7 million
ii
Table of Contents
Abstract ii
Table of Contents iii
List of Tables v
List of Figures vi
Acknowledgement vii
I INTRODUCTION 1
II T H E INVENTORY SYSTEM A T CANADIAN TIRE PACIFIC ASSOCIATES 8 A Background 8 B The Problem 11 C The Project 15 D The Demand Data 17 E The Cost Data 18
III M O D E L FORMULATION 20 A Terminology 20 B Assumptions 21 C A Markov Chain Model 22 D The Transition Probability Matrix 25 E The Steady State Probabilities 27 F The Cost of Inventory 29 G The Customer Service Level 31 H A Methodology for Evaluating an (sS) Policy 34
IV A N ALGORITHM FOR OBTAINING T H E OPTIMAL (sS) POLICY 35 A Introduction 35 B A Grid Search 36 C A Technique for Updating the Transition Probability Matrix 41
A new policy (s+mS) 41 A new policy (sS+m) 42 The modified algorithm 43
D A Lower Bound on S 45 E A Heuristic Search 48
V T H E INTERFACE 52
iii
VI RESULTS A N D SENSITIVITY ANALYSIS 55 A Comparison of Current Policies to Optimal Policies 55 B Sensitivity Analysis on the Ordering Cost and Holding Rate 62 C Sensitivity Analysis on the Demand Probability Mass Function 65
VII CONCLUSION 70
Afterword 73
Bibliography 74
Appendix A A Portion of the Sales File for Product 200001 a 30-amp
Inline Fuse 76
Appendix B Sample Distribution Files 77
Appendix C A Proof that the Limiting Distribution is Independent of the
Initial State 79
Appendix D A Measure for the Steady State Customer Service Level 83
Appendix E The Calculation of the Conditional Expected Demand Not Satisfied
During a Period of T Consecutive Days 86
Appendix F Justification of the Updating Technique for the New Policy (s+mS) 87
Appendix G Justification of the Updating Technique for the New Policy (sS+m) 92
Appendix H A Hypothetical Consultation 97
Appendix I The Source Code for the Interface Module 104
Appendix J The Source Code for the Main Module 119
Appendix K Current and Optimal Policies for Product Category 20 at Store 6 131
iv
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
Table of Contents
Abstract ii
Table of Contents iii
List of Tables v
List of Figures vi
Acknowledgement vii
I INTRODUCTION 1
II T H E INVENTORY SYSTEM A T CANADIAN TIRE PACIFIC ASSOCIATES 8 A Background 8 B The Problem 11 C The Project 15 D The Demand Data 17 E The Cost Data 18
III M O D E L FORMULATION 20 A Terminology 20 B Assumptions 21 C A Markov Chain Model 22 D The Transition Probability Matrix 25 E The Steady State Probabilities 27 F The Cost of Inventory 29 G The Customer Service Level 31 H A Methodology for Evaluating an (sS) Policy 34
IV A N ALGORITHM FOR OBTAINING T H E OPTIMAL (sS) POLICY 35 A Introduction 35 B A Grid Search 36 C A Technique for Updating the Transition Probability Matrix 41
A new policy (s+mS) 41 A new policy (sS+m) 42 The modified algorithm 43
D A Lower Bound on S 45 E A Heuristic Search 48
V T H E INTERFACE 52
iii
VI RESULTS A N D SENSITIVITY ANALYSIS 55 A Comparison of Current Policies to Optimal Policies 55 B Sensitivity Analysis on the Ordering Cost and Holding Rate 62 C Sensitivity Analysis on the Demand Probability Mass Function 65
VII CONCLUSION 70
Afterword 73
Bibliography 74
Appendix A A Portion of the Sales File for Product 200001 a 30-amp
Inline Fuse 76
Appendix B Sample Distribution Files 77
Appendix C A Proof that the Limiting Distribution is Independent of the
Initial State 79
Appendix D A Measure for the Steady State Customer Service Level 83
Appendix E The Calculation of the Conditional Expected Demand Not Satisfied
During a Period of T Consecutive Days 86
Appendix F Justification of the Updating Technique for the New Policy (s+mS) 87
Appendix G Justification of the Updating Technique for the New Policy (sS+m) 92
Appendix H A Hypothetical Consultation 97
Appendix I The Source Code for the Interface Module 104
Appendix J The Source Code for the Main Module 119
Appendix K Current and Optimal Policies for Product Category 20 at Store 6 131
iv
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
VI RESULTS A N D SENSITIVITY ANALYSIS 55 A Comparison of Current Policies to Optimal Policies 55 B Sensitivity Analysis on the Ordering Cost and Holding Rate 62 C Sensitivity Analysis on the Demand Probability Mass Function 65
VII CONCLUSION 70
Afterword 73
Bibliography 74
Appendix A A Portion of the Sales File for Product 200001 a 30-amp
Inline Fuse 76
Appendix B Sample Distribution Files 77
Appendix C A Proof that the Limiting Distribution is Independent of the
Initial State 79
Appendix D A Measure for the Steady State Customer Service Level 83
Appendix E The Calculation of the Conditional Expected Demand Not Satisfied
During a Period of T Consecutive Days 86
Appendix F Justification of the Updating Technique for the New Policy (s+mS) 87
Appendix G Justification of the Updating Technique for the New Policy (sS+m) 92
Appendix H A Hypothetical Consultation 97
Appendix I The Source Code for the Interface Module 104
Appendix J The Source Code for the Main Module 119
Appendix K Current and Optimal Policies for Product Category 20 at Store 6 131
iv
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
List o f Tables
Table 1 Location and particulars of the 21 stores 10
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse 39
Table 3 Execution times of the algorithms for product 206917 a 6
solder connector 40
Table 4 Products with insufficient existing policies 56
Table 5 Products with the largest potential absolute savings 60
Table 6 A comparison of optimal policies to true optimal policies 63
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios 64
Table 8 True optimal and optimal policies for each demand scenario 66
v
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
List of Figures
Figure 1 A typical sample path of the process with a 4-day review period
and a 2-day lead time 24
Figure 2 The flow chart of the grid search algorithm 38
Figure 3 The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix 44
Figure 4 An evaluation of the lower bound Sm i n 47
Figure 5 The flow chart of the heuristic algorithm 50
Figure 6 The distribution of savings of optimal policies in (a) dollars and
(b) percentage of current cost 59
Figure A-1 The title screen 97
Figure A-2 The main menu 98
Figure A-3 Calculating the optimal policy and evaluating the current policy 99
Figure A-4 Displaying the results 100
Figure A-5 Entering an alternate policy 101
Figure A-6 The particulars of the alternate policy 102
Figure A-7 The main menu revisited 103
vi
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
Acknowledgement
The completion of this thesis was made possible by the encouragement and assistance
of a number of people
I would like to express my sincere appreciation to my thesis supervisor Professor
Martin Puterman for all of his many efforts on my behalf His help advice patience charity
and tolerance were very much appreciated
I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their
time and input as members of my thesis committee In addition I must acknowledge the
assistance of PhD student Kaan Katircioglu for his insight and help on this project
I offer many thanks to Professor Tom Ross for his kindness and friendship during the
past few years especially during the writing of this work I must also thank his family for
adopting me on many holidays I still owe thanks to Professor Slobodan Simonovic at the
University of Manitoba for influencing me to attend graduate school in the first place and for
helping me to obtain funding
I cannot thank my parents enough for their never-ending support both emotional and
financial Also to my friends especially Cathy Dave Lisa Steve and the Philbuds thanks
for giving me a life off campus and for picking up many a tab - the next one is on me
I would like to give special thanks to my good friend and fellow MSc student Paul
Crookshanks for allowing me to bounce ideas off of him and for being such a procrastinator
that despite my finishing a year late I only lost by two days
Financial assistance received from the Natural Science and Engineering Research
Council (NSERC) and from Canadian Tire Pacific Associates was greatly appreciated
vii
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
I INTRODUCTION
The importance of inventory management has grown significantly over the years
especially since the turn of this century In colonial times large inventories were viewed as
signs of wealth and therefore merchants and policy makers were not overly concerned with
controlling inventory However during the economic collapse of the 1930s managers began
to perceive the risks associated with holding large inventories As a result managers
emphasized rapid rates of inventory turnover (Silver and Peterson 1985) Following the
Second World War Arrow Harris and Marschak (1951) and Dvoretzky Kiefer and
Wolfowitz (1952ab) laid the basis for future developments in mathematical inventory theory
Shortly thereafter new inventory control methodologies were widely applied in the private
manufacturing sector More recently when inflation and interest rates soared during the 1970s
many organizations were forced to rethink their inventory strategies yet again Today the
control of inventory is a problem common to all organizations in any sector of the economy
Sir Graham Day chairman of Britains Cadbury-Schweppes P C L expressed this sentiment
when he stated I believe the easiest money any business having any inventory can save lies
with the minimization of that inventory (Day 1992) Lee and Nahmias (1993) and Silver and
Peterson (1985) provide a more detailed history of inventory management and control
Most inventory problems in the retail sector involve the control and management of a
large number of different products Ideally the inventory policies should be determined for all
products on a system-wide basis however because the number of products is often in the tens
of thousands formulating a model to do so is impractical Therefore single-product models
are frequently used in practice to determine policies for products separately (Lee and Nahmias
1993) Lee and Nahmias (1993) and Silver and Peterson (1985) provide a good overview of
1
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145
single-product single-location models for a more complete review of the literature we refer
to them
The degree of complexity of a single-product model depends largely on the assumptions
made regarding the demand cost structure and physical characteristics of the inventory system
For example demand can be either deterministic meaning it is known with absolute certainty
or stochastic meaning it is unknown but follows a known probability distribution
Deterministic models tend to be relatively simple yet useful such as the basic EOQ model
However future demand is seldom known with certainty in practice and therefore the use of
these simple models is limited As a result the majority of research in inventory has focused
on stochastic demand models (Lee and Nahmias 1993)
Because the objective of most inventory models is to minimize the cost of inventory
assumptions regarding the structure of the cost are very important also Generally speaking
the cost of inventory has four components the purchaseproduction cost the orderingsetup
cost the holding cost and the shortage cost1 Each of these costs can be fixed proportional
nonlinear or some complex combination of these Further because nearly all inventory
problems require decisions be made sequentially over a period of time the costs can be either
discounted or averaged In the former case a discount factor is included in the cost function
in order to account for the time value of money However since most inventory problems are
on-going the long-run average cost is usually minimized (Lee and Nahmias 1993) In
practice this is achieved by minimizing the expected cost per time period under steady state
conditions
Finally the physical characteristics of the system are important in determining the
1 The cost of a stockout is often very difficult to estimate in practice As a result service levels are frequently used in its place When this is done a constraint is included in the model
2
complexity of the model For example the review process can be either continuous in which
case the inventory is reviewed continuously and orders are placed as soon as the stock reaches
a certain level or periodic in which case the inventory is reviewed at regular intervals and
orders can be placed only at those fixed times Also excess demand can be fully backordered
as is common in many manufacturing and wholesale systems completely lost as is common
in most retail environments or some combination of the two Lead time assumptions are also
important models with lead times are more complex than those in which the supply of
inventory is assumed to be instantaneous
Although the literature is dominated by single-product models (Lee and Nahmias 1993)
much recent work has focused on extending those models to multiple-product problems
However multiple-product models are inherently more complex than the simple-product
models In fact no efficient algorithms are currently available for determining fully optimal
strategies for most multiple-product problems (Federgruen 1993) As a result research has
focused on the development of easily computable approximation techniques Muckstadt and
Roundy (1993) provide a good overview of multiple-product andor multiple-location models
with deterministic demand although emphasis is placed on models for production and
distribution Federgruen (1993) extends the discussion to consider these models under uncertain
demand and also provides a complete list of references on the subject Silver and Peterson
(1985) discuss models for coordinated replenishments for both deterministic and stochastic
demand
In this thesis we examine the inventory system at Canadian Tire Pacific Associates
owner of 21 retail stores and a central warehouse Although this is a multiple-product
multiple-location single-warehouse problem and strictly speaking should be modelled as such
we analyze the inventory problem on a product-by-product and store-by-store basis We believe
3
that this simpler single-product single-location model captures the essentials of the problem for
two reasons First the coordination of replenishments for products andor locations is most
advantageous when significant savings are possible because of high first order costs and low
marginal costs for placing subsequent orders However because of the large number of
products and the physical distribution system in this problem trucks are dispatched to stores
on a regular basis Therefore the benefits of coordinating replenishments for this problem are
negligible Second we believe that controlling in-store inventory alone can result in substantial
savings to Canadian Tire Pacific Associates Further given the excessive amount of inventory
in the warehouse a single-location model assuming an infinite warehouse capacity is reasonable
Of course should inventory control in the warehouse become a priority a more elaborate model
would be required
More specifically we consider a periodic review single-product inventory model with
stationary independent stochastic demand a deterministic lead time and an infinite planning
horizon The probability mass function for the demand is based on empirical sales data
collected over a period of approximately ten months The cost of inventory includes a
proportional holding cost and a fixed ordering cost neither of which is discounted All excess
demand is completely lost The objective of the model is to minimize the long-run average cost
per unit time subject to a service level constraint on the fraction of demand satisfied directly
from in-store inventory In order to obtain meaningful cost comparisons the model calculates
the expected annual cost of inventory
For inventory problems like the one described above optimal (sS) policies can be
computed by Markovian decision process methods such as successive approximations or policy
iteration or by stationary Markovian methods However each of these methods generate
calculations that are complex and time consuming Therefore much research interest lies in
4
developing techniques to find approximate (sS) policies with little computational effort The
majority of the approximation techniques begin with an exact formulation of the problem and
then manipulate the problem by relaxations restrictions projections or cost approximations
(Federgruen 1993) Porteus (1985) presents three approximation techniques and compares
them to fourteen others for a periodic review single-product inventory model in which
shortages are fully backordered and a shortage cost is incurred Federgruen Groenevelt and
Tijms (1984) present an algorithm for finding approximate (sS) policies for a continuous review
model with backordering and a service level constraint Also Tijms and Groenevelt (1984)
present simple approximations for periodic review systems with lost sales and service level
constraints All three works find that the approximation techniques perform well However
the techniques are evaluated for a variety of demand parameters that all result in policies with
a value of S in the range of 50 to 200 Given the slower moving products at Canadian Tire 2
it is unclear how well such approximation techniques would perform Therefore we do not
attempt to apply or modify any of these approximation methods
Exact optimal policies for this problem can be obtained by formulating a constrained
Markov decision process and solving it However the data generating requirements and the
lack of a good upper bound on S make this formulation impractical Therefore we formulate
a Markov chain model for fixed values of s and S and then employ a search technique to find
the optimal values for s and S In order to improve the performance of the model we develop
a heuristic search that locates near optimal policies relatively quickly
The remaining chapters of this thesis are organized as follows In Chapter II an
overview of the existing inventory system at Canadian Tire is presented along with a description
2 For example very few of the products analyzed have optimal values of S exceeding 20 with the largest value of S equalling 69
5
of the problem Next a multi-phase project designed to develop a fully integrated interactive
inventory control system is described with the scope of the research reported in this thesis
completing the first phase of the project Finally a description of the demand and cost data is
given
In Chapter III we formulate a Markov chain model that can be used to calculate the cost
and service level associated with a given (sS) policy Based on several simplifying
assumptions the Markov chain is formulated and the equations for the corresponding transition
probability matrix are developed Then given the limiting probability distribution of the chain
the equations for the steady state annual cost of inventory and the corresponding service level
are obtained The chapter concludes with a brief summary of the model
In Chapter IV an algorithm that searches for the optimal (sS) policy is developed As
a starting point a simple grid search algorithm is developed and evaluated on the basis of
execution time In order to improve the algorithms speed a technique for updating the
transition probability matrix is presented and the improvement in the algorithm is noted Next
a theoretical lower bound on S is obtained although the corresponding reduction in the
execution time is minimal Finally based on two assumptions regarding the shape of the
feasible space a heuristic search is developed which improves the speed of the algorithm
significantly
In Chapter V a prototype of the inventory control systems interface is created In its
present form the interface allows managers to evaluate inventory policies interactively The
manager can set review parameters compare optimal policies and current policies and evaluate
alternate policies The chapter concludes by recommending specific options be including in
future versions to make the system more automated and user-friendly
In Chapter VI optimal policies for all products in one product category sold at one store
6
are compared to existing policies on the basis of expected annual costs and customer service
levels The analysis suggests that existing policies result in a large excess inventory and that
implementing the optimal policies would reduce the annual cost of inventory by approximately
50 A sensitivity analysis on the cost estimates is performed and suggests that the model is
not sensitive to relative errors of approximately 20 in the cost estimates Finally a sensitivity
analysis on the demand probability mass function is performed The analysis indicates that the
model is sensitive at least in terms of the customer service level to slight changes in the tail
of the demand distributions of low-demand products
Finally in Chapter VII the results of the analysis are summarized and future work is
outlined In order to incorporate recent changes in the review procedures at several stores the
model must be modified to allow for the duration of the review period to exceed the lead time
We recommend that the second phase of the project proceed specifically that a data collection
and storage scheme be designed and that a forecasting model be developed Because of the
substantial savings that can be realized by reducing inventory only at the stores inventory
control at the warehouse should also be investigated
7
II T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE
A Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia The stores carry approximately 30000 active products3 that
are divided into 80 product categories The merchandise comprises primarily automotive parts
and accessories home hardware housewares and sporting goods Canadian Tire Pacific
Associates also owns a central warehouse in Burnaby at which inventory is received from
Toronto Inventory is then shipped periodically from the warehouse via truck to the local
stores In 1992 total sales at the stores exceeded $99 million and the value of inventory was
estimated to be $28 million of which approximately half was stored in the warehouse
On selected days of each week a stores inventory records are reviewed automatically
and orders for products are placed to the warehouse as required Management uses the term
flushing to describe the process of reviewing the inventory and producing the tickets for stock
owing and the term picking to describe the physical act of filling the order at the warehouse4
Whether or not an order is placed for a product depends upon its current inventory level its
target level and its minimum fill 5 If the target level less the current level exceeds the
minimum fill an order is placed to bring the stock up to the target level From the moment
3 Active products are those that are regularly restocked Canadian Tire Pacific Associates can choose from up to 50000 products
4 Note that the number of picks per week is equal to the number of times per week that the inventory records are reviewed At the beginning of this study eighteen stores had two picks per week while the remaining three stores had only one
5 The target level is the maximum number of items that should be on the shelf at one time and the minimum fill is the minimum number of items that should be ordered
8
the order is placed to the moment the product is reshelved takes between two to four days
depending on the store On average 11000 items are shipped from the warehouse at each
flush
Although a products minimum fill is the same for all stores its target level depends
upon the size of the store Based upon its sales volume and retail space a store is classified
as being one of five sizes small (S) medium (M) large (L) jumbo (J) and extra jumbo
(EJ) 6 Each product has associated with it a target level for each size of store
Consequently all stores of the same size have identical inventory policies Table 1 lists the
location size number of picks per week sales and floor space of each store as of October
1993
Periodically the inventory manager reviews the policies and when deemed necessary
adjusts them In this way the manager can account for seasonality in demand changes in mean
demand and any shortcomings of previous policies At the present time the review process
is not automated nor performed on-line The inventory manager uses Hxl5 computer
printouts with five products to a sheet to study the relevant information and on which to note
any changes Afterward the changes are recorded in the system and the new policies take
effect
Currently the inventory policies are based on rules of thumb developed through the
years and not on a statistical analysis of demand nor on a calculation of the cost of inventory
These rules of thumb incorporate a marketing philosophy which at times dominates the
inventory strategy The prevailing philosophy holds that a large in-store inventory instills
6 During the course of this study stores were resized several times At one point the entire class of medium stores was eliminated leaving only four sizes of stores On another occasion the store in Chilliwack was changed from being a small store to a large store
9
Table 1 Location and particulars of the 21 stores
Store Location Store Size
Picks Per Week
1992 Sales ($)
Floor Space (ft2)
1 Chilliwack S 2 2901969 6678
2 Coquitlam M 2 4015303 6510
3 Langley EJ 2 8138673 15422
4 Scott Road EJ 2 7307820 15064
5 Maple Ridge L 2 4102110 6678
6 Kingsway L 2 4153736 6574
7 Richmond EJ 2 8175105 14961
8 North Vancouver M 2 3856571 6534
9 Guildford M 2 3714372 6567
10 Burnaby M 2 3532752 6983
11 New Westminster S 1 2417992 6470
12 Abbotsford EJ 2 7899398 15303
13 Hastings J 2 4647794 9849
14 King Edward EJ 2 3825372 25492
15 White Rock L 2 3960262 6870
16 Main amp Mountain S 1 2705602 6431
17 Heather J 2 4161227 9427
18 King George J 2 4606817 9640
19 Cambie J 2 5855022 9091
20 Lougheed M 1 3114180 6615
21 Burrard J 2 6553310 10608
10
consumer confidence which in turn leads to increased sales In other words if a customer
perceives that Canadian Tire is in the hardware business he or she will choose to shop there
when meeting future needs However management has adopted this philosophy without any
analysis of the cost of holding excess inventory Only recently has management begun to
question the cost-effectiveness of allocating inventory based on these rules of thumb
Speculating that existing inventory practices might be deficient Mr Don Graham the
vice-president of Canadian Tire Pacific Associates commissioned a pilot study to examine the
inventory system and to propose alternate strategies7 The study using a steady state model
to represent a simplified inventory system suggested that existing policies lead to overly high
inventory levels More importantly the study outlined a methodology that would enable
management to determine inventory levels based on observed demand The pilot study
recommended that a more detailed model of the inventory system be formulated that the
methodology be expanded to incorporate the cost of inventory and that an algorithm be
developed that would quickly identify the optimal inventory policies
B The Problem
At the time of the pilot study management was concerned primarily with its inability
to distinguish between stores of the same size As mentioned in the previous section a
stores size is based solely on its sales volume and floor space and under existing practices
all stores of the same size have identical inventory policies for every product Management
realized that demand for some products might be a function of variables other than size such
7 The pilot study was performed by Martin Puterman a professor of Management Science and Kaan Katircioglu a doctoral student in Management Science both at the University of British Columbia The results of the study were presented at a U B C Transportation and Logistics Workshop on March 25 1993
11
as location For example the demand for sump pumps is likely to be very different in suburban
areas than in urban ones However management was unable to allocate more sump pumps to
large suburban stores than to large urban stores This inability led management to seek a
tool that would allow for a more effective allocation of inventory between stores of the same
size
By the end of the pilot study however management was less concerned with
reallocating inventory within a size of store than with reallocating inventory between sizes
of stores and with reducing overall inventory According to management assigning individual
inventory policies to each store appeared to be operationally infeasible Firstly management
believed that having individual policies would lead to confusion in the warehouse and to
increased shipping errors Exactly why this would occur is unclear the warehouse would
simply continue to fill orders from tickets that make no reference to the policy in place
Secondly and perhaps more tenably the computer technology at Canadian Tire Pacific
Associates did not allow for policies to vary across all stores Both the database used to store
the inventory data and the printouts used by the inventory manager allowed for only five
different policies per product all with the same minimum fill Moving to individual policies
would have required an overhaul of the existing information system Although management
saw this overhaul as inevitable it did not see the overhaul as imminent Therefore
management switched the focus of the study to developing a tool that would help reduce overall
inventory levels andor reallocate inventory more effectively between groups of stores
The subtle change in the studys objective prompted an important question how should
the stores be grouped The current practice of grouping stores based on size is problematic
for two reasons First as discussed above additional factors of demand such as location
cannot be taken into account Second grouping inherently results in a misallocation of
12
inventory when some stores within a group have differing numbers of picks per week For
example the medium-sized Lougheed store which has one pick per week requires higher
inventory levels to achieve a given customer service level than the other medium stores
which all have two picks per week8 In fact in terms of customer service levels it might
be more appropriate to group the Lougheed store with the large stores having two picks per
week Ideally this artificial grouping of stores will be abandoned when the computer system
is upgraded and policies can then be set on a store by store basis
As the project proceeded management grew somewhat uneasy with the concept of using
an analytical tool to evaluate and set inventory policies According to both the pilot study and
the preliminary results of this study significantly reducing inventory would greatly reduce costs
while still providing a high level of customer service However management held that because
the model cannot take into account intangibles such as marketing considerations such a drastic
reduction in inventory would be very inappropriate In this light management viewed the
optimal policies as lower bounds for inventory levels these policies would have to be
modified upwards in order to be practical Therefore management contended that any
methodology or software produced during this study should provide the means to evaluate and
compare a number of alternate policies
Regardless of exactly how the tool is to be used there is currently a lack of historical
sales data from which to analyze the inventory system and determine optimal policies No sales
data had ever been collected prior to the pilot study and only a relatively small amount has
been collected since In order to proceed with any analysis of the inventory system a
8 If demand is a function of size then the Lougheed store must meet the same demand with one fewer pick per week This would lead to either increased probabilities of stockouts at the Lougheed store or higher inventory levels at all the other medium stores
13
substantial amount of additional data would be needed The existing information system at
Canadian Tire Pacific Associates does allow for sales data to be captured however the system
is limited by the amount of data it can capture at one time and by its storage capacity In order
to collect the amount of data required management would have to upgrade the system and
develop some kind of data collection scheme coupled with a data compression technique The
collection scheme must allow for characteristics of demand such as trends and seasonality to
be identified and the compression technique must allow for sales data for over 30000 products
to be stored for each store
Because many of the products sold by Canadian Tire have nonstationary demand as a
result of seasonality andor trend the inventory tool must be able to forecast demand for the
coming period Products such as sporting goods and outdoor equipment exhibit patterns of
demand that are very seasonal For example sales of snow shovels increase through the fall
peak in the winter and drop to zero by late spring At the same time some products might
become either more or less fashionable over time resulting in changes in mean demand
Setting inventory policies for any of these products based on observed demand would result in
insufficient stock if demand increased during the period or in excess stock if demand decreased
Therefore the tool must be able to forecast the demand for the period for which the policy is
intended
Toward the end of the project management began discussing the integration of the
interactive inventory tool with the existing system to form a new inventory control system The
new system would utilize a modified point of sales system to collect sales data continually
Based on the latest available data the system would forecast demand for the coming period and
calculate the optimal policies for every product at every store The system would then provide
all relevant information on-line for the inventory manager to review The manager could weigh
14
other information such as marketing considerations and examine alternate policies to determine
the effect on cost Finally the preferred policy would be set in place with the touch of a key
and information on the next product or store would be presented for review
C The Project
Development of the inventory control system envisioned by management requires the
completion of five tasks 1) the design of a data collection system that generates and stores the
necessary sales data 2) the development of a forecasting method that provides accurate
estimates of demand distributions 3) the formulation of a model that calculates the cost of
inventory and the customer service level for an inventory policy 4) the development of an
algorithm that finds the optimal policy for a product at a store and 5) the creation of an
interface that allows interactive and on-line consultation Ultimately the above components
would have to be integrated and incorporated in a manner that would ensure the compatibility
and reliability of the system
The scope of the research reported in this thesis completes the first phase of the project
specifically we formulate an inventory model develop an algorithm and create a prototype of
the interface Because of the changing environment at Canadian Tire Pacific Associates minor
modifications to both the model and the algorithm developed herein might be necessary to
reflect future changes in operational procedures Upon completion of phase one the interface
will be interactive allowing managers to select the store product and review scenario and then
to compare optimal policies with existing policies or with alternate policies Although the
prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end
of this phase the interface will require modification in subsequent phases as feedback from
management is received and as the system is brought on-line
15
In order to assess more fully the potential savings of implementing the inventory control
system this thesis includes a comparison of optimal policies9 and existing policies The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies Based on an analysis of these costs the potential
savings of implementing the optimal policies are extrapolated Further the thesis examines the
sensitivity of the model to variations in the estimates of demand and costs
Originally results from all 21 stores were to be included in the above analysis
However just prior to the analysis management changed the review procedure at several
stores the result of which being that three picks per week are now performed at those stores
Because one of the main assumptions of the model specifically that the length of the lead time
does not exceed the duration of the review period is violated under this new review procedure
those stores cannot be included in the analysis Therefore the analysis is based solely on the
results from store six the large store located on Kingsway Avenue10
For the purpose of the analysis sales data for product category 20 automotive and
electrical accessories were collected from all 21 stores This product category was selected
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed on sale11 The lack of trend or seasonality eliminates the need
for forecasting demand the optimal policies can be determined based directly on observed
demand
9 That is those policies obtained from the model
1 0 Store six is one of the only stores whose review procedure is not expected to change from two picks per week
1 1 Products that were on sale at any time during the period were not included in the data set
16
D The Demand Data
In total sales data for 520 products of which 458 are active products were collected
over a 307-day period from October 10 1992 to August 18 199312 The data was supplied
by Canadian Tire Pacific Associates in the form of a 10 MB text file with one line per day per
product recording sales from the stores13 Each line had the following format
Columns 1-6 part number Columns 7-9 Julian date14
Columns 10-18 cost of the item (to three decimal places) Columns 19-124 sales for stores 1 through 21 (5 columns per store)
In order to facilitate the analysis the file was sorted into 458 sales files with each of
these files containing the history of daily sales for one of the products Two changes were
made to the format of these files to improve readability 1) a column was added between the
product number and the Julian date and 2) all leading zeros were dropped Appendix A
contains a partial printout of the sales file for a typical product Finally a distribution file
summarizing the daily sales was created from each of the sales files Each distribution file
contains the products number the products cost and the number of days during which various
quantities of the product were sold at each store
Prior to the analysis the distribution files for a large number of products were
examined and based on the shapes of the histograms the products were divided into three
groups The first group low-demand comprises products that have demand on only a few
days with the daily demand seldom exceeding three items The second group medium-
1 2 Of the active products only 420 are sold at store 6
1 3 Strictly speaking a line was written to the file only on days on which at least one store registered a sale of the product
1 4 According to the Julian calendar days are numbered sequentially from 1 to 365 (366 during leap-years) beginning with the first of January
17
demand comprises products that have demand on approximately half of the days with the daily
demand seldom exceeding more than six items Finally the last group high-demand
comprises products that have demand on most days occasionally upwards of twenty items and
whose demand histograms resemble Poisson distributions The majority of the products
examined fell into the low and medium-demand groups only a few high-demand products
were observed Appendix B contains a printout of the distribution file for a typical product
in each group
For most products no theoretical distribution appeared to model the demand well
Demand for low and medium-demand products followed a non-standard distribution with
a mass at zero and a relatively small tail Although some theoretical distributions such as the
mixed-Poisson can be made to resemble this it was unclear how well they would perform
Further the effects of sampling errors from such non-standard distributions were unknown
On the other hand the standard Poisson distribution did appear to model high-demand
products well however only a few products fell into that group Therefore in the absence of
a good theoretical candidate the empirical demand function was chosen for the analysis The
empirical function was readily available from the distribution files and offered the best
estimate of the true underlying function
E The Cost Data
Along with the sales data management supplied estimates relating to the costs of holding
and ordering inventory Management estimates that the cost of holding an item in inventory
for one year is 30 of the items cost Incorporated in this holding rate are a number of costs
such as the opportunity cost of money invested and the costs incurred in running a store
Because it is the annual cost of inventory that is of interest either the compounded daily
18
holding rate or the simple daily holding rate can be used to determine the costs incurred during
a review period however the method of calculating and extrapolating the holding costs must
be consistent For the sake of simplicity a simple daily holding rate is used
In order to estimate the cost of ordering inventory management analyzed the various
tasks that result from an order being placed Using the average time required to fill and then
reshelve an order management obtained an estimate of the direct labour costs involved To
this management added an estimate of the cost of transporting an order from the warehouse to
the store Finally the estimate was adjusted slightly upward to account for the cost of breakage
and errors Based on the analysis management estimates the cost of placing an order for a
product to be $0085 regardless of the size of the order
19
III M O D E L F O R M U L A T I O N
A Terminology
In the previous chapter several terms were introduced to describe the inventory system
at Canadian Tire Pacific Associates These terms though perfectly adequate are not widely
used in the academic literature to describe inventory management problems Therefore in
order to avoid confusion and be consistent with the literature the following terms are used
throughout this thesis
The length of time between successive moments at which the
inventory position is reviewed15
The time at which a reorder decision is made
The length of time between the moment at which a decision to
place an order is made and the moment at which the order is
physically on the shelf
An operating policy in a periodic review inventory model in
which (i) the inventory position is reviewed every T days (ii) a
replenishment order is placed at a review only when the inventory
level x is at or below the reorder level s (gt 0) and (iii) a
replenishment order is placed for S-x units (S gt s)1 6
Lost Sales - The situation in which any demand during a stockout is lost
Review Period -
Decision Epoch
Lead Time -
(sS) Policy
1 5 With respect to the terminology used at Canadian Tire Pacific Associates a review period equals the number of days between flushes
1 6 With respect to the terminology used at Canadian Tire Pacific Associates S represents the target level and s represents the difference between the target level and the minimum fill
20
B Assumptions
In to order make the model of the inventory system mathematically manageable several
simplifying assumptions are made However we believe that the following assumptions do not
significantly reduce the accuracy of the model
1) Demand can be approximated very closely by sales during the period in which the data
is collected Generally inventory levels at the stores are very high and the number of
lost sales is assumed to be negligible In fact the inventory levels for a number of
products were tracked over time during the pilot study and not a single incidence of
stockout was observed Because all products appear to have similar excess inventory
it seems reasonable to assume that virtually all demand resulted in sales
2) The demands in successive periods are independent identically distributed random
variables Preliminary tests (Fishers exact tests) suggested no dependence between
sales on consecutive days and plots of sales over time indicated no seasonal pattern
3) Demand is independent across products That is we assume that sales of one product
do not affect nor can they be predicted from sales of another product
4) Unmet demand results in lost sales with no penalty other than the loss of the sale
5) The duration of the review period for a store is an integer value and is fixed over a
planning period For stores with two picks per week we assume that the inventory
is reviewed every four days rather than on a four day - three day cycle
6) The decision epoch is the start of a review period Review periods begin at midnight
at which time the inventory is reviewed and orders are placed instantaneously
7) The duration of the lead time for a store is deterministic and integer-valued In reality
the lead time for some stores was stochastic but management felt the variation could be
controlled and virtually eliminated
21
8) The lead time does not exceed the review period In other words items ordered at a
decision epoch arrive and are shelved before the next decision epoch In practice this
did not always occur
9) Orders arrive at the end of the lead time and are on the shelf to start the next day
10) Holding costs are incurred daily for all inventory held at the start of the day
11) The warehouse has an infinite capacity that is all orders to the warehouse are filled
Because of the high inventory levels in the warehouse stockouts in the warehouse are
very unlikely
C A Markov Chain Model
Consider the situation in which an (sS) policy is applied to an inventory system based
on the above assumptions Inventory is reviewed at the decision epoch for each of the periods
labelled t = 0 12 and replenishment occurs at the end of the lead time provided an order
was placed Demand during day d in period t is a random variable whose probability mass
function is independent of the day and period The function is given by
f^ik) = Pr ltd = k = ak for k = 0 1 2
where ak gt 0 and E ak = 1 Let T denote the duration of a review period and L denote the
length of the lead time Next define D T ( as the total demand during period t D L as the total
demand during the lead time in period t and D T L as the difference between D T and DLt
Assuming that successive demands pound f pound 2 are independent the probability mass function of
1 7 The aggregated demand variables are given by
^ = XXd and DT_Ut=J d= d= d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of t d l s Finally let X denote the inventory on hand at the beginning of period t just prior to
the review
The process X is a discrete time stochastic process with the finite discrete state space
0 1 S A typical sample path of the process with a review period of four days and a
lead time of two days is depicted in Figure 1 As period t begins X units are on hand The
inventory is reviewed and because X is less than s an order is placed for (S-X) units Over
the next two days a demand of D L r occurs and the inventory drops accordingly With the
arrival of the order the inventory level increases by (S-X) at the start of the third day of the
period Over the remaining two days a demand of D T L is observed bring the inventory level
down to X + 1 Note that in this example an order would not be placed in period t+l because
X r + i exceeds s
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_K- DLy+ (s - v - DT-LX ixtlts ( 1 )
t + l ~ (Xt - DTtY ifXtgts
where the positive operator is interpreted as
= max a 0
1 8 For example the probability mass function of D T bdquo denoted fD T ( is the T-th fold convolution of f t Mathematically the function can be obtained using the recursive relation
and the identity f1^ = f5(
23
-2 I 8
gt o
r
CO
o a
CM
X
00
24
Because X + 1 depends only on Xt the process X satisfies the Markov property
PrXt+l=jX0 = i0Xt_l=it_vXt = i) = PrXt+1=jXt = i
and therefore is a discrete time Markov chain Further because the probability mass function
of the random variable pound is independent of t and thus so too are the probability mass functions
of the aggregated demand the Markov chain is stationary19
D The Transition Probability Matrix
The stationary transition probability p(gt is defined as the probability of X + 1 being in state
j given that X is in state i independent of the period t In the inventory model p-- represents
the probability of starting the next review period with j items on the shelf given there are i units
on hand at the start of the current period By convention the transition probabilities are
arranged in an (S + l)x(S + 1) matrix P such that (P)y = p- Thus the (i + l)st row of P contains
the probability distribution for the stock on hand at the beginning of the next period given that
there are i units on hand at the start of the current period The matrix P is known as the
transition probability matrix Note that since we are concerned with a steady state analysis we
need not consider the possibility of initial stock levels greater than S once the inventory level
is below S it can never again exceed S
The transition probability ptj is calculated by expanding (1) to include all possible
instances of demand that allow for a change in inventory from i units at the beginning of a
period to j units at the beginning of the next period For example suppose the inventory policy
(510) is in place 2 items are on hand at the start of the current review period and 7 items are
1 9 Henceforth the subscripts t and d are omitted from the daily and aggregate demand variables for the sake of brevity
25
on hand at the start of the next period Then only three scenarios are possible
1) No items are sold during the lead time (meaning that the stock level increases to 10
after replenishment) and 3 items are sold during the remainder of the period
2) One item is sold during the lead time and 2 items are sold during the remainder of
the period
3) Two items are sold during the lead time (though demand could exceed 2) and 1 item
is sold during the remainder of the period
The transition probability p 2 7 is the sum of the probabilities of the various scenarios and is
computed by
p2J = PrDL=0PrDT_L = 3] + PrDL = l] Pr[DT_L=2 + PrDL2] PrDT_L = l]
In general the transition probabilities for the inventory model are calculated as follows
Case 1 The lead time is less than the review period
For 0 lt lt s
Pij
i-l pound [PrDL=kPrDT_LgtS-k] + PrDLgtiPrDT_LgtS-i if j = 0
i - l
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i if 0 lt j ltL S-i (2) k=0 s-j
E [PrDL=kPrDT_L = S-j-k] if S-i ltj^S k=0
26
For s lt i lt S
PrDTzi]
0 p = PrDT=i-j)
ifj = 0 ifOltjzi ifiltjltS
(3)
Case 2 The lead time equals the review period
For 0 lt i lt s
Pa
0 PrDTzi) PrDT = S-j
ifOltLJlt S-i ifj = S-i if S-i ltj plusmn S
(4)
For s lt i lt S use (3)
E The Steady State Probabilities
Provided 1) there is a positive probability of non-zero demand during a review period
and 2) there is a positive probability of zero demand during a review period20 then the
Markov chain described by (1) has a limiting probability distribution ir = (ir0 TTu irs)
where 0 lt IT lt 1 for j = 0 1 S and E 7ry = 1 Further this limiting distribution is
independent of the initial state In other words the probability of finding the Markov chain in
a particular state in the long-run converges to a nonnegative number no matter in which state
the chain began at time 0 The limiting distribution is the unique nonnegative solution of the
equations
2 0 That is 0 lt PrD x = 0 lt 1 Given the nature of the problem this assumption is not very restrictive
27
^ = E ^ - far j = 0 l S (5)
s and pound nk = 1 (6)
For the proof that the limiting distribution is independent of the initial state and is obtained from
(5) and (6) the reader is directed to Appendix C
In terms of the inventory problem 7ry is the steady state probability of having j units of
inventory on hand at the decision epoch However some subsequent calculations are made
easier if the steady state probability of having j units of inventory on the shelf just after
replenishment is known Instead of reformulating the Markov chain these probabilities can be
obtained by shifting the limiting distribution TT Much in the same way that the transition
probabilities are calculated the shifted limiting distribution t] is obtained by accounting for
all possible instances of demand that allow for the shifted inventory position For example
suppose that the policy (510) has the limiting distribution TT In order to have say 8 units on
hand immediately after replenishment one of the following must occur
1) Ten items are on hand at the decision epoch and 2 items are sold during the lead time
2) Nine items are on hand at the decision epoch and 1 item is sold during the lead time
3) Eight items are on hand at the decision epoch and nothing is sold during the lead time
4) Either 2 3 4 or 5 items are on hand at the decision epoch and 2 items are sold during
the lead time
The steady state probability of having 8 units on hand just after replenishment is calculated as
n 8 = n10PrDL = 2] +iz9PrDL = l] +n8PrDL = 0 +[iz5 + iz4 + iz3]PrDL = 2 +n2PrDLgt2
28
In general the shifted steady state probabilities are given by
s pound nPrDLgti ifj = 0
i=s+l S
pound PrDL = i-j] ifl plusmnjltS-s i=max(s+l)
S = pound 7tjirZ)L = i-+7i 5 FrD i ^5 ifj = 5-5
i=max(s+l)
^ 7 1 ^ ^ = 1-7+ pound TtiFrZgti=5-y+iis_PrD1^S-7 ifS-sltjltS i=max(gt+l) i=S-j+l
(7)
F The Cost of Inventory
For this problem the cost of inventory has two components (i) a fixed ordering cost
cf incurred whenever an order is placed and (ii) a holding cost cv incurred daily for each item
held in inventory The expected cost of inventory for a review period can be calculated by
summing the costs associated with each inventory position under steady state conditions
Because a simple holding rate is used this cost is simply adjusted by number of review periods
in a year to obtain the expected annual cost of inventory
The ordering cost for a review period is relatively straight forward to calculate either
an order is placed in which case the order cost is incurred or no order is placed in which case
no cost is incurred According to the rules of the inventory policy orders are placed only if
the stock on hand at the beginning of a review period is less than or equal to s Further the
probability that the review period begins with the inventory in one of these positions is equal
to the sum of the first (s + 1) steady state probabilities Therefore the expected ordering cost
29
for a review period is given by
E[OC] = cfY n y=o
Unlike the simple structure of the ordering cost the holding cost is incurred daily for
each item held in inventory Therefore the daily holding costs associated with all possible
inventory positions must be weighted and summed to obtain the holding cost for the review
period In order to make the calculations less complicated a shifted review period beginning
immediately after replenishment and ending just prior to the next replenishment is considered
Define e(0 to be the expected number of items on hand to start day i of the shifted
review period and let g(i f) denote the expected number of items on hand to start day i given
that there were j items immediately following replenishment21 The function g(z j) is the sum
of the probabilities of possible demand weighted by the resulting stock levels that is
g(ij) = j^kPriD^j-k)
To obtain the expected number of items on hand to start day i independent of j the above
function is summed over all possible values of j and weighted by the corresponding steady state
probabilities yielding
s j ed) = pound r 5 gt P r Z ) = - pound
7=0 k=
2 1 In other words g(if) is the expected number of items on hand to start day i given e(0)=v
30
The expected holding cost for a review period is then given by
T
E[HC] = $gt v e(0 i=i
i=l =0 k=l
where c v equals the simple daily holding rate multiplied by the cost of the item
Although differently defined review periods are used to calculate the above expected
costs the costs can still be summed to obtain the expected cost of inventory for a review
period The expected costs are calculated based on steady state conditions and therefore
represent the costs expected to be incurred during any T consecutive days Summing the above
two expected costs and multiplying the sum by the number of review periods in a year yields
the expected annual cost of inventory
E[AC] = mdash[E[OC]+E[HC]]
T S j 1 ( g ) 365
j=0 i=l j=0 fc=l
G The Customer Service Level
There are many ways to define customer service and the most appropriate definition
depends upon the nature of the business and the perspective of management Two commonly
used definitions are 1) the proportion of periods in which all demand is met and 2) the
proportion of demand satisfied immediately from inventory Although the former definition is
often used because of its simplicity the latter definition is closer to what one commonly means
by service (Lee and Nahmias 1993) A third definition also relevant in retail environments
31
is the probability that lost sales do not exceed some critical number Other definitions such
as probability that backorders are filled within a certain amount of time are more applicable
to industrial and manufacturing settings where backlogging demand is common
Given the retail environment with the possibility of lost sales that exists at Canadian Tire
Pacific Associates management is concerned primarily with the fraction of sales that are lost
For example management views the situation in which demand exceeds stock by one unit every
period more favourably than that in which the same demand exceeds stock by three units every
other period For this reason the proportion of demand satisfied immediately from inventory
is the most appropriate measure of customer service
The customer service level for a single review period CSLRP is given by
r bdquo T _ Demand satisfied during RP Total demand during RP
Because we are interested in the long-run behaviour of the system a measure of the steady state
customer service C S L must be obtained As shown in Appendix D the correct measure is
poundpoundpound _ E[Demand satisfied during RP] E[Total demand during RP]
which can be rewritten as
pound pound pound _ j _ E[Demand not satisfied during RP] ^ E[Total demand during RP]
Because of the steady state conditions the above customer service level can be estimated
from any period of T consecutive days As was done for one of the cost calculations the T-day
period beginning just after replenishment is considered Suppose that there are j units of
inventory on hand immediately following replenishment Then the conditional customer service
32
level is
CSL j = 1 E[(DT-j)l
E[DT] (10)
The denominator in the second term is merely the expect demand during the period
E[DT] = 7gt (11)
where p is the mean of the random daily demand variable pound The numerator which is the
conditional expected demand that is not satisfied during the T-day period expands to
7-1
E[(DT-j)+] = T u - j + YU-k)PrDT = k] k=0
(12)
The reader is directed to Appendix E for a mathematical justification of (12) In order to obtain
the unconditional expected demand not satisfied (12) is applied to all possible values of j and
a weighted sum of the terms is calculated The result is given by
E[Demand not satisfied] = Y j =0
y-i Ti - j + 1pound(j-k)PrDT = k
S j-1
= - E[I] + Y0-k)Pr[DT=k) =0 it=0
(13)
where E[I] denotes the steady state inventory level Finally the customer service level is
obtained by the substituting (11) and (13) into (9) yielding
CSL = 1
s j-l
Ti - E[I] + Jgty Y(J-k)PrDT=k]
m n J2VjTU-k)PrDT=k Eil J=Q fc=o
(14)
33
H A Methodology for Evaluating an (sS) Policy
In this section a brief methodology summarizing the main results of the model is
presented The methodology can be applied to evaluate a given (sS) policy in terms of its cost
and its resulting customer service level Given the probability mass function of the daily
demand f the duration of the review period T the length of the lead time L the fixed cost
of placing an order cf and the daily unit cost of holding inventory cv
1) Calculate the aggregated demand probability mass functions fDT fDL and f D x L as the T-th
fold L-th fold and (T-L)th fold convolutions of f respectively
2) Generate the transition probability matrix using either equation (2) or (4) and equation (3)
3) Calculate the limiting distribution TT from (5) and (6)
4) Obtain the L-day shifted limiting distribution rj using (7)
5) Calculate the expected annual cost of inventory using (8)
6) Determine the customer service level using (14)
34
IV A N A L G O R I T H M F O R OBTAINING T H E O P T I M A L (sS) P O L I C Y
A Introduction
The methodology developed in the previous chapter can be used to calculate the cost and
service level associated with a given (sS) policy In this chapter an algorithm that finds the
feasible policy yielding the lowest cost is developed A policy is feasible if it satisfies both the
basic condition 0 lt s lt S and the imposed constraint on the customer service level2 2 In
order to find the optimal policy the algorithm must combine the methodology for evaluating
a single policy with a search technique
Search techniques are evaluated in terms of two somewhat antithetic criteria On the one
hand the search should locate the optimal solution or at least a near optimal solution on
the other hand the search should take as little time as possible Many search techniques
guarantee optimality provided the objective function and constraints exhibit certain properties
such as convexity However even if such a search technique also guarantees its termination
in polynomial time the search might take too long to be practical Alternatively some search
techniques provide reasonable though sub-optimal solutions very quickly These techniques
often called heuristics must be evaluated in terms of both their speed and the accuracy of their
solutions The choice of a heuristic over a search that guarantees optimality depends upon the
nature of the feasible space the need for accuracy and the cost of time
Given the complexity of the cost and customer service level functions it is very difficult
to show theoretically for what if any combinations of demand and costs the feasible space is
convex However a plot of the objective function for a single product may be obtained by
2 2 Management specified that each policy must provide a customer service level of at least 975 Therefore the algorithm must incorporate the constraint CSL gt 0975
35
evaluating the costs for a number of policies within a grid When the service level constraint
is included in these plots maps of the feasible space are obtained Examination of the
maps for several products suggests that the space is convex over most regions however
maps for some products reveal some regions of non-convexity Unfortunately there is no
way of knowing the degree of non-convexity for other products other stores or different costs
estimates without a more rigorous survey of the feasible space Therefore if one of the
techniques that guarantee optimality under the condition of convexity is employed the search
would have to be evaluated as a heuristic Instead as a first step to finding a practical search
technique a crude search that guarantees optimality under virtually all conditions is
investigated
B A Grid Search
The simplest search technique that guarantees optimality merely evaluates all policies in
the grid defined by 0 lt s lt S and 0 lt Sm i n lt S lt S m a x where Sm i n and S m a x are
some predefined values That is the grid search is a brute force method that examines every
policy within the grid 2 3 Although the number of policies that must be examined is large the
grid search is guaranteed to find the optimal policy provided that S o p t is contained in the grid
that is provided Sm i n lt S o p t lt Sm a x The grid search algorithm proceeds by generating the
transition probability matrix for the policy (0Smin) and then evaluating the service level
associated with that policy If the policy is feasible24 the cost associated with the policy is
2 3 The total number of policies evaluated is the sum of the first Sm a x integers less the sum of the first Smin-1 integers Numerically [(l2)(Sm a x)(Sm a x+l) - (l2)(Smin-l)(Smin)] policies are examined
2 4 That is if the service level is adequate
36
calculated and compared to the current lowest cost The procedure continues until all points
in the grid have been examined and the optimal policy has been found A flow chart of the grid
search algorithm is shown in Figure 2
In order to assess the grid search the algorithm was coded and compiled into an
executable program The program was run for two products (a medium-demand product and
a high-demand product) and with four values of Sm a x In each run Sm i n was taken to be zero
The following times were recorded for each trial
T P M - the amount of time spent generating the transition probability matrix
GAUSS - the amount of time spent solving for the steady state probabilities
COSTS - the amount of time spent calculating the expected annual costs
SERVICE - the amount of time spent determining the customer service levels
T O T A L - the total execution time of the program
The columns entitled Grid Search in Tables 2 and 3 summarize the results of the trials All
times are recorded in seconds as required by a 486DX33 MHz personal computer with an
empty buffer memory
Three results are evident from the tables First the vast majority of the execution time
is spent generating transition probability matrices and then solving for the steady state
probabilities with the time being split almost equally between the two tasks Second the total
execution time of the algorithm increases exponentially as Sm a x increases For product 206917
doubling S^ from 30 to 60 led to an increase in the execution time of more than 2100 (from
172 seconds to 3661 seconds) Third the grid search algorithm as it stands does not appear
to be adequate for the problem at hand Given the large number of products that must be
evaluated the algorithm is much too slow to be implementable
37
Calculate the demand probability functions
Initialize s = 0 S = Smin] cost = 10A5
s = s+1
Calculate the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Is s = S-l
Yes
Is S = Smax No
Yes
Print results (sS) cost
s = 0 S = S+1
Figure 2 The flow chart of the grid search algorithm
38
Table 2 Execution times of the algorithms for product 200001 a 30-amp inline fuse
(in seconds)
-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
10 T P M 006 010 001
GAUSS 010 006 001
COST 005 005 001
SERVICE 001 001 001
T O T A L 050 035 027
20 T P M 126 021 010
GAUSS 119 160 023
COST 027 026 001
SERVICE 017 016 001
T O T A L 318 236 055
30 T P M 703 096 010
GAUSS 757 801 093
COST 079 085 001
SERVICE 047 042 001
T O T A L 1664 1137 126
40 T P M 2257 163 015
GAUSS 2958 3003 206
COST 313 329 001
SERVICE 092 083 011
T O T A L 5871 3851 285
39
Table 3 Execution times of the algorithms for product 206917 a 6 solder connector
(in seconds)
bull-max Subroutine Grid Search Grid Search
Updating T P M Heuristic
30 T P M 717 067 006
GAUSS 762 880 093
COST 098 087 010
SERVICE 016 021 006
T O T A L 1720 1176 220
40 T P M 2390 157 022
GAUSS 2861 2911 209
COST 219 227 006
SERVICE 080 088 011
T O T A L 5827 3790 362
50 T P M 6691 413 010
GAUSS 7994 8201 472
COST 568 577 016
SERVICE 212 197 005
T O T A L 15840 10041 654
60 T P M 15509 894 040
GAUSS 18607 18951 876
COST 1367 1353 038
SERVICE 350 359 022
T O T A L 36614 22794 1120
40
C A Technique for Updating the Transition Probability Matrix
As was noted in the previous section approximately half of the execution time of the grid
search algorithm is spent generating transition probability matrices Furthermore the amount
of time increases exponentially as Sm a x increases This increase is exponential for two reasons
first the number of transition matrices that must be calculated is a function of S^ squared and
second the average size of the matrices and hence the average number of calculations per
matrix increases with Sm a x For example when S m a x equals 30 the transition probability matrix
must be generated 465 times with the largest matrix having dimensions (31x31) When Sm a x
equals 40 the matrix must be generated 820 times with 355 of the matrices having dimensions
larger than (31x31) The performance of the algorithm could be improved considerably if
either the number of matrices that must be generated or the number of calculations per matrix
is reduced This section introduces a technique that accomplishes the latter by updating the
transition probability matrix for a new policy instead of generating it anew for each policy
A new policy (s+mS)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (s+mS) where m is any integer satisfying 0 lt s+m lt S has
associated with it the (S + l)x(S + 1) transition probability matrix J Then T can be obtained by
recalculating only m rows of P Recall that the equations for generating a transition
probability matrix are divided into two sets based upon the row being calculated equations (2)
or (4) for rows 0 through s and (3) for rows (s + 1) through S The equations themselves are
independent of s only the limits defining the cases contain s Therefore only the m rows
that are affected by the change in the limits need to be recalculated The following updating
technique can be used to obtain 7
41
1) If m gt 0 rows i = (s + 1) (s+2) (s+m) are recalculated using (2) or (4)
2) If m lt 0 rows i = (s-1) (s-2) (s-m) are recalculated using (3)
3) All other rows of T are identical to those of P
The reader is directed to Appendix F for a mathematical justification of the technique
A new policy (sS+m)
Suppose the policy (sS) has associated with it the (S + l)x(S + l) transition probability
matrix P and the policy (sS+m) where m is any positive integer has associated with it the
(S+m+l)x(S+m+l) transition probability matrix P Then T can be obtained by modifying
each row of P and adding m additional rows and columns The updating technique is not as
simple as that for a new policy (s+mS) for two reasons the dimensions of P and T differ and
the equations for generating a transition probability matrix contain S Nevertheless an updating
technique that requires much less computing time than generating the matrix anew can be
developed The following technique can be used to obtain P
1) For rows i from 0 through s
For columns j from 0 through m recalculate using (2) or (4)
For columns j from (m+1) through (S+m) enter the (j-m)th column entry of P
2) For rows i from (s + 1) through S
For columns j from 0 through S enter the corresponding value from P
For columns j from (S + 1) through (S+m) enter 0
3) For rows i from (S + 1) through (S+m) recalculate using (3)
The above technique is justified mathematically in Appendix G
42
The modified algorithm
The updating technique can be easily incorporated into the grid search algorithm with
only a slight change in the manner in which s is incremented Figure 3 shows the flow chart
of the new algorithm As before the algorithm was coded and compiled into an executable
program and the various execution times were recorded The results are listed in Tables 2 and
3 under the columns Grid Search Updating TPM
Updating the transition probability matrix does improve the performance of the
algorithm The time required to generate the transition probability matrices is reduced by
approximately 90 This translates to a reduction in total execution time of approximately
30 Not surprisingly the reductions are greater for large values of Sm a x However despite
this seemly significant improvement a decrease of only approximately 08 seconds is obtained
when S^ equals 20 Further when S ^ equals 30 the algorithm requires over 11 seconds
which is still much too high
The execution time is now dominated by the time required to solve for the steady state
probabilities The steady state probabilities could be solved by using approximation techniques
which are faster than solving the systems exactly however because the probabilities are often
very small numbers the approximation techniques would be unable to provide the required
accuracy The only remaining way to decrease the execution time is to reduce the number of
policies that are evaluated during the search This can be done by either reducing the size of
the grid being searched or reducing the number of policies being evaluated within the grid The
following section introduces a method of reducing the size of the grid by obtaining a lower
bound for S namely Sm i n
43
s = s+k
Calculate the demand probability functions
Initialize s = 0 S = Smin| cost = 105
k= 1
Update the probability transition matrix for (sS)
Evaluate policy (sS) Is service level ^ 0975
No
No
iNo
Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Ifk= 1 iss = S-l If k =-1 is s = 0
Yes
Is S = Smax No
Yes
Print results (sS) cost
If k=l s=s+l S = S+1
Figure 3 The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix
44
D A Lower Bound on S
As mentioned earlier the size of the grid is specified by the number of policies within
the domain defined by 0 lt s lt S and 0 lt Smin lt S lt Smax Thus the size of the grid
and hence the total amount of computation time can be reduced by obtaining tight bounds on
S Unfortunately because of the extreme non-linearity of the objection function and the service
level constraint obtaining a mathematical upper bound on S is very difficult and beyond the
scope of this work This section introduces a method for obtaining a lower bound on S25
For a given value of S an upper bound on the customer service level can be found as
follows Suppose that there are S units of inventory on the shelf at the beginning of every
review period regardless of demand No (sS) policy can provide a higher level of customer
service because there exists a positive probability of beginning a review period with less than
S units on the shelf Thus the customer service level associated with starting each review
period with S units on the shelf is an upper bound on the customer service level for any (sS)
policy From (10) this level is
E[(DT-SY] CSL 5 = 1 - T mdash mdash - ( 1 5 gt
E[DT]
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = mdash- - J2(S-k)PrDT = k] (16)
To obtain Smin use (16) to find the largest value of S with a customer service level less than
0975
There are two criteria for a good lower bound on S the bound must be no larger than
This method was proposed by Kaan Katircioglu
45
S o p t and it must be very close to So p t These criteria ensure that the optimal policy will be
contained in the search grid and that the size of the grid is reduced by as much as possible
Based on these criteria the above method of obtaining a lower bound is assessed A value for
S m i n is obtained for each of the products in product category 20 and compared with the
corresponding value of S o p t 2 6 The results are illustrated in Figure 4 which shows the number
of occurrences of various Sm i n and S o p t combinations Note that a point lying on the 45deg line
represents a perfect bound while a point lying close to the S o p t axis represents a very loose
bound The absence of any points above the 45deg line indicates that the first criterion is satisfied
in each instance the method did not generate a value of Sm i n exceeding the corresponding value
of So p t Moreover the bounds are reasonably tight for 85 of the products analyzed that
is for those products with S o p t equal to 10 or less27 However as S o p t increases the bounds
become steadily worse Because values of S o p t are likely to be larger for these products at the
ten Jumbo and Extra Jumbo stores and for other products with higher demand the lower bounds
are not expected to be very tight in general
Although obtaining the bound Sm i n does reduce the size of the grid the corresponding
reduction in the execution time of the algorithm is miriimal For example if S^ equals 60 and
a value of 30 is obtained for Sm i n the program would still require approximately 215 seconds
to search the grid (compared to the 228 seconds required without a lower bound on S) Because
the execution time increases exponentially with So p t a tight upper bound on S would likely have
a more significant impact on reducing the execution time of the algorithm Further research
on this issue is required
2 6 The optimal policy for each product was obtained using a grid search with an extremely large upper bound
2 7 On average Sm i n is approximately half of S o p t for these products
46
47
The only remaining approach to improving the algorithm is to modify the search so that
fewer policies within the grid are evaluated Toward this goal assumptions can be made with
respect to the feasible space and a heuristic search can be developed based on these
assumptions
E A Heuristic Search
As mentioned previously in this chapter a map of the feasible space for each of
several products was obtained Upon closer examination the maps illustrate two patterns
without exception for a given value of S both the cost and the customer service level increase
as s increases The following intuitive argument is offered as a possible explanation for the
observed behaviour When S is held constant increasing s results in more instances in which
an order is placed upon review Hence the average stock level would increase which in turn
would lead to an increase in the cost and the customer service level28 With this in mind a
heuristic search based on the following assumptions is developed for a given value of S both
the cost and the customer service level are monotonically increasing functions of s
In general the heuristic proceeds as follows Having just incremented S by one the
customer service level of the policy (sS) is evaluated If the policy is feasible s is decreased
until the lowest value of s producing a feasible policy is found If the policy is not feasible
s is increased until either the cost exceeds the current lowest cost for a feasible policy a
feasible policy is obtained or s equals S-l In the event that a feasible policy is found the cost
2 8 In order to prove that the customer service level increases as s increases it would be sufficient to show that the probability of placing an order increases as s increases Such a result might be possible if assumptions regarding the demand function are made Further if both the probability of placing an order and the average stock level increase then both the ordering cost and the holding cost would increase No proofs are offered here
48
of the policy is calculated if the cost of the policy is less than the current lowest cost the new
policy becomes the current best Finally S is increased by one and the process repeats
provided S does not exceed some predefined value Sm a x The flow chart of the algorithm
incorporating the heuristic search is shown in Figure 5 Note that the algorithm begins by
attempting to improve on the lower bound Sm i n the policy (Sm i n-lSm i n) is evaluated and if it
is not feasible S m i n is increased by one The improvement continues until a feasible policy is
found
As previously mentioned a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions To evaluate the heuristic on the basis of speed the same
approach used to evaluate the previous algorithms is employed The columns entitled
Heuristic in Tables 2 and 3 contain the various execution times of the heuristic The heuristic
is a vast improvement over the previous search techniques the reduction in execution time is
enormous and becomes more so as S m a x increases For a S m a x of 20 the reduction is
approximately 75 of the time required by the grid search algorithm29 and for a S m a x of 60
that reduction soars to over 95 More importantly the heuristic can search a grid with a
of 40 in under 4 seconds or a grid with a S m a x of 60 in under 12 seconds These low execution
times should be sufficient to allow for a large number of products to be analyzed in a
reasonable amount of time
In order to further assess the practicability of the heuristic the total time required by the
heuristic to find solutions for the entire product category was determined and compared to the
corresponding time for the grid search algorithm With a priori knowledge of the optimal
solutions conservative yet reasonable values of S m a x were selected and used by both of the
2 9 Hereafter grid search algorithm refers to the algorithm utilizing the grid search the updating technique and the lower bound Sm i n
49
Calculate the demand probability functions
Calculate Smin S = Smin s = S-l
S = S+l s = S-l t
Update the probability transition matrix for (sS)
No Is service level pound 0975 Yes
No Is service level ^ 0975
Yes
Is cost lt cost No
Yes
Is s lt S-l No
Yes
s = s+l
Update the probability transition matrix for (sS)
Is service level pound 0975
Yes
Is cost lt cost No
Yes
s = s S = S cost = cost
s = s-l
No
Update the probability transition matrix for (sS)
S = S+l
Is s 2 0 Yes
Update the probability transition matrix for (sS)
Is service level pound 0975
No
s = s+l
No
No
Is S = Smax
^Yes
Is cost lt cost
Yes
s = s S = S cost = cost
Print results (sS) cost
Figure 5 The flow chart of the heuristic algorithm
50
algorithms30 The grid search algorithm required approximately 9 hours and 41 minutes to
find the solutions while the heuristic required only slightly more than 23 minutes Based on
speed the heuristic is preferable to the grid search algorithm
Finally to evaluate the heuristic based on the accuracy of its solutions its solutions were
compared to the previously obtained optimal policies Without exception the heuristic
algorithm found the optimal policy Although there is no guarantee that the heuristic will find
the optimal solution for different products or different demand functions the heuristic appears
to work extremely well Based on the fast execution time and the apparent accuracy of the
solutions the heuristic will be used in the development of the inventory tool
3 0 For the test the following values of Sm a x were used 20 (273 products) 30 (19) 50 (23) 100 (3) and 125 (2)
51
V T H E I N T E R F A C E
With the model formulated and the algorithm developed the only remaining task in the
development of the prototype is the creation the interface In fact two interfaces are created
one that displays results in terms of minimum fills and target levels and one that displays
results in terms of reorder points and target levels To be consistent with the previous chapters
the latter interface is described here31
In its present form the interface allows the manager to set review parameters to
compare optimal and current policies and to evaluate alternate policies From the main menu
the manager selects the product store duration of the review period length of the lead time
and value of Sm a x Once the parameters are set the system calculates the optimal policy and
then evaluates the current policy displaying results as they are obtained In particular the
reorder point target level expected annual cost and expected customer service level are
displayed for each policy If a current policy meets the desired customer service level the
expected annual savings of the optimal policy are displayed in terms of both dollars and
percentage of current cost otherwise the value of the current customer service level is
displayed in red to indicate that it is deficient Finally the manager can choose to evaluate
alternate policies or to return to the main menu
Although the prototype is far from the ultimate integrated inventory control system it
is still valuable to management As mentioned in Chapter II inventory policies at Canadian
Tire Pacific Associates are currently based on rules of thumb that incorporate marketing
3 1 Because significant changes to the interface are expected as feedback from management is received and as the system is brought on-line only a brief description of the present interface is given
52
strategies The prototype provides management with a means of determining the proportion of
the cost of inventory that is not attributable to meeting customer demand For example
consider a hypothetical consultation in which the manager chooses to analyze product 200001
a 30-amp inline fuse at store 6 The prototype displays to the manager the current policy of
(1214) which provides a customer service level of 1000 at an annual cost of $748 and the
optimal policy of (39) which provides a customer service level of 977 at an annual cost of
only $319 If for some reason the manager feels the optimal policy is undesirable he or she
can investigate the additional cost of holding excess inventory Suppose the manager chooses
to evaluate the policy (610) The prototype evaluates the policy and displays the results the
customer service level is 998 and the annual cost is $441 With the alternate policy
virtually all demand is satisfied and the cost of inventory is still reduced by over 40 Thus
the manager ascertains that approximately 40 of the current cost of inventory for this product
is directly attributable to marketing considerations Using the prototype in this way
management can begin to understand better the nature of its inventory costs A description and
graphical depiction of the above hypothetical consultation are presented in Appendix H
As for the technical details of the system the prototype can run on any computer using
the DOS operating system having approximately 420K of available conventional memory and
attached to a V G A or SVGA monitor Further the prototype can be used on a machine without
a math coprocessor however performance is slower The prototype consists of two modules
linked together into one executable program The interface module contains the various
interactive subroutines and the main module contains the methodology of the model and the
logic of the heuristic search Both modules are coded in Fortran and compiled using Microsoft
Fortran 50 which provides many extensions to standard Fortran The source codes for the
interface module and the main module are listed in Appendix I and Appendix J
53
respectively
In addition to the above technical specifications the program requires the presence of
certain files in certain directories The program uses the distribution files mentioned in
Chapter II to read the unit costs and the empirical demand functions Each product has a
unique distribution file the name of which is the six digit product number followed by the
extension dst The text file containing the existing policies at each store must be located in
the same directory as the distribution files Finally the file tmsrbfon which contains the
font used by the interface must be located in the directory from which the program is executed
In its future versions the system should be more automated and more user-friendly
Rather than having the manager choose an upper bound for the search the algorithm should
incorporate a method of determining Sm a x For this to happen either a theoretical upper bound
must be obtained or a heuristic for terminating the search must be developed Also the amount
of time spent waiting for calculations to be performed can be reduced by reading the optimal
and current policies and their associated costs and customer service levels from a file or
database This solution file could be created any time prior to the consultation by running
the system in a batch mode The interface should allow the manager to change cost estimates
and service level values view results graphically and print results and summary documents
Finally the system should provide an option for automatically incrementing the product andor
store during a consultation This option would enable a manager to review quickly the
inventory policy of a product at each store
54
VI R E S U L T S AND SENSITIVITY ANALYSIS
A Comparison of Current Policies to Optimal Policies
In order to estimate the potential savings of implementing optimal policies the solutions
obtained in the Chapter IV are analyzed in more detail For each product the current policy
is evaluated and then compared to the optimal policy with respect to cost and customer service
level Finally the potential savings of the optimal policies are extrapolated to all products and
all stores
Of the 420 products examined each of 37 products has an existing policy that fails to
provide the desired customer service level of 975 However most of these policies just
fail to do so only 4 policies provide a customer service level of less than 90 Table 4
provides a list of these 37 products each with its current customer service level its current
annual cost and the additional cost of its optimal policy3 2 Two comments regarding Table
4 are in order First the current customer service level for product 203312 an amber
driveway marker is listed at a misleading 303 Examination of the demand distribution
reveals that this product was sold on only 1 of the 307 days during which sales data were
collected and on that day 13 of the markers were sold Clearly this data point constitutes
either an error or an unusual event the current policy of (34) does not allow for more than 4
items to be sold per review period Second the additional cost of the optimal policy for each
of 5 products is negative In other words for each of these products the current policy which
fails to provide the desired customer service level costs more than the optimal policy which
3 2 This is the difference between the expected annual cost of the optimal policy and the annual cost of the current policy It is the minimum additional cost required to increase the customer service level to at least 975
55
Table 4 Products with insufficient existing policies
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
204570 973 222 -025
203053 973 248 009
206550 972 118 042
206547 972 105 035
206565 972 146 056
203702 972 340 157
206876 972 155 061
205752 972 330 153
205922 972 108 036
206857 972 180 073
205393 972 190 -003
201513 971 345 015
203405 970 255 037
203069 968 295 -048
203071 967 321 -001
205635 967 390 029
203914 966 460 160
204601 962 252 061
203326 960 144 014
202003 958 876 437
206516 958 112 029
206517 958 283 120
206350 958 333 147
205932 958 180 066
203936 952 598 294
56
Product Current CSL ()
Current Annual Cost ($)
Additional Cost of the Optimal Policy ($)
206932 974 204 -051
203939 948 413 193
203977 945 1216 1242
206551 945 132 077
205389 934 598 047
203590 927 1223 607
206567 919 122 070
203591 905 1228 834
205390 887 291 074
203318 833 136 084
206393 776 319 289
203312 303 237 511
provides at least the desired customer service level For the 36 products the total additional
cost of the optimal policies is $542033
Of the remaining 383 products most have an existing policy that provides a customer
service level well above 975 When the customer service levels are rounded to one decimal
each of 253 products has a customer service level of 1000 and each of 347 products has a
customer service level of at least 990 In contrast each of only 58 products has an optimal
policy that yields a customer service level of at least 99034 For each of 37 products the
3 3 The cost associated with product 203312 is not included in the total
3 4 Optimal policies do not have customer service levels of exactly 975 because the function is discrete For low-demand products a unit step in s or S results in a relatively large change in the customer service level
57
current policy is identical to the optimal policy
The extremely high level of service provided by most policies allows for substantial
savings in the cost of inventory With current policies the estimated annual cost of inventory
for all 420 products is $420743 whereas the expected annual cost of the optimal policies is
only $186884 This amounts to a savings of approximately $2340 or over 55 of the current
cost of inventory
In order to further assess the savings the difference between the costs of the current
policies and the costs of the optimal policies are examined in more detail For each of the 383
products whose existing policy provides a customer service level above 975 the difference
between the estimated annual cost of the existing policy and the expected annual cost of the
optimal policy is calculated The resulting histograms of the savings in (a) dollars and (b)
percentage of current cost are shown in Figure 6 The particulars for the current and optimal
policies for all 420 products are provided in Appendix K
As evident from Figure 6(a) the majority of the expected savings in absolute terms
comes from only six products In order to examine these products more closely the current
and optimal policies along with the associated costs and savings for each of the six products
are listed in Table 5 Each current policy is very different than its corresponding optimal
policy resulting in excessive inventory for each product In fact over half of the total expected
savings could be realized by implementing the optimal policy just for each of these six products
Interestingly five of the six products are sealed beam headlights
58
90
10 - 20 30 - 40 50 - 60 70 - 80 90- 100
Savings ()
(b)
Figure 6 The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost
59
Table 5 Products with the largest potential absolute savings
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
C S L
()
s S Cost ($)
C S L () ($) ()
2036801 194 200 64014 1000 37 48 bull 9245 975 54769 856
2036772 94 100 23652 1000 18 22 3850 978 19802 837
2036723 78 90 23043 1000 19 23 4454 975 18589 807
2030944 145 175 19522 1000 34 45 3727 975 15795 809
2036425 48 60 10491 1000 13 17 2682 977 7809 744
2036556 68 80 7265 1000 14 22 1699 975 5566 766
1 H6054 rectangular sealed beam headlight 2 H4656 rectangular sealed beam headlight 3 6053 rectangular sealed beam headlight 4 9004 halogen bulb 5 4652 rectangular sealed beam headlight 6 6104 7 sealed beam headlight
Although Figure 6(a) seems to indicate that the majority of the current policies are close
in cost to the optimal policies this is very misleading For example suppose the optimal policy
for a product costs $1 and that the current policy costs $2 In absolute terms the optimal
policy saves only $1 but in relative terms the optimal policy saves 50 of the current cost
When savings are viewed in this manner as in Figure 6(b) it is clear that substantial savings
can be realized for the majority of the products In fact both the mode and the mean of the
savings are between 40 and 50 of the current costs
In order to extrapolate the above savings to obtain the potential savings for product
category 20 at all 21 stores the differences between stores must be considered During the
60
pilot study the current policy for each of several products at each size of store was evaluated
The study suggested that medium and large stores have a similar amount of excess
inventory and that jumbo and extra jumbo stores have much more excess inventory One
could reasonably expect that the additional excess inventory allows for higher savings to be
realized at the jumbo and extra jumbo stores Thus because 18 of the 21 stores are
medium or larger the expected 40-50 savings at store 6 can be viewed as a lower bound
on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies
for product category 20 in all its stores
Finally in order to obtain the overall potential savings the expected savings from
product category 20 must be extrapolated to all product categories Ideally the proportion of
inventory comprising each product category and the relative savings that can be realized for
each category would be used to obtain a good estimate of the overall potential savings
However as this information is not known only a crude extrapolation is possible Thus the
analysis proceeds under the assumption that a 40-50 savings can be realized in each product
category35
Before an estimate of the total potential savings in absolute terms can be obtained the
proportion of the current inventory to which the savings apply must be determined Up to this
point the analysis has been concerned solely with reducing inventory at the stores However
it is inappropriate to perform further analysis without considering the entire inventory system
including the central warehouse Because the lead time for orders from Toronto is highly
variable and considerably greater than those at individual stores Canadian Tire Pacific
3 5 During the pilot study the current policies for a paint brush and an ironing board were evaluated and found to result in excess inventory similar to that of product category 20 Although this in no way justifies the assumption it does lend some support
61
Associates must keep a fairly high safety stock at the warehouse Without knowing the
proportion of inventory serving as the safety stock it is inappropriate to assume any reduction
in inventory at the warehouse is possible Therefore the relative savings of implementing
optimal policies is applied only to the inventory held in the stores36 Of the estimated $28
million in inventory approximately half is held in the stores therefore the 40-50 savings
translates to a savings of approximately $55 to $7 million per year
B Sensitivity Analysis on the Ordering Cost and Holding Rate
The above analysis was based on estimates of the ordering cost and the annual unit
holding rate37 provided by management As described in Chapter II these estimates
incorporate a number of costs that are difficult to quantify or that are speculative Therefore
there is some question as to the accuracy of the estimates In this section errors of +$0015
in the ordering cost and +5 in the holding cost are assumed in order to determine the
sensitivity of the model to errors in these variables38
The analysis proceeds as follows Based on an ordering cost of $0080 and a holding
rate of 30 the optimal policies from the previous section were obtained39 Then assuming
3 6 Of course this assumes that the excess inventory currently held in the stores is not required as part of the safety stock Based on the large amount of inventory at the warehouse this assumption seems reasonable
3 7 Hereafter simply referred to as the holding rate
3 8 An error of +$0015 in the ordering cost implies an actual ordering cost of $0070 a relative error of approximately 21 and an error of -$0015 implies an actual ordering cost of $0100 a relative error of 15 An error of +5 in the holding rate implies an actual rate of 25 a relative error of 20 and an error of -5 implies an actual holding rate of 35 a relative error of approximately 17
3 9 These policies are referred to as optimal policies for the duration of this chapter
62
the actual ordering cost andor holding rate are different from managements estimates the
heuristic is used to obtain the true optimal policies Finally the optimal policies are
evaluated based on the actual ordering cost and holding rate and then compared to the true
optimal policies For each possible combination of ordering cost and holding rate three
numbers are recorded the number of products with an optimal policy that differs from its
true optimal policy the total cost of implementing the optimal policies given the actual
ordering cost and holding rate and the difference between the cost of implementing the
optimal policies and the cost of implementing the true optimal policies The results of the
analysis are summarized in Table 6
Table 6 A comparison of optimal policies to true optimal policies
Actual Ordering Cost
$0070 $0085 $0100
25 5 products $155439
$002
51 products $160590
$092
88 products $165464
$449
Actual Holding Rate
30 54 products
$181470 $182
48 products $192026
$088
35 79 products
$207270 $574
48 products $212940
$136
2 products $218312
$000
4 0 The table should be read as follows If the actual ordering cost is $0070 and the actual holding rate is 25 then each of 5 products has an optimal policy that is different from its true optimal policy The total cost of implementing the optimal policies is $155439 which is $002 more than implementing the true optimal policies
63
The model appears to be quite insensitive to relative errors in the order of 20 Under
the worst case scenario when one of the variables is over-estimated and the other is undershy
estimated the optimal policies result in a total cost of inventory which is only approximately
3 higher than the cost of the true optimal policies Further because demand is not changed
by errors in these estimates each of the optimal policies still provides a customer service
level of at least 975 under all of the scenarios Finally although the cost of the optimal
policies varies significantly for the different scenarios the relative savings remain virtually
constant Table 7 lists the cost of existing policies and in parenthesis the relative savings of
the optimal policies for each of the different combinations of ordering cost and holding rate
The cost of the existing policies varies in the same manner as that of the optimal policies the
relative savings for each of the scenarios remains around 55 Therefore even in the presence
of such errors in the ordering cost and holding rate the projected savings of implementing the
optimal policies would be unchanged
Table 7 The cost of existing policies and the relative savings of the optimal policies under various scenarios
Actual Ordering Cost
$0070 $0085 $0100
25 $350153 (56)
$358464 (55)
$366764 (55)
Actual Holding Rate
30 $412438 (56)
$429048 (55)
35 $474725 (56)
$483026 (56)
$491320 (56)
64
C Sensitivity Analysis on the Demand Probability Mass Function
In this section the sensitivity of the model to slight changes in the demand probability
mass function is investigated As described in Chapter II the demand function used in the
model is based solely on observed sales however this empirical function is only one possible
instance of the underlying true demand function For example had the data been collected
over a period both starting and finishing one month earlier many of the empirical functions
would be slightly different Consequently depending upon the degree to which the empirical
functions vary and the sensitivity of the model to these variations the optimal policies from
the model might be inaccurate For example recall the case of the amber driveway marker
only thirteen markers were sold and all were sold on the same day Because the empirical
demand function is used the model calculates an optimal policy of (1213) clearly this
policy is impractical Although this example is extreme it does indicate the danger of using
unrealistic empirical demand functions41
As discussed in Chapter II three classes of products were identified namely low
medium and high-demand products For this analysis the same method of classification
is used Two products are selected from each of these groups and two new distribution files
are created for each of the six products For each product one of the files contains two
additional days of data with each day having a demand equal to the maximum observed demand
for that product In the second file only one additional day of data is added but the demand
on that day is two more than the maximum observed demand The situations that could give
4 1 Certainly a rigorous analysis to determine both the extent of variation in the empirical demand functions and the effect of using the empirical functions needs to be performed However such an analysis is beyond the scope of this thesis only a brief analysis that might suggest the degree to which the model is sensitive is performed here
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2 respectively42
The analysis proceeds in a manner similar to the one in the previous section Given the
demand that was originally observed the optimal policies were obtained Now assuming the
true demand function corresponds to the demand under Scenario 1 the true optimal policy
for each product is calculated Then each optimal policy is re-evaluated using the true
demand function and compared to the true optimal policy The analysis is then repeated
assuming the true demand function corresponds to the demand under Scenario 2 Table 8
lists the results for each product and scenario
Table 8 True optimal and optimal policies for each demand scenario
Product 202101 (low demand)
Scenario s s Cost ($) C S L ()
1 True optimal 1 2 470 993
Optimal 1 2 470 993
2 True optimal 2 3 663 976
Optimal 1 2 461 875
Product 203507 (low demand)
Scenario s S Cost ($) C S L ()
1 True optimal 0 3 334 981
Optimal 0 2 258 972
2 True optimal 2 3 508 980
Optimal 0 2 273 702
4 2 To be clear the scenarios are defined as follows Scenario 1 The addition of two days each with a demand of max Scenario 2 The addition of one day with a demand of max+2
where max is the maximum observed daily demand for each product in the sample period
66
Product 201032 (medium demand)
Scenario s S Cost ($) C S L ()
1 True optimal 6 12 1377 976
Optimal 6 11 1338 973
2 True optimal 6 13 1426 977
Optimal 6 11 1338 970
Product 203039 (medium demand)
Scenario s S Cost ($) CSL ()
1 True optimal 5 19 256 975
Optimal 5 16 251 969
2 True optimal 5 20 258 976
Optimal 5 16 249 968
Product 203677 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 18 23 3981 977
Optimal 18 22 3817 972
2 True optimal 18 23 3995 978
Optimal 18 22 3831 973
Product 203680 (high demand)
Scenario s S Cost ($) CSL ()
1 True optimal 38 49 9498 976
Optimal 37 48 9175 971
2 True optimal 37 49 9484 975
Optimal 37 48 9206 972
67
The model is most sensitive to changes or errors in the demand functions of low-
demand products When only one additional day of demand for max+2 units is added to the
data the optimal policy for each of the low-demand products results in a very low customer
service level In fact for one of the products the customer service level drops to almost 70
The increase in demand does lower the customer service level for each of the other the
products but that decrease is slight
The above analysis indicates the need for some kind of smoothing or modelling of the
demand data especially for low-demand products The inherent variation between two
instances of a true demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios Therefore it is likely that many optimal
policies especially those for low-demand products would actually provide a much lower or
much higher customer service level than expected However by smoothing the data the
variation between instances of a true demand function can be reduced and the desired
customer service levels can be achieved
For example suppose that the demand for a product is stationary that the average
demand during the previous period was unusually low and that the optimal policy for this
period is based on the demand during the previous period Because the demand is stationary
the probability that the demand during this period is higher than that during the past period is
more than 50 In other words the probability that the demand during this period is higher
than that for which the optimal policy provides the desired expected customer service level
is greater than 05 Thus expected customer service level for this period is actually less than
that specified Now suppose instead that the optimal policy is based on smoothed data which
reflects very closely the expected demand The probability that the demand during this period
is higher than that for which the optimal policy provides the desired expected customer service
68
level is virtually 05 Thus as a result of smoothing the data the specified customer service
level should be expected
69
VII C O N C L U S I O N
In this thesis we developed a single-product single-location model of the inventory
system at Canadian Tire Pacific Associates Specifically we formulated a Markov chain model
to determine the long-run average cost of inventory for fixed values of s and S and then
developed a heuristic search to find near optimal policies quickly Also as a first step toward
developing an integrated interactive inventory control system we created a prototype of the
interface
According to the analysis performed here Canadian Tire Pacific Associates is currently
holding an excessively large inventory in its stores This study finds that Canadian Tire Pacific
Associates could reduce the cost of inventory for product category 20 at store 6 by
approximately 50 and still maintain customer service levels of at least 975 Further the
mean and modal values of savings for these products are between 40 and 50 Given the
similar excess inventory at the other stores and in all product categories we believe that savings
in this range are possible for all products and stores We estimate that the application of
inventory control as described in this thesis would result in annual savings of $55 to $7
million
Given the large potential savings to Canadian Tire Pacific Associates we recommend
that management proceed with the next phase of the project Specifically we recommend that
the model algorithm and interface be refined further that a forecasting model be developed
and that a data collection and storage scheme be designed
In order to reflect operational changes at Canadian Tire Pacific Associates subsequent
to the formulation of the model modifications must be made to allow for the lead time to
exceed the review period Several of the stores now have three picks per week and as a
70
result orders placed for these stores at one decision epoch do not arrive until after the next
decision epoch Because this violates one of the models assumptions the model must be
modified accordingly Note however that with three picks per week and a review period
of four days orders from only the previous decision epoch are ever outstanding at the current
decision epoch
Also the model should be refined to reflect the fact that the review period is not fixed
over the planning period In its present form the model assumes a fixed review period
however inventory at stores with two picks per week is actually reviewed on a four day -
three day cycle and inventory at stores with three picks per week is reviewed on a three day
- two day - two day cycle Rather than obtaining the steady state costs for fixed review period
the model should calculate the steady state cost for a period of one week during which multiple
replenishments occur Although the solutions are not expected to differ significantly as a result
of the change the model would reflect the actual process more accurately
Further work is also required on the search technique for locating near optimal
policies Although the heuristic search described in this thesis appears to work well the
decision maker must provide an upper bound on S prior to the search In practice this upper
bound is generally not known in advance Thus if the heuristic is to be used either a tight
theoretical bound must be found or a termination heuristic must be developed Alternatively
a new heuristic search could be developed based on additional or different assumptions
regarding the properties of the feasible space For example although some regions of non-
convexity were found for some products much of the feasible space appeared to be convex
A heuristic that assumes a convex feasible space would not require an upper bound on S and
might perform very well However before such a heuristic is implemented further work is
necessary to determine the degree of non-convexity for a variety of demand functions and
71
ordering and holding costs
In addition to making the above modifications we recommend that Canadian Tire Pacific
Associates begin work on the remaining two components of the inventory control system First
in order to allow for products with seasonal demand the system requires a forecasting model
to provide accurate estimates of demand for the coming period Second the system needs a
data collection and storage module that systematically collects sales data for each active
product and for each store and then updates the corresponding demand distributions Because
approximately 25 of demand is expected to result in lost sales under the optimal policies the
sales data will have to be adjusted accordingly in the future Also because the model appears
to be sensitive to slight changes in the demand distribution for low-demand products the
module should incorporate a technique for smoothing the empirical distributions for these
products Further work should be undertaken to determine the extent of variation in the
empirical distributions and the most appropriate smoothing technique However because of
the large amount of data required to forecast seasonal demand and because of the current lack
of historical data we recommend that management proceed immediately with the design of a
data collection scheme
Finally two additional issues that are beyond the scope of the next phase should be
addressed at some point First a monitoring system will be required once inventory control
is implemented in the stores The monitoring system will ensure that optimal policies perform
as expected and will indicated whether or not demand is adversely affected by the lower levels
of in-store inventory Second given the degree to which in-store inventory can be reduced
inventory control in the warehouse should be investigated Because approximately half of the
existing inventory is held in the warehouse the additional savings from reducing system-wide
inventory could be great
72
Afterword
Just prior to the completion of the work described in this thesis Mr Don Graham
principle owner of Canadian Tire Pacific Associates sold his shares in the company Shortly
thereafter the results of this thesis were presented to the new management group
Unfortunately the new management did not consider development of an inventory control
system to be a priority Nonetheless the prototype was delivered to Canadian Tire Pacific
Associates for possible in-house testing however at the time of this writing - almost one year
after the meeting - Canadian Tire Pacific Associates has not decided to continue with the
project
73
Bibliography
Arrow K A T E Harris and J Marschak (1951) Optimal inventory policy Econometrica 19 250-272
Day G (1992) In a speech to the Empire Club of Canada Toronto quoted in When the JIT fits The Globe and Mail October 20 1992 B24 and in Puterman (1994)
Dvoretzky A J Kiefer and J Wolfowitz (1952a) The inventory problem I Case of known distributions of demand Econometrica 20 187-222
Dvoretzky A J Kiefer and J Wolfowitz (1952b) The inventory problem II Case of unknown distributions of demand Econometrica 20 450-466
Federgruen A (1993) Centralized Planning Models in SC Graves A H G Rinnooy Kan and P H Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Federgruen A H Groenevelt and H C Tijms (1984) Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times Management Sci 30 344-357
Lee H L and S Nahmias (1993) Single-Product Single-Location Models in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Muckstadt J A and R O Roundy (1993) Analysis of Multistage Production Systems in SC Graves A H G Rinnooy Kan and PH Zipkin (eds) Logistics of Production and Inventory Handbooks in Operations Research and Management Science vol 4 North-Holland Amsterdam
Porteus E L (1985) Numerical Comparisons of Inventory Policies for Periodic Review Systems Oper Res 33 134-152
Puterman M L (1994) Markov Decision Processes Discrete Stochastic Dynamic Programming Wiley New York
Silver E A and R Peterson (1985) Decision Systems for Inventory Management and Production Planning 2nd edition Wiley New York
Taylor H M and S Karlin (1994) An Introduction to Stochastic Modeling revised edition Academic Press San Diego
74
Tijms H C and H Groenevelt (1984) Simple approximations for the reorder point in periodic and continuous review (sS) inventory systems with service level constraints European J Oper Res 17 175-190
75
Appendix A
A Portion of the Sales File for Product 200001 a 30-amp Inline Fuse
200001 283 1190 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 200001 284 1190 2 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 285 1190 0 0 4 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 286 1190 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 200001 287 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 200001 288 1190 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 2 200001 289 1190 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 290 1190 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 200001 291 1190 0 0 2 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 200001 292 1190 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 200001 294 1190 0 0 0 1 0 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 1 200001 295 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 200001 296 1190 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 297 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 200001 298 1190 0 0 1 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 200001 299 1190 0 0 1 0 0 0 1 0 1 0 0 2 0 0 0 0 0 2 1 1 0 200001 300 1190 0 0 1 0 0 0 0 1 0 0 0 0 0 2 2 0 0 0 0 3 0 200001 301 1190 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 200001 303 1190 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 200001 304 1190 1 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 200001 305 1190 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 200001 306 1190 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 2 0 0 1 0 200001 308 1190 0 0 0 1 0 1 0 0 0 2 0 1 0 0 0 0 1 1 1 0 0 200001 309 1190 1 3 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 200001 310 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 200001 311 1190 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 200001 312 1190 0 1 1 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 200001 313 1190 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 2 0 200001 314 1190 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 200001 315 1190 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 200001 316 1190 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 200001 317 1190 2 0 0 1 0 0 0 0 0 0 5 1 0 0 0 1 0 0 0 0 0 200001 318 1190 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 200001 319 1190 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 200001 320 1190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 200001 321 1190 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 200001 322 1190 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 200001 323 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 200001 324 1190 0 0 2 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 1 1 0 200001 325 1190 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 200001 326 1190 0 0 1 0 1 0 0 0 2 0 0 1 0 0 0 1 0 1 0 0 1 200001 328 1190 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 200001 329 1190 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 200001 330 1190 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 200001 331 1190 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 200001 332 1190 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 200001 333 1190 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 200001 334 1190 0 0 2 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 200001 335 1190 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 200001 336 1190 0 0 0 1 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 0
(253 subsequent lines omitted)
76
Appendix B
Sample Distribution Files
a) A low-demand product - an automobile back-up alarm
PRODUCT NUMBER 202101 PRICE $ 684
DMD
3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
N 2 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 2 2 0 1
1 5 3 8 12 5 7 11 6 11 5 4 11 10 19 4 2 5 14 5 6 4
0 302 304 299 295 302 300 296 301 296 302 303 295 296 288 303 305 301 290 300 301 302
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
b) A medium-demand product - a 168 bulb
PRODUCT NUMBER 203039 PRICE $ 51
DMD
16 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
14 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0
9 0 0 2 5 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0
8 0 0 2 5 0 0 2 0 1 1 3 0 1 3 0 0 1 1 0 0 1
7 2 1 3 1 0 0 1 0 2 3 1 1 4 1 1 0 2 1 1 1 1
6 4 7 1 10 3 1 3 2 1 3 5 2 7 4 1 0 1 1 3 3 4
5 1 7 7 17 0 2 11 1 5 4 1 2 6 9 6 2 6 9 4 4 1
4 5 10 10 16 5 5 19 10 13 8 11 9 13 10 12 7 5 15 5 8 3
3 10 12 13 27 4 6 24 11 10 13 14 9 23 14 18 8 14 18 14 12 14
2 14 30 36 43 16 16 43 32 38 39 39 34 47 36 41 21 19 39 20 34 24
1 30 56 68 56 37 30 70 48 67 61 44 75 62 63 48 28 52 61 63 53 47
0 240 184 165 126 240 247 133 202 169 175 189 173 143 165 180 240 206 161 197 192 212
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
77
c) A high-demand product - a H4651 rectangular sealed beam headlight
PRODUCT NUMBER 203677 PRICE $ 857
DMD
14 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 0 0 2 3 0 0 1 0 0 0 0 1 1 1 0 0 0 0 2 0 0
11 0 1 3 1 0 0 4 1 0 0 0 0 0 0 0 0 1 0 0 0 1
10 0 0 4 4 1 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 1
9 0 3 14 11 0 1 7 1 0 2 0 8 0 1 0 0 0 2 1 0 0
8 0 4 12 16 1 0 18 4 3 5 0 2 1 4 2 1 1 0 0 1 3
7 1 2 12 13 1 6 19 3 5 9 0 11 2 5 4 0 2 3 3 1 4
6 2 9 22 21 6 10 29 12 10 11 4 24 3 7 10 4 7 11 6 3 14
5 7 13 35 33 8 16 29 19 18 8 3 26 15 26 15 12 9 14 13 11 19
4 19 35 34 43 32 30 41 31 32 47 11 42 20 33 30 31 20 31 22 21 31
3 32 63 49 54 42 60 51 40 51 35 33 55 39 51 39 38 39 57 58 40 54
2 46 59 56 55 73 63 61 65 63 61 63 54 68 85 65 53 72 69 70 77 63
1 109 79 42 40 80 64 32 80 74 77 99 55 97 57 83 93 80 75 81 97 73
0 91 39 21 13 63 57 11 51 51 52 94 29 61 35 59 75 76 45 51 56 44
STORE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
78
Appendix C
A Proof that the Limiting Probability Distribution is Independent of the Initial State
In this appendix we show that provided 0 lt PrDT = 0 lt 1 the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting probability distribution
7T where 0 lt TTJ lt 1 for y = 0 1 S that is independent of the initial state Further the
limiting distribution is the unique nonnegative solution of the equations
Tt P = TI (AD
s and J gt = 1 (A 2)
i=0
where P is the (S + l) x (S + l) transition probability matrix whose first n rows (and columns)
correspond to the n recurrent states in the chain and whose remaining rows (and columns) if
any correspond to transient states43 Prior to the proof several preliminary results are
obtained
RESULT 1 The Markov chain has exactly one positive recurrent class and perhaps some
transient states
First note that in the absence of any absorbing states a Markov chain with a discrete
finite state space must have at least one positive recurrent class containing at least two states
Now consider the Markov chain for an inventory model with a (sS) policy
a) State i gt s cannot be absorbing because there is a positive probability of reaching
j lt i (Since PrDT gt 0 gt 0)
4 3 Note that since the rows and columns of P are reordered the elements of it must be reordered accordingly
79
b) State lt s cannot be absorbing because by the rules of the ordering policy and
the assumption that PrDT = 0 gt 0 there is a positive probability reaching S
Therefore the chain has no absorbing states and must have at least one positive recurrent class
Next consider the subset of states A = i | i lt s Because the state space is finite
and PrDT gt 0 gt 0 the process must return to at least one state in A in other words at least
one state in A must be recurrent Let k G A be a member of a recurrent class dt Because
of the ordering policy and the assumption that PrDT = 0 gt 0 k -raquo S Also by definition
there must be a positive probability of returning to k from S S -gt k Therefore S G 3w
Further because S is reachable from all states in A i G A is either transient with i -raquo dt or
recurrent with pound iR
Now consider the subset of states B = | j gt s Because PrDT gt 0 gt 0 the
chain will eventually reach a state i G A If i is transient then j must be transient also with
y -gt 3 if i G 9 then j is either transient with j -gt dt or recurrent with j E dt Thus the
Markov chain has exactly one recurrent class and perhaps some transient states
RESULT 2 The limiting probability distribution ir for the Markov chain corresponding to the
nxn submatrix Pm = [Ptj] i j G dt is independent of the initial state and is the
unique nonnegative solution of the equations
TC-Prr = re (A3)
and J2 K = 1 ( A 4 )
jt=i
where the rows and columns of are numbered from 1 to n rather than
Since if i j i and j must be in the same equivalence class
80
according to their associated states
First note that both the original Markov chain and the one corresponding to the
submatrix P R R are aperiodic because PrDT = 0 gt 0 Therefore given that 9 is a positive
recurrent aperiodic class the limiting distribution ir is uniquely determined by (A3) and (A4)
(Taylor and Karlin 1994 Theorem 44 p213) Further because there are no absorbing states
or other recurrent classes in the original chain the process must eventually enter the recurrent
class 9 regardless of the initial state Therefore in the limit the probability of being in state
i G 9 is independent of the initial state
RESULT 3 The limiting probability distribution for the transient states is the null vector
independent of the initial state
This result follows directly from the definition of a transient state
PROOF Suppose the states are reordered such that the first n rows (and columns) of P
correspond to the n recurrent states of the Markov chain Then P can be partitioned into four
submatrices
PRK - the n x n submatrix [Py] i j E 9
P T T - the (S + 1-I) x (S + l-n) submatrix [Py] i j g 9
P T R - the (S + l-n) x n submatrix [Py] i pound 9 j G 9
P R T - the n x (S + l-n) submatrix [Py] i G 9 j pound 9t By definition this is a matrix
of zeros
(Al) can then be rewritten as
81
(ltR TtT) P P L TR TT
I-P RR 0
p I-P TR 1 TT
(TtR TCT)
(0- 0T)
where irR denotes the limiting probability distribution for the n recurrent states and irT denotes
the distribution for the remaining S + l-n transient states Solving for TT t gives
TCr-0 + itT-(I-PTI) = 0T
itT-(I-PJJ) = 0 r
i c r = (I-P^-Oj
Since (I - PTT)1 always exists (Puterman 1994 Proposition A3 p 593) irT = 0X which is
in agreement with Result 3 Now solving for 7rR yields
(A2) can be rewritten as
bullRPRR 1 1R (A5)
(A6) S + l
k + L k =1
k=l k=n+
k=i
where ir contains the appropriately reordered steady state probabilities Since (A5) and (A6)
are equivalent to (A3) and (A4) respectively Result 2 holds Therefore the Markov chain
corresponding to an inventory model with a (sS) policy has a limiting distribution that is
independent of the initial state and is the unique nonnegative solution to (Al) and (A2)
82
Appendix D
A Measure for the Steady State Customer Service Level
In this appendix we show that the appropriate measure for the steady state customer
service level is given by
_ E[Demand satisfied during RP] E[Total demand during RP]
Consider the following two measures of the steady state customer service level
Measure 1 Suppose the customer service level is calculated only after n review periods have
passed Denoting DS as the demand satisfied in review period i and DT as the total demand
in period i the customer service level after n periods CSL(n) is
DS + DS0 + + DSbdquo CSLn) = - -
DT + DT + + DT
Dividing both the numerator and denominator by n taking the limit as n -raquo oo and applying
the Law of Large Numbers yields
CSL = lim CSL(n) n-degdeg
- [DS + DS + + DS] = l i m ^ J 1 1
raquo~ - [DT + DT + + DT]
E[DS]
E[DT]
83
Measure 2 Suppose the customer service level is calculated for each of n review periods and
then averaged Thus the customer service level after n periods CSL(n) is given by
CSL(n) = -DS DS
DT DT DT_
Taking the limit as n -gt oo yields
CSL = lim CSL(n)
lim mdash DSl DS2
DT DT DT_
DS
DT
Now consider the scenario in which there is one item on the shelf to begin each review
period and in which demand is stochastic with PrDT = 2 = Vi and PrD x = 100 = Vi
According to Measure 1 the customer service level is
CSL - = ^ W + ^ W = plusmn bdquo 002 E[DT) 1 (2) + 1(100) 51
while according to Measure 2 the customer service level is
CSL = E DS DT
1(1) + i(-Ls
22) + 2 100
51 200
026
Clearly from managements point of view the first measure is more indicative of the
actual level of service being provided The problem with the second measure is that equal
84
weight is given to each ratio regardless of the magnitude of the numbers For example with
respect to Measure 2 the events LSLR = 12 and LSLR = 50100 are identical however
with respect to lost sales the second event is much worse than the first Therefore the proper
measure for the steady state customer service level is Measure 1
85
Appendix E
The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days
Denoting D x as the demand during a period of T consecutive days and j as the inventory
on hand at the beginning of the period the conditional expected demand not satisfied during the
period E[(DT-y)+] is calculated as follows
E[(DT-j)+] = pound ltk-j)Pr[DT = k k=j+l
= pound (k-j)PrDT = k] + J2(k-j)PrDT = k] - pound (fc-)VJgtr = fc k=j+l k=0 k=0
= J2(k-j)Pr[DT=k -J2(k-j)PrDT = k] k=0 k=0
= YkPrDT=k) - J2jPrDT=k - Yk-j)PrDT=k) Jfc=0 k=Q k=0
= Ti - j - Y(k-j)PrDT=k 7-1
= Tx - j + YltJ-k)PrDT = k jt=0
where fx is the mean daily demand
86
Appendix F
Justification of the Updating Technique for the New Policy (s+mS)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements py Define s = s+m where m is an integer satisfying
the condition 0 lt s+m lt S Let the probability transition matrix of the new policy (sS)
be denoted by the (S + 1)X(S + 1) matrix 7gt with elements py Using the equations developed
in Chapter III the elements of P are found as follows
CASE 1 The lead time is less than the review period
A m gt 0
For 0 lt i lt s
( i-i pound [PrDL=kPrDT_LgtS-k]] + PrDLziPrDT_LplusmnS-i k=0
i-l 53 [PrDL=kPrDT_L = S-j-k]] + PrDLziPr[DT_L = S-j-i) k=0 s-j
52 [Pr[DL = kPrDT_L = S-j-kn k=0
ifj = 6
ifOltjz S-i
if S-i ltj ltS
a) 0 lt lt s
Pij
= lt Pij
Pij
= pij
b) s lt i lt s This does not simplify but it is identical to (2)
87
For s lt i lt S
PrDTgt i
p = lt PrDT = i-j
0
Pfj ifj = 0
= lt Pij ifOltjlti
Pij if i ltj plusmn S
= pij
B m lt 0
ifj = 0
if 0 ltj lt i
if i ltj plusmn S
For 0 lt i lt s
i-l 53 [PrDL=kPrDT_LplusmnS-k]] + PrDLgtiPrDT_LplusmnS-i
i-l E [PrZgti = fciVZ)7W=S--fc] +PrD tgtiP-D 7 t = S-7-
p y laquoy = o
P i j ifOltjS-i
vPij ifS-iltjS
ifj = 0
ifOltjltS-i
if S-i ltjltS
For s lt i lt S
fPrJgtrgt- 17=0 = PrDT = i-j] ifOltjlti
0 ifiltjplusmnS
88
a) s lt lt s This does not simplify but it is identical to (3)
b) s lt i lt S
PrDTgti
= bull PrDT = i-j]
0
17=0
if0ltjplusmni
ifiltjS
= Pt
ifj = 0
if0ltjlti
ifiltjplusmnS
= Pi
CASE 2 The lead time is equals the review period
A m gt 0
For 0 lt i lt s
0 if0ltjlt S-i
PrDTgti ifj = S-i
PrDT=S-j] ifS-iltjltS
a) 0 lt i lt s
= bull y Pij
Pij
ifOplusmnjltS-i
ifj = S-i
ifS-iltjS
= Pij
b) s lt i lt s This does not simplify but it is identical to (4)
89
For s lt i lt S
PrDTgti)
Pr[DT=i-j
0
laquof 7=0
ifOltjplusmni
if i ltj lt S
Pa
Pij
if 7 = 0
if 0 lty lt i
ifiltjltS
B w lt 0
For 0 lt t lt s
ro PrJrgt PrDT = S-j
ifOzjltS-i
ifj = S-i
if S-i ltj lt S
Pij
ifOzjltS-i
ifj = S-i
if S-i ltj ltS
= Pi
For s lt i lt S
PrDTgti
= PrDT = i-j
0
i 7 = o ifOltjplusmni
ifiltjltS
a) s lt i lt s This does not simplify but it is identical to (3)
90
PrDTzi ifj = 0
PrDT = i-j] ifOltjplusmni
0 ifiltjltS
Py ifj = 0
ptj ifOltjplusmni
Pij if iltj plusmnS
Appendix G
Justification of the Updating Technique for the New Policy (sS+m)
Let the probability transition matrix corresponding to the policy (sS) be denoted by the
(S + l)x(S + l) matrix P with elements p(gt Define S = S+m where m is any non-negative
integer Let the probability transition matrix of the new policy (sS) be denoted by the
(S+m+l)x(S+m + l) matrix IP with elements ptj Then using the equations developed in
Chapter III the elements of 7 are found as follows
CASE 1 The lead time is less than the review period
For 0 lt i lt s
pound [PrDL=kPrDT_LplusmnS-k] + PrDLi)PrDT^Sgt- k=0
i-l pound [Pr[DL = kPrDT_L = S-j-k- +Pr[DLiPrDT_L = S-j-i Jt=0
s-i Y [Pr[DL=kPrDT_L = S-j-k] k=0
i - l
ifj=0
ifOltjltS-i
ifS-iltjltS
pound [PrDL = kPrDT_LS-k + Pr[DLi)PrDT_LplusmnS-i) if j = 0 fc=0
i - l = pound [PrDL=kPrDT_L = (S+m)-j-k] + PrDLgtiPr[DT_L = (S+m)-j-i ifOltj lt (J5+m)-i
if (S+m)-iltj lt(S+m)
k=0
i - l
pound (Sm)-j
pound [PrDL = kPrDT_L = (S+m)-j-k]] k=0
92
I-l
53 [PrDL = kPrDT_LgtS-k] + PrDLziPrDT_LS-i ifj = 0 k=0
i-l
Y[PrDL = kPrDT_L = S-(j-m)-k] + Pr[DLziPrDT_L = S-(j-m)-i] ifOltjzS+m-i k=0 S-(j-m)
53 [PrDL = kPrDT_L = S-(j-m)-k]] if S+m-i ltj lt S+m
i - l
53 [PrDL = kPrDT_LzS-k] + PrDLziPrDT_LzS-i] ifj = 0 =0
i - l
13 [Pr[DL = kPrDT_L = S-(j-m)-k] + Pr[DLziPr[DT_L = S-(j-m)-i ifOltjz S+m-i k=o and 0 z j-m
Pi(j-m)
Pi(j-m)
if 0 ltj lt S+m-i and 0ltj-mltS-i
if S+m-i ltj lt S+m and S-i lt j-m zS
i - l
Y [PrDL = k)PrDT_LzS-k] + PrDLi)PrDT_LplusmnS-i ifj = 0
k=0 i - l
53 [PrDL = kPrDT_L = S-(j-m)-k] + PrDLziPrDT_L = S-(j-m)-i ifOltjzm k=0
Piij-m)
Piij-m)
if mltj lt S+m-i
if S+m-i ltj lt S+m
i - l
YlPrDL = kPr[DT_L^S-k + PrDLi)PrDT_LS-i) ifj = 0
i - l
53 [PrDL = kPrDT_L = S-j-k] + PrDLgtiPrDT_L = S-j-i ifOltj i m k=0
Pi if mltj ltS
which for 0 lt j lt m is identical to (2)
93
For s lt i lt S
Pu =
PrDTgti
PrDT = i-j]
0
if0ltjlti
ifiltjltS
a) s lt i lt S
PrDTgti 7=0
PrDT = i -j) if0ltjlti
0 if i ltj lt S
0 ifSltjltSgt
ifj=0
if 0 ltj lt i
if i ltj plusmn S
0 ifSltjltS
ifOltjltS
0 ifSltjltSgt
b) S lt i lt S This does not simplify but it is identical to (3)
CASE 2 The lead time equals the review period
For 0 lt i lt s
0 ifO lt jltS-i
PrDTgti ifj=S-i
PrDT=S-j ifS-iltjltS
94
0 ifOplusmnjlt(S+m)-i
PrDT ifj = (S+m)-i
PrDT = (S+m) -j) if (S+m)-i ltj ltL (S+m)
0 if 0 lt jltS+m-i
PrDTzi] if j = S+m-i
PrDT = S-(j-m) if S+m-i ltj lt S+m
0 if 0 ltj lt S+m-i and 0 ^ j-m
Pi(j-m) if 0ltjlt S+m-i and 0ltj-mltS-i bull
Pi(j-m) if j = S+m-i and j-m = S-i
Pi(j-m) if S+m-i ltj z S+m and S-i lt j-m ^S
0 if 0 zj ltm
Pi(j-m) if mlt jlt S+m-i lt
Piij-m) if j = S+m-i
if S+m-i ltj lt S+m
1deg if 0 ltj ltm
[PiV-m) ifmltjltS
which for 0 lt i lt s is identical to (3)
For s lt lt S
PrDTzi
= PrDT = i-j)
0
ifj = 0
if 0 ltj ltL i
ifKjzS1
95
a) s lt i lt S
PrDTzi
PrDT = i-j]
0
0
17=0
if0ltjplusmni
ifiltjS
ifSltjltSgt
Pij 7=0
Pij if0ltjii
Pij if i ltj ltL S
0 ifSltjltS
Pij ifOzjiS
0 ifSltjltS
b) S lt i lt S This does not simplify but it is identical to (3)
96
Appendix H
A Hypothetical Consultation
In this appendix the interface during a hypothetical consultation is depicted The figures
accurately represent the various screens that are presented to the manager with the exception
that all lines and text are really white on a blue background During the consultation described
below only the choices made by the manager are hypothetical all the results are real
The title screen as depicted in Figure A - l appears initially upon execution of the
program In order to proceed to the main menu the manager presses the enter key
O I C S
Optimat Inventory Control System
For the exclusive use of
Canadian Tire Pacific Associates
Developed at The Faculty of Commerce
and Business Administration The University of British Columbia
Brian Kapalka Kaan Katircioghi Marty Puterman
Press ltEntergt to continue
Figure A - l The title screen
97
Main Menu 1 Select data directory
ctircdatadst
2 Select product and store combination Product 200001
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 5
Figure A-2 The main menu
Figure A-2 depicts the main menu of the program it is from here that the manager
enters all the review parameters If the manager wishes to change one of the parameters from
its default value he or she selects the appropriate number and enters the correct information
in the window presented The new settings will then be shown in place of the default values
In this example the relevant data files are located in the default directory ctiredatadst and
the manager has selected the productstore combination of product 200001 and store 6 Further
the manager has selected a review scenario of a 4-day review period and a 3-day lead time and
an upper search limit of 25 Finally in order to proceed with the analysis the manager
executes the main module of the program by selecting option 5
98
Product 200001 - Store 6 RP = 4 days L T = 3 days
OPTIMAL POLICY Reorder Point Target Level Service Level Annual Cost
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
Workingplease wait
Figure A-3 Calculating the optimal policy and evaluating the current policy
Once the main module of the program is executed the screen depicted in Figure A-3
appears While this screen is displayed the system determines the optimal policy and evaluates
the current policy As demonstrated in the previous chapter the amount of time required to
determine the optimal policy depends on the value of S^ chosen45 Further for a product
with a very large current policy the time required to evaluate the current policy is often more
than that required to determine the optimal policy (assuming a reasonable value of Sm a x)
4 5 Actually for a given value of Sm a x the amount of time required when using the graphical interface is slightly more than that recorded in chapter III
99
Product 200001 - Store 6 RP = 4 days
OPTIMAL POLICY Reorder Point 3 Target Level 2 9 Service Level 977 Annual Cost Xl$ Annual Savings 429
(574)
LT raquo 3 days
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
Would you like to evaluate a different policy (yn)
Figure A-4 Displaying the results
Once the optimal policy is determined and the current policy is evaluated the results are
displayed as shown in Figure A-4 For this example the optimal policy of (39) provides a
customer service level of 977 at an annual cost of $319 In comparison the current policy
of (1214) provides a customer service level of 1000 at an annual cost of $748 Further
because the current policy meets the desired customer service level the expected annual savings
of the optimal policy are calculated the optimal policy would save $429 per year or 547
of the current cost Finally when asked if he or she would like to evaluate a different policy
the manager answers yes
100
Product 200001 - Store 6 RP = 4 days LT = 3 days
OPTIMAL POLICY CURRENT POLICY Reorder Point 3 Reorder Point 12 Target Level 9 Target Level 14 Service Level 977 Service Level 1000 Annual Cost 319 Annual Cost 748 Annual Savings 429
(574)
ALTERNATE POLICY New Reorder Point 5
New Target Level 10
Figure A-5 Entering an alternate policy
Having requested that a different policy be evaluated the manager is prompted for the
new reorder point and target level as shown in Figure A-5 The manager can enter any valid
policy that is any policy satisfying the basic condition 0 lt s lt S Here the manager
chooses to evaluate the policy (610) which is somewhere between the optimal policy and
the current policy
101
Product 200001 - Store 6 RP - 4 days L T = 3 days
OPTIMAL POLICY Reorder Point 3 Target Level 9 Service Level 977
319 Annual Cost
Annual Savings 429 (574)
CURRENT POLICY Reorder Point Target Level Service Level Annual Cost
12 14 1000
748
ALTERNATE POLICY Reorder Point 5 Target Level 10
Service Level Annual Cost
99 5 393
Would you like to evaluate a different policy (yn)
Figure A-6 The particulars of the alternate policy
Once the new policy has been entered the system evaluates the policy and presents the
results as depicted in Figure A-6 In this case the new policy of (610) provides a customer
service level of 998 at an annual cost of $441 Because this policy is expected to meet
virtually all of the demand the difference between the cost of the current policy and the cost
of this policy is directly attributable to the cost of the marketing strategy Thus approximately
40 of the cost of inventory for product 200001 at store 6 is due to excess stock for the
purpose of marketing Finally if the manager wishes to evaluate yet another policy he or she
would answer yes to the question and repeat the process Here the manager chooses not
to evaluate another policy
102
Main Menu 1 Select data directory
ctiredatadst
2 Select product and store combination Product 200001 Store 6
3 Select scenario Review Period 4 Lead Time 3
4 Select search parameter Smax 25
5 Execute program
6 Exit to DOS
Please enter the desired option 6
Figure A-7 The main menu revisited
Having answered no to the previous question the manager is returned to the main
menu as shown in Figure A -7 Now the manager might decide to evaluate another product
at store 6 or to evaluate the same product at a different store Alternatively the manager might
decide to examine the implications of a different review scenario by changing those parameters
and proceeding with the analysis Here the manager chooses to end the consultation by
selecting option 6
103
Appendix I
The Source Code for the Interface Module
include fgraphfi include fgraphfd
dimension f(070200) p(02000200) pi(0200) spi(0200) real mu integer 2 dummy newx newy maxx maxy integer rp bigs smalls smax store target(21) character 1 more character 6 prod prev size(3) character 40 dir character 44 str
record rccoord curpos
common initial dir prod store smax common ptm f p rp It bigs smalls common vector pi spi common costs fc vc eac cac clevel mu common coord maxx maxy common video size
data dirctiredatadst7 prod2000017 prev 7 data store6 rp4 lt3 smax25
call graphicsmode() dummy = setfont( size(l)) ic = 0
do while( ic ne 6 ) more = call menu() read( (il) err =10) ic select case ( ic )
case ( 1 ) call refresh() call border 1() call settextposition( 12 22 curpos ) call outtext( Enter directory containing DST files ) call input( 15 21 40 ) read( (a40)) dir
104
case ( 2 ) store = 0 do while( store It 1 or store gt 21 )
call refreshO call border2() call settextposition( 11 19 curpos ) str = Enter the product and store to be analyzed call outtext( str ) call settextposition( 14 25 curpos) call outtext( Six-digit product code ) call settextposition( 16 25 curpos ) call outtext( Store number ) call input( 14 49 6 ) read( (a6)) prod call clearinput( 14 49 6 ) call input( 16 39 2 ) read( (i2) err=20) store
20 end do
case ( 3 ) rp = 0 It = 1 do while( iocheck gt 0 or It gt rp )
call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( Enter the scenario to be examined ) call settextposition( 14 28 curpos ) call outtext( Review period (days) ) call settextposition( 16 28 curpos ) call outtext( Lead time (days) ) call input( 14 50 1 ) read( (il) iostat=iocheck err=30) rp call clearinput( 14 50 1 ) call input( 16 50 1 ) read( (il) iostat=iocheck err=30) It
30 end do
case ( 4 ) smax 0 do while( smax le 0 )
call refresh() call border 1() call settextposition( 12 22 curpos) call outtext( Enter the upper limit of the search ) call settextposition( 15 33 curpos ) call outtext( Maximum S )
105
40
call input( 15 45 3 ) read( (i3) err=40) smax
end do
case ( 5 ) call openfiles( iflag ) if( iflag eq 0 ) then
call titles( prod store rp It) call opt() do while( prev ne prod )
read(71000) prev (target(i) i = 1 21 ) mf end do bigs = target(store) smalls = - 1 new = bigs - mf call policy( new ) call current( more ) do while( more eq Y or more eq y )
bigs = 0 new = 1 do while( iocheck gt 0 or new ge bigs )
call setviewport( newx( int2( 100 ) ) newy( int2( 700 ) + newx( int2( 900 )) newy( int2( 940 ) ) )
call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 30 curpos ) call outtext( New Reorder Point ) call settextposition( 25 30 curpos ) call outtext( New Target Level ) call input( 23 50 3 ) read( (i3) iostat=iocheck err=50) new call clearinput( 23 50 3 ) call input( 25 50 3 ) read( (i3) iostat=iocheck err=50) bigs
50 end do smalls = - 1 call policy( new ) call alternate( more )
end do end if
10 end select end do
dummy = setvidepmode( $defaultmode ) 1000 format( a6 lx 21( i5 ) i4 )
106
subroutine graphicsmode()
include fgraphfd
integer 2 dummy maxx maxy maxc maxr character 6 size(3)
record videoconfig my screen
common coord maxx maxy common video size
call getvideoconfig( myscreen )
select case ( myscreen adapter )
case( $vga $ovga $mcga ) dummy = setvideomode( $vresl6color ) size(l) = h26wl6 size(2) = h20wl2 size(3) = hl6w9
case default stop Error cannot set graphics mode
end select
call getvideoconfig( myscreen ) maxx = myscreen numxpixels - 1 maxy = myscreen numypixels - 1 maxc = myscreen numtextcols maxr = myscreen numtextrows call titlescreen()
end
subroutine titlescreen()
include fgraphfd
integer dummy4 integer 2 dummy maxx maxy newx newy character 1 dum character 6 size(3) character 25 str
107
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( tmsrbfon ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( O I C ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( O I C ) dummy = setfont( size(2)) dummy = getgtextextent( OPTIMAL INVENTORY CONTROL ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 ) ) xy ) call outgtext( OPTIMAL INVENTORY CONTROL ) dummy = getgtextextent( For the exclusive use of ) call moveto( ( maxx - dummy ) 2 newy( int2( 340 ) ) xy ) call outgtext( For the exclusive use of ) dummy = getgtextextent( Canadian Tire Pacific Associates ) call moveto( ( maxx - dummy ) 2 newy( int2( 400 )) xy ) call outgtext( Canadian Tire Pacific Associates ) call moveto( newx( int2( 100 )) newy( int2( 600 )) xy ) call outgtext( Developed at ) call moveto( newx( int2( 100 ) ) newy( int2( 670 ) ) xy ) call outgtext( The Faculty of Commerce ) call moveto( newx( int2( 100 )) newy( int2( 710 )) xy ) call outgtext( and Business Administration ) call moveto( newx( int2( 100 )) newy( int2( 760 )) xy ) call outgtext( University of British Columbia ) call moveto( newx( int2( 650 ) ) newy( int2( 670 )) xy ) call outgtext( Marty Puterman ) call moveto( newx( int2( 650 )) newy( int2( 715 )) xy ) call outgtext( Kaan Katircioglu ) call moveto( newx( int2( 650 )) newy( int2( 760 )) xy ) call outgtext( Brian Kapalka ) call settextposition( 27 28 curpos ) str = Press lt Enter gt to continue call outtext( str ) call settextposition( 15 100 curpos ) read( (al)) dum
end
108
subroutine menu()
include fgraphfd
dimension f(070200) p(02000200) integer 2 dummy temp newx newy maxx maxy integer store rp bigs smalls smax dummy4 character 6 prod size(3) str character 40 dir
record rccoord curpos record xycoord xy
common initial common ptm common coord common video
dir prod store smax f p rp It bigs smalls maxx maxy size
call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder newx( int2( 150 ) ) newy( int2( 110 ) )
+ newx( int2( 850 ) ) newy( int2( 890 ) ) ) dummy = getgtextextent( MAIN M E N U ) dummy4 = setcolor( int2( 1 ) ) temp = rectangle( $gfillinterior int2( ( maxx - dummy ) I 2) newy( int2( 100 ) )
+ int2( ( maxx + dummy ) I 2) newy( int2( 120 ) ) ) dummy4 = setcolor( int2( 15 ) ) call moveto( ( maxx - dummy ) 2 newy( int2( 90 )) xy ) call outgtext( MAIN M E N U ) call settextposition( 7 20 curpos )
call outtext( 1 Select data directory ) call settextposition( 8 28 curpos ) call outtext( dir ) call settextposition( 10 20 curpos )
call outtext( 2 Select product and store combination ) call settextposition( 11 28 curpos ) call outtext( Product ) call settextposition( 11 37 curpos) call outtext( prod ) call settextposition( 12 28 curpos ) call outtext( Store ) if( store It 10 ) then
write(str(il)) store else
write(str (12)) store
109
end if call settextposition( 12 37 curpos ) call outtext( str ) call settextposition( 14 20 curpos )
call outtext( 3 Select scenario ) call settextposition( 15 28 curpos ) call outtext( Review Period ) call settextposition( 15 43 curpos ) write(str(il)) rp call outtext( str ) call settextposition( 16 28 curpos ) call outtext( Lead Time ) call settextposition( 16 43 curpos ) write(str(il)) It call outtext( str ) call settextposition( 18 20 curpos )
call outtext( 4 Select search parameter ) call settextposition( 19 28 curpos ) call outtext( Smax ) if( smax It 10 ) then
write(str(il)) smax else if( smax It 100 ) then
write(str(i2)) smax else
write(str(i3)) smax end if call settextposition( 19 35 curpos ) call outtext( str ) call settextposition( 21 20 curpos )
call outtext( 5 Execute program ) call settextposition( 23 20 curpos ) call outtext( 6 Exit to DOS ) call settextposition( 26 24 curpos )
call outtext( Please enter the desired option ) call input( 26 57 1 )
end
110
subroutine openfiles( iflag)
include fgraphfd
integer store smax character 6 character 40 character 43 character 53
prod dir strl str2
record rccoord curpos
common initial dir prod store smax
if( dir eq a or dir eq A ) then open( 1 file = a7proddst status = old err=10 ) open( 7 file = a class20txt status=old err=10 )
else if( dir eq b or dir eq B ) then open( 1 file = b7proddst status=old err=10 ) open( 7 file = bxlass20txt status = old err=10 )
else if( dir eq c or dir eq C ) then open( 1 file = c7proddst status = old err=10 ) open( 7 file = cxlass20txt status = old err=10 )
open( 1 file = dir7proddst status = old err =10 ) open( 7 file = dir7class20txt status = old err=10 )
end if
iflag = 0
call clearscreen( $clearscreen ) call refresh() call border2() call settextposition( 11 23 curpos ) call outtext( ERROR Unable to access data files ) call settextposition( 14 14 curpos ) strl = The program could not open either the file write(str2 (a43a6a4)) strl prod dst call outtext( str2 ) str2 = or the file class20txt in the directory call settextposition( 15 14 curpos ) call outtext( str2 ) call settextposition( 16 14 curpos ) call outtext( dir) call settextposition( 18 28 curpos ) call outtext( Press lt Enter gt to continue )
else
return
111
iflag = 1 call settextposition( 20 90 curpos ) read( (al)) str
end
subroutine titles( prod store rp It)
include fgraphfd
integer 2 integer character 6 character 29
dummy temp maxx maxy newx newy store rp prod size(3) str
record rccoord record xycoord
curpos xy
common coord common video
maxx maxy size
call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str (a9a6alli2)) Product prod - Store store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 100 ) ) xy ) call outgtext( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 200 )) xy ) temp = lineto( ( maxx + dummy ) 2 newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str (a5ilal7ila5)) RP = rp days L T = It days dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) 2 newy( int2( 150 )) xy ) call outgtext( str )
dummy = setfont( size(2) ) dummy = getgtextextent( OPTIMAL POLICY ) call moveto( newx( int2( 25 ) ) + maxx 4 - dummy 2 newy( int2( 250 ) ) xy ) call outgtext( OPTIMAL POLICY ) call settextposition( 11 12 curpos ) call outtext( Reorder Point ) call settextposition( 12 12 curpos ) call outtext( Target Level ) call settextposition( 14 12 curpos ) call outtext( Service Level )
112
call settextposition( 15 12 curpos ) call outtext( Annual Cost ) dummy = getgtextextent( CURRENT POLICY ) call moveto( maxx - newx( int2( 25 ) ) - maxx 4 - dummy 2
+ newy( int2( 250 ) ) xy ) call outgtext( CURRENT POLICY ) call settextposition( 11 48 curpos ) call outtext( Reorder Point ) call settextposition( 12 48 curpos ) call outtext( Target Level ) call settextposition( 14 48 curpos ) call outtext( Service Level ) call settextposition( 15 48 curpos ) call outtext( Annual Cost ) call settextposition( 17 29 curpos ) call outtext( Working please wait )
end
subroutine current( more )
include fgraphfd
dimension integer 2 integer character 1 character 6 character 7 character 52
f(070200) p(02000200) dummy maxx maxy newy rp bigs smalls more size(3) str str2
record xycoord xy record rccoord curpos
common ptm common costs common video common coord
f p rp It bigs smalls fc vc eac cac clevel mu size maxx maxy
write(str(i3)) smalls call settextposition( 11 67 curpos ) call outtext( str ) write(str(i3)) bigs call settextposition( 12 67 curpos ) call outtext( str ) write(str(f51al)) clevel 100
113
call settextposition( 14 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) write(str(f62)) cac call settextposition( 15 64 curpos ) call outtext( str ) call settextposition( 17 28 curpos ) call outtext( ) if( eac le cac ) then
icol = 12 save = cac - eac pet = save cac 100 write(str(alf41a2)) ( pet ) call settextposition( 18 28 curpos ) call outtext( str )
else icol = 48 save = eac - cac end if call settextposition( 17 icol curpos ) call outtext( Annual Savings ) write(str(f62)) save call settextposition( 17 icol + 16 curpos ) call outtext( str ) do while( more ne Y and more ne y and more ne N
+ and more ne n ) call settextposition( 27 67 curpos ) call outtext( ) call settextposition( 27 12 curpos) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do if( more eq Y or more eq y ) then dummy = setfont( size(2)) dummy = getgtextextent( A L T E R N A T E POLICY ) call moveto( ( maxx - dummy ) 2 newy( int2( 640 )) xy ) call outgtext(ALTERNATE POLICY)
end if close( 7 )
end
114
subroutine alternate( more )
include fgraphfd
dimension f(070200) p(02000200) real mu integer rp bigs smalls integer 2 dummy newx newy maxx maxy character 1 more character 6 str character 52 str2
record rccoord curpos
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu common coord maxx maxy
call setviewport( newx( int2( 100 )) newy( int2( 700 )) newx( int2( 900 )) + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0 0 maxx maxy ) call settextposition( 23 12 curpos ) call outtext( Reorder Point ) write(str(i3)) smalls call settextposition( 23 30 curpos ) call outtext( str ) call settextposition( 24 12 curpos ) call outtext( Target Level ) write(str(i3)) bigs call settextposition( 24 30 curpos ) call outtext( str ) call settextposition( 23 48 curpos ) call outtext( Service Level ) write(str(f51al)) clevel 100 call settextposition( 23 64 curpos ) if( clevel It 0975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel It 0975) dummy = settextcolor( 15 ) call settextposition( 24 48 curpos) call outtext( Annual Cost ) write(str(f62)) cac call settextposition( 24 64 curpos ) call outtext( str ) more =
115
do while( more ne Y and more ne y and more ne N and more ne n call settextposition( 27 65 curpos ) call outtext( ) call settextposition( 27 12 curpos ) str2 = Would you like to evaluate a different policy (yn) call outtext( str2 ) call input( 27 67 1 ) read( (al)) more
end do
end
subroutine refresh()
include fgraphfd
integer dummy4 integer 2 dummy2 newx newy maxx maxy
common coord maxx maxy
call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder newx( int2( 50 )) newy( int2( 50 ) )
+ newx( int2( 950 ) ) newy( int2( 950 ) ) )
end
subroutine input( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
record rccoord curpos common coord maxx maxy
dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder ( maxx i x 8 0 ) - 1 5 ( maxy iy 30 ) - 22
+ ( maxx (ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) call settextposition( iy ix curpos ) dummy4 = setcolor( int2( 15 ) )
end
116
subroutine clearinput( iy ix length )
include fgraphfd
integer 2 dummy2 maxx maxy integer dummy4
common coord maxx maxy
dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder (maxx ix 80 ) - 15 ( maxy iy 30 ) -
+ ( maxx ( ix + length ) 80 ) + 2 ( maxy iy 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) )
end
subroutine borderl()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 2 3 0 - 7 + ( maxx 70 80 ) ( maxy 18 30 ) )
end
subroutine border2()
include fgraphfd
integer 2 dummy2 maxx maxy
common coord maxx maxy
dummy2 = rectangle( $gborder ( maxx 1080 ) maxy 1 1 3 0 - 7 + ( maxx 70 80 ) ( maxy 19 30 ) )
end
117
integer 2 function newx( xcoord )
integer 2 xcoord maxx maxy real 4 tempx
common coord maxx maxy
tempx = maxx 1000 tempx = xcoord tempx + 05 newx = tempx
end
integer 2 function newy( ycoord )
integer 2 ycoord maxx maxy real 4 tempy
common coord maxx maxy
tempy = maxy 1000 tempy = ycoord tempy + 05 newy = tempy
end
118
Appendix J
The Source Code for the Main Module
include fgraphfi
subroutine opt()
include fgraphfd
dimension dimension real integer character 1 character 6 character 40
f(070200) p(02000200) pi(0200) spi(0200) temppi(0200) tempspi(0200) mean mu store rp smalls bigs smin smax ssopt bsopt q t prod str dir
record rccoord curpos
common initial common ptm
dir prod store smax f p rp It bigs smalls
common vector pi spi common costs fc vc eac cac clevel mu
do 10 i = 0 7 do 10 j = 0 200
10 f(ij) = 0 f(00) = 1 fsum = 0
read in demand distribution
j = store 10 k = mod( store 10 ) q = char( j + 48 ) t = char( k + 48 ) read(l1000) ( q i = 1 10 ) price read(l1100) read(l1200) max ( f(lmax) j = 1 store ) do 20 j = max-1 0 -1
20 read(l1200) k ( f(lj) i = 1 store ) close( 1 ) imax = 0 do while( imax eq 0 )
if( f(lmax) eq 0 ) then
119
max = max - 1 else
imax = 1 end if
end do
if( max ge 50 ) write(8 ) WARNING MAX EXCEEDS 50 ssopt = 0 bsopt = 0 eac = IelO fill = 0 fc = 0085 vc = ( 30 365 ) price
create the cumulative demand distribution and convolve the demand up to rp days
do 40 i = 0 max fsum = fsum + f(li) do 50 i = 0 max f(li) = f(li) fsum mu = mean( f max ) call conv( f rp max )
obtain an initial solution
call lbound( f rp mu max smin ) bigs - - smin smalls = - 1 call update 1( smin ) smalls = smalls - 1 call steady()
iterate for S = smin to smax
do while( bigs It smax ) iflag = 0 temp = service( mu ) if( temp ge 0975 ) then
do while( temp ge 0975 and smalls ge 0 ) slevel = temp do 60 i = 0 bigs
temppi(i) = pi(i) 60 tempspi(i) = spi(i)
if( smalls gt 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )
40
50
120
else smalls = smalls - 1
end if end do call update 1( smalls + 1 ) do 70 i= 0 bigs
pi(i) = temppi(i) spi(i) = tempspi(i)
else do while( temp It 0975 and smalls It bigs-1 and iflag eq 0 )
tcost = cost( fc vc ) if( tcost ge eac ) iflag = 1 call update 1( smalls + 1 ) call steady() temp = service( mu )
end do slevel=temp if( smalls eq bigs-1 and slevel It 0975 ) iflag = 1
end if if( iflag eq 0 ) then
tcost = cost( fc vc ) if( tcost It eac ) then
eac = tcost fill = slevel ssopt smalls bsopt = bigs
end if end if call update2( bigs + 1 ) call steady()
end do
print optimal policy to the screen
write(str(i3)) ssopt call settextposition( 11 31 curpos ) call outtext( str ) write(str(i3)) bsopt call settextposition( 12 31 curpos ) call outtext( str ) write(str(f51al)) fill 100 call settextposition( 14 28 curpos) call outtext( str ) write(str(f62)) eac call settextposition( 15 28 curpos ) call outtext( str )
121
1000 format( 10(al) f82 ) 1100 format() 1200 format( i9 21(f50))
end
subroutine conv( f rp max )
convolves the demand up to 7 days
dimension f(070200) integer rp
do 10 i = 2 rp do 10 j = 0 i max do 10 k = 0 j
10 f(ij) = f(ij) + f(lk) f(i-lj-k)
end
subroutine lbound( f rp mu max smin )
calculates a lower bound for S
dimension real integer
f(070200) mu lost rp smin
smin = 0 if( mu gt 0 ) then
j = 0 fill = 0 do while( fill It 0975 )
smin = j lost = 0 do 10 k = 0 max
10 if( smin It k ) lost = lost + ( k - smin ) f(rpk) fill = 1 - lost ( rp mu )
j = J + 1 end do
end if
if( smin It 1 ) smin = 1
end
122
subroutine updatel( new )
updates the transition matrix for policy (sS) to one for (newS)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
consider new gt s
if( ( new - ss ) gt 0 ) then
do 10 i = ss + 1 new sum = 0 do 20 k = 0 i- l
20 sum = sum + f(ltk) tail( f rp - It bs - k ) p(i0) = sum + tail( f It i ) tail( f rp - It bs - i ) do 30 j = 1 bs-i
sum = 0 do 40 k = 0 i - l
40 sum = sum + f(ltk) f(rp-ltbs-j-k) 30 p(ij) = sum + tail( f It i ) f(rp-ltbs-j-i)
do 50 j = bs-i+1 bs sum = 0 do 60 k = 0 bs-j
60 sum = sum + f(ltk) f(rp-ltbs-j-k) 50 p(ij) = sum 10 continue
consider new lt s
else do 70 i =ss new + 1 -1
p(i0) = tail( f rp i ) do 80 j =1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
end if
ss = new
123
subroutine update2( new )
updates the transition matrix for policy (sS) to one for (snew)
dimension f(070200) p(02000200) integer rp bs ss
common ptm f p rp It bs ss
note it is assumed that new gt S
consider i lt = ss
do 10 i = 0 ss do 20 j = new new-bs+1 -1
20 p(ij) = p(ij-new+bs) sum = 0 do 30 k = 0 i- l
30 sum = sum + f(ltk) tail( f rp - It new - k ) p(i0) = sum + tail( f It i ) tail( f rp - It new - i ) do 40 j = 1 new-bs
sum = 0 do 50 k = 0 i- l
50 sum = sum + f(ltk) f(rp-ltnew-j-k) 40 p(ij) = sum + tail( f It i ) f(rp-ltnew-j-i) 10 continue
consider i gt ss
do 60 i = ss +1 bs do 60 j = bs +1 new
60 p(ij) = 0
do 70 i = bs + 1 new p(i0) = tail( f rp i ) do 80 j = 1 i
80 p(ij) = f(rpi-j) do 90 j = i+1 bs
90 p(ij) = 0 70 continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
dimension dimension integer
f(070200) p(02000200) a(02000200) pi(0200) spi(0200) rp bs ss
common ptm common vector
f p rp It bs ss pi spi
20
do 10 i = 0 bs do 20 j = 0 bs a(ij) = p(ij) a(ii) = a(ii) - 1 pi(i) = 0
10 spi(i) = 0 call trans( a bs ) do 30 j = 0 bs
30 a(bsj) = 1 pi(bs) = 1 call gauss( a pi bs ) if( It eq rp ) then
do 40 j = 0 bs 40 spi(j) = piO)
else call shift()
end if
end
subroutine trans( a n )
transposes a square matrix
dimension a(02000200)
do 10 i = 0 n-l do 10 j = i+1 n
r = a(ij) c = a(ji) a(i j ) = c
10 a(ji) = r
125
subroutine gauss( a x n )
solves a system of linear equations
dimension a(02000200) x(0200)
tol = le-10
do 10 i = 0 n-1
k = i
d = abs( a(ii)) do 20 j = i + 1 n
c = abs( aGi)) if( c gt d ) then
k = j d = c
end if 20 continue
if( k ne i ) then do 30 j = i n
c = a(ij) a(ij) = a(kj)
30 a(kj) = c c = x(i) x(i) = x(k) x(k) = c
end if
if( abs( a(ii)) le tol) return
e = a(ii) do 40 j = i n
40 a(ij) = a(ij) e x(i) = x(i) e do 50 j = i+1 n
e = - a(ji) do 60 k = i n
60 a(jk) = a(jk) + e a(ik) 50 x(j) = x(j) + e x(i)
10 continue
if( abs( a(nn)) le tol) return
x(n) = x(n) a(nn)
126
a(nn) = 1 do 70 i = n 1 -1 do 70 j = i - l 0 -1
e = - a(ji) 70 x(j) = x(j) + e x(i)
end
subroutine shift()
calculates the steady-state probabilities for a shift of It days
dimension f(070200) p(02000200) pi(0200) spi(0200) integer rp bs ss
common ptm f p rp It bs ss common vector pi spi
do 10 i = 0 ss spi(bs-i) = spi(bs-i) + pi(i) tail( f It i ) do 20 j = bs-i+1 bs
20 spi(j) = spi(j) + pi(i) f(ltbs-j) 10 continue
do 30 i = ss + 1 bs spi(O) = spi(O) + pi(I) tail( f It i ) do 40 j = 1 i
40 spi(j) = spi(j) + pi(I) f(lti-j) 30 continue
end
subroutine policy( new )
evaluates the policy (newbigs)
dimension f(070200) p(02000200) real mu integer rp bigs smalls
common ptm f p rp It bigs smalls common costs fc vc eac cac clevel mu
call update 1( bigs) call update 1( new )
127
call steadyO cac = cost( fc vc ) clevel = service( mu )
end
real function mean( f max )
calculates the mean daily demand
dimension f(070200)
mean = 0 do 10 i = 1 max
10 mean = mean + i f(li)
end
20 10
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension real integer
f(070200) p(02000200) pi(0200) spi(0200) mu rp bigs smalls
common ptm f p rp It bigs smalls common vector pi spi
service = 1
if( mu gt 0 ) then do 10 j = 0 bigs
sum = 0 do 20 k = 0 j-1 sum = sum + ( k - j ) f(rpk)
service = service - spi(j) ( rp mu - j - sum ) (rp mu) end if
end
128
function cost( fc vc )
calculates the annual expected inventory cost
dimension integer
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
common ptm common vector
f p rp It bigs smalls pi spi
10
stock = ei() cost = 0 do 10 i = 0 smalls cost = cost + fc pi(i) cost = cost + vc stock cost = cost 365 rp
end
20 10
function ei()
calculates the expected amount of inventory during the review period
dimension integer
common ptm common vector
ei = 0
f(070200) p(02000200) pi(0200) spi(0200) rp bigs smalls
f p rp It bigs smalls pi spi
do 10 i = 0 bigs sum = 0 do 20 d = 0 rp-1 do 20 k = 0 i- l sum = sum + ( i - k ) f(dk)
ei = ei + spi(i) sum
end
129
function tail( f i j )
evaluates Pr X(i) gt = j
dimension f(070200)
sum = 0 do 10 k = 0 j-1
10 sum = sum + f(ik) tail = 1 - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
200001 12 14 748 1000 3 9 319 977 429 574
200002 4 5 652 999 2 4 420 985 232 356
200004 3 4 235 1000 1 3 143 986 092 391
200006 3 4 289 1000 1 3 169 997 120 415
200008 2 3 260 1000 0 4 184 978 076 292
200010 1 2 168 1000 0 1 089 986 079 470
200016 6 7 506 1000 2 6 233 987 273 540
200017 2 3 468 1000 0 3 299 981 169 361
200020 2 3 216 1000 0 1 078 986 138 639
200025 14 18 750 1000 3 11 339 977 411 548
200032 0 1 039 1000 0 1 039 1000 000 00
200047 3 4 126 1000 0 2 049 986 077 611
200048 5 6 289 1000 1 6 140 978 149 516
200049 3 4 202 1000 1 3 119 985 083 411
200050 3 4 128 1000 0 1 039 986 089 695
200052 4 5 393 999 1 8 224 977 169 430
201030 3 4 785 997 2 4 616 989 169 215
201032 21 26 3662 1000 6 11 1342 978 2320 634
201036 3 4 404 1000 1 3 238 981 166 411
201038 25 45 1874 1000 9 23 897 975 977 521
201045 0 1 282 986 0 1 282 986 000 00
201502 1 2 148 993 1 3 123 997 025 169
201503 2 3 199 1000 1 4 131 997 068 342
201505 3 4 350 997 1 6 178 975 172 491
201506 4 5 642 1000 1 4 360 980 282 439
131
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201507 7 8 728 1000 2 7 312 979 416 571
201508 3 4 220 1000 0 1 055 1000 165 750
201509 3 4 229 1000 0 1 064 986 165 721
201510 3 4 220 1000 0 1 055 1000 165 750
201511 3 4 220 1000 0 1 055 1000 165 750
201512 4 5 334 1000 1 4 153 989 181 542
201513 3 4 345 971 3 5 360 982 -015 -43
201514 3 4 350 1000 1 3 212 985 138 394
201521 6 8 376 1000 1 6 180 977 196 521
201522 5 7 366 1000 2 6 224 984 142 388
201523 10 12 649 1000 3 9 305 980 344 530
201525 8 10 555 1000 2 8 256 980 299 539
201526 3 4 331 994 1 7 178 978 153 462
201530 12 15 713 1000 3 10 329 977 384 539
201531 20 25 957 1000 5 14 429 980 528 552
201532 8 10 468 1000 2 7 224 988 244 521
201533 8 10 514 1000 2 9 251 975 263 512
201534 4 5 452 999 1 9 210 978 242 535
201550 13 16 674 1000 2 10 273 977 401 595
201551 6 8 433 1000 2 7 235 983 198 457
201552 3 4 229 1000 1 4 128 997 101 441
201553 25 35 2515 1000 9 19 1166 975 1349 536
201554 10 20 865 1000 5 14 593 976 272 314
201555 10 20 563 1000 2 9 266 976 297 528
201556 2 3 281 997 1 3 213 985 068 242
201558 3 4 349 999 1 3 216 975 133 381
201564 3 4 294 999 1 4 152 982 142 483
201566 4 5 407 1000 1 5 174 977 233 572
201568 4 5 399 1000 1 5 172 978 227 569
132
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
201570 4 6 276 1000 1 5 160 978 116 420
201572 23 28 1061 1000 5 17 444 975 617 582
201573 3 4 388 998 1 6 179 979 209 539
201575 4 6 482 999 2 6 325 984 157 326
201577 15 18 1198 1000 4 14 550 977 648 541
201578 25 35 1671 1000 9 20 838 977 833 499
201579 8 10 741 1000 2 10 386 976 355 479
201580 16 26 1185 1000 6 14 643 977 542 457
201581 7 10 606 999 3 8 390 977 216 356
201582 10 20 547 1000 3 9 305 976 242 442
201586 8 10 545 1000 3 9 291 983 254 466
201589 3 4 295 1000 1 4 151 990 144 488
202005 1 2 1212 998 0 3 1195 976 017 14
202006 0 1 876 958 0 2 1313 978 -437 -499
202036 2 3 876 997 1 3 718 986 158 180
202037 2 3 935 989 2 3 935 989 000 00
202055 1 2 1463 993 1 2 1463 993 000 00
202072 0 1 351 986 0 1 351 986 000 00
202073 1 2 1669 999 0 2 1245 978 424 254
202100 3 4 2422 999 1 4 1809 981 613 253
202101 2 3 663 1000 1 2 458 996 205 309
202105 1 2 1212 977 1 2 1212 977 000 00
202106 8 10 2657 1000 0 2 425 978 2232 840
202107 1 2 559 1000 0 1 279 1000 280 501
202900 80 90 2594 1000 21 43 913 976 1681 648
202901 10 14 614 1000 3 15 372 977 242 394
202907 6 8 350 998 3 7 236 979 114 326
202916 110 130 2295 1000 32 69 912 975 1383 603
202918 30 40 1336 1000 7 23 581 975 755 565
133
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
202921 8 10 594 997 4 11 359 977 235 396
202925 30 40 842 1000 9 24 423 976 419 498
202930 8 10 285 1000 2 7 143 976 142 498
203001 2 3 173 980 1 6 103 979 070 405
203003 10 20 300 1000 2 8 153 977 147 490
203004 2 3 162 1000 0 5 101 977 061 377
203008 3 4 195 976 2 7 167 976 028 144
203010 10 20 388 991 7 20 333 977 055 142
203012 20 30 605 1000 7 23 362 976 243 402
203013 2 3 157 985 1 4 123 977 034 217
203017 26 36 682 1000 6 20 327 979 355 521
203018 10 12 448 1000 2 6 190 980 258 576
203019 4 6 307 996 2 7 211 978 096 313
203020 4 5 257 995 2 5 171 981 086 335
203024 130 140 2771 1000 29 64 858 975 1913 690
203031 10 20 520 1000 4 11 314 976 206 396
203032 10 12 518 1000 3 12 286 976 232 448
203033 20 24 886 1000 4 13 356 977 530 598
203039 30 40 629 1000 5 16 245 979 384 610
203040 3 4 292 982 2 6 197 980 095 325
203044 14 24 620 1000 3 12 294 977 326 526
203045 3 5 184 1000 1 3 117 986 067 364
203047 3 4 160 1000 0 2 063 978 097 606
203053 3 5 248 973 3 6 257 980 -009 -36
203056 5 7 370 1000 2 6 227 982 143 386
203057 2 3 286 999 1 4 185 992 101 353
203058 6 8 437 1000 2 8 248 978 189 432
203059 4 6 448 1000 2 4 313 986 135 301
203060 6 8 391 999 2 11 241 977 150 384
134
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203061 3 4 280 990 2 6 179 988 101 361
203064 8 10 473 999 3 9 257 979 216 457
203065 4 6 229 992 2 8 189 976 040 175
203066 6 8 530 1000 2 6 298 977 232 438
203067 4 6 339 995 2 8 221 976 118 348
203068 50 60 2003 1000 11 27 711 976 1292 645
203069 4 6 295 968 3 10 247 975 048 163
203070 18 20 1005 1000 4 14 391 976 614 611
203071 2 3 321 967 2 4 320 984 001 03
203072 6 8 313 1000 2 6 180 984 133 425
203076 2 3 268 1000 1 2 199 996 069 257
203081 10 20 529 1000 3 9 295 976 234 442
203082 6 8 725 1000 2 9 451 977 274 378
203083 10 20 1046 1000 5 11 662 982 384 367
203085 12 16 1779 1000 1 3 350 992 1429 803
203086 12 16 2150 1000 2 6 688 980 1462 680
203091 12 14 2001 1000 3 9 897 976 1104 552
203093 13 16 3057 1000 3 6 1039 980 2018 660
203094 145 175 19522 1000 34 45 3727 975 15795 809
203095 10 12 721 1000 3 13 330 977 391 542
203096 3 4 673 999 1 4 463 979 210 312
203097 30 40 4961 1000 7 14 1467 976 3494 704
203098 1 2 490 1000 0 1 245 1000 245 500
203099 6 8 2164 1000 2 5 1145 979 1019 471
203202 1 2 531 1000 0 1 268 986 263 495
203312 3 4 237 303 12 13 748 986 -511 -2156
203313 4 5 329 1000 0 2 137 986 192 584
203314 4 6 378 1000 0 4 172 978 206 545
203315 6 7 908 990 5 6 786 977 122 134
135
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203316 4 6 349 999 2 4 243 980 106 304
203317 1 2 124 977 1 2 124 977 000 00
203318 1 2 136 833 2 4 220 985 -084 -618
203319 3 4 247 1000 0 3 116 981 131 530
203321 4 6 312 1000 1 2 124 981 188 603
203322 3 5 289 1000 1 3 175 986 114 394
203323 3 4 295 993 2 4 239 985 056 190
203324 1 2 102 986 0 2 102 986 000 00
203325 4 5 251 997 1 3 156 975 095 378
203326 1 2 144 960 1 3 158 979 -014 -97
203327 4 5 292 978 3 6 290 981 002 07
203400 6 8 511 999 3 4 294 976 217 425
203403 8 10 689 981 7 11 643 978 046 67
203404 6 8 506 1000 1 4 214 982 292 577
203405 2 3 255 970 2 4 292 984 -037 -145
203406 3 4 312 1000 1 2 169 978 143 458
203409 2 3 514 1000 0 1 176 986 338 658
203410 2 3 488 1000 0 1 163 1000 325 666
203413 3 4 331 1000 0 126 986 205 619
203414 3 4 313 1000 0 1 078 1000 235 751
203415 3 4 320 1000 0 1 080 1000 240 750
203416 3 4 329 1000 0 1 089 986 240 729
203417 3 4 262 1000 0 1 065 1000 197 752
203418 3 4 402 1000 0 1 107 986 295 734
203419 3 4 394 1000 0 1 098 1000 296 751
203421 2 3 608 980 2 3 608 980 000 00
203454 4 5 1229 997 1 3 736 975 493 401
203460 2 3 450 979 0 4 438 978 012 27
203463 2 3 452 988 1 3 408 982 044 97
136
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203472 5 6 806 982 4 6 805 981 001 01
203473 10 12 1109 1000 3 5 478 980 631 569
203474 10 12 1087 1000 2 5 402 981 685 630
203477 1 2 255 999 0 2 183 978 072 282
203478 1 2 253 978 1 2 253 978 000 00
203483 6 7 1271 1000 2 4 651 977 620 488
203484 4 5 926 1000 1 4 535 981 391 422
203488 3 4 221 1000 1 3 130 984 091 412
203503 3 4 705 1000 0 3 343 976 362 513
203506 2 3 490 993 0 2 329 986 161 329
203507 4 6 905 1000 0 2 252 986 653 722
203509 2 3 604 996 1 2 411 977 193 320
203510 3 4 811 1000 1 3 492 983 319 393
203512 1 2 596 990 1 2 596 990 000 00
203520 4 6 687 999 2 4 469 981 218 317
203521 4 5 1953 1000 1 3 959 982 994 509
203523 1 2 200 1000 0 1 100 1000 100 500
203525 2 3 300 1000 0 1 100 1000 200 667
203527 4 6 626 1000 1 3 316 977 310 495
203532 2 3 517 1000 0 3 332 981 185 358
203533 2 3 495 1000 0 1 170 986 325 657
203566 2 3 434 976 2 3 434 976 000 00
203590 1 2 1223 927 2 3 1830 987 -607 -496
203591 1 2 1228 905 2 4 2062 983 -834 -679
203596 1 2 1496 997 1 2 1496 997 000 00
203597 1 2 1503 1000 0 2 1123 986 380 253
203598 2 3 2235 999 1 2 1485 987 750 336
203599 1 2 1495 996 1 2 1495 996 000 00
203601 3 4 540 996 2 4 419 988 121 224
137
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
203604 8 20 1349 1000 4 10 765 977 584 433
203609 9 10 5761 1000 3 5 2472 979 3289 571
203610 7 8 3209 1000 3 6 1877 978 1332 415
203611 2 3 1216 997 1 3 1011 986 205 169
203618 2 3 649 1000 0 3 416 976 233 359
203626 1 2 458 981 1 2 458 981 000 00
203641 6 7 1613 998 3 6 1098 981 515 319
203642 48 60 10491 1000 13 17 2682 977 7809 744
203650 1 2 350 1000 0 2 258 986 092 263
203655 68 80 7265 1000 14 22 1699 975 5566 766
203672 78 90 23043 1000 19 23 4454 975 18589 807
203675 2 3 973 992 1 4 941 981 032 33
203676 24 30 6012 1000 3 6 1120 981 4892 814
203677 94 100 23652 1000 18 22 3850 978 19802 837
203678 9 10 3232 1000 4 7 1794 980 1438 445
203679 8 14 5780 1000 4 6 2694 978 3086 534
203680 194 200 64014 1000 37 48 9245 975 54769 856
203681 10 16 5157 1000 3 4 1633 979 3524 683
203683 3 4 1750 1000 1 4 1207 982 543 310
203696 2 3 2486 997 1 3 2085 986 401 161
203698 1 2 1590 981 1 2 1590 981 000 00
203699 4 5 4116 998 2 4 2919 982 1197 291
203702 1 2 340 972 0 4 497 986 -157 -462
203703 2 3 545 1000 1 2 378 997 167 306
203704 2 3 506 996 1 2 344 978 162 320
203705 3 5 812 1000 1 2 403 996 409 504
203712 2 3 699 1000 0 2 348 986 351 502
203717 2 3 585 1000 0 3 374 976 211 361
203740 1 2 394 1000 0 1 197 1000 197 500
138
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
203877 4 5 712 1000 1 2 327 993 385 541
203879 2 3 447 996 1 2 305 978 142 318
203906 1 2 456 1000 0 2 337 986 119 261
203907 1 2 457 981 1 2 457 981 000 00
203911 1 2 451 986 0 2 451 986 000 00
203914 1 2 460 966 1 3 620 982 -160 -348
203916 3 4 1395 1000 1 2 723 990 672 482
203919 3 4 1417 1000 1 3 867 983 550 388
203921 1 2 334 981 1 2 334 981 000 00
203931 5 6 1065 998 3 4 749 976 316 297
203932 10 12 1909 1000 3 8 956 979 953 499
203935 4 5 1747 1000 2 3 1062 980 685 392
203936 1 2 598 952 2 3 892 981 -294 -492
203937 0 1 306 986 0 1 306 986 000 00
203938 2 3 623 990 1 3 543 980 080 128
203939 1 2 413 948 1 4 606 978 -193 -467
203942 2 3 850 997 1 3 696 986 154 181
203943 2 3 839 997 1 2 568 975 271 323
203954 1 2 865 1000 0 1 432 1000 433 501
203961 7 8 2524 1000 2 4 1114 983 1410 559
203977 0 1 1216 945 0 3 2458 981 -1242 -1021
204001 2 3 1595 1000 0 3 1047 976 548 344
204004 1 2 729 977 1 2 729 977 000 00
204510 2 3 106 1000 0 2 053 986 053 500
204511 3 4 152 979 3 4 152 979 000 00
204513 2 3 106 995 1 2 077 981 029 274
204570 2 3 222 973 1 6 197 976 025 113
204573 4 5 289 990 3 5 244 985 045 156
204600 1 2 231 1000 0 1 120 986 111 481
139
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
204601 1 2 252 962 1 3 313 980 -061 -242
204603 2 3 354 996 1 3 268 983 086 243
204604 2 3 336 986 1 4 302 976 034 101
204649 3 4 675 1000 1 2 364 996 311 461
204663 3 4 321 988 2 5 243 982 078 243
204665 1 2 305 1000 0 1 153 1000 152 498
204666 1 2 245 1000 0 1 122 1000 123 502
204667 0 1 122 1000 0 1 122 1000 000 00
204668 1 2 094 1000 0 1 052 986 042 447
204808 4 5 277 1000 0 2 088 978 189 682
205350 1 2 308 996 1 2 308 996 000 00
205375 2 3 241 991 1 3 193 978 048 199
205376 2 3 244 1000 1 3 181 998 063 258
205377 3 4 226 1000 0 4 119 978 107 473
205378 2 3 227 1000 0 4 156 978 071 313
205379 3 4 263 1000 1 3 161 986 102 388
205380 3 4 359 1000 1 3 210 996 149 415
205381 1 2 252 998 0 3 221 976 031 123
205382 3 4 492 998 1 5 369 979 123 250
205383 3 4 244 997 1 5 160 975 084 344
205384 4 5 802 1000 2 3 509 986 293 365
205385 3 4 336 994 2 4 264 984 072 214
205389 4 5 598 934 4 8 645 976 -047 -79
205390 2 3 291 887 3 4 365 977 -074 -254
205392 2 3 245 991 1 3 201 979 044 180
205393 1 2 190 972 1 3 187 985 003 16
205394 1 2 190 1000 0 2 138 986 052 274
205395 1 2 162 999 0 2 114 978 048 296
205397 3 4 238 999 1 4 145 981 093 391
140
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
205398 2 3 140 976 2 3 140 976 000 00
205635 1 2 390 967 1 3 419 982 -029 -74
205752 0 1 330 972 0 2 483 986 -153 -464
205905 0 1 166 986 0 1 166 986 000 00
205922 0 1 108 972 0 2 144 986 -036 -333
205925 1 2 259 998 0 3 228 976 031 120
205932 0 1 180 958 0 2 246 978 -066 -367
206018 1 2 214 1000 0 1 107 1000 107 500
206019 1 2 202 1000 0 1 101 1000 101 500
206101 1 2 087 1000 0 1 048 986 039 448
206118 2 3 334 1000 1 2 245 995 089 266
206119 4 6 691 1000 1 3 356 978 335 485
206121 1 2 243 999 0 2 175 978 068 280
206350 0 1 333 958 0 2 480 978 -147 -441
206383 0 1 320 1000 0 1 320 1000 000 00
206393 0 1 319 776 1 2 608 975 -289 -906
206405 3 5 201 1000 1 4 134 987 067 333
206406 6 8 557 1000 2 6 312 991 245 440
206407 1 2 307 999 0 3 283 981 024 78
206408 1 2 330 996 1 2 330 996 000 00
206409 1 2 322 997 1 2 322 997 000 00
206410 6 8 573 1000 1 3 228 992 345 602
206411 6 8 601 1000 1 4 259 980 342 569
206414 10 12 1386 1000 3 6 634 977 752 543
206415 10 12 894 1000 1 5 285 976 609 681
206417 10 20 561 1000 3 9 310 976 251 447
206418 3 4 307 999 1 4 186 979 121 394
206454 4 6 377 998 2 5 266 979 111 294
206455 4 6 490 1000 1 6 307 976 183 373
141
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s s Cost ($)
CSL () ($) ()
206456 4 6 512 1000 1 7 334 978 178 348
206458 4 6 481 1000 1 7 330 978 151 314
206459 4 6 198 1000 0 5 102 977 096 485
206504 1 2 621 999 0 2 458 978 163 262
206511 2 3 320 1000 1 2 233 996 087 272
206515 0 1 087 1000 0 1 087 1000 000 00
206516 0 1 112 958 0 2 141 978 -029 -259
206517 0 1 283 958 0 2 403 978 -120 -424
206530 0 1 096 986 0 1 096 986 000 00
206547 0 1 105 972 0 2 140 986 -035 -333
206550 0 1 118 972 0 2 160 986 -042 -356
206551 0 1 132 945 0 3 209 981 -077 -583
206552 0 1 133 1000 0 1 133 1000 000 00
206553 2 379 998 1 3 262 987 117 309
206565 0 1 146 972 0 2 202 986 -056 -384
206567 0 1 122 919 0 4 192 978 -070 -574
206572 0 1 122 986 0 1 122 986 000 00
206573 1 2 255 990 1 3 246 995 009 35
206576 1 2 296 993 1 2 296 993 000 00
206610 1 2 385 1000 0 1 192 1000 193 501
206812 0 1 095 986 0 1 095 986 000 00
206856 2 3 348 999 1 3 250 993 098 282
206857 0 1 180 972 0 2 253 986 -073 -406
206858 0 1 150 986 0 1 150 986 000 00
206872 0 1 122 1000 0 1 122 1000 000 00
206876 0 1 155 972 0 2 216 986 -061 -394
206901 3 4 099 1000 0 2 040 978 059 596
206902 6 8 246 1000 1 6 116 976 130 528
206903 4 6 163 1000 1 5 095 984 068 417
142
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206904 4 6 142 996 2 7 111 975 031 218
206905 10 14 313 1000 2 9 158 986 155 495
206906 8 10 297 1000 1 6 122 979 175 589
206907 8 10 315 1000 1 9 135 975 180 571
206908 12 14 510 1000 2 10 187 979 323 633
206909 3 5 124 1000 1 4 082 989 042 339
206910 3 5 120 995 2 5 100 988 020 167
206911 3 5 176 999 1 6 109 984 067 381
206912 3 5 169 994 1 9 123 977 046 272
206913 2 3 089 1000 0 3 046 981 043 483
206914 2 3 089 996 1 3 065 982 024 270
206915 2 3 117 997 1 4 075 990 042 359
206916 35 45 856 1000 7 22 358 977 498 582
206917 65 75 1450 1000 8 30 419 975 1031 711
206918 15 25 463 1000 4 14 262 977 201 434
206919 33 45 798 1000 7 21 344 975 454 569
206920 12 22 366 1000 2 13 193 976 173 473
206921 14 24 429 1000 3 15 236 975 193 450
206922 8 10 416 1000 3 11 202 980 214 514
206923 14 24 430 1000 3 13 232 979 198 460
206924 10 12 426 1000 3 11 194 984 232 545
206925 6 8 260 1000 1 8 126 976 134 515
206926 6 8 186 985 5 9 162 975 024 129
206928 9 12 443 995 5 12 301 975 142 321
206930 25 30 823 1000 6 16 352 975 471 572
206932 3 4 204 974 2 7 153 976 051 250
206940 4 6 157 1000 1 5 093 981 064 408
206941 13 15 593 1000 3 16 238 977 355 599
206942 8 10 318 1000 2 10 158 976 160 503
143
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
206943 14 24 443 1000 3 17 250 976 193 436
206944 11 14 481 1000 2 11 206 981 275 572
206945 1 2 074 999 0 3 048 981 026 351
206946 14 24 408 1000 3 17 230 977 178 436
206947 18 28 506 1000 4 19 270 975 236 466
206948 18 28 521 1000 3 18 257 976 264 507
206949 14 24 430 1000 3 12 228 975 202 470
206950 2 3 070 1000 0 2 035 986 035 500
206951 5 6 145 1000 0 3 048 981 097 669
206952 5 6 116 1000 0 1 027 986 089 767
206953 5 6 154 1000 0 3 051 976 103 669
206955 2 3 144 1000 0 5 091 980 053 368
206964 3 5 198 994 1 9 133 976 065 328
206965 2 3 173 996 1 5 093 990 080 462
206996 8 10 454 1000 2 9 216 978 238 524
206997 8 10 367 1000 1 9 174 978 193 526
206998 6 8 261 1000 1 3 107 986 154 590
206999 1 2 117 998 0 3 086 976 031 265
207145 6 8 269 1000 1 10 136 976 133 494
207146 5 6 219 1000 0 7 087 975 132 603
207147 5 6 129 1000 0 2 037 986 092 713
207148 5 6 134 1000 0 2 040 978 094 701
207501 6 8 969 1000 3 6 634 984 335 346
207502 10 12 1364 1000 3 6 622 982 742 544
207503 3 4 622 975 2 6 577 975 045 72
207504 10 12 528 998 4 13 315 975 213 403
207505 10 12 472 1000 2 7 204 978 268 568
207506 6 8 376 1000 1 6 181 978 195 519
207507 6 8 391 1000 1 4 180 979 211 540
144
PRODUCT
CURRENT OPTIMAL SAVINGS
PRODUCT s S Cost ($)
CSL ()
s S Cost ($)
CSL () ($) ()
207508 13 16 715 1000 3 9 319 977 396 554
207509 17 20 903 1000 3 8 325 975 578 640
207510 2 3 180 990 1 3 151 980 029 161
207511 10 12 1162 1000 3 8 567 979 595 512
207512 25 125 211 1000 0 1 008 1000 203 962
207521 17 20 1597 1000 4 9 613 978 984 616
207522 25 125 156 1000 0 1 006 1000 150 962
207541 16 26 1586 1000 4 12 661 977 925 583
207561 26 36 1835 1000 4 15 602 976 1233 672
207581 10 20 850 1000 2 9 368 977 482 567
207591 12 15 740 1000 3 10 349 978 391 528
207592 9 15 779 1000 4 9 474 978 305 392
207593 6 12 1650 1000 2 5 733 981 917 556
207594 6 8 476 1000 2 5 270 977 206 433
207595 4 6 173 999 2 4 124 985 049 283
207596 6 8 271 1000 1 5 130 976 141 520
207597 6 8 290 1000 1 6 140 978 150 517
207598 4 6 203 1000 0 2 065 978 138 680
145