C A N A D I A N T I R E PACIFIC A S S O C I A T E S
by
BRIAN A N T H O N Y K A P A L K A
A THESIS SUBMITTED IN P A R T I A L F U L F I L L M E N T O F
T H E REQUIREMENTS FOR T H E D E G R E E O F
M A S T E R O F SCIENCE (BUSINESS ADMINISTRATION)
in
T H E F A C U L T Y O F G R A D U A T E STUDIES
(Department of Commerce and Business Administration)
T H E UNIVERSITY O F BRITISH C O L U M B I A
April 1995
Brian Anthony Kapalka, 1995
In
presenting t h i s
thesis
in partial
fulfillment
of
the
requirements f o r an advanced degree a t the U n i v e r s i t y of B r i t i s h
Columbia, I agree t h a t the L i b r a r y s h a l l make i t f r e e l y a v a i l a b l e
f o r r e f e r e n c e and study.
I f u r t h e r agree t h a t p e r m i s s i o n f o r
e x t e n s i v e copying of t h i s t h e s i s f o r s c h o l a r l y purposes may
be
granted
by
the
head
of my
department
or
by
h i s or
her
representatives.
I t i s understood t h a t copying or p u b l i c a t i o n of
t h i s t h e s i s f o r f i n a n c i a l g a i n s h a l l not be allowed without my
written permission.
The U n i v e r s i t y of B r i t i s h Columbia
Vancouver, Canada
Date ZS A y r A
\995
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.
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
(s,S) 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.
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.
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
$5.5 and $7 million.
ii
Table of Contents
Abstract
ii
Table of Contents
iii
List of Tables
List of Figures
vi
Acknowledgement
vii
I. INTRODUCTION
Background
The Problem
The Project
The Demand Data
The Cost Data
. . . .
8
8
.11
15
17
18
III. M O D E L F O R M U L A T I O N
A . Terminology
B. Assumptions
C . A Markov Chain Model
D. The Transition Probability Matrix
E . The Steady State Probabilities
F. The Cost of Inventory .
G. The Customer Service Level
H . A Methodology for Evaluating an (s,S) Policy
20
20
21
22
25
27
29
31
34
35
35
36
41
41
42
43
45
48
V. T H E INTERFACE
52
iii
55
55
62
65
VII. C O N C L U S I O N
70
Afterword
73
Bibliography
74
76
77
79
83
86
Appendix F: Justification of the Updating Technique for the New Policy (s+m,S) . . . . 87
Appendix G: Justification of the Updating Technique for the New Policy (s,S+m) . . . . 92
Appendix H : A Hypothetical Consultation
97
Appendix I:
104
Appendix J:
119
iv
131
List o f Tables
Table 1.
10
Table 2.
39
Table 3.
40
Table 4.
56
Table 5.
60
Table 6.
63
Table 7.
Table 8.
.64
66
List of Figures
Figure 1.
24
Figure 2.
38
Figure 3.
The flow chart of the grid search algorithm utilizing the updating
technique for the transition probability matrix
44
Figure 4.
47
Figure 5.
Figure 6.
min
50
59
97
98
Figure A-3. Calculating the optimal policy and evaluating the current policy
99
100
101
102
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.
assistance of Ph.D. 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 M.Sc. 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. I N T R O D U C T I O N
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
Following the
Second World War, Arrow, Harris, and Marschak (1951) and Dvoretzky, Kiefer, and
Wolfowitz (1952a,b) 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 Britain's 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,
Deterministic models tend to be relatively simple yet useful, such as the basic E O Q 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 purchase/production cost, the ordering/setup
cost, the holding cost, and the shortage cost.
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
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.
1
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
(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.
that this simpler single-product, single-location model captures the essentials of the problem for
two reasons.
advantageous when significant savings are possible because of high "first order" costs and low
marginal costs for placing subsequent orders.
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
proportional holding cost and a fixed ordering cost, neither of which is discounted. A l l 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 (s,S) policies can be
computed by Markovian decision process methods, such as successive approximations or policy
iteration, or by stationary Markovian methods.
calculations that are complex and time consuming. Therefore, much research interest lies in
4
developing techniques to find approximate (s,S) 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).
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 (s,S) policies for a continuous review
model with backordering and a service level constraint.
present simple approximations for periodic review systems with lost sales and service level
constraints. A l l 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.
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
For example, very few of the products analyzed have optimal values of S exceeding 20,
with the largest value of S equalling 69.
2
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 (s,S) policy.
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 (s,S) policy is developed. As
a starting point, a simple grid search algorithm is developed and evaluated on the basis of
execution time.
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 system's 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.
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.
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 T I R E
A . Background
Canadian Tire Pacific Associates owns and operates 21 retail stores in the lower
mainland of British Columbia. The stores carry approximately 30,000 "active" products that
3
are divided into 80 product categories. The merchandise comprises primarily automotive parts
and accessories, home hardware, housewares, and sporting goods.
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 store's 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 warehouse.
Whether or not an order is placed for a product depends upon its current inventory level, its
target level, and its minimum fill.
minimum fill, an order is placed to bring the stock up to the target level.
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.
4
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.
5
the order is placed to the moment the product is reshelved takes between two to four days,
depending on the store.
"flush".
Although a product's 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).
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.
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
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.
6
Store
Location
Store
Size
Picks Per
Week
1992 Sales
($)
Floor
Space (ft )
2
Chilliwack
2,901,969
6,678
Coquitlam
4,015,303
6,510
Langley
EJ
8,138,673
15,422
Scott Road
EJ
7,307,820
15,064
Maple Ridge
4,102,110
6,678
Kingsway
4,153,736
6,574
Richmond
EJ
8,175,105
14,961
North Vancouver
3,856,571
6,534
Guildford
3,714,372
6,567
10
Burnaby
3,532,752
6,983
11
New Westminster
2,417,992
6,470
12
Abbotsford
EJ
7,899,398
15,303
13
Hastings
4,647,794
9,849
14
King Edward
EJ
3,825,372
25,492
15
White Rock
3,960,262
6,870
16
2,705,602
6,431
17
Heather
4,161,227
9,427
18
King George
4,606,817
9,640
19
Cambie
5,855,022
9,091
20
Lougheed
3,114,180
6,615
21
Burrard
6,553,310
10,608
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.
to represent a simplified inventory system, suggested that existing policies lead to overly high
inventory levels.
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".
store's "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
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.
7
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.
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.
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 and/or reallocate inventory more effectively between groups of stores.
The subtle change in the study's 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.
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 week.
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.
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.
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.
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.
8
13
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 30,000 products
to be stored for each store.
Because many of the products sold by Canadian Tire have nonstationary demand, as a
result of seasonality and/or 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.
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.
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 policies and existing policies.
9
The
expected annual cost of inventory for an entire product category is calculated for both the
optimal policies and the existing policies.
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 Avenue.
10
For the purpose of the analysis, sales data for product category 20, automotive and
electrical accessories, were collected from all 21 stores.
because the distribution of demand for products within it is non-seasonal and because few of
the products are ever placed "on sale".
11
for forecasting demand; the optimal policies can be determined based directly on observed
demand.
Store six is one of the only stores whose review procedure is not expected to change from
two "picks" per week.
1 0
11
Products that were "on sale" at any time during the period were not included in the data
set.
16
12
by Canadian Tire Pacific Associates in the form of a 10 M B text file with one line per day per
product recording sales from the stores.
Columns
Columns
Columns
Columns
1-6
7-9
10-18
19-124
13
part number
Julian date
cost of the item (to three decimal places)
sales for stores 1 through 21 (5 columns per store)
14
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.
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 product's number, the product's 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.
1 2
Strictly speaking, a line was written to the file only on days on which at least one store
registered a sale of the product.
13
According to the Julian calendar, days are numbered sequentially from 1 to 365 (366
during leap-years) beginning with the first of January.
14
17
demand, comprises products that have demand on approximately half of the days, with the daily
demand seldom exceeding more than six items.
comprises products that have demand on most days, occasionally upwards of twenty items, and
whose demand histograms resemble Poisson distributions.
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.
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.
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
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.
Therefore, in
order to avoid confusion and be consistent with the literature, the following terms are used
throughout this thesis.
Review Period -
15
Decision Epoch
Lead Time -
(s,S) Policy
16
With respect to the terminology used at Canadian Tire Pacific Associates, a review period
equals the number of days between "flushes".
15
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.
1 6
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.
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)
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.
and replenishment occurs at the end of the lead time provided an order
f^ik) = Pr{ l
td
for k = 0, 1, 2, ...
= k} = a
where a > 0 and E a = 1. Let T denote the duration of a review period and L denote the
k
T (
demand during the lead time in period t; and D . , as the difference between D , and D ."
T
Lt
Assuming that successive demands , , . . . are independent, the probability mass function of
f
1 7
and
d=\
d=\
D _ =J:
T
Ut
d=L+l
22
each aggregated demand variable can be obtained by convolving the probability mass function
of % .
td
ls
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
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 . , is observed, bring the inventory level
T
down to X , .
Note that in this example, an order would not be placed in period t+l because
+ 1
r +
i exceeds s.
The stock levels at the beginning of two consecutive review periods are related by the
balance equation
_
{
K
*
*
~ \(X
t + l
( - v - T-L,X
s
L,y
DY
i/x <s
t
ifX >s
Tt
For example, the probability mass function of D denoted f , is the T-th fold
convolution of f t . Mathematically, the function can be obtained using the recursive relation
1 8
5(
23
DT(
CO
CM
-2
I "8
>
oa
00
24
Because X ,
+ 1
Pr{X =j\X
t+l
= i ,...,X _ =i _ X
0
= i) = Pr{X =j\X
t+1
= i}
and, therefore, is a discrete time Markov chain. Further, because the probability mass function
of the random variable , is independent of t, and thus so too are the probability mass functions
of the aggregated demand, the Markov chain is stationary.
19
+ 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.
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.
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 p
tj
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
(5,10) is in place, 2 items are on hand at the start of the current review period, and 7 items are
Henceforth, the subscripts t and d are omitted from the daily and aggregate demand
variables for the sake of brevity.
1 9
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 , is the sum of the probabilities of the various scenarios and is
2 7
computed by
p
2J
= Pr{D =0}Pr{D _
L
In general, the transition probabilities for the inventory model are calculated as follows.
i-l
if j = 0
i-l
Pij
^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i}
k=0
s-j
if S-i
k=0
26
<j^S
()
2
Pr{D zi]
ifj = 0
ifO<jzi
p.. = \
Pr{D =i-j)
T
(3)
ifi<j<S
0
Pa
ifO<LJ<
S-i
ifj = S-i
if S-i <j S
Pr{D zi)
T
Pr{D = S-j}
T
(4)
then the
20
S and E 7r = 1.
y
ir ),
s
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.
equations
That is, 0 < Pr{D = 0} < 1. Given the nature of the problem, this assumption is not
very restrictive.
2 0
27
^ =E^-
far
j = 0, l,
(5)
and
= 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, 7r is the steady state probability of having j units of
y
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.
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 (5,10) 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 Pr{D
10
= 2] +iz Pr{D
9
= l] +n Pr{D
8
28
= 0} +[iz + iz + iz ]Pr{D
5
= 2}
+n Pr{D >2
2
ifj = 0
n Pr{D >i}
{
i=s+l
S
%.Pr{D = i-j]
ifl
j<S-s
i=max(/,s+l)
S
=
ifj = 5-5
i=max(/,s+l)
7 1 ^ ^ = 1-7}+
i=max(/>+l)
ifS-s<j<S
i=S-j+l
(7)
held in inventory.
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
= c Y,
E[OC]
n.
y=o
Unlike the simple structure of the ordering cost, the holding cost is incurred daily for
each item held in inventory.
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 replenishment.
21
of the probabilities of possible demand weighted by the resulting stock levels; that is,
g(i\j)
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
ed)
s
j
=r, 5>Pr{Z). = /-}
7=0
k=\
;
In other words, g(i\f) is the expected number of items on hand to start day i given
e(0)=v\
21
30
E[HC]
= $> e(0
v
i=i
i=l ;=0
k=l
where c equals the simple daily holding rate multiplied by the cost of the item.
v
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]
[E[OC]+E[HC]]
T
365
j=0
i=l j=0
( )
g
fc=l
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,
CSLR ,
P
is given by
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
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.
inventory on hand immediately following replenishment. Then the conditional customer service
32
level is
E[(D -j)l
CSL \j = 1
(10)
E[D ]
T
The denominator in the second term is merely the expect demand during the period,
= 7>
E[D ]
T
(11)
where p is the mean of the random daily demand variable . The numerator, which is the
conditional expected demand that is not satisfied during the T-day period, expands to
7-1
E[(D -j) ]
+
= T u - j + Y,U-k)Pr{D
(12)
= k]
k=0
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
y'-i
= k}
;=0
j-1
;=0
it=0
- E[I] +
(13)
Y0-k)Pr[D =k)
T
j-l
Y(J-k)Pr{D =k]
T
CSL = 1
(14)
m
Eil\
J2VjTU-k)Pr{D =k}
J=Q
fc=o
33
demand, f ; the duration of the review period, T; the length of the lead time, L ; the fixed cost
?
1)
DL
D x L
as the T-th
2)
Generate the transition probability matrix using either equation (2) or (4) and equation (3).
3)
4)
5)
6)
34
IV. A N A L G O R I T H M F O R O B T A I N I N G T H E O P T I M A L (s,S) 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 (s,S) 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 < s < S} and the imposed constraint on the customer service level.
22
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.
guarantee optimality provided the objective function and constraints exhibit certain properties,
such as convexity.
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
Management specified that each policy must provide a customer service level of at least
97.5%. Therefore, the algorithm must incorporate the constraint: C S L > 0.975.
2 2
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.
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 < s < S } and { 0 < S
< S < S
min
}, where S
max
min
and S
max
are
some predefined values. That is, the grid search is a "brute force" method that examines every
policy within the grid.
23
min
< S
opt
< S
max
opt
transition probability matrix for the policy (0,S ) and then evaluating the service level
min
24
max
min
2 4
max
max
min
min
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 S
max
. In each run, S
min
GAUSS -
the amount of time spent solving for the steady state probabilities
COSTS -
SERVICE -
TOTAL -
The columns entitled "Grid Search" in Tables 2 and 3 summarize the results of the trials. A l l
times are recorded in seconds as required by a 486DX/33 M H z personal computer with an
empty buffer memory.
Three results are evident from the tables.
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 S
max
doubling S,^ from 30 to 60 led to an increase in the execution time of more than 2100% (from
17.2 seconds to 366.1 seconds). Third, the grid search algorithm as it stands does not appear
to be adequate for the problem at hand.
37
Initialize: s = 0; S = Smin]
cost* = 10 5
A
Yes
Is cost < cost*?
s = 0
S = S+1
Yes
s* = s; S* = S
cost* = cost
No
Is s = S-l?
Yes
Is S = Smax?
No
Yes
Print results
(s*,S*); cost*
38
Table 2. Execution times of the algorithms for product 200001, a 30-amp inline fuse.
(in seconds)
'-'max
10
20
30
40
Subroutine
Grid Search
Grid Search
Updating T P M
Heuristic
TPM
0.06
0.10
0.01
GAUSS
0.10
0.06
0.01
COST
0.05
0.05
0.01
SERVICE
0.01
0.01
0.01
TOTAL
0.50
0.35
0.27
TPM
1.26
0.21
0.10
GAUSS
1.19
1.60
0.23
COST
0.27
0.26
0.01
SERVICE
0.17
0.16
0.01
TOTAL
3.18
2.36
0.55
TPM
7.03
0.96
0.10
GAUSS
7.57
8.01
0.93
COST
0.79
0.85
0.01
SERVICE
0.47
0.42
0.01
TOTAL
16.64
11.37
1.26
TPM
22.57
1.63
0.15
GAUSS
29.58
30.03
2.06
COST
3.13
3.29
0.01
SERVICE
0.92
0.83
0.11
58.71
38.51
2.85
TOTAL
39
Table 3. Execution times of the algorithms for product 206917, a 6% solder connector
(in seconds)
-"max
30
40
50
60
Grid Search
Grid Search
Updating T P M
Heuristic
TPM
7.17
0.67
0.06
GAUSS
7.62
8.80
0.93
COST
0.98
0.87
0.10
SERVICE
0.16
0.21
0.06
TOTAL
17.20
11.76
2.20
TPM
23.90
1.57
0.22
GAUSS
28.61
29.11
2.09
COST
2.19
2.27
0.06
SERVICE
0.80
0.88
0.11
TOTAL
58.27
37.90
3.62
TPM
66.91
4.13
0.10
GAUSS
79.94
82.01
4.72
COST
5.68
5.77
0.16
SERVICE
2.12
1.97
0.05
TOTAL
158.40
100.41
6.54
TPM
155.09
8.94
0.40
GAUSS
186.07
189.51
8.76
13.67
13.53
0.38
3.50
3.59
0.22
366.14
227.94
11.20
Subroutine
COST
SERVICE
TOTAL
40
max
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 S
max
max
must be generated 465 times, with the largest matrix having dimensions (31x31). When S
max
equals 40, the matrix must be generated 820 times, with 355 of the matrices having dimensions
larger than (31x31).
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.
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.
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 > 0:
2) If m < 0:
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+m,S) 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.
42
approximately 90%.
30%. Not surprisingly, the reductions are greater for large values of S
max
However, despite
this seemly significant improvement, a decrease of only approximately 0.8 seconds is obtained
when S,^ equals 20.
43
Initialize: s = 0; S = Smin|
cost* = 10*5
k= 1
Yes
iNo
s = s+k
Yes
s* = s; S* = S
cost* = cost
No
No
Yes
Print results
(s*,S*); cost*
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 < s < S} and {0 < S
min
max
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 S .
25
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 (s,S) 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 (s,S)
policy. From (10), this level is
CSL 5 =
1-
E[(D -SY]
T
( >
15
E[D ]
T
Replacing j with S in (12) and then substituting (12) and (11) into (15) yields
CSL 15 = - - J2(S-k)Pr{D = k]
T
( )
16
To obtain S , use (16) to find the largest value of S with a customer service level less than
min
0.975.
There are two criteria for a good lower bound on S: the bound must be no larger than
opt
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
min
is obtained for each of the products in product category 20 and compared with the
corresponding value of S .
26
opt
of occurrences of various S
min
and S
opt
opt
bound. The absence of any points above the 4 5 line indicates that the first criterion is satisfied
in each instance: the method did not generate a value of S
of S .
opt
min
Moreover, the bounds are reasonably "tight" for 85% of the products analyzed; that
opt
equal to 10 or less.
opt
27
However, as S
opt
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 S
min
reduction in the execution time of the algorithm is miriimal. For example, if S,^ equals 60 and
a value of 30 is obtained for S , the program would still require approximately 215 seconds
min
to search the grid (compared to the 228 seconds required without a lower bound on S). Because
the execution time increases exponentially with S , a tight upper bound on S would likely have
opt
a more significant impact on reducing the execution time of the algorithm. Further research
on this issue is required.
The optimal policy for each product was obtained using a grid search with an extremely
large upper bound.
2 6
2 7
On average, S
min
is approximately half of S
opt
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.
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 level.
28
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.
customer service level of the policy (s,S) 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
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.
2 8
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".
max
is not feasible, S
min
min
-l,S
min
) is evaluated, and, if it
found.
As previously mentioned, a heuristic search must be evaluated in terms of both its speed
and the accuracy of its solutions.
"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
max
increases.
For a S
max
approximately 75% of the time required by the grid search algorithm; and for a S
29
max
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
max
max
Hereafter, "grid search algorithm" refers to the algorithm utilizing the grid search, the
updating technique, and the lower bound, S .
2 9
min
49
Calculate Smin
S = Smin; s = S-l
S = S+l
s = S-l
No
Yes
Yes
No
s = s-l
Yes
Is s < S-l?
No
Yes
No
Yes
s = s+l
Is s 2: 0?
s = s+l
Yes
Is cost < cost*?
No
No
Yes
Yes
No
s* = s; S* = S
cost* = cost
Is S = Smax?
s* = s; S* = S
cost* = cost
^Yes
Print results
(s*,S*); cost*
algorithms.
30
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.
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.
max
51
V. T H E INTERFACE
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 here.
31
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 S
max
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.
Tire Pacific Associates are currently based on "rules of thumb" that incorporate marketing
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.
3 1
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
(12,14), which provides a customer service level of 100.0% at an annual cost of $7.48, and the
optimal policy of (3,9), which provides a customer service level of 97.7% at an annual cost of
only $3.19. 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 (6,10). The prototype evaluates the policy and displays the results: the
customer service level is 99.8% and the annual cost is $4.41.
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.
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 S V G A 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.
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 5.0, 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.
Chapter II to read the unit costs and the empirical demand functions.
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.
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 S
max
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 and/or
store during a consultation.
54
VI. R E S U L T S A N D SENSITIVITY A N A L Y S I S
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 policy.
4 are in order.
32
First, the current customer service level for product 203312, an amber
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.
either an error or an unusual event; the current policy of (3,4) 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
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 97.5%.
3 2
55
Current CSL
(%)
Current Annual
Cost ($)
206932
97.4
2.04
-0.51
204570
97.3
2.22
-0.25
203053
97.3
2.48
0.09
206550
97.2
1.18
0.42
206547
97.2
1.05
0.35
206565
97.2
1.46
0.56
203702
97.2
3.40
1.57
206876
97.2
1.55
0.61
205752
97.2
3.30
1.53
205922
97.2
1.08
0.36
206857
97.2
1.80
0.73
205393
97.2
1.90
-0.03
201513
97.1
3.45
0.15
203405
97.0
2.55
0.37
203069
96.8
2.95
-0.48
203071
96.7
3.21
-0.01
205635
96.7
3.90
0.29
203914
96.6
4.60
1.60
204601
96.2
2.52
0.61
203326
96.0
1.44
0.14
202003
95.8
8.76
4.37
206516
95.8
1.12
0.29
206517
95.8
2.83
1.20
206350
95.8
3.33
1.47
205932
95.8
1.80
0.66
203936
95.2
5.98
2.94
56
Product
Current C S L
(%)
Current Annual
Cost ($)
206932
97.4
2.04
-0.51
203939
94.8
4.13
1.93
203977
94.5
12.16
12.42
206551
94.5
1.32
0.77
205389
93.4
5.98
0.47
203590
92.7
12.23
6.07
206567
91.9
1.22
0.70
203591
90.5
12.28
8.34
205390
88.7
2.91
0.74
203318
83.3
1.36
0.84
206393
77.6
3.19
2.89
203312
30.3
2.37
5.11
provides at least the desired customer service level. For the 36 products, the total additional
cost of the optimal policies is $54.20.
33
Of the remaining 383 products, most have an existing policy that provides a customer
service level well above 97.5 %. When the customer service levels are rounded to one decimal,
each of 253 products has a customer service level of 100.0%, and each of 347 products has a
customer service level of at least 99.0%. In contrast, each of only 58 products has an optimal
policy that yields a customer service level of at least 99.0%.
3 3
34
The cost associated with product 203312 is not included in the total.
Optimal policies do not have customer service levels of exactly 97.5% 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.
3 4
57
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.
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
CURRENT
PRODUCT
203680
Cost
CSL
($)
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
194
200
640.14
100.0
37
48
92.45
97.5
547.69
85.6%
94
100
236.52
100.0
18
22
38.50
97.8
198.02
83.7%
78
90
230.43
100.0
19
23
44.54
97.5
185.89
80.7%
145
175
195.22
100.0
34
45
37.27
97.5
157.95
80.9%
48
60
104.91
100.0
13
17
26.82
97.7
78.09
74.4%
68
80
72.65
100.0
14
22
16.99
97.5
55.66
76.6%
203677
203672
OPTIMAL
203094
203642
203655
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.
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.
60
During the
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.
"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.
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
category.
35
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.
variable and considerably greater than those at individual stores, Canadian Tire Pacific
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.
3 5
61
proportion of inventory serving as the safety stock, it is inappropriate to assume any reduction
in inventory at the warehouse is possible.
36
million in inventory, approximately half is held in the stores; therefore, the 40-50% savings
translates to a savings of approximately $5.5 to $7 million per year.
37
provided by management.
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 +$0,015
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 variables.
The analysis proceeds as follows.
38
rate of 30%, the optimal policies from the previous section were obtained.
39
Then, assuming
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 6
3 7
A n error of +$0,015 in the ordering cost implies an actual ordering cost of $0,070, a
relative error of approximately 21%; and an error of -$0,015 implies an actual ordering cost of
$0,100, a relative error of 15%. A n 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 8
3 9
These policies are referred to as "optimal" policies for the duration of this chapter.
62
the actual ordering cost and/or holding rate are different from management's estimates, the
heuristic is used to obtain the "true optimal" policies.
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.
Actual
Holding
Rate
25%
5 products
$1554.39
$0.02
30%
54 products
$1814.70
$1.82
35%
79 products
$2072.70
$5.74
$0,085
$0,100
51 products
$1605.90
$0.92
88 products
$1654.64
$4.49
48 products
$1920.26
$0.88
48 products
$2129.40
$1.36
2 products
$2183.12
$0.00
The table should be read as follows: If the actual ordering cost is $0,070 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 $1554.39, which
is $0.02 more than implementing the "true optimal" policies.
4 0
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 underestimated, 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 97.5% 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
Holding
Rate
25%
$3501.53
(56%)
30%
$4124.38
(56%)
35%
$4747.25
(56%)
64
$0,085
$3584.64
(55%)
$0,100
$3667.64
(55%)
$4290.48
(55%)
$4830.26
(56%)
$4913.20
(56%)
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.
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.
demand function is used, the model calculates an "optimal" policy of (12,13); clearly, this
policy is impractical. Although this example is extreme, it does indicate the danger of using
unrealistic empirical demand functions.
41
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.
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
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.
4 1
65
rise to such changes in the demand data are termed Scenario 1 and Scenario 2, respectively.
42
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.
assuming the "true" demand function corresponds to the demand under Scenario 2.
Table 8
Table 8. "True optimal" and "optimal" policies for each demand scenario.
"True optimal"
4.70
99.3
"Optimal"
4.70
99.3
"True optimal"
6.63
97.6
"Optimal"
2.
4.61
87.5
Scenario
1
Cost ($)
C S L (%)
"True optimal"
3.34
98.1
"Optimal"
2.58
97.2
"True optimal"
5.08
98.0
"Optimal"
2.73
70.2
Scenario
1
Cost ($)
C S L (%)
66
Cost ($)
"True optimal"
12
13.77
97.6
"Optimal"
11
13.38
97.3
"True optimal"
13
14.26
97.7
"Optimal"
11
13.38
97.0
C S L (%)
Cost ($)
"True optimal"
19
2.56
97.5
"Optimal"
16
2.51
96.9
"True optimal"
20
2.58
97.6
"Optimal"
16
2.49
96.8
C S L (%)
Cost ($)
"True optimal"
18
23
39.81
97.7
"Optimal"
18
22
38.17
97.2
"True optimal"
18
23
39.95
97.8
"Optimal"
18
22
38.31
97.3
Scenario
1
C S L (%)
Cost ($)
"True optimal"
38
49
94.98
97.6
"Optimal"
37
48
91.75
97.1
"True optimal"
37
49
94.84
97.5
"Optimal"
37
48
92.06
97.2
67
C S L (%)
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.
instances of a "true" demand function could very well result in more pronounced changes than
those resulting from either of the above scenarios.
policies, especially those for "low"-demand products, would actually provide a much lower or
much higher customer service level than expected.
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 0.5.
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
69
VII. C O N C L U S I O N
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.
inventory control as described in this thesis would result in annual savings of $5.5 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 model's 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.
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.
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
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.
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, M r . 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.
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
Econometrica
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: S.C. Graves, A . H . G . Rinnooy Kan,
and P . H . Zipkin (eds.), Logistics
Research
and Management
of Production
Science,
and Inventory,
Handbooks
in
Operations
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:
S.C. 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.
Porteus, E . L . (1985). Numerical Comparisons of Inventory Policies for Periodic Review
Systems. Oper. Res. 33, 134-152.
Puterman,
M . L . (1994).
Programming,
Markov
Decision
Processes:
Stochastic
Dynamic
Discrete
Planning,
2nd edition,
Management
and
74
to Stochastic
Modeling,
revised
edition,
Tijms, H . C , and H . Groenevelt (1984). Simple approximations for the reorder point in
periodic and continuous review (s,S) inventory systems with service level constraints.
75
Appendix A
A Portion of the "Sales" File for Product 200001, a 30-amp Inline Fuse
200001 283
200001 284
200001 285
200001 286
200001 287
200001 288
200001 289
200001 290
200001 291
200001 292
200001 294
200001 295
200001 296
200001 297
200001 298
200001 299
200001 300
200001 301
200001 303
200001 304
200001 305
200001 306
200001 308
200001 309
200001 310
200001 311
200001 312
200001 313
200001 314
200001 315
200001 316
200001 317
200001 318
200001 319
200001 320
200001 321
200001 322
200001 323
200001 324
200001 325
200001 326
200001 328
200001 329
200001 330
200001 331
200001 332
200001 333
200001 334
200001 335
200001 336
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
1.190
0 0
2 0
0 0
0 1
0 0
0 0
0 0
0 2
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 .0
0 0
1 0
0 0
1 1
0 0
1 3
0 0
0 0
0 1
1 0
0 0
0 0
0 0
2 0
0 0
0 0
0 0
0 0
1 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
0 0
0 1
0 0
2
1
4
0
2
0
1
0
2
0
0
0
0
0
1
1
1
1
0
0
0
1
0
0
2
0
1
1
0
2
0
0
0
0
0
0
0
0
2
0
1
1
0
1
0
0
0
2
0
0
;
0
0
0
0
0
0
0
0
0
0
1
0
1
0
2
0
0
1
0
0
0
1
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
1
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
3
0
0
1
0
0
1
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
1
1
0
0
0
1
0
0
0
1
1
1
0
0
0
1
0
0
1
0
0
0
3
1
0
0
1
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
3
0
0
0
1
0
0
1
0
0
0
0
2
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
5
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
2
0
1
1
2
0
0
1
0
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1
0
0
0
2
76
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
2
0
1
0
0
0
0
1
1
1
2
0
0
0
0
0
0
0
0
0
0
2
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
2
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
1
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
2
0
0
0
0
1
0
0
1
0
0
0
0
0
0
2
0
0
0
0
2
0
1
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
2
0
1
1
0
0
1
0
1
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
3
0
0
0
0
1
0
1
0
1
0
2
0
0
0
0
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2
0
0
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
1
0
0
1
0
0
0
3
1
0
0
0
0
0
0
0
0
0
Appendix B
Sample "Distribution" Files
DMD
12
11
11
11
10
19
14
302
304
299
295
302
300
296
301
296
302
303
295
296
288
303
305
301
290
300
301
302
STORE 1
10
11
12
13
14
15
16
17
18
19
20
21
DMD
16
15
14
13
12
11
10
10
17
11
10
10
16
19
10
13
11
13
10
12
15
10
12
13
27
24
11
10
13
14
23
14
18
14
18
14
12
14
14
30
36
43
16
16
43
32
38
39
39
34
47
36
41
21
19
39
20
34
24
48
67
61
44
75
62
63
48
28
52
61
63
53
47
30
56
68
56
37
30
70
240
184
165
126
240
247
133
202
169
175
189
173
143
165
180
240
206
161
197
192
212
STORE 1
10
11
12
13
14
15
16
17
18
19
20
21
77
DMD
0
0
1
14
13
12
11
10
0
3
14
11
12
16
18
12
13
19
11
22
21
10
29
12
10
11
24
10
11
14
13
35
33
16
29
19
18
26
15
26
15
12
14
13
11
19
19
35
34
43
32
30
41
31
32
47
11
42
20
33
30
31
20
31
22
21
31
32
63
49
54
42
60
51
40
51
35
33
55
39
51
39
38
39
57
58
40
54
61
65
63
61
63
54
68
85
65
53
72
69
70
77
63
46
59
56
55
73
63
109
79
42
40
80
64
32
80
74
77
99
55
97
57
83
93
80
75
81
97
73
91
39
21
13
63
57
11
51
51
52
94
29
61
35
59
75
76
45
51
56
44
STORE 1
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 < Pr{D = 0} < 1, the Markov chain
T
corresponding to an inventory model with a (s,S) policy has a limiting probability distribution,
7T, where 0 < TTJ < 1 for y = 0, 1,
'P =
TI
(AD
and J > . = 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 states.
43
obtained.
RESULT
1:
The Markov chain has exactly one positive recurrent class and, perha
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 (s,S) policy:
a)
Note that since the rows and columns of P are reordered, the elements of it must be
reordered accordingly.
4 3
79
b)
State / < s cannot be absorbing because, by the rules of the ordering policy and
the assumption that Pr{D = 0} > 0, there is a positive probability reaching S.
T
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 < s}.
and Pr{D > 0} > 0, the process must return to at least one state in A ; in other words, at least
T
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 Pr{D = 0} > 0, k - S. Also, by definition,
T
Therefore, S G 3?.
Because Pr{D
chain will eventually reach a state i G A . If i is transient, then j must be transient also with
y -> 3?; if i G 9?, then j is either transient with j -> dt or recurrent with j E dt.
Thus, the
Markov chain has exactly one recurrent class and, perhaps, some transient states.
RESULT
2:
ir*,
Prr
and
= re*
J2 K =
(A3)
jt=i
Since, if i
R R
recurrent aperiodic class, the limiting distribution ir* is uniquely determined by (A3) and (A4)
(Taylor and Karlin, 1994, Theorem 4.4, p.213). 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 ve
independent of the initial state.
PROOF
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
T R
R T
81
(lt
, Tt )
T
P
L
I-P
p
(Tt
TR
TT
RR
(0- , 0 )
T
I-P
TR
, TC )
TT
where ir denotes the limiting probability distribution for the n recurrent states, and ir denotes
R
the distribution for the remaining S + l-n transient states. Solving for TT gives
t
TC -0 + it -(I-P )
r
TI
it -(I-PJJ)
T
ic =
r
Since
(I
- PTT)"
(I-P^-Oj.
Proposition A . 3 , p.
1994,
593),
ir = 0X, which is
T
(A5)
""R'PRR
11
S+l
*k
k=l
*k
(A6)
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.
corresponding to an inventory model with a (s,S) 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
CSL{n) =
DS. + DS + ... + DS
DT, + DT. + ... + DT
0
Dividing both the numerator and denominator by n, taking the limit as n - oo, and applying
the Law of Large Numbers yields
CSL = lim CSL(n)
n-
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_
DS
DT,
DT
lim
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 Pr{D
CSL -
=
E[DT)
^
1 2)
^
=
0.02
1(100)
51
W
CSL = E
DS
DT
1(1) i(-L
2{2)
2{ 100
51
200
* 0.26
Clearly, from management's point of view, the first measure is more indicative of the
actual level of service being provided.
weight is given to each ratio, regardless of the magnitude of the numbers. For example, with
respect to Measure 2, the events L S / L R = 1/2 and L S / L R = 50/100 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 as the demand during a period of T consecutive days and j as the inventory
x
on hand at the beginning of the period, the conditional expected demand not satisfied during the
period, E[(D -y) ], is calculated as follows:
+
E[(D -j) ]
+
<k-j)Pr[D
= k}
k=j+l
= k] + J2(k-j)Pr{D
(k-j)Pr{D
k=j+l
= J2(k-j)Pr[D =k}
T
k=0
k=0
-J2(k-j)Pr{D
= k]
k=0
= Y,kPr{D =k)
T
Jfc=0
- J2jPr{D =k}
T
k=Q
T
7-1
+
k=0
Y(k-j)Pr{D =k}
= T\i - j = T\x - j
= k] - (fc-;)/V{/J> = fc}
k=0
Y,<J-k)Pr{D = k\
T
jt=0
86
Y{k-j)Pr{D =k)
T
Appendix F
Justification of the Updating Technique for the New Policy (s+m,S)
Let the probability transition matrix corresponding to the policy (s,S) 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 < s+m < S. Let the probability transition matrix of the new policy (s',S)
be denoted by the (S + 1)X(S + 1) matrix 7>, with elements py. Using the equations developed
in Chapter III, the elements of !P are found as follows:
CASE
A. m > 0
For
0< i <
s'\
( i-i
ifj = 6
k=0
i-l
k=0
s-j
k=0
a)
0 < / < s:
Pij
= <
Pij
Pij
= pij
b) s < i < s': This does not simplify; but it is identical to (2).
87
Pr{D >i}
ifj = 0
if 0 <j <; i
<
if i <j S
Pfj
ifj = 0
Pij
ifO<j<,i
Pij
if i <j S
= pij
B. m < 0
For 0 < i < s':
i-l
ifj = 0
i-l
E
7W
ifO<j<S-i
if S-i <j<S
p,
/y' =
ifO<j*S-i
P i j
Pij
ifS-i<j*S
fPr{/J>>*-}
r
,. = \Pr{D = i-j]
T
1/7=0
ifO<j<i
ifi<jS
88
a) s' < / < s: This does not simplify; but it is identical to (3).
b) s < i < S:
Pr{D >i}
1/7=0
= Pr{D = i-j]
if0<ji
ifi<j*S
ifj = 0
if0<j<,i
= Pt
ifi<jS
= Pi,
CASE
A. m > 0
For 0 < i < s':
0
if0<j<
Pr{D >i}
T
S-i
ifj = S-i
Pr{D =S-j]
T
ifS-i<j<S
a) 0 < i < s:
ifOj<S-i
.. =
Pij
y
Pij
ifj = S-i
ifS-i<j*S
= Pij
b) s < i < s': This does not simplify; but it is identical to (4).
89
f 7=0
\Pr{D >i)
T
Pr[D =i-j}
ifO<ji
if i <j < S
if 7 = 0
Pa
if
0 <y < i
ifi<j<S
Pij
B. w < 0
For 0 < t < s':
ro
ifOzj<S-i
Pr{/J>/}
ifj = S-i
Pr{D = S-j}
ifOzj<S-i
ifj = S-i
if S-i <j <S
Pij
= Pi,
Pr{D >i}
T
= { Pr{D = i-j}
T
i/7
=o
ifO<ji
ifi<j<S
a) s' < i < s: This does not simplify; but it is identical to (3).
90
Pr{D zi}
ifj = 0
Pr{D = i-j]
T
0
Py
p
tj
Pij
ifO<ji
ifi<j<S
ifj = 0
ifO<ji
if i<j S
Appendix G
Justification of the Updating Technique for the New Policy (s,S+m)
Let the probability transition matrix corresponding to the policy (s,S) be denoted by the
(S + l ) x ( S + l) matrix P, with elements p . Define S' = S+m, where m is any non-negative
(>
integer.
Let the probability transition matrix of the new policy (s,S') be denoted by the
CASE
ifj=0
i-l
= S'-j-i\
ifO<j<S'-i
Jt=0
s'-i
Y, [Pr[D =k}Pr{D _
k=0
L
= S'-j-k\]
i-l
[Pr{D = k}Pr{D _ *S'-k\\
k=0
fc=0
L
ifS'-i<j<S'
if j = 0
i-l
[Pr{D =k}Pr{D _
= \
= (S m)-j-i}
+
ifO<j
< (J5+m)-i
(S*m)-j
if (S+m)-i<j <,(S+m)
92
I-l
ifj = 0
k=0
i-l
\ Y[Pr{D
= S-(j-m)-i]
ifO<jzS+m-i
k=0
S-(j-m)
53
i-l
ifj = 0
*=0
i-l
= S-(j-m)-i}
ifO<jz S+m-i
and 0 z j-m
Pi(j-m)
and
Pi(j-m)
0<j-m<,S-i
i-l
k=0
ifj = 0
i-l
= S-(j-m)-i}
ifO<jzm
k=0
Piij-m)
Piij-m)
i-l
ifj = 0
i-l
= S'-j-i}
ifO<j i m
k=0
if m<j <,S'
Pi
93
Pu =
Pr{D = i-j]
if0<j<i
ifi<j<S'
a) s < i < S:
Pr{D >i
T
*/7=0
Pr{D = i -j)
if0<j<i
if i <j < S
ifS<j<S>
ifj=0
if
0 <j < i
if i <j S
ifS<j<S'
ifO<j<S
ifS<j<S>
b) S < i < S': This does not simplify; but it is identical to (3).
CASE
Pr{D >i}
T
Pr{D =S'-j}
T
ifj=S'-i
ifS'-i<j<S'
94
ifOj<(S+m)-i
Pr{D
ifj = (S+m)-i
if 0 <, j<S+m-i
if j = S+m-i
. Pr{D zi]
T
Pr{D = S-(j-m)}
T
Pi(j-m)
Pi(j-m)
. Pi(j-m)
if 0 zj <,m
Pi(j-m)
Piij-m)
if j = S+m-i
<
if 0 <,j <.m
[PiV-m)
ifm<j<S'
ifj = 0
Pr{D = i-j)
if 0 <j <L i
ifKjzS
0<j-m<S-i
95
a) s < i < S:
Pr{D zi}
1/7=0.
Pr{D = i-j]
if0<ji
ifi<j*S
ifS<j<S>
Pij
Pij
Pij
0
Pij
*/7=0
if0<jii
if i <j <L S
ifS<j<S
ifOzjiS
ifS<j<S
b) S < i < 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.
Brian Kapalka
Kaan Katircioghi
Marty Puterman
Figure A - l .
97
Main Menu
1. Select data directory
c:\tirc\data\dst
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
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 "c:\tire\data\dst", and
the manager has selected the product/store 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.
98
L T = 3 days
OPTIMAL POLICY
CURRENT POLICY
Reorder Point
Target Level
Reorder Point
Target Level
Service Level :
Annual Cost
Service Level :
Annual Cost
Working...please 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.
45
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 S
max
).
Actually, for a given value of S , the amount of time required when using the graphical
interface is slightly more than that recorded in chapter III.
4 5
max
99
RP = 4 days
OPTIMAL POLICY
Reorder Point
Target Level
;
2
CURRENT POLICY
Reorder Point : 12
Target Level : 14
Service Level 100.0%
Annual Cost
7.48
3
9
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 (3,9) provides a
customer service level of 97.7% at an annual cost of $3.19. In comparison, the current policy
of (12,14) provides a customer service level of 100.0% at an annual cost of $7.48. 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 $4.29 per year, or 54.7%
of the current cost. Finally, when asked if he or she would like to evaluate a different policy,
the manager answers "yes".
100
LT = 3 days
OPTIMAL POLICY
CURRENT POLICY
Reorder Point
Target Level
Reorder Point
Target Level
3
9
:
:
12
14
4.29
(57.4%)
ALTERNATE POLICY
New Reorder Point
10
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 < s < S}.
chooses to evaluate the policy (6,10), which is somewhere "between" the optimal policy and
the current policy.
101
L T = 3 days
OPTIMAL POLICY
CURRENT POLICY
Reorder Point
Target Level
Reorder Point
Target Level
3
9
Service Level
Annual Cost
: 12
. 14
100.0%
7.48
4.29
(57.4%)
ALTERNATE POLICY
Reorder Point
Target Level
:
:
Service Level
Annual Cost
5
10
99 5%
3.93
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 (6,10) provides a customer
service level of 99.8% at an annual cost of $4.41.
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.
to evaluate another policy.
102
Main Menu
1. Select data directory
c:\tire\data\dst
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
Having answered "no" to the previous question, the manager is returned to the main
menu, as shown in Figure A - 7 .
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.
selecting option 6.
103
Appendix I
The Source Code for the "Interface" Module
include 'fgraph.fi'
include 'fgraph.fd'
dimension
real
integer * 2
integer
character * 1
character * 6
character * 40
character * 44
record /rccoord/
curpos
common
common
common
common
common
common
data
data
/initial/
/ptm/
/vector/
/costs/
/coord/
/video/
call graphicsmode()
dummy = setfont( size(l))
ic = 0
do while( ic .ne. 6 )
more = ' '
call menu()
read( * , '(il)', err =10) ic
select case ( i c )
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
20
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
end do
30
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
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
50
10
1000
case ( 5 )
call openfiles( iflag )
if( iflag .eq. 0 ) then
call titles( prod, store, rp, It)
call opt()
do while( prev .ne. prod )
read(7,1000) 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
end do
smalls = - 1
call policy( new )
call alternate( more )
end do
end if
end select
end do
dummy = setvidepmode( $defaultmode )
format( a6, lx, 21( i5 ), i4 )
106
subroutine graphicsmode()
include 'fgraph.fd'
integer * 2
character * 6
maxx, maxy
size
subroutine titlescreen()
include 'fgraph.fd'
integer
integer * 2
character * 1
character * 6
character * 25
dummy4
dummy, maxx, maxy, newx, newy
dum
size(3)
str
107
record /rccoord/
record /xycoord/
curpos
xy
common /coord/
common /video/
maxx, maxy
size
108
subroutine menu()
include 'fgraph.fd'
dimension
integer * 2
integer
character * 6
character * 40
f(0:7,0:200), p(0:200,0:200)
dummy, temp, newx, newy, maxx, maxy
store, rp, bigs, smalls, smax, dummy4
prod, size(3), str
dir
record /rccoord/
record /xycoord/
curpos
xy
common /initial/
common /ptm/
common /coord/
common /video/
call refresh()
dummy4 = setcolor( int2( 15 ) )
dummy = rectangle( $gborder, newx( int2( 150 ) ), newy( int2( 110 ) ),
+
newx( int2( 850 ) ), newy( int2( 890 ) ) )
dummy = getgtextextent( ' M A I N 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( ' M A I N M E N U ' )
call settextposition( 7, 20, curpos )
call
call
call
call
end
call
call
call
if
settextposition( 12, 37, curpos )
outtext( str )
settextposition( 14, 20, curpos )
)
)
)
)
110
*6
* 40
* 43
* 53
store, smax
prod
dir
strl
str2
record /rccoord/
curpos
common /initial/
if( dir .eq. 'a:' .or. dir .eq. ' A : ' ) then
open( 1, file = 'a:7/prod//'.dst', status = 'old', err=10 )
open( 7, file = 'a: class20.txt', status='old', err=10 )
else if( dir .eq. 'b:' .or. dir .eq. 'B:' ) then
open( 1, file = 'b:7/prod//'.dst', status='old', err=10 )
open( 7, file = 'bxlass20.txt', status = 'old', err=10 )
else if( dir .eq. 'c:' .or. dir .eq. ' C : ' ) then
open( 1, file = 'c:7/prod//'.dst', status = 'old', err=10 )
open( 7, file = 'cxlass20.txt', status = 'old', err=10 )
else
open( 1, file = dir//'\7/prod//'.dst', status = 'old', err =10 )
open( 7, file = dir//'\7/'class20.txt', status = 'old', err=10 )
end if
iflag = 0
return
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, '(a43,a6,a4)') strl, prod, '.dst'
call outtext( str2 )
str2 = 'or the file class20.txt 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 < Enter > to continue' )
111
iflag = 1
call settextposition( 20, 90, curpos )
read( * , '(al)') str
end
record /rccoord/
record /xycoord/
curpos
xy
common /coord/
common /video/
maxx, maxy
size
f(0:7,0:200), p(0:200,0:200)
dummy, maxx, maxy, newy
rp, bigs, smalls
more
size(3)
str
str2
record /xycoord/
record /rccoord/
xy
curpos
common /ptm/
common /costs/
common /video/
common /coord/
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,'(f5.1,al)') clevel * 100,'%'
113
114
f(0:7,0:200), p(0:200,0:200)
mu
rp, bigs, smalls
dummy, newx, newy, maxx, maxy
more
str
str2
record /rccoord/
curpos
common /ptm/
common /costs/
common /coord/
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,'(f5.1,al)') clevel * 100,'%'
call settextposition( 23, 64, curpos )
if( clevel .It. 0.975) dummy = settextcolor( 4 )
call outtext( str )
if( clevel .It. 0.975) dummy = settextcolor( 15 )
call settextposition( 24, 48, curpos)
call outtext( 'Annual Cost :' )
write(str,'(f6.2)') 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? (y/n)'
call outtext( str2 )
call input( 27, 67, 1 )
read( * , '(al)') more
end do
end
subroutine refresh()
include 'fgraph.fd'
integer
integer * 2
dummy4
dummy2, newx, newy, maxx, maxy
common /coord/
maxx, maxy
record /rccoord/
common /coord/
curpos
maxx, maxy
subroutine borderl()
include 'fgraph.fd'
integer * 2
common /coord/
maxx, maxy
subroutine border2()
include 'fgraph.fd'
integer * 2
common /coord/
maxx, maxy
117
common /coord/
maxx, maxy
common /coord/
maxx, maxy
118
Appendix J
The Source Code for the "Main" Module
include 'fgraph.fi'
subroutine opt()
include 'fgraph.fd'
dimension
dimension
real
integer
character * 1
character * 6
character * 40
f(0:7,0:200), p(0:200,0:200)
pi(0:200), spi(0:200), temppi(0:200), tempspi(0:200)
record /rccoord/
curpos
common /initial/
common /ptm/
common /vector/
common /costs/
mean, mu
store, rp, smalls, bigs, smin, smax, ssopt, bsopt
q, t
prod, str
dir
10
do 10 i = 0, 7
do 10 j = 0, 200
f(i,j) = 0
f(0,0) = 1
fsum = 0.
20
j = store / 10
k = mod( store, 10 )
q = char( j + 48 )
t = char( k + 48 )
read(l,1000) ( q, i = 1, 10 ), price
read(l,1100)
read(l,1200) max, ( f(l,max), j = 1, store )
do 20 j = max-1, 0, -1
read(l,1200) k, ( f(l,j), i = 1, store )
close( 1 )
imax = 0
do while( imax .eq. 0 )
if( f(l,max) .eq. 0 ) then
119
max = max - 1
else
imax = 1
end if
end do
fc = 0.085
vc = ( .30 / 365. ) * price
*
40
50
create the cumulative demand distribution and convolve the demand up to 'rp' days
do 40 i = 0, max
fsum = fsum + f(l,i)
do 50 i = 0, max
f(l,i) = f(l,i) / 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()
60
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. 0.975 .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. 0.975 ) 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
;
curpos )
curpos )
100,'%'
curpos)
curpos )
121
1000
1100
1200
10
f(0:7,0:200)
rp
do 10 i = 2, rp
do 10 j = 0, i * max
do 10 k = 0, j
f(i,j) = f(i,j) + f(l,k) * f(i-l,j-k)
end
f(0:7,0:200)
mu, lost
rp, smin
smin = 0
if( mu .gt. 0 ) then
10
j = 0
fill = 0.
do while( fill .It. 0.975 )
smin = j
.lost = 0.
do 10 k = 0, max
if( smin .It. k ) lost = lost + ( k - smin ) * f(rp,k)
fill = 1. - lost / ( rp * mu )
j = J + 1
end do
end if
if( smin .It. 1 ) smin = 1
end
122
updates the transition matrix for policy (s,S) to one for (new,S)
dimension
integer
f(0:7,0:200), p(0:200,0:200)
rp, bs, ss
common /ptm/
20
40
30
60
50
10
*
80
90
70
do 10 i = ss + 1, new
sum = 0.
do 20 k = 0, i - l
sum = sum + f(lt,k) * tail( f, rp - It, bs - k )
p(i,0) = 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
sum = sum + f(lt,k) * f(rp-lt,bs-j-k)
p(i,j) = sum + tail( f, It, i ) * f(rp-lt,bs-j-i)
do 50 j = bs-i+1, bs
sum = 0
do 60 k = 0, bs-j
sum = sum + f(lt,k) * f(rp-lt,bs-j-k)
p(i,j) = sum
continue
consider new < s
else
do 70 i =ss, new + 1, -1
p(i,0) = tail( f, rp, i )
do 80 j =1, i
p(i,j) = f(rp,i-j)
do 90 j = i+1, bs
p(i,j) = 0.
continue
end if
ss = new
123
updates the transition matrix for policy (s,S) to one for (s,new)
dimension
integer
f(0:7,0:200), p(0:200,0:200)
rp, bs, ss
common /ptm/
consider i < = ss
20
30
50
40
10
*
60
80
90
70
do 10 i = 0, ss
do 20 j = new, new-bs+1, -1
p(i,j) = p(i,j-new+bs)
sum = 0.
do 30 k = 0, i - l
sum = sum + f(lt,k) * tail( f, rp - It, new - k )
p(i,0) = 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
sum = sum + f(lt,k) * f(rp-lt,new-j-k)
p(i,j) = sum + tail( f, It, i ) * f(rp-lt,new-j-i)
continue
consider i > ss
do 60 i = ss +1, bs
do 60 j = bs +1, new
p(i,j) = 0.
do 70 i = bs + 1, new
p(i,0) = tail( f, rp, i )
do 80 j = 1, i
p(i,j) = f(rp,i-j)
do 90 j = i+1, bs .
p(i,j) = 0.
continue
bs = new
end
124
subroutine steady()
solves for the steady state probabilities
20
10
30
40
dimension
dimension
integer
common /ptm/
common /vector/
do 10 i = 0, bs
do 20 j = 0, bs
a(ij) = p(i,j)
a(i,i) = a(i,i) - 1.
pi(i) = 0.
spi(i) = 0.
call trans( a, bs )
do 30 j = 0, bs
a(bs,j) = 1.
pi(bs) = 1.
call gauss( a, pi, bs )
if( It .eq. rp ) then
do 40 j = 0, bs
spi(j) = piO)
else
call shift()
end if
end
subroutine trans( a, n )
10
a(0:200,0:200)
do 10 i = 0, n-l
do 10 j = i+1, n
r = a(i,j)
c = a(j,i)
a(i j ) = c
a(j,i) = r
125
subroutine gauss( a, x, n )
*
a(0:200,0:200), x(0:200)
tol = l.e-10
do 10 i = 0, n-1
k = i
20
30
d = abs( a(i,i))
do 20 j = i + 1, n
c = abs( aG,i))
if( c .gt. d ) then
k = j
d = c
end if
continue
if( k .ne. i ) then
do 30 j = i, n
c = a(i,j)
a(i,j) = a(k,j)
a(k,j) = c
c = x(i)
x(i) = x(k)
x(k) = c
end if
if( abs( a(i,i)) .le. tol) return
40
60
50
10
e = a(i,i)
do 40 j = i, n
a(i,j) = a(i,j) / e
x(i) = x(i) / e
do 50 j = i+1, n
e = - a(j,i)
do 60 k = i, n
a(j,k) = a(j,k) + e * a(i,k)
x(j) = x(j) + e * x(i)
continue
if( abs( a(n,n)) .le. tol) return
x(n) = x(n) / a(n,n)
126
70
a(n,n) = 1.
do 70 i = n, 1, -1
do 70 j = i - l , 0, -1
e = - a(j,i)
x(j) = x(j) + e * x(i)
end
subroutine shift()
*
common /ptm/
common /vector/
20
10
do 10 i = 0, ss
spi(bs-i) = spi(bs-i) + pi(i) * tail( f, It, i )
do 20 j = bs-i+1, bs
spi(j) = spi(j) + pi(i) * f(lt,bs-j)
continue
40
30
do 30 i = ss + 1, bs
spi(O) = spi(O) + pi(I) * tail( f, It, i )
do 40 j = 1, i
spi(j) = spi(j) + pi(I) * f(lt,i-j)
continue
end
f(0:7,0:200), p(0:200,0:200)
mu
rp, bigs, smalls
common /ptm/
common /costs/
call steadyO
cac = cost( fc, vc )
clevel = service( mu )
end
10
f(0:7,0:200)
mean = 0.
do 10 i = 1, max
mean = mean + i * f(l,i)
end
function service( mu )
calculates 1 minus the ratio of expected demand not met to expected demand
dimension
real
integer
common /ptm/
common /vector/
service = 1.
20
10
128
10
dimension
integer
common /ptm/
common /vector/
stock = ei()
cost = 0.
do 10 i = 0, smalls
cost = cost + fc * pi(i)
cost = cost + vc * stock
cost = cost * 365. / rp
end
function ei()
calculates the expected amount of inventory during the review period
dimension
integer
common /ptm/
common /vector/
ei = 0.
20
10
do 10 i = 0, bigs
sum = 0.
do 20 d = 0, rp-1
do 20 k = 0, i - l
sum = sum + ( i - k ) * f(d,k)
ei = ei + spi(i) * sum
end
129
function tail( f, i, j )
*
10
f(0:7,0:200)
sum = 0
do 10 k = 0, j-1
sum = sum + f(i,k)
tail = 1. - sum
end
130
Appendix K
Current and Optimal Policies for Product Category 20 at Store 6
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
200001
12
14
7.48
100.0
3.19
97.7
4.29
57.4%
200002
6.52
99.9
4.20
98.5
2.32
35.6%
200004
2.35
100.0
1.43
98.6
0.92
39.1%
200006
2.89
100.0
1.69
99.7
1.20
41.5%
200008
2.60
100.0
1.84
97.8
0.76
29.2%
200010
1.68
100.0
0.89
98.6
0.79
47.0%
200016
5.06
100.0
2.33
98.7
2.73
54.0%
200017
4.68
100.0
2.99
98.1
1.69
36.1%
200020
2.16
100.0
0.78
98.6
1.38
63.9%
200025
14
18
7.50
100.0
11
3.39
97.7
4.11
54.8%
200032
0.39
100.0
0.39
100.0
0.00
0.0%
200047
1.26
100.0
0.49
98.6
0.77
61.1%
200048
2.89
100.0
1.40
97.8
1.49
51.6%
200049
2.02
100.0
1.19
98.5
0.83
41.1%
200050
1.28
100.0
0.39
98.6
0.89
69.5%
200052
3.93
99.9
2.24
97.7
1.69
43.0%
201030
7.85
99.7
6.16
98.9
1.69
21.5%
201032
21
26
. 36.62
100.0
11
13.42
97.8
23.20
63.4%
201036
4.04
100.0
2.38
98.1
1.66
41.1%
201038
25
45
18.74
100.0
23
8.97
97.5
9.77
52.1%
201045
2.82
98.6
2.82
98.6
0.00
0.0%
201502
1.48
99.3
1.23
99.7
0.25
16.9%
201503
1.99
100.0
1.31
99.7
0.68
34.2%
201505
3.50
99.7
1.78
97.5
1.72
49.1%
201506
6.42
100.0
3.60
98.0
2.82
43.9%
131
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
201507
7.28
100.0
3.12
97.9
4.16
57.1%
201508
2.20
100.0
0.55
100.0
1.65
75.0%
201509
2.29
100.0
0.64
98.6
1.65
72.1%
201510
2.20
100.0
0.55
100.0
1.65
75.0%
201511
2.20
100.0
0.55
100.0
1.65
75.0%
201512
3.34
100.0
1.53
98.9
1.81
54.2%
201513
3.45
97.1
3.60
98.2
-0.15
-4.3%
201514
3.50
100.0
2.12
98.5
1.38
39.4%
201521
3.76
100.0
1.80
97.7
1.96
52.1%
201522
3.66
100.0
2.24
98.4
1.42
38.8%
201523
10
12
6.49
100.0
3.05
98.0
3.44
53.0%
201525
10
5.55
100.0
2.56
98.0
2.99
53.9%
201526
3.31
99.4
1.78
97.8
1.53
46.2%
201530
12
15
7.13
100.0
10
3.29
97.7
3.84
53.9%
201531
20
25
9.57
100.0
14
4.29
98.0
5.28
55.2%
201532
10
4.68
100.0
2.24
98.8
2.44
52.1%
201533
10
5.14
100.0
2.51
97.5
2.63
51.2%
201534
4.52
99.9
2.10
97.8
2.42
53.5%
201550
13
16
6.74..
100.0
10
2.73
97.7
4.01
59.5%
201551
4.33
100.0
2.35
98.3
1.98
45.7%
201552
2.29
100.0
1.28
99.7
1.01
44.1%
201553
25
35
25.15
100.0
19
11.66
97.5
13.49
53.6%
201554
10
20
8.65
100.0
14
5.93
97.6
2.72
31.4%
201555
10
20
5.63
100.0
2.66
97.6
2.97
52.8%
201556
2.81
99.7
2.13
98.5
0.68
24.2%
201558
3.49
99.9
2.16
97.5
1.33
38.1%
201564
2.94
99.9
1.52
98.2
1.42
48.3%
201566
4.07
100.0
1.74
97.7
2.33
57.2%
201568
3.99
100.0
1.72
97.8
2.27
56.9%
132
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
201570
2.76
100.0
1.60
97.8
1.16
42.0%
201572
23
28
10.61
100.0
17
4.44
97.5
6.17
58.2%
201573
3.88
99.8
1.79
97.9
2.09
53.9%
201575
4.82
99.9
3.25
98.4
1.57
32.6%
201577
15
18
11.98
100.0
14
5.50
97.7
6.48
54.1%
201578
25
35
16.71
,100.0
20
8.38
97.7
8.33
49.9%
201579
10
7.41
100.0
10
3.86
97.6
3.55
47.9%
201580
16
26
11.85
100.0
14
6.43
97.7
5.42
45.7%
201581
10
6.06
99.9
3.90
97.7
2.16
35.6%
201582
10
20
5.47
100.0
3.05
97.6
2.42
44.2%
201586
10
5.45
100.0
2.91
98.3
2.54
46.6%
201589
2.95
100.0
1.51
99.0
1.44
48.8%
202005
12.12
99.8
11.95
97.6
0.17
1.4%
202006
8.76
95.8
13.13
97.8
-4.37
-49.9%
202036
8.76
99.7
7.18
98.6
1.58
18.0%
202037
9.35
98.9
9.35
98.9
0.00
0.0%
202055
14.63
99.3
14.63
99.3
0.00
0.0%
202072
3.51
98.6
3.51
98.6
0.00
0.0%
202073
16.69
99.9
12.45
97.8
4.24
25.4%
202100
24.22
99.9
18.09
98.1
6.13
25.3%
202101
6.63
100.0
4.58
99.6
2.05
30.9%
202105
12.12
97.7
12.12
97.7
0.00
0.0%
202106
10
26.57
100.0
4.25
97.8
22.32
84.0%
202107
5.59
100.0
2.79
100.0
2.80
50.1%
202900
80
90
25.94
100.0
21
43
9.13
97.6
16.81
64.8%
202901
10
14
6.14
100.0
15
3.72
97.7
2.42
39.4%
202907
3.50
99.8
2.36
97.9
1.14
32.6%
202916
110
130
22.95
100.0
32
69
9.12
97.5
13.83
60.3%
202918
30
40
13.36
100.0
23
5.81
97.5
7.55
56.5%
133
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
S
'
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
202921
10
5.94
99.7
11
3.59
97.7
2.35
39.6%
202925
30
40
8.42
100.0
24
4.23
97.6
4.19
49.8%
202930
10
2.85
100.0
1.43
97.6
1.42
49.8%
203001
1.73
98.0
1.03
97.9
0.70
40.5%
203003
10
20
3.00
100.0
1.53
97.7
1.47
49.0%
203004
1.62
100.0
1.01
97.7
0.61
37.7%
203008
1.95
97.6
1.67
97.6
0.28
14.4%
203010
10
20
3.88
99.1
20
3.33
97.7
0.55
14.2%
203012
20
30
6.05
100.0
23
3.62
97.6
2.43
40.2%
203013
1.57
98.5
1.23
97.7
0.34
21.7%
203017
26
36
6.82
100.0
20
3.27
97.9
3.55
52.1%
203018
10
12
4.48
100.0
1.90
98.0
2.58
57.6%
203019
3.07
99.6
2.11
97.8
0.96
31.3%
203020
2.57
99.5
1.71
98.1
0.86
33.5%
203024
130
140
27.71
100.0
29
64
8.58
97.5
19.13
69.0%
203031
10
20
5.20
100.0
11
3.14
97.6
2.06
39.6%
203032
10
12
5.18
100.0
12
2.86
97.6
2.32
44.8%
203033
20
24
8.86
100.0
13
3.56
97.7
5.30
59.8%
203039
30
40
6.29
100.0
16
2.45
97.9
3.84
61.0%
203040
2.92
98.2
1.97
98.0
0.95
32.5%
203044
14
24
6.20
100.0
12
2.94
97.7
3.26
52.6%
203045
1.84
100.0
1.17
98.6
0.67
36.4%
203047
1.60
100.0
0.63
97.8
0.97
60.6%
203053
2.48
97.3
2.57
98.0
-0.09
-3.6%
203056
3.70
100.0
2.27
98.2
1.43
38.6%
203057
2.86
99.9
1.85
99.2
1.01
35.3%
203058
4.37
100.0
2.48
97.8
1.89
43.2%
203059
4.48
100.0
3.13
98.6
1.35
30.1%
203060
3.91
99.9
11
2.41
97.7
1.50
38.4%
134
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
203061
2.80
99.0
1.79
98.8
1.01
36.1%
203064
10
4.73
99.9
2.57
97.9
2.16
45.7%
203065
2.29
99.2
1.89
97.6
0.40
17.5%
203066
5.30
100.0
2.98
97.7
2.32
43.8%
203067
3.39
99.5
2.21
97.6
1.18
34.8%
203068
50
60
20.03
100.0
11
27
7.11
97.6
12.92
64.5%
203069
2.95
96.8
10
2.47
97.5
0.48
16.3%
203070
18
20
10.05
100.0
14
3.91
97.6
6.14
61.1%
203071
3.21
96.7
3.20
98.4
0.01
0.3%
203072
3.13
100.0
1.80
98.4
1.33
42.5%
203076
2.68
100.0
1.99
99.6
0.69
25.7%
203081
10
20
5.29
100.0
2.95
97.6
2.34
44.2%
203082
7.25
100.0
4.51
97.7
2.74
37.8%
203083
10
20
10.46
100.0
11
6.62
98.2
3.84
36.7%
203085
12
16
17.79
100.0
3.50
99.2
14.29
80.3%
203086
12
16
21.50
100.0
6.88
98.0
14.62
68.0%
203091
12
14
20.01
100.0
8.97
97.6
11.04
55.2%
203093
13
16
30.57
100.0
10.39
98.0
20.18
66.0%
203094
145
175
195.22
100.0
34
45
37.27
97.5
157.95
80.9%
203095
10
12
7.21
100.0
13
3.30
97.7
3.91
54.2%
203096
6.73
99.9
4.63
97.9
2.10
31.2%
203097
30
40
49.61
100.0
14
14.67
97.6
34.94
70.4%
203098
4.90
100.0
2.45
100.0
2.45
50.0%
203099
21.64
100.0
11.45
97.9
10.19
47.1%
203202
5.31
100.0
2.68
98.6
2.63
49.5%
203312
2.37
30.3
12
13
7.48
98.6
-5.11
-215.6%
203313
3.29
100.0
1.37
98.6
1.92
58.4%
203314
3.78
100.0
1.72
97.8
2.06
54.5%
203315
9.08
99.0
7.86
97.7
1.22
13.4%
135
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
203316
3.49
99.9
2 .
2.43
98.0
1.06
203317
1.24
97.7
1.24
97.7
0.00
0.0%
203318
1.36
83.3
2.20
98.5
-0.84
-61.8%
203319
2.47
100.0
1.16
98.1
1.31
53.0%
203321
3.12
100.0
1.24
98.1
1.88
60.3%
203322
2.89
100.0
1.75
98.6
1.14
39.4%
203323
2.95
99.3
2.39
98.5
0.56
19.0%
203324
1.02
98.6
1.02
98.6
0.00
0.0%
203325
2.51
99.7
1.56
97.5
0.95
37.8%
203326
1.44
96.0
1.58
97.9
-0.14
-9.7%
203327
2.92
97.8
2.90
98.1
0.02
0.7%
203400
5.11
99.9
2.94
97.6
2.17
42.5%
203403
10
6.89
98.1
11
6.43
97.8
0.46
203404
5.06
100.0
2.14
98.2
2.92
57.7%
203405
2.55
97.0
2.92
98.4
-0.37
-14.5%
203406
3.12
100.0
1.69
97.8
1.43
45.8%
203409
5.14
100.0
1.76
98.6
3.38
65.8%
203410
4.88
100.0
1.63
100.0
3.25
66.6%
203413
3.31
100.0
1.26
98.6
2.05
61.9%
203414
3.13
100.0
0.78
100.0
2.35
75.1%
203415
3.20
100.0
0.80
100.0
2.40
75.0%
203416
3.29
100.0
0.89
98.6
2.40
72.9%
203417
2.62
100.0
0.65
100.0
1.97
75.2%
203418
4.02
100.0
1.07
98.6
2.95
73.4%
203419
3.94
100.0
0.98
100.0
2.96
75.1%
203421
6.08
98.0
6.08
98.0
0.00
0.0%
203454
12.29
99.7
7.36
97.5
4.93
40.1%
203460
4.50
97.9
4.38
97.8
0.12
2.7%
203463
4.52
98.8
4.08
98.2
0.44
9.7%
136
30.4%
6.7%
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
203472
8.06
98.2
8.05
98.1
0.01
0.1%
203473
10
12
11.09
100.0
4.78
98.0
6.31
56.9%
203474
10
12
10.87
100.0
4.02
98.1
6.85
63.0%
203477
2.55
99.9
1.83
97.8
0.72
28.2%
203478
2.53
97.8
2.53
97.8
0.00
0.0%
203483
12.71
100.0
6.51
97.7
6.20
48.8%
203484
9.26
100.0
5.35
98.1
3.91
42.2%
203488
2.21
100.0
1.30
98.4
0.91
41.2%
203503
7.05
100.0
3.43
97.6
3.62
51.3%
203506
4.90
99.3
3.29
98.6
1.61
32.9%
203507
9.05
100.0
.0
2.52
98.6
6.53
72.2%
203509
6.04
99.6
4.11
97.7
1.93
32.0%
203510
8.11
100.0
4.92
98.3
3.19
39.3%
203512
2.
5.96
99.0
5.96
99.0
0.00
0.0%
203520
6.87
99.9
4.69
98.1
2.18
31.7%
203521
19.53
100.0
9.59
98.2
9.94
50.9%
203523
2.00
100.0
1.00
100.0
1.00
50.0%
203525
3.00
100.0
1.00
100.0
2.00
66.7%
203527
6.26
100.0
3.16
97.7
3.10
49.5%
203532
5.17
100.0
3.32
98.1
1.85
35.8%
203533
4.95
100.0
1.70
98.6
3.25
65.7%
203566
4.34
97.6
4.34
97.6
0.00
0.0%
203590
12.23
92.7
18.30
98.7
-6.07
-49.6%
203591
12.28
90.5
20.62
98.3
-8.34
-67.9%
203596
14.96
99.7
14.96
99.7
0.00
0.0%
203597
15.03
100.0
11.23
98.6
3.80
25.3%
203598
22.35
99.9
14.85
98.7
7.50
33.6%
203599
14.95
99.6
14.95
99.6
0.00
0.0%
203601
5.40
99.6
4.19
98.8
1.21
22.4%
137
CURRENT
PRODUCT
OPTIMAL
Cost
($)
CSL
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
203604
20
13.49
100.0
10
7.65
97.7
5.84
43.3%
203609
10
57.61
100.0
24.72
97.9
32.89
57.1%
203610
32.09
100.0
18.77
97.8
13.32
41.5%
203611
12.16
99.7
10.11
98.6
2.05
16.9%
203618
6.49
100.0
4.16
97.6
2.33
35.9%
203626
4.58
98.1
4.58
98.1
0.00
203641
16.13
99.8
10.98
98.1
5.15
31.9%
203642
48
60
104.91
100.0
13
17
26.82
97.7
78.09
74.4%
203650
3.50
100.0
2.58
98.6
0.92
26.3%
203655
68
80
72.65
100.0
14
22
16.99
97.5
55.66
76.6%
203672
78
90
230.43
100.0
19
23
44.54
97.5
185.89
80.7%
203675
9.73
99.2
9.41
98.1
0.32
3.3%
203676
24
30
60.12
100.0
11.20
98.1
48.92
81.4%
203677
94
100
236.52
100.0
18
22
38.50
97.8
198.02
83.7%
203678
10
32.32
100.0
17.94
98.0
14.38
44.5%
203679
14
57.80
100.0
26.94
97.8
30.86
53.4%
203680
194
200
640.14
100.0
37
48
92.45
97.5
547.69
85.6%
203681
10
16
51.57
100.0
16.33
97.9
35.24
68.3%
203683
17.50
100.0
12.07
98.2
5.43
31.0%
203696
24.86
99.7
20.85
98.6
4.01
16.1%
203698
15.90
98.1
15.90
98.1
0.00
0.0%
203699
41.16
99.8
29.19
98.2
11.97
29.1%
203702
3.40
97.2
4.97
98.6
-1.57
-46.2%
203703
5.45
100.0
3.78
99.7
1.67
30.6%
203704
5.06
99.6
3.44
97.8
1.62
32.0%
203705
8.12
100.0
4.03
99.6
4.09
50.4%
203712
6.99
100.0
3.48
98.6
3.51
50.2%
203717
5.85
100.0
3.74
97.6
2.11
36.1%
203740
3.94
100.0
1.97
100.0
1.97
50.0%
138
0.0%
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
SAVINGS
Cost
CSL
($)
(%)
($)
(%)
203877
7.12
100.0
3.27
99.3
3.85
54.1%
203879
4.47
99.6
3.05
97.8
1.42
31.8%
203906
4.56
100.0
3.37
98.6
1.19
26.1%
203907
4.57
98.1
4.57
98.1
0.00
0.0%
203911
4.51
98.6
4.51
98.6
0.00
0.0%
203914
4.60
96.6
6.20
98.2
-1.60
-34.8%
203916
13.95
100.0
7.23
99.0
6.72
48.2%
203919
14.17
100.0
8.67
98.3
5.50
38.8%
203921
3.34
98.1
3.34
98.1
0.00
0.0%
203931
10.65
99.8
7.49
97.6
3.16
29.7%
203932
10
12
19.09
100.0
9.56
97.9
9.53
49.9%
203935
17.47
100.0
10.62
98.0
6.85
39.2%
203936
5.98
95.2
8.92
98.1
-2.94
-49.2%
203937
3.06
98.6
3.06
98.6
0.00
0.0%
203938
6.23
99.0
5.43
98.0
0.80
12.8%
203939
4.13
94.8
6.06
97.8
-1.93
-46.7%
203942
8.50
99.7
6.96
98.6
1.54
18.1%
203943
8.39
99.7
5.68
97.5
2.71
32.3%
203954
8.65
100.0
4.32
100.0
4.33
50.1%
203961
25.24
100.0
11.14
98.3
14.10
55.9%
203977
12.16
94.5
24.58
98.1
-12.42
-102.1%
204001
15.95
100.0
10.47
97.6
5.48
34.4%
204004
7.29
97.7
7.29
97.7
0.00
0.0%
204510
1.06
100.0
0.53
98.6
0.53
50.0%
204511
1.52
97.9
1.52
97.9
0.00
204513
1.06
99.5
0.77
98.1
0.29
27.4%
204570
2.22
97.3
1.97
97.6
0.25
11.3%
204573
2.89
99.0
2.44
98.5
0.45
15.6%
204600
2.31
100.0
1.20
98.6
1.11
48.1%
139
0.0%
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
SAVINGS
Cost
CSL
($)
.(%)
($)
(%)
204601
2.52
96.2
3.13
98.0
-0.61
-24.2%
204603
3.54
99.6
2.68
98.3
0.86
24.3%
204604
3.36
98.6
3.02
97.6
0.34
10.1%
204649
6.75
100.0
3.64
99.6
3.11
46.1%
204663
3.21
98.8
2.43
98.2
0.78
24.3%
204665
3.05
100.0
1.53
100.0
1.52
49.8%
204666
2.45
100.0
1.22
100.0
1.23
50.2%
204667
1.22
100.0
1.22
100.0
0.00
0.0%
204668
0.94
100.0
0.52
98.6
0.42
44.7%
204808
2.77
100.0
0.88
97.8
1.89
68.2%
205350
3.08
99.6
3.08
99.6
0.00
0.0%
205375
2.41
99.1
1.93
97.8
0.48
19.9%
205376
2.44
100.0
1.81
99.8
0.63
25.8%
205377
2.26
100.0
1.19
97.8
1.07
47.3%
205378
2.27
100.0
1.56
97.8
0.71
31.3%
205379
2.63
100.0
1.61
98.6
1.02
38.8%
205380
3.59
100.0
2.10
99.6
1.49
41.5%
205381
2.52
99.8
2.21
97.6
0.31
12.3%
205382
4.92
99.8
3.69
97.9
1.23
25.0%
205383
2.44
99.7
1.60
97.5
0.84
34.4%
205384
8.02
100.0
5.09
98.6
2.93
36.5%
205385
3.36
99.4
2.64
98.4
0.72
21.4%
205389
5.98
93.4
6.45
97.6
-0.47
-7.9%
205390
2.91
88.7
3.65
97.7
-0.74
-25.4%
205392
2.45
99.1
2.01
97.9
0.44
18.0%
205393
1.90
97.2
1.87
98.5
0.03
1.6%
205394
' 2
1.90
100.0
1.38
98.6
0.52
27.4%
205395
1.62
99.9
1.14
97.8
0.48
29.6%
205397
2.38
99.9
1.45
98.1
0.93
39.1%
140
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
205398
1.40
97.6
1.40
97.6
0.00
205635
3.90
96.7
4.19
98.2
-0.29
-7.4%
205752
3.30
97.2
4.83
98.6
-1.53
-46.4%
205905
1.66
98.6
1.66
98.6
0.00
0.0%
205922
1.08
97.2
1.44
98.6
-0.36
-33.3%
205925
2.59
99.8
2.28
97.6
0.31
12.0%
205932
1.80
95.8
2.46
97.8
-0.66
-36.7%
206018
2.14
100.0
1.07
100.0
1.07
50.0%
206019
2.02
100.0
1.01
100.0
1.01
50.0%
206101
0.87
100.0
0.48
98.6
0.39
44.8%
206118
3.34
100.0
2.45
99.5
0.89
26.6%
206119
6.91
100.0
3.56
97.8
3.35
48.5%
206121
2.43
99.9
1.75
97.8
0.68
28.0%
206350
3.33
95.8
4.80
97.8
-1.47
-44.1%
206383
3.20
100.0
3.20
100.0
0.00
0.0%
206393
3.19
77.6
6.08
97.5
-2.89
-90.6%
206405
2.01
100.0
1.34
98.7
0.67
33.3%
206406
5.57
100.0
3.12
99.1
2.45
44.0%
206407
3.07
99.9
2.83
98.1
0.24
7.8%
206408
3.30
99.6
3.30
99.6
0.00
0.0%
206409
3.22
99.7
3.22
99.7
0.00
0.0%
206410
5.73
100.0
2.28
99.2
3.45
60.2%
206411
6.01
100.0
2.59
98.0
3.42
56.9%
206414
10
12
13.86
100.0
6.34
97.7
7.52
54.3%
206415
10
12
8.94
10*0.0
2.85
97.6
6.09
68.1%
206417
10
20
5.61
100.0
3.10
97.6
2.51
44.7%
206418
3.07
99.9
1.86
97.9
1.21
39.4%
206454
3.77
99.8
2.66
97.9
1.11
29.4%
206455
4.90
100.0
3.07
97.6
1.83
37.3%
141
0.0%
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
206456
5.12
100.0
3.34
97.8
1.78
34.8%
206458
4.81
100.0
3.30
97.8
1.51
31.4%
206459
1.98
100.0
1.02
97.7
0.96
48.5%
206504
6.21
99.9
4.58
97.8
1.63
26.2%
206511
3.20
100.0
2.33
99.6
0.87
27.2%
206515
0.87
100.0
0.87
100.0
0.00
0.0%
206516
1.12
95.8
1.41
97.8
-0.29
-25.9%
206517
2.83
95.8
4.03
97.8
-1.20
-42.4%
206530
0.96
98.6
0.96
98.6
0.00
0.0%
206547
1.05
97.2
1.40
98.6
-0.35
-33.3%
206550
1.18
97.2
1.60
98.6
-0.42
-35.6%
206551
1.32
94.5
2.09
98.1
-0.77
-58.3%
206552
1.33
100.0
1.33
100.0
0.00
0.0%
206553
3.79
99.8
2.62
98.7
1.17
30.9%
206565
1.46
97.2
2.02
98.6
-0.56
-38.4%
206567
1.22
91.9
1.92
97.8
-0.70
-57.4%
206572
1.22
98.6
1.22
98.6
0.00
0.0%
206573
2.55
99.0
2.46
99.5
0.09
3.5%
206576
2.96
99.3
2.96
99.3
0.00
0.0%
206610
3.85
100.0
1.92
100.0
1.93
50.1%
206812
0.95
98.6
0.95
98.6
0.00
0.0%
206856
3.48
99.9
2.50
99.3
0.98
28.2%
206857
1.80
97.2
2.53
98.6
-0.73
-40.6%
206858
1.50
98.6
1.50
98.6
0.00
0.0%
206872
1.22
100.0
1.22
100.0
0.00
0.0%
206876
1.55
97.2
2.16
98.6
-0.61
-39.4%
206901
0.99
100.0
0.40
97.8
0.59
59.6%
206902
2.46
100.0
1.16
97.6
1.30
52.8%
206903
1.63
100.0
0.95
98.4
0.68
41.7%
142
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
206904
1.42
99.6
1.11
97.5
0.31
21.8%
206905
10
14
3.13
100.0
1.58
98.6
1.55
49.5%
206906
10
2.97
100.0
1.22
97.9
1.75
58.9%
206907
10
3.15
100.0
1.35
97.5
1.80
57.1%
206908
12
14
5.10
100.0
10
1.87
97.9
3.23
63.3%
206909
1.24
100.0
0.82
98.9
0.42
33.9%
206910
1.20
99.5
1.00
98.8
0.20
16.7%
206911
1.76
99.9
1.09
98.4
0.67
38.1%
206912
1.69
99.4
1.23
97.7
0.46
27.2%
206913
0.89
100.0
0.46
98.1
0.43
48.3%
206914
0.89
99.6
0.65
98.2
0.24
27.0%
206915
1.17
99.7
0.75
99.0
0.42
35.9%
206916
35
45
8.56
100.0
22
3.58
97.7
4.98
58.2%
206917
65
75
14.50
100.0
30
4.19
97.5
10.31
71.1%
206918
15
25
4.63
100.0
14
2.62
97.7
2.01
43.4%
206919
33
45
7.98
100.0
21
3.44
97.5
4.54
56.9%
206920
12
22
3.66
100.0
13
1.93
97.6
1.73
47.3%
206921
14
24
4.29
100.0
15
2.36
97.5
1.93
45.0%
206922
10
4.16
100.0
11
2.02
98.0
2.14
51.4%
206923
14
24
4.30
100.0
13
2.32
97.9
1.98
46.0%
206924
10
12
4.26
100.0
11
1.94
98.4
2.32
54.5%
206925
2.60
100.0
1.26
97.6
1.34
51.5%
206926
1.86
98.5
1.62
97.5
0.24
12.9%
206928
12
4.43
99.5
12
3.01
97.5
1.42
32.1%
206930
25
30
8.23
100.0
16
3.52
97.5
4.71
57.2%
206932
2.04
97.4
1.53
97.6
0.51
25.0%
206940
1.57
100.0
0.93
98.1
0.64
40.8%
206941
13
15
5.93
100.0
16
2.38
97.7
3.55
59.9%
206942
10
3.18
100.0
10
1.58
97.6
1.60
50.3%
143
CURRENT
PRODUCT
OPTIMAL
Cost
CSL
($)
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
206943
14
24
4.43
100.0
17
2.50
97.6
1.93
43.6%
206944
11
14
4.81
100.0
11
2.06
98.1
2.75
57.2%
206945
0.74
99.9
0.48
98.1
0.26
35.1%
206946
14
24
4.08
100.0
17
2.30
97.7
1.78
43.6%
206947
18
28
5.06
100.0
19
2.70
97.5
2.36
46.6%
206948
18
28
5.21
100.0
18
2.57
97.6
2.64
50.7%
206949
14
24
4.30
100.0
12
2.28
97.5
2.02
47.0%
206950
0.70
100.0
0.35
98.6
0.35
50.0%
206951
1.45
100.0
0.48
98.1
0.97
66.9%
206952
1.16
100.0
0.27
98.6
0.89
76.7%
206953
1.54
100.0
0.51
97.6
1.03
66.9%
206955
1.44
100.0
0.91
98.0
0.53
36.8%
206964
1.98
99.4
1.33
97.6
0.65
32.8%
206965
1.73
99.6
0.93
99.0
0.80
46.2%
206996
10
4.54
100.0
2.16
97.8
2.38
52.4%
206997
10
3.67
100.0
1.74
97.8
1.93
52.6%
206998
2.61
100.0
1.07
98.6
1.54
59.0%
206999
1.17
99.8
. 0.86
97.6
0.31
26.5%
207145
2.69
100.0
10
1.36
97.6
1.33
49.4%
207146
2.19
100.0
0.87
97.5
1.32
60.3%
207147
1.29
100.0
0.37
98.6
0.92
71.3%
207148
1.34
100.0
0.40
97.8
0.94
70.1%
207501
9.69
100.0
6.34
98.4
3.35
34.6%
207502
10
12
13.64
100.0
6.22
98.2
7.42
54.4%
207503
6.22
97.5
5.77
97.5
0.45
7.2%
207504
10
12
5.28
99.8
13
3.15
97.5
2.13
40.3%
207505
10
12
4.72
100.0
2.04
97.8
2.68
56.8%
207506
3.76
100.0
1.81
97.8
1.95
51.9%
207507
3.91
100.0
1.80
97.9
2.11
54.0%
144
CURRENT
PRODUCT
Cost
($)
OPTIMAL
CSL
(%)
Cost
($)
SAVINGS
CSL
(%)
($)
(%)
207508
13
16
7.15
100.0
. 3
3.19
97.7
3.96
55.4%
207509
17
20
9.03
100.0
3.25
97.5
5.78
64.0%
207510
1.80
99.0
1.51
98.0
0.29
16.1%
207511
10
12
11.62
100.0
5.67
97.9
5.95
51.2%
207512
25
125
2.11
100.0
0.08
100.0
2.03
96.2%
207521
17
20
15.97
100.0
6.13
97.8
9.84
61.6%
207522
25
125
1.56
100.0
0.06
100.0
1.50
96.2%
207541
16
26
15.86
100.0
12
6.61
97.7
9.25
58.3%
207561
26
36
18.35
100.0
15
6.02
97.6
12.33
67.2%
207581
10
20
8.50
100.0
3.68
97.7
4.82
56.7%
207591
12
15
7.40
100.0
10
3.49
97.8
3.91
52.8%
207592
15
7.79
100.0
4.74
97.8
3.05
39.2%
207593
12
16.50
100.0
7.33
98.1
9.17
55.6%
207594
4.76
100.0
2.70
97.7
2.06
43.3%
207595
1.73
99.9
1.24
98.5
0.49
28.3%
207596
2.71
100.0
1.30
97.6
1.41
52.0%
207597
. 2.90
100.0
1.40
97.8
1.50
51.7%
207598
2.03
100.0
0.65
97.8
1.38
68.0%
145