Open Collections

UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

Inventory control in the retail sector : A case study of Canadian Tire Pacific Associates Kapalka, Brian Anthony 1995

Your browser doesn't seem to have a PDF viewer, please download the PDF to view this item.

Item Metadata

Download

Media
831-ubc_1995-0220.pdf [ 6.11MB ]
Metadata
JSON: 831-1.0086746.json
JSON-LD: 831-1.0086746-ld.json
RDF/XML (Pretty): 831-1.0086746-rdf.xml
RDF/JSON: 831-1.0086746-rdf.json
Turtle: 831-1.0086746-turtle.txt
N-Triples: 831-1.0086746-rdf-ntriples.txt
Original Record: 831-1.0086746-source.json
Full Text
831-1.0086746-fulltext.txt
Citation
831-1.0086746.ris

Full Text

I N V E N T O R Y C O N T R O L IN T H E R E T A I L S E C T O R : A C A S E S T U D Y O F 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  B.Sc.(C.E.), The University of Manitoba, 1992 B.Sc., The University of Manitoba, 1992  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)  We accept this thesis as conforming to the required standard  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.  Department of Cotv^errg- )> ^ o s m e c s AAnmn\a-WoA\or' ftni  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.  Specifically, we formulate a Markov chain  model for a periodic review system with a deterministic lead time and lost sales. The model utilizes empirical demand data to calculate the long-run average cost of inventory for a given (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.  Next, we create a prototype of the interface that enables  managers to use the model interactively. Finally, we compare the existing inventory policy to the optimal policy for each of 420 products sold at one of the stores.  This thesis finds that  Canadian Tire Pacific Associates is currently holding excessively large in-store inventory and that it could reduce its cost of inventory by approximately 40% to 50%.  We estimate that  implementing optimal inventory control in the stores would result in annual savings of between $5.5 and $7 million.  ii  Table of Contents  Abstract  ii  Table of Contents  iii  List of Tables  v  List of Figures  vi  Acknowledgement  vii  I. INTRODUCTION  1  II. T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N TIRE PACIFIC ASSOCIATES A. B. C. D. E.  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  IV. A N A L G O R I T H M FOR OBTAINING T H E O P T I M A L (s,S) POLICY A . Introduction B. A Grid Search C. A Technique for Updating the Transition Probability Matrix A new policy (s+m,S) A new policy (s,S+m) The modified algorithm D. A Lower Bound on S . . . E . A Heuristic Search  35 35 36 41 41 42 43 45 48  V. T H E INTERFACE  52  iii  VI. RESULTS A N D SENSITIVITY ANALYSIS A . Comparison of Current Policies to Optimal Policies B. Sensitivity Analysis on the Ordering Cost and Holding Rate C . Sensitivity Analysis on the Demand Probability Mass Function  55 55 62 65  VII. C O N C L U S I O N  70  Afterword  73  Bibliography  74  Appendix A : A Portion of the "Sales" File for Product 200001, a 30-amp Inline Fuse  76  Appendix B: Sample "Distribution" Files  77  Appendix C : A Proof that the Limiting Distribution is Independent of the Initial State  79  Appendix D: A Measure for the Steady State Customer Service Level  83  Appendix E : The Calculation of the Conditional Expected Demand Not Satisfied During a Period of T Consecutive Days  86  Appendix F: Justification of the Updating Technique for the New Policy (s+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:  The Source Code for the "Interface" Module  104  Appendix J:  The Source Code for the "Main" Module  119  Appendix K: Current and Optimal Policies for Product Category 20 at Store 6  iv  131  List o f Tables  Table 1.  Location and particulars of the 21 stores  10  Table 2.  Execution times of the algorithms for product 200001, a 30-amp inline fuse  39  Table 3.  Execution times of the algorithms for product 206917, a 6% solder connector  40  Table 4.  Products with insufficient existing policies  56  Table 5.  Products with the largest potential absolute savings  60  Table 6.  A comparison of "optimal" policies to "true optimal" policies  63  Table 7.  The cost of existing policies and the relative savings of the "optimal" policies under various scenarios "True optimal" and "optimal" policies for each demand scenario  Table 8.  v  .64 66  List of Figures  Figure 1.  A typical sample path of the process with a 4-day review period and a 2-day lead time  24  Figure 2.  The flow chart of the grid search algorithm  38  Figure 3.  The flow chart of the grid search algorithm utilizing the updating technique for the transition probability matrix  44  Figure 4.  A n evaluation of the lower bound, S  47  Figure 5.  The flow chart of the heuristic algorithm  Figure 6.  The distribution of savings of optimal policies in (a) dollars and  min  (b) percentage of current cost  50  59  Figure A-1. The title screen  97  Figure A-2. The main menu  98  Figure A-3. Calculating the optimal policy and evaluating the current policy  99  Figure A-4. Displaying the results  100  Figure A-5. Entering an alternate policy  101  Figure A-6. The particulars of the alternate policy  102  Figure A-7. The main menu revisited  103  vi  Acknowledgement  The completion of this thesis was made possible by the encouragement and assistance of a number of people. I would like to express my sincere appreciation to my thesis supervisor, Professor Martin Puterman, for all of his many efforts on my behalf. His help, advice, patience, charity, and tolerance were very much appreciated. I would like to acknowledge Professor Hong Chen and Professor Garland Chow for their time and input as members of my thesis committee.  In addition, I must acknowledge the  assistance of 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  emphasized rapid rates of inventory turnover (Silver and Peterson, 1985).  Following the  Second World War, Arrow, Harris, and Marschak (1951) and Dvoretzky, Kiefer, and Wolfowitz (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,  meaning it is unknown but follows  a known probability distribution.  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.  1  Each of these costs can be fixed, proportional,  nonlinear, or some complex combination of these.  Further, because nearly all inventory  problems require decisions be made sequentially over a period of time, the costs can be either discounted or averaged. In the former case, a discount factor is included in the cost function in order to account for the time value of money. However, since most inventory problems are on-going, the long-run average cost is usually minimized (Lee and Nahmias, 1993).  In  practice, this is achieved by minimizing the expected cost per time period under steady state conditions. Finally, the physical characteristics of the system are important in determining the  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  2  complexity of the model. For example, the review process can be either continuous, in which case the inventory is reviewed continuously and orders are placed as soon as the stock reaches a certain level; or periodic, in which case the inventory is reviewed at regular intervals and orders can be placed only at those fixed times. Also, excess demand can be fully backordered, as is common in many manufacturing and wholesale systems, completely lost, as is common in most retail environments, or some combination of the two. Lead time assumptions are also important: models with lead times are more complex than those in which the supply of inventory is assumed to be instantaneous. Although the literature is dominated by single-product models (Lee and Nahmias, 1993), much recent work has focused on extending those models to multiple-product problems. However, multiple-product models are inherently more complex than the simple-product models.  In fact, no efficient algorithms are currently available for determining fully optimal  strategies for most multiple-product problems (Federgruen, 1993). As a result, research has focused on the development of easily computable "approximation" techniques.  Muckstadt and  Roundy (1993) provide a good overview of multiple-product and/or multiple-location models with deterministic demand, although emphasis is placed on models for production and distribution. Federgruen (1993) extends the discussion to consider these models under uncertain demand and also provides a complete list of references on the subject.  Silver and Peterson  (1985) discuss models for coordinated replenishments for both deterministic and stochastic demand. In this thesis, we examine the inventory system at Canadian Tire Pacific Associates, owner of 21 retail stores and a central warehouse.  Although this is a multiple-product,  multiple-location, single-warehouse problem, and, strictly speaking, should be modelled as such, we analyze the inventory problem on a product-by-product and store-by-store basis. We believe 3  that this simpler single-product, single-location model captures the essentials of the problem for two reasons.  First, the coordination of replenishments for products and/or locations is most  advantageous when significant savings are possible because of high "first order" costs and low marginal costs for placing subsequent orders.  However, because of the large number of  products and the physical distribution system in this problem, trucks are dispatched to stores on a regular basis. Therefore, the benefits of coordinating replenishments for this problem are negligible. Second, we believe that controlling in-store inventory alone can result in substantial savings to Canadian Tire Pacific Associates. Further, given the excessive amount of inventory in the warehouse, a single-location model assuming an infinite warehouse capacity is reasonable. Of course, should inventory control in the warehouse become a priority, a more elaborate model would be required. More specifically, we consider a periodic review, single-product inventory model with stationary, independent, stochastic demand, a deterministic lead time, and an infinite planning horizon.  The probability mass function for the demand is based on empirical sales data  collected over a period of approximately ten months.  The cost of inventory includes a  proportional holding cost and a fixed ordering cost, neither of which is discounted. 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.  However, each of these methods generate  calculations that are complex and time consuming. Therefore, much research interest lies in 4  developing techniques to find approximate (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).  Porteus (1985) presents three approximation techniques and compares  them to fourteen others for a periodic review, single-product inventory model in which shortages are fully backordered and a shortage cost is incurred. Federgruen, Groenevelt and Tijms (1984) present an algorithm for finding approximate (s,S) policies for a continuous review model with backordering and a service level constraint.  Also, Tijms and Groenevelt (1984)  present simple approximations for periodic review systems with lost sales and service level constraints. 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.  Given the slower moving products at Canadian Tire,  2  it is unclear how well such approximation techniques would perform. Therefore, we do not attempt to apply or modify any of these approximation methods. Exact optimal policies for this problem can be obtained by formulating a constrained Markov decision process and solving it. However, the data generating requirements and the lack of a good upper bound on S make this formulation impractical. Therefore, we formulate a Markov chain model for fixed values of s and S and then employ a search technique to find the optimal values for s and S. In order to improve the performance of the model, we develop a heuristic search that locates "near" optimal policies relatively quickly. The remaining chapters of this thesis are organized as follows.  In Chapter II, an  overview of the existing inventory system at Canadian Tire, is presented along with a description  For example, very few of the products analyzed have optimal values of S exceeding 20, with the largest value of S equalling 69. 2  5  of the problem. Next, a multi-phase project designed to develop a fully integrated, interactive inventory control system is described, with the scope of the research reported in this thesis completing the first phase of the project. Finally, a description of the demand and cost data is given. In Chapter III, we formulate a Markov chain model that can be used to calculate the cost and service level associated with a given (s,S) policy.  Based on several simplifying  assumptions, the Markov chain is formulated and the equations for the corresponding transition probability matrix are developed. Then, given the limiting probability distribution of the chain, the equations for the steady state annual cost of inventory and the corresponding service level are obtained. The chapter concludes with a brief summary of the model. In Chapter IV, an algorithm that searches for the optimal (s,S) policy is developed. As a starting point, a simple grid search algorithm is developed and evaluated on the basis of execution time.  In order to improve the algorithm's speed, a technique for updating the  transition probability matrix is presented, and the improvement in the algorithm is noted. Next, a theoretical lower bound on S is obtained, although the corresponding reduction in the execution time is minimal. Finally, based on two assumptions regarding the "shape" of the feasible space, a heuristic search is developed which improves the speed of the algorithm significantly. In Chapter V , a prototype of the inventory control 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.  The chapter concludes by recommending specific options be including in  future versions to make the system more automated and "user-friendly". In Chapter VI, optimal policies for all products in one product category sold at one store 6  are compared to existing policies on the basis of expected annual costs and customer service levels.  The analysis suggests that existing policies result in a large excess inventory and that  implementing the optimal policies would reduce the annual cost of inventory by approximately 50%. A sensitivity analysis on the cost estimates is performed and suggests that the model is not sensitive to relative errors of approximately 20% in the cost estimates. Finally, a sensitivity analysis on the demand probability mass function is performed. The analysis indicates that the model is sensitive, at least in terms of the customer service level, to slight changes in the tail of the demand distributions of "low"-demand products. Finally, in Chapter VII, the results of the analysis are summarized and future work is outlined. In order to incorporate recent changes in the review procedures at several stores, the model must be modified to allow for the duration of the review period to exceed the lead time. We recommend that the second phase of the project proceed; specifically, that a data collection and storage scheme be designed and that a forecasting model be developed.  Because of the  substantial savings that can be realized by reducing inventory only at the stores, inventory control at the warehouse should also be investigated.  7  II. T H E I N V E N T O R Y S Y S T E M A T C A N A D I A N 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.  Canadian Tire Pacific  Associates also owns a central warehouse in Burnaby at which inventory is received from Toronto.  Inventory is then shipped periodically from the warehouse via truck to the local  stores. In 1992, total sales at the stores exceeded $99 million, and the value of inventory was estimated to be $28 million, of which approximately half was stored in the warehouse. On selected days of each week, a 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.  4  Whether or not an order is placed for a product depends upon its current inventory level, its target level, and its minimum fill.  5  If the target level less the current level exceeds the  minimum fill, an order is placed to bring the stock up to the target level.  "Active" products are those that are regularly restocked. Associates can choose from up to 50,000 products. 3  From the moment  Canadian Tire Pacific  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  8  the order is placed to the moment the product is reshelved takes between two to four days, depending on the store.  On average, 11,000 items are shipped from the warehouse at each  "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).  6  Each product has associated with it a target level for each "size" of store.  Consequently, all stores of the same "size" have identical inventory policies. Table 1 lists the location, "size", number of "picks" per week, sales, and floor space of each store as of October 1993. Periodically, the inventory manager reviews the policies and, when deemed necessary, adjusts them. In this way, the manager can account for seasonality in demand, changes in mean demand, and any "shortcomings" of previous policies. At the present time, the review process is not automated nor performed on-line.  The inventory manager uses H"xl5" computer  printouts, with five products to a sheet, to study the relevant information and on which to note any changes.  Afterward, the changes are recorded in the system and the new policies take  effect. Currently, the inventory policies are based on "rules of thumb" developed through the years and not on a statistical analysis of demand nor on a calculation of the cost of inventory. These "rules of thumb" incorporate a marketing philosophy which at times dominates the inventory strategy. The prevailing philosophy holds that a large in-store inventory instills  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  9  Table 1. Location and particulars of the 21 stores.  Store  Location  Store Size  Picks Per Week  1992 Sales  ($)  Floor Space (ft ) 2  1  Chilliwack  S  2  2,901,969  6,678  2  Coquitlam  M  2  4,015,303  6,510  3  Langley  EJ  2  8,138,673  15,422  4  Scott Road  EJ  2  7,307,820  15,064  5  Maple Ridge  L  2  4,102,110  6,678  6  Kingsway  L  2  4,153,736  6,574  7  Richmond  EJ  2  8,175,105  14,961  8  North Vancouver  M  2  3,856,571  6,534  9  Guildford  M  2  3,714,372  6,567  10  Burnaby  M  2  3,532,752  6,983  11  New Westminster  S  1  2,417,992  6,470  12  Abbotsford  EJ  2  7,899,398  15,303  13  Hastings  J  2  4,647,794  9,849  14  King Edward  EJ  2  3,825,372  25,492  15  White Rock  L  2  3,960,262  6,870  16  Main & Mountain  S  1  2,705,602  6,431  17  Heather  J  2  4,161,227  9,427  18  King George  J  2  4,606,817  9,640  19  Cambie  J  2  5,855,022  9,091  20  Lougheed  M  1  3,114,180  6,615  21  Burrard  J  2  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.  However, management has adopted this philosophy without any  analysis of the cost of holding excess inventory.  Only recently has management begun to  question the cost-effectiveness of allocating inventory based on these "rules of thumb". Speculating that existing inventory practices might be deficient, Mr. Don Graham, the vice-president of Canadian Tire Pacific Associates, commissioned a pilot study to examine the inventory system and to propose alternate strategies.  7  The study, using a steady state model  to represent a simplified inventory system, suggested that existing policies lead to overly high inventory levels.  More importantly, the study outlined a methodology that would enable  management to determine inventory levels based on observed demand.  The pilot study  recommended that a more detailed model of the inventory system be formulated, that the methodology be expanded to incorporate the cost of inventory, and that an algorithm be developed that would quickly identify the optimal inventory policies.  B. The Problem At the time of the pilot study, management was concerned primarily with its inability to distinguish between stores of the same "size".  As mentioned in the previous section, a  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.  Exactly why this would occur is unclear; the warehouse would  simply continue to fill orders from tickets that make no reference to the policy in place. Secondly, and perhaps more tenably, the computer technology at Canadian Tire Pacific Associates did not allow for policies to vary across all stores. Both the database used to store the inventory data and the printouts used by the inventory manager allowed for only five different policies per product, all with the same minimum fill.  Moving to individual policies  would have required an overhaul of the existing information system.  Although management  saw this overhaul as inevitable, it did not see the overhaul as imminent.  Therefore,  management switched the focus of the study to developing a tool that would help reduce overall inventory levels 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.  First, as discussed above, additional factors of demand, such as location,  cannot be taken into account.  Second, grouping inherently results in a misallocation of  12  inventory when some stores within a group have differing numbers of "picks" per week. For example, the "medium"-sized Lougheed store, which has one "pick" per week, requires higher inventory levels to achieve a given customer service level than the other "medium" stores, which all have two "picks" per week.  8  In fact, in terms of customer service levels, it might  be more appropriate to group the Lougheed store with the "large" stores having two "picks" per week. Ideally, this artificial grouping of stores will be abandoned when the computer system is upgraded, and policies can then be set on a store by store basis. As the project proceeded, management grew somewhat uneasy with the concept of using an analytical tool to evaluate and set inventory policies.  According to both the pilot study and  the preliminary results of this study, significantly reducing inventory would greatly reduce costs while still providing a high level of customer service. However, management held that because the model cannot take into account intangibles, such as marketing considerations, such a drastic reduction in inventory would be very inappropriate. In this light, management viewed the optimal policies as "lower bounds" for inventory levels: these policies would have to be modified upwards in order to be practical.  Therefore, management contended that any  methodology or software produced during this study should provide the means to evaluate and compare a number of alternate policies. Regardless of exactly how the tool is to be used, there is currently a lack of historical sales data from which to analyze the inventory system and determine optimal policies. No sales data had ever been collected prior to the pilot study, and only a relatively small amount has been collected since.  In order to proceed with any analysis of the inventory system, a  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  substantial amount of additional data would be needed.  The existing information system at  Canadian Tire Pacific Associates does allow for sales data to be captured; however, the system is limited by the amount of data it can capture at one time and by its storage capacity. In order to collect the amount of data required, management would have to upgrade the system and develop some kind of data collection scheme coupled with a data compression technique. The collection scheme must allow for characteristics of demand, such as trends and seasonality, to be identified; and the compression technique must allow for sales data for over 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.  For example, sales of snow shovels increase through the fall,  peak in the winter, and drop to zero by late spring. At the same time, some products might become either more or less fashionable over time, resulting in changes in mean demand. Setting inventory policies for any of these products based on observed demand would result in insufficient stock if demand increased during the period or in excess stock if demand decreased. Therefore, the tool must be able to forecast the demand for the period for which the policy is intended. Toward the end of the project, management began discussing the integration of the interactive inventory tool with the existing system to form a new inventory control system. The new system would utilize a modified point of sales system to collect sales data continually. Based on the latest available data, the system would forecast demand for the coming period and calculate the optimal policies for every product at every store. The system would then provide all relevant information on-line for the inventory manager to review. The manager could weigh  14  other information, such as marketing considerations, and examine alternate policies to determine the effect on cost. Finally, the preferred policy would be set in place with the touch of a key, and information on the next product or store would be presented for review.  C. The Project Development of the inventory control system envisioned by management requires the completion of five tasks: 1) the design of a data collection system that generates and stores the necessary sales data; 2) the development of a forecasting method that provides accurate estimates of demand distributions; 3) the formulation of a model that calculates the cost of inventory and the customer service level for an inventory policy; 4) the development of an algorithm that finds the optimal policy for a product at a store; and 5) the creation of an interface that allows interactive and on-line consultation.  Ultimately, the above components  would have to be integrated and incorporated in a manner that would ensure the compatibility and reliability of the system. The scope of the research reported in this thesis completes the first phase of the project: specifically, we formulate an inventory model, develop an algorithm, and create a prototype of the interface. Because of the changing environment at Canadian Tire Pacific Associates, minor modifications to both the model and the algorithm developed herein might be necessary to reflect future changes in operational procedures. Upon completion of phase one, the interface will be interactive, allowing managers to select the store, product, and review scenario and then to compare optimal policies with existing policies or with alternate policies.  Although the  prototype will be delivered to Canadian Tire Pacific Associates for ih-house testing at the end of this phase, the interface will require modification in subsequent phases as feedback from management is received and as the system is brought on-line. 15  In order to assess more fully the potential savings of implementing the inventory control system, this thesis includes a comparison of optimal 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.  Based on an analysis of these costs, the potential  savings of implementing the optimal policies are extrapolated. Further, the thesis examines the sensitivity of the model to variations in the estimates of demand and costs. Originally, results from all 21 stores were to be included in the above analysis. However, just prior to the analysis, management changed the review procedure at several stores; the result of which being that three "picks" per week are now performed at those stores. Because one of the main assumptions of the model, specifically that the length of the lead time does not exceed the duration of the review period, is violated under this new review procedure, those stores cannot be included in the analysis. Therefore, the analysis is based solely on the results from store six, the "large" store located on Kingsway Avenue.  10  For the purpose of the analysis, sales data for product category 20, automotive and electrical accessories, were collected from all 21 stores.  This product category was selected  because the distribution of demand for products within it is non-seasonal and because few of the products are ever placed "on sale".  11  The lack of trend or seasonality eliminates the need  for forecasting demand; the optimal policies can be determined based directly on observed demand.  9  That is, those policies obtained from the model.  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  D. The Demand Data In total, sales data for 520 products, of which 458 are "active" products, were collected over a 307-day period from October 10, 1992 to August 18, 1993.  12  The data was supplied  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  Each line had the following format:  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.  Two changes were  made to the format of these files to improve readability: 1) a column was added between the product number and the Julian date, and 2) all leading zeros were dropped.  Appendix A  contains a partial printout of the "sales" file for a typical product. Finally, a "distribution" file summarizing the daily sales was created from each of the "sales" files. Each "distribution" file contains the 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  The second group, "medium"-  Of the "active" products, only 420 are sold at store 6.  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.  Finally, the last group, "high"-demand,  comprises products that have demand on most days, occasionally upwards of twenty items, and whose demand histograms resemble Poisson distributions.  The majority of the products  examined fell into the "low" and "medium"-demand groups; only a few "high"-demand products were observed. Appendix B contains a printout of the "distribution" file for a typical product in each group. For most products, no theoretical distribution appeared to model the demand well. Demand for "low" and "medium"-demand products followed a non-standard distribution with a mass at zero and a relatively small tail. Although some theoretical distributions, such as the mixed-Poisson, can be made to resemble this, it was unclear how well they would perform. Further, the effects of sampling errors from such non-standard distributions were unknown. On the other hand, the standard Poisson distribution did appear to model "high"-demand products well; however, only a few products fell into that group. Therefore, in the absence of a "good" theoretical candidate, the empirical demand function was chosen for the analysis. The empirical function was readily available from the "distribution" files and offered the best estimate of the "true" underlying function.  E. The Cost Data Along with the sales data, management supplied estimates relating to the costs of holding and ordering inventory. Management estimates that the cost of holding an item in inventory for one year is 30% of the item's cost. Incorporated in this holding rate are a number of costs, such as the opportunity cost of money invested and the costs incurred in running a store. Because it is the annual cost of inventory that is of interest, either the compounded daily  18  holding rate or the simple daily holding rate can be used to determine the costs incurred during a review period; however, the method of calculating and extrapolating the holding costs must be consistent.  For the sake of simplicity, a simple daily holding rate is used.  In order to estimate the cost of ordering inventory, management analyzed the various tasks that result from an order being placed. Using the average time required to fill and then reshelve an order, management obtained an estimate of the direct labour costs involved. To this, management added an estimate of the cost of transporting an order from the warehouse to the store. Finally, the estimate was adjusted slightly upward to account for the cost of breakage and errors.  Based on the analysis, management estimates the cost of placing an order for a  product to be $0,085, regardless of the size of the order.  19  III. M O D E L F O R M U L A T I O N  A . Terminology In the previous chapter, several terms were introduced to describe the inventory system at Canadian Tire Pacific Associates.  These terms, though perfectly adequate, are not widely  used in the academic literature to describe inventory management problems.  Therefore, in  order to avoid confusion and be consistent with the literature, the following terms are used throughout this thesis. Review Period -  The length of time between successive moments at which the inventory position is reviewed.  15  Decision Epoch  The time at which a reorder decision is made.  Lead Time -  The length of time between the moment at which a decision to place an order is made and the moment at which the order is physically on the shelf.  (s,S) Policy  An operating policy in a periodic review inventory model in which (i) the inventory position is reviewed every T days, (ii) a replenishment order is placed at a review only when the inventory level x is at or below the reorder level s (>  0), and (iii) a  replenishment order is placed for S-x units (S > s). Lost Sales -  16  The situation in which any demand during a stockout is lost.  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.  In fact, the inventory levels for a number of  products were tracked over time during the pilot study, and not a single incidence of stockout was observed. Because all products appear to have similar excess inventory, it seems reasonable to assume that virtually all demand resulted in sales. 2)  The demands in successive periods are independent, identically distributed random variables.  Preliminary tests (Fisher's exact tests) suggested no dependence between  sales on consecutive days, and plots of sales over time indicated no seasonal pattern. 3)  Demand is independent across products. That is, we assume that sales of one product do not affect, nor can they be predicted from, sales of another product.  4)  Unmet demand results in lost sales with no penalty other than the loss of the sale.  5)  The duration of the review period for a store is an integer value and is fixed over a planning period. For stores with two "picks" per week, we assume that the inventory is reviewed every four days rather than on a four day - three day cycle.  6)  The decision epoch is the start of a review period. Review periods begin at midnight, at which time the inventory is reviewed and orders are placed instantaneously.  7)  The duration of the lead time for a store is deterministic and integer-valued. In reality, the lead time for some stores was stochastic, but management felt the variation could be controlled and virtually eliminated. 21  8)  The lead time does not exceed the review period. In other words, items ordered at a decision epoch arrive and are shelved before the next decision epoch. In practice, this did not always occur.  9)  Orders arrive at the end of the lead time and are on the shelf to start the next day.  10)  Holding costs are incurred daily for all inventory held at the start of the day.  11)  The warehouse has an infinite capacity; that is, all orders to the warehouse are filled. Because of the high inventory levels in the warehouse, stockouts in the warehouse are very unlikely.  C . A Markov Chain Model Consider the situation in which an (s,S) policy is applied to an inventory system based on the above assumptions. Inventory is reviewed at the decision epoch for each of the periods labelled t = 0, 1,2,  and replenishment occurs at the end of the lead time provided an order  was placed. Demand during day d in period t is a random variable  whose probability mass  function is independent of the day and period. The function is given by  f^ik) = Pr{ l  td  for k = 0, 1, 2, ...  = k} = a  k  where a > 0 and E a = 1. Let T denote the duration of a review period and L denote the k  k  length of the lead time. Next, define D  T (  as the total demand during period t; D , as the total L  demand during the lead time in period t; and D . , as the difference between D , and D ." T  L  T  Lt  Assuming that successive demands £ , £, . . . are independent, the probability mass function of f  1 7  2  The aggregated demand variables are given by ^ , , = XX,  and  d  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  occurs and the inventory drops accordingly.  With the  arrival of the order, the inventory level increases by (S-X,) at the start of the third day of the period. Over the remaining two days, a demand of D . , 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  X  r +  L  i exceeds s.  The stock levels at the beginning of two consecutive review periods are related by the balance equation  _ { K * * ~ \(X  t + l  t  -  ( - v - T-L,X s  L,y  D  +  D  DY  i/x <s t  (  ifX >s  Tt  t  where the positive operator is interpreted as  = max {a, 0}.  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  T  and the identity f ^ = f 1  5(  23  DT(  1  )  CO  CM  -2  I "8 >  oa  o  r  X  00  24  Because X ,  + 1  depends only on X , the process {X,} satisfies the Markov property t  Pr{X =j\X t+l  0  = i ,...,X _ =i _ X 0  t  l  t  v  t  = i) = Pr{X =j\X t+1  t  = 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  D. The Transition Probability Matrix The stationary transition probability p is defined as the probability of X , (>  + 1  being in state  j given that X, is in state i, independent of the period t. In the inventory model, p,-,- represents the probability of starting the next review period with j items on the shelf given there are i units on hand at the start of the current period.  By convention, the transition probabilities are  arranged in an (S + l)x(S + 1) matrix P such that (P)y = p,-,. Thus, the (i + l)st row of P contains the probability distribution for the stock on hand at the beginning of the next period given that there are i units on hand at the start of the current period.  The matrix P is known as the  transition probability matrix. Note that since we are concerned with a steady state analysis, we need not consider the possibility of initial stock levels greater than S: once the inventory level is below S, it can never again exceed S. The transition probability p  tj  is calculated by expanding (1) to include all possible  instances of demand that allow for a change in inventory from i units at the beginning of a period to j units at the beginning of the next period. For example, suppose the inventory policy (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  T  = 3] + Pr{D = l] Pr[D _ =2}  L  L  T  L  + Pr{D *2] Pr{D _ = l] L  T  L  In general, the transition probabilities for the inventory model are calculated as follows.  Case 1. The lead time is less than the review period For 0 < / < s  i-l  £  [Pr{D =k}Pr{D _ >S-k}] L  T  L  +  Pr{D >i}Pr{D _ >S-i} L  T  L  if j = 0  i-l  Pij  ^[PriD^^PrlD^S-j-kn+PHD^PriD^S-j-i}  if 0 < j <L S-i  k=0 s-j  E  [Pr{D =k}Pr{D _ = S-j-k}] L  T  if S-i  L  k=0  26  <j^S  () 2  For s < i < S  Pr{D zi]  ifj = 0 ifO<jzi  T  p.. = \  Pr{D =i-j) T  0  (3)  ifi<j<S  Case 2. The lead time equals the review period For 0 < i < 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)  For s < i < S, use (3).  E. The Steady State Probabilities Provided 1) there is a positive probability of non-zero demand during a review period and 2) there is a positive probability of zero demand during a review period,  then the  20  Markov chain described by (1) has a limiting probability distribution, ir = (ir , TT 0  where 0 < IT, < 1 for j = 0, 1,  S and E 7r = 1. y  u  ir ), s  Further, this limiting distribution is  independent of the initial state. In other words, the probability of finding the Markov chain in a particular state in the long-run converges to a nonnegative number, no matter in which state the chain began at time 0.  The limiting distribution is the unique nonnegative solution of the  equations  That is, 0 < Pr{D = 0} < 1. Given the nature of the problem, this assumption is not very restrictive. 2 0  x  27  ^ =E^-  far  j = 0, l,  S  (5)  s  and  £  n  k  = 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  inventory on hand at the decision epoch.  However, some subsequent calculations are made  easier if the steady state probability of having j units of inventory on the shelf just after replenishment is known. Instead of reformulating the Markov chain, these probabilities can be obtained by "shifting" the limiting distribution TT.  Much in the same way that the transition  probabilities are calculated, the "shifted" limiting distribution, t], is obtained by accounting for all possible instances of demand that allow for the "shifted" inventory position. For example, suppose that the policy (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  8  = n Pr{D 10  L  = 2] +iz Pr{D 9  L  = l] +n Pr{D 8  L  28  = 0} +[iz + iz + iz ]Pr{D 5  4  3  L  = 2}  +n Pr{D >2 2  L  In general, the "shifted" steady state probabilities are given by s  £  ifj = 0  n Pr{D >i} {  L  i=s+l S  £  %.Pr{D = i-j]  ifl  L  ±j<S-s  i=max(/,s+l) S =  \  £  7t i r{Z) = i-;}+7i Fr{D ^5}  ifj = 5-5  ,  j  L  5  i  i=max(/,s+l)  ^  7 1 ^ ^ = 1-7}+ £  i=max(/>+l)  Tt Fr{Z> =5-y}+ii _.Pr{D ^S-7} i  i  s  1  ifS-s<j<S  i=S-j+l  (7)  F . The Cost of Inventory For this problem, the cost of inventory has two components: (i) a fixed ordering cost, c , incurred whenever an order is placed, and (ii) a holding cost, c , incurred daily for each item f  v  held in inventory.  The expected cost of inventory for a review period can be calculated by  summing the costs associated with each inventory position under steady state conditions. Because a simple holding rate is used, this cost is simply adjusted by number of review periods in a year to obtain the expected annual cost of inventory. The ordering cost for a review period is relatively straight forward to calculate: either an order is placed, in which case the order cost is incurred, or no order is placed, in which case no cost is incurred. According to the rules of the inventory policy, orders are placed only if the stock on hand at the beginning of a review period is less than or equal to s.  Further, the  probability that the review period begins with the inventory in one of these positions is equal to the sum of the first (s + 1) steady state probabilities. Therefore, the expected ordering cost 29  for a review period is given by  = c Y,  E[OC]  f  n.  y=o  Unlike the simple structure of the ordering cost, the holding cost is incurred daily for each item held in inventory.  Therefore, the daily holding costs associated with all possible  inventory positions must be weighted and summed to obtain the holding cost for the review period. In order to make the calculations less complicated, a "shifted" review period, beginning immediately after replenishment and ending just prior to the next replenishment, is considered. Define e(0 to be the expected number of items on hand to start day i of the "shifted" review period, and let g(i \f) denote the expected number of items on hand to start day i given that there were j items immediately following replenishment.  21  The function g(z \j) is the sum  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  The expected holding cost for a review period is then given by T  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  S  i=l j=0  j  1  ( ) g  fc=l  G . The Customer Service Level There are many ways to define customer service, and the most appropriate definition depends upon the nature of the business and the perspective of management. Two commonly used definitions are: 1) the proportion of periods in which all demand is met, and 2) the proportion of demand satisfied immediately from inventory. Although the former definition is often used because of its simplicity, the latter definition is closer to what one commonly means by service (Lee and Nahmias, 1993). A third definition, also relevant in retail environments, 31  is the probability that lost sales do not exceed some critical number. Other definitions, such as probability that backorders are filled within a certain amount of time, are more applicable to industrial and manufacturing settings where backlogging demand is common. Given the retail environment with the possibility of lost sales that exists at Canadian Tire Pacific Associates, management is concerned primarily with the fraction of sales that are lost. For example, management views the situation in which demand exceeds stock by one unit every period more favourably than that in which the same demand exceeds stock by three units every other period. For this reason, the proportion of demand satisfied immediately from inventory is the most appropriate measure of customer service. The customer service level for a single review period,  r  „  T  CSLR , P  is given by  _ Demand satisfied during RP Total demand during RP  Because we are interested in the long-run behaviour of the system, a measure of the steady state customer service, C S L , must be obtained. As shown in Appendix D , the correct measure is £££  _ E[Demand satisfied during RP] E[Total demand during RP]  which can be rewritten as  £ £ £ _ j _ E[Demand not satisfied during RP]  ^  E[Total demand during RP]  Because of the steady state conditions, the above customer service level can be estimated from any period of T consecutive days. As was done for one of the cost calculations, the T-day period beginning just after replenishment is considered.  Suppose that there are j units of  inventory on hand immediately following replenishment. Then the conditional customer service 32  level is  E[(D -j)l  CSL \j = 1  (10)  T  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  = T u - j + Y,U-k)Pr{D  T  (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  E[Demand not satisfied] = Y, *\j T\i - j + £(j-k)Pr{D  = k}  1  T  ;=0  =  S  j-1  ;=0  it=0  - E[I] +  where E[I] denotes the steady state inventory level.  (13)  Y0-k)Pr[D =k) T  Finally, the customer service level is  obtained by the substituting (11) and (13) into (9), yielding s  T\i - E[I] + J>y  j-l  Y(J-k)Pr{D =k] T  CSL = 1 (14) m  Eil\  J2VjTU-k)Pr{D =k}  n  T  J=Q  fc=o  33  H . A Methodology for Evaluating an (s,S) Policy In this section, a brief methodology summarizing the main results of the model is presented. The methodology can be applied to evaluate a given (s,S) policy in terms of its cost and its resulting customer service level.  Given the probability mass function of the daily  demand, f ; the duration of the review period, T; the length of the lead time, L ; the fixed cost ?  of placing an order, c ; and the daily unit cost of holding inventory, c : f  1)  v  Calculate the aggregated demand probability mass functions f , f , and f DT  DL  D x L  as the T-th  fold, L-th fold, and (T-L)th fold convolutions of f , respectively. ?  2)  Generate the transition probability matrix using either equation (2) or (4) and equation (3).  3)  Calculate the limiting distribution TT from (5) and (6).  4)  Obtain the L-day "shifted" limiting distribution rj using (7)  5)  Calculate the expected annual cost of inventory using (8)  6)  Determine the customer service level using (14)  34  IV. A N A L G O R I T H M F O R 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.  Many search techniques  guarantee optimality provided the objective function and constraints exhibit certain properties, such as convexity.  However, even if such a search technique also guarantees its termination  in polynomial time, the search might take too long to be practical. Alternatively, some search techniques provide "reasonable", though sub-optimal, solutions very quickly. These techniques, often called heuristics, must be evaluated in terms of both their speed and the accuracy of their solutions. The choice of a heuristic over a search that guarantees optimality depends upon the nature of the feasible space, the need for accuracy, and the "cost" of time. Given the complexity of the cost and customer service level functions, it is very difficult to show theoretically for what, if any, combinations of demand and costs the feasible space is convex.  However, a plot of the objective function for a single product may be obtained by  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.  Therefore, if one of the  techniques that guarantee optimality under the condition of convexity is employed, the search would have to be evaluated as a heuristic. Instead, as a first step to finding a practical search technique, a "crude" search that guarantees optimality under virtually all conditions is investigated.  B. A Grid Search The simplest search technique that guarantees optimality merely evaluates all policies in the "grid" defined by { 0 < 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  Although the number of policies that must be examined is large, the  grid search is guaranteed to find the optimal policy provided that S that is, provided S  min  < S  opt  < S  max  opt  is contained in the grid;  . The grid search algorithm proceeds by generating the  transition probability matrix for the policy (0,S ) and then evaluating the service level min  associated with that policy. If the policy is feasible,  24  the cost associated with the policy is  The total number of policies evaluated is the sum of the first S integers less the sum of the first S -1 integers. Numerically, [(l/2)(S )(S +l) - (l/2)(S -l)(S )] policies are examined. 2 3  max  min  2 4  max  That is, if the service level is adequate. 36  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  was taken to be zero.  The following times were recorded for each trial: TPM -  the amount of time spent generating the transition probability matrix  GAUSS -  the amount of time spent solving for the steady state probabilities  COSTS -  the amount of time spent calculating the expected annual costs  SERVICE -  the amount of time spent determining the customer service levels  TOTAL -  the total execution time of the program  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.  First, the vast majority of the execution time  is spent generating transition probability matrices and then solving for the steady state probabilities, with the time being split almost equally between the two tasks. Second, the total execution time of the algorithm increases exponentially as S  max  increases. For product 206917,  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.  Given the large number of products that must be  evaluated, the algorithm is much too slow to be implementable.  37  Calculate the demand probability functions  Initialize: s = 0; S = Smin] cost* = 10 5 A  Calculate the probability transition matrix for (s,S)  Evaluate policy (s,S) Is service level ^ 0.975? No s = s+1  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*  Figure 2. The flow chart of the grid search algorithm.  38  Table 2. Execution times of the algorithms for product 200001, a 30-amp inline fuse. (in seconds)  '-'max  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  C. A Technique for Updating the Transition Probability Matrix As was noted in the previous section, approximately half of the execution time of the grid search algorithm is spent generating transition probability matrices. Furthermore, the amount of time increases exponentially as S  max  increases. This increase is exponential for two reasons:  first, the number of transition matrices that must be calculated is a function of S,^ squared; and second, the average size of the matrices, and hence the average number of calculations per matrix, increases with S  max  . For example, when S  max  equals 30, the transition probability matrix  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).  The performance of the algorithm could be improved considerably if  either the number of matrices that must be generated or the number of calculations per matrix is reduced. This section introduces a technique that accomplishes the latter by updating the transition probability matrix for a new policy instead of generating it anew for each policy.  A new policy (s+m.S) Suppose the policy (s,S) has associated with it the (S + l)x(S + l) transition probability matrix P and the policy (s+m,S), where m is any integer satisfying 0 < s+m < S, has associated with it the (S + l)x(S + 1) transition probability matrix J*. Then T can be obtained by recalculating only \m\ rows of P.  Recall that the equations for generating a transition  probability matrix are divided into two sets based upon the row being calculated: equations (2) or (4) for rows 0 through s, and (3) for rows (s + 1) through S. The equations themselves are independent of s; only the limits defining the cases contain s.  Therefore, only the \m\ rows  that are affected by the change in the limits need to be recalculated. The following updating technique can be used to obtain 7: 41  1) If m > 0:  rows i = (s + 1), (s+2),  2) If m < 0:  rows i = (s-1), (s-2),  (s+m) are recalculated using (2) or (4). (s-m) are recalculated using (3).  3) A l l other rows of T are identical to those of P. The reader is directed to Appendix F for a mathematical justification of the technique.  A new policy (s.S+m) Suppose the policy (s,S) has associated with it the (S + l)x(S + l) transition probability matrix P and the policy (s,S+m), where m is any positive integer, has associated with it the (S+m+l)x(S+m+l) transition probability matrix "P.  Then T can be obtained by modifying  each row of P and adding m additional rows and columns. The updating technique is not as simple as that for a new policy (s+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.  The following technique can be used to obtain P:  1) For rows i from 0 through s: For columns j from 0 through m: recalculate using (2) or (4). For columns j from (m+1) through (S+m): enter the (j-m)th column entry of P. 2) For rows i from (s + 1) through S: For columns j from 0 through S: enter the corresponding value from P. For columns j from (S + 1) through (S+m): enter 0. 3) For rows i from (S + 1) through (S+m): recalculate using (3). The above technique is justified mathematically in Appendix G .  42  The modified algorithm The updating technique can be easily incorporated into the grid search algorithm with only a slight change in the manner in which s is incremented. Figure 3 shows the flow chart of the new algorithm. As before, the algorithm was coded and compiled into an executable program, and the various execution times were recorded. The results are listed in Tables 2 and 3 under the columns "Grid Search; Updating T P M " . Updating the transition probability matrix does improve the performance of the algorithm.  The time required to generate the transition probability matrices is reduced by  approximately 90%.  This translates to a reduction in total execution time of approximately  30%. Not surprisingly, the reductions are greater for large values of S  max  .  However, despite  this seemly significant improvement, a decrease of only approximately 0.8 seconds is obtained when S,^ equals 20.  Further, when S ^ equals 30, the algorithm requires over 11 seconds,  which is still much too high. The execution time is now dominated by the time required to solve for the steady state probabilities. The steady state probabilities could be solved by using approximation techniques which are faster than solving the systems exactly; however, because the probabilities are often very small numbers, the approximation techniques would be unable to provide the required accuracy. The only remaining way to decrease the execution time is to reduce the number of policies that are evaluated during the search. This can be done by either reducing the size of the grid being searched or reducing the number of policies being evaluated within the grid. The following section introduces a method of reducing the size of the grid by obtaining a lower bound for S, namely S . min  43  Calculate the demand probability functions  Initialize: s = 0; S = Smin| cost* = 10*5 k= 1  Update the probability transition matrix for (s,S)  Evaluate policy (s,S) Is service level ^ 0.975? No  Yes  iNo  s = s+k  Is cost < cost*? If k=l, s=s+l S = S+1  Yes s* = s; S* = S cost* = cost  No  Ifk= 1, iss = S-l? If k =-1, is s = 0? Yes Is S = Smax?  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  < S < S }. Thus, the size of the grid,  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  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  This method was proposed by Kaan Katircioglu. 45  S , and it must be very close to S . opt  These criteria ensure that the optimal policy will be  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 .  The results are illustrated in Figure 4, which shows the number  26  opt  of occurrences of various S  min  and S  opt  combinations. Note that a point lying on the 4 5 ° line  represents a "perfect" bound, while a point lying close to the S  opt  axis represents a very "loose"  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  exceeding the corresponding value  Moreover, the bounds are reasonably "tight" for 85% of the products analyzed; that  is, for those products with S  opt  equal to 10 or less.  become steadily worse. Because values of S  opt  27  However, as S  opt  increases, the bounds  are likely to be larger for these products at the  ten Jumbo and Extra Jumbo stores and for other products with higher demand, the lower bounds are not expected to be very "tight" in general. Although obtaining the bound S  min  does reduce the size of the grid, the corresponding  reduction in the execution time of the algorithm is miriimal. For example, if S,^ equals 60 and a value of 30 is obtained for 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  for these products.  47  The only remaining approach to improving the algorithm is to modify the search so that fewer policies within the grid are evaluated. Toward this goal, assumptions can be made with respect to the feasible space, and a heuristic search can be developed based on these assumptions.  E . A Heuristic Search As mentioned previously in this chapter, a "map" of the feasible space for each of several products was obtained. Upon closer examination, the "maps" illustrate two patterns without exception: for a given value of S, both the cost and the customer service level increase as s increases.  The following intuitive argument is offered as a possible explanation for the  observed behaviour. When S is held constant, increasing s results in more instances in which an order is placed upon review. Hence, the average stock level would increase, which, in turn, would lead to an increase in the cost and the customer service level.  28  With this in mind, a  heuristic search based on the following assumptions is developed: for a given value of S, both the cost and the customer service level are monotonically increasing functions of s. In general, the heuristic proceeds as follows.  Having just incremented S by one, the  customer service level of the policy (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".  Finally, S is increased by one and the process repeats,  provided S does not exceed some predefined value, S  max  incorporating the heuristic search is shown in Figure 5.  .  The flow chart of the algorithm Note that the algorithm begins by  attempting to improve on the lower bound S : the policy (S min  is not feasible, S  min  min  -l,S  min  ) is evaluated, and, if it  is increased by one. The improvement continues until a feasible policy is  found. As previously mentioned, a heuristic search must be evaluated in terms of both its speed and the accuracy of its solutions.  To evaluate the heuristic on the basis of speed, the same  approach used to evaluate the previous algorithms is employed.  The columns entitled  "Heuristic" in Tables 2 and 3 contain the various execution times of the heuristic. The heuristic is a vast improvement over the previous search techniques: the reduction in execution time is enormous and becomes more so as S  max  increases.  For a S  max  of 20, the reduction is  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  of 60 in under 12 seconds. These low execution  times should be sufficient to allow for a large number of products to be analyzed in a "reasonable" amount of time. In order to further assess the practicability of the heuristic, the total time required by the heuristic to find solutions for the entire product category was determined and compared to the corresponding time for the grid search algorithm. With a priori knowledge of the optimal solutions, conservative, yet reasonable, values of S  max  were selected and used by both of the  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 the demand probability functions  Calculate Smin S = Smin; s = S-l  Update the probability  S = S+l s = S-l  t transition matrix for (s,S) No  No  Is cost < cost*?  Is service level £ 0.975?  Is service level ^ 0.975?  Yes  Yes  No  s = s-l  Yes Is s < S-l?  No  Yes  No  Yes  Update the probability transition matrix for (s,S)  s = s+l  Is s 2: 0?  Update the probability transition matrix for (s,S)  Update the probability transition matrix for (s,S)  Is service level £ 0.975? No S = S+l  Is service level £ 0.975?  s = s+l  Yes Is cost < cost*?  No  No  Is cost < cost*?  Yes  Yes No  s* = s; S* = S cost* = cost  Is S = Smax?  s* = s; S* = S cost* = cost  ^Yes Print results (s*,S*); cost*  Figure 5. The flow chart of the heuristic algorithm. 50  algorithms.  30  The grid search algorithm required approximately 9 hours and 41 minutes to  find the solutions, while the heuristic required only slightly more than 23 minutes. Based on speed, the heuristic is preferable to the grid search algorithm. Finally, to evaluate the heuristic based on the accuracy of its solutions, its solutions were compared to the previously obtained optimal policies.  Without exception, the heuristic  algorithm found the optimal policy. Although there is no guarantee that the heuristic will find the optimal solution for different products or different demand functions, the heuristic appears to work extremely well.  Based on the fast execution time and the apparent accuracy of the  solutions, the heuristic will be used in the development of the inventory tool.  For the test, the following values of S 100 (3), and 125 (2). 3 0  max  were used: 20 (273 products), 30 (19), 50 (23),  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.  Finally, the manager can choose to evaluate  alternate policies or to return to the main menu. Although the prototype is far from the ultimate, integrated inventory control system, it is still valuable to management.  As mentioned in Chapter II, inventory policies at Canadian  Tire Pacific Associates are currently based on "rules of thumb" that incorporate marketing  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.  With the alternate policy,  virtually all demand is satisfied and the cost of inventory is still reduced by over 40%. Thus, the manager ascertains that approximately 40% of the current cost of inventory for this product is directly attributable to marketing considerations.  Using the prototype in this way,  management can begin to understand better the nature of its inventory costs. A description and graphical depiction of the above hypothetical consultation are presented in Appendix H . As for the technical details of the system, the prototype can run on any computer using the DOS operating system, having approximately 420K of available conventional memory, and attached to a V G A or 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.  The "interface" module contains the various  interactive subroutines, and the "main" module contains the methodology of the model and the logic of the heuristic search. Both modules are coded in Fortran and compiled using  Microsoft  Fortran 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.  The program uses the "distribution" files mentioned in  Chapter II to read the unit costs and the empirical demand functions.  Each product has a  unique "distribution" file, the name of which is the six digit product number followed by the extension ".dst". The text file containing the existing policies at each store must be located in the same directory as the "distribution" files.  Finally, the file tmsrb.fon, which contains the  font used by the interface, must be located in the directory from which the program is executed. In its future versions, the system should be more automated and more "user-friendly". Rather than having the manager choose an upper bound for the search, the algorithm should incorporate a method of determining S  max  . For this to happen, either a theoretical upper bound  must be obtained or a heuristic for terminating the search must be developed. Also, the amount of time spent waiting for calculations to be performed can be reduced by reading the optimal and current policies, and their associated costs and customer service levels, from a file or database.  This "solution" file could be created any time prior to the consultation by running  the system in a "batch" mode. The interface should allow the manager to change cost estimates and service level values, view results graphically, and print results and summary documents. Finally, the system should provide an option for automatically incrementing the product and/or store during a consultation.  This option would enable a manager to review quickly the  inventory policy of a product at each store.  54  VI. R E S U L T S A N D SENSITIVITY A N A L Y S I S  A . Comparison of Current Policies to Optimal Policies In order to estimate the potential savings of implementing optimal policies, the solutions obtained in the Chapter IV are analyzed in more detail. For each product, the current policy is evaluated and then compared to the optimal policy with respect to cost and customer service level. Finally, the potential savings of the optimal policies are extrapolated to all products and all stores. Of the 420 products examined, each of 37 products has an existing policy that fails to provide the desired customer service level of 97.5%. However, most of these policies "just" fail to do so; only 4 policies provide a customer service level of less than 90%.  Table 4  provides a list of these 37 products, each with its current customer service level, its current annual cost, and the additional cost of its optimal policy. 4 are in order.  32  Two comments regarding Table  First, the current customer service level for product 203312, an amber  driveway marker, is listed at a misleading 30.3%.  Examination of the demand distribution  reveals that this product was sold on only 1 of the 307 days during which sales data were collected and, on that day, 13 of the markers were sold.  Clearly, this data point constitutes  either an error or an unusual event; the current policy of (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  Table 4. Products with insufficient existing policies. Product  Current CSL (%)  Current Annual Cost ($)  Additional Cost of the Optimal Policy ($)  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  Additional Cost of the Optimal Policy ($)  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  For each of 37 products, the  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  current policy is identical to the optimal policy. The extremely high level of service provided by most policies allows for substantial savings in the cost of inventory. With current policies, the estimated annual cost of inventory for all 420 products is $4,207.43; whereas, the expected annual cost of the optimal policies is only $1,868.84. This amounts to a savings of approximately $2,340 or over 55% of the current cost of inventory. In order to further assess the savings, the difference between the costs of the current policies and the costs of the optimal policies are examined in more detail. For each of the 383 products whose existing policy provides a customer service level above 97.5%, the difference between the estimated annual cost of the existing policy and the expected annual cost of the optimal policy is calculated.  The resulting histograms of the savings in (a) dollars and (b)  percentage of current cost are shown in Figure 6. The particulars for the current and optimal policies for all 420 products are provided in Appendix K . As evident from Figure 6(a), the majority of the expected savings in absolute terms comes from only six products. In order to examine these products more closely, the current and optimal policies, along with the associated costs and savings, for each of the six products are listed in Table 5.  Each current policy is very different than its corresponding optimal  policy, resulting in excessive inventory for each product. In fact, over half of the total expected savings could be realized by implementing the optimal policy just for each of these six products. Interestingly, five of the six products are sealed beam headlights.  58  90  10 - 20  30 - 40  50 - 60  70 - 80  90- 100  Savings (%)  (b)  Figure 6.  The distribution of savings of optimal policies in (a) dollars and (b) percentage of current cost.  59  Table 5. Products with the largest potential absolute savings.  CURRENT PRODUCT  203680  S  Cost  CSL  ($)  (%)  s  S  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  194  200  640.14  100.0  37  48  • 92.45  97.5  547.69  85.6%  2  94  100  236.52  100.0  18  22  38.50  97.8  198.02  83.7%  3  78  90  230.43  100.0  19  23  44.54  97.5  185.89  80.7%  4  145  175  195.22  100.0  34  45  37.27  97.5  157.95  80.9%  5  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%  1  203677 203672  s  OPTIMAL  203094 203642  203655  6  1  2  3  4  5  6  H6054 rectangular sealed beam headlight H4656 rectangular sealed beam headlight 6053 rectangular sealed beam headlight 9004 halogen bulb 4652 rectangular sealed beam headlight 6104 7" sealed beam headlight  Although Figure 6(a) seems to indicate that the majority of the current policies are close in cost to the optimal policies, this is very misleading. For example, suppose the optimal policy for a product costs $1, and that the current policy costs $2.  In absolute terms, the optimal  policy saves only $1; but in relative terms, the optimal policy saves 50% of the current cost. When savings are viewed in this manner, as in Figure 6(b), it is clear that substantial savings can be realized for the majority of the products. In fact, both the mode and the mean of the savings are between 40% and 50% of the current costs. In order to extrapolate the above savings to obtain the potential savings for product category 20 at all 21 stores, the differences between stores must be considered.  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.  Thus, because 18 of the 21 stores are  "medium" or larger, the expected 40-50% savings at store 6 can be viewed as a lower bound on the potential savings to Canadian Tire Pacific Associates from implementing optimal policies for product category 20 in all its stores. Finally, in order to obtain the overall potential savings, the expected savings from product category 20 must be extrapolated to all product categories.  Ideally, the proportion of  inventory comprising each product category and the relative savings that can be realized for each category would be used to obtain a "good" estimate of the overall potential savings. However, as this information is not known, only a crude extrapolation is possible.  Thus, the  analysis proceeds under the assumption that a 40-50% savings can be realized in each product 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.  Because the lead time for orders from Toronto is highly  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  Associates must keep a fairly high safety stock at the warehouse.  Without knowing the  proportion of inventory serving as the safety stock, it is inappropriate to assume any reduction in inventory at the warehouse is possible.  Therefore, the relative savings of implementing  optimal policies is applied only to the inventory held in the stores.  36  Of the estimated $28  million in inventory, approximately half is held in the stores; therefore, the 40-50% savings translates to a savings of approximately $5.5 to $7 million per year.  B. Sensitivity Analysis on the Ordering Cost and Holding Rate The above analysis was based on estimates of the ordering cost and the annual unit holding rate  37  provided by management.  As described in Chapter II, these estimates  incorporate a number of costs that are difficult to quantify or that are speculative. Therefore, there is some question as to the accuracy of the estimates. In this section, errors of +$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  Based on an ordering cost of $0,080 and a holding  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  Hereafter, simply referred to as the holding rate.  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.  Finally, the "optimal" policies are  evaluated based on the actual ordering cost and holding rate and then compared to the "true optimal" policies.  For each possible combination of ordering cost and holding rate, three  numbers are recorded: the number of products with an "optimal" policy that differs from its "true optimal" policy, the total cost of implementing the "optimal" policies given the actual ordering cost and holding rate, and the difference between the cost of implementing the "optimal" policies and the cost of implementing the "true optimal" policies. The results of the analysis are summarized in Table 6.  Table 6. A comparison of "optimal" policies to "true optimal" policies.  Actual Ordering Cost $0,070  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 Ordering Cost $0,070  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%)  C. Sensitivity Analysis on the Demand Probability Mass Function In this section, the sensitivity of the model to slight changes in the demand probability mass function is investigated.  As described in Chapter II, the demand function used in the  model is based solely on observed sales; however, this empirical function is only one possible instance of the underlying "true" demand function. For example, had the data been collected over a period both starting and finishing one month earlier, many of the empirical functions would be slightly different.  Consequently, depending upon the degree to which the empirical  functions vary and the sensitivity of the model to these variations, the "optimal" policies from the model might be inaccurate. For example, recall the case of the amber driveway marker: only thirteen markers were sold, and all were sold on the same day.  Because the empirical  demand function is used, the model calculates an "optimal" policy of (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.  For each product, one of the files contains two  additional days of data, with each day having a demand equal to the maximum observed demand for that product. In the second file, only one additional day of data is added, but the demand on that day is two more than the maximum observed demand. The situations that could give  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.  Then, each "optimal" policy is re-evaluated using the "true"  demand function and compared to the "true optimal" policy.  The analysis is then repeated  assuming the "true" demand function corresponds to the demand under Scenario 2.  Table 8  lists the results for each product and scenario.  Table 8. "True optimal" and "optimal" policies for each demand scenario.  Product 202101 (low demand) s  s  "True optimal"  1  2  4.70  99.3  "Optimal"  1  2  4.70  99.3  "True optimal"  2  3  6.63  97.6  "Optimal"  1  2.  4.61  87.5  Scenario 1  2  Cost ($)  C S L (%)  Product 203507 (low demand) s  S  "True optimal"  0  3  3.34  98.1  "Optimal"  0  2  2.58  97.2  "True optimal"  2  3  5.08  98.0  "Optimal"  0  2  2.73  70.2  Scenario 1  2  Cost ($)  C S L (%)  To be clear, the scenarios are defined as follows: Scenario 1: The addition of two days, each with a demand of max Scenario 2: The addition of one day with a demand of max+2 where max is the maximum observed daily demand for each product in the sample period. 4 2  66  Product 201032 (medium demand) Scenario 1  2  s  S  Cost ($)  "True optimal"  6  12  13.77  97.6  "Optimal"  6  11  13.38  97.3  "True optimal"  6  13  14.26  97.7  "Optimal"  6  11  13.38  97.0  C S L (%)  Product 203039 (medium demand) Scenario 1  2  s  S  Cost ($)  "True optimal"  5  19  2.56  97.5  "Optimal"  5  16  2.51  96.9  "True optimal"  5  20  2.58  97.6  "Optimal"  5  16  2.49  96.8  C S L (%)  Product 203677 (high demand) s  S  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  2  C S L (%)  Product 203680 (high demand) Scenario 1  2  s  S  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.  The inherent variation between two  instances of a "true" demand function could very well result in more pronounced changes than those resulting from either of the above scenarios.  Therefore, it is likely that many "optimal"  policies, especially those for "low"-demand products, would actually provide a much lower or much higher customer service level than expected.  However, by smoothing the data, the  variation between instances of a "true" demand function can be reduced, and the desired customer service levels can be achieved. For example, suppose that the demand for a product is stationary, that the average demand during the previous period was unusually low, and that the "optimal" policy for this period is based on the demand during the previous period. Because the demand is stationary, the probability that the demand during this period is higher than that during the past period is more than 50%.  In other words, the probability that the demand during this period is higher  than that for which the "optimal" policy provides the desired expected customer service level is greater than 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  level is virtually 0.5.  Thus, as a result of smoothing the data, the specified customer service  level should be expected.  69  VII. C O N C L U S I O N  In this thesis, we developed a single-product, single-location model of the inventory system at Canadian Tire Pacific Associates. Specifically, we formulated a Markov chain model to determine the long-run average cost of inventory for fixed values of s and S and then developed a heuristic search to find "near" optimal policies quickly. Also, as a first step toward developing an integrated, interactive inventory control system, we created a prototype of the interface. According to the analysis performed here, Canadian Tire Pacific Associates is currently holding an excessively large inventory in its stores. This study finds that Canadian Tire Pacific Associates could reduce the cost of inventory for product category 20 at store 6 by approximately 50% and still maintain customer service levels of at least 97.5%. Further, the mean and modal values of savings for these products are between 40% and 50%.  Given the  similar excess inventory at the other stores and in all product categories, we believe that savings in this range are possible for all products and stores.  We estimate that the application of  inventory control as described in this thesis would result in annual savings of $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.  In its present form, the model assumes a fixed review period;  however, inventory at stores with two "picks" per week is actually reviewed on a four day three day cycle, and inventory at stores with three "picks" per week is reviewed on a three day - two day - two day cycle. Rather than obtaining the steady state costs for fixed review period, the model should calculate the steady state cost for a period of one week during which multiple replenishments occur. Although the solutions are not expected to differ significantly as a result of the change, the model would reflect the actual process more accurately. Further work is also required on the search technique for locating "near" optimal policies.  Although the heuristic search described in this thesis appears to work well, the  decision maker must provide an upper bound on S prior to the search. In practice, this upper bound is generally not known in advance. Thus, if the heuristic is to be used, either a "tight" theoretical bound must be found or a "termination" heuristic must be developed. Alternatively, a new heuristic search could be developed based on additional or different assumptions regarding the properties of the feasible space.  For example, although some regions of non-  convexity were found for some products, much of the feasible space appeared to be convex. A heuristic that assumes a convex feasible space would not require an upper bound on S and might perform very well. However, before such a heuristic is implemented, further work is necessary to determine the degree of non-convexity for a variety of demand functions and  71  ordering and holding costs. In addition to making the above modifications, we recommend that Canadian Tire Pacific Associates begin work on the remaining two components of the inventory control system. First, in order to allow for products with seasonal demand, the system requires a forecasting model to provide accurate estimates of demand for the coming period. Second, the system needs a data collection and storage module that systematically collects sales data for each "active" product and for each store and then updates the corresponding demand distributions. Because approximately 2.5% of demand is expected to result in lost sales under the optimal policies, the sales data will have to be adjusted accordingly in the future. Also, because the model appears to be sensitive to slight changes in the demand distribution for "low"-demand products, the module should incorporate a technique for "smoothing" the empirical distributions for these products.  Further work should be undertaken to determine the extent of variation in the  empirical distributions and the most appropriate "smoothing" technique. However, because of the large amount of data required to forecast seasonal demand and because of the current lack of historical data, we recommend that management proceed immediately with the design of a data collection scheme. Finally, two additional issues that are beyond the scope of the next phase should be addressed at some point. First, a monitoring system will be required once inventory control is implemented in the stores. The monitoring system will ensure that optimal policies perform as expected and will indicated whether or not demand is adversely affected by the lower levels of in-store inventory.  Second, given the degree to which in-store inventory can be reduced,  inventory control in the warehouse should be investigated.  Because approximately half of the  existing inventory is held in the warehouse, the additional savings from reducing system-wide inventory could be great. 72  Afterword  Just prior to the completion of the work described in this thesis, 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.  Nonetheless, the prototype was delivered to Canadian Tire Pacific  Associates for possible in-house testing; however, at the time of this writing - almost one year after the meeting - Canadian Tire Pacific Associates has not decided to continue with the project.  73  Bibliography  Econometrica  Arrow, K . A . , T. E . Harris, and J. Marschak (1951). Optimal inventory policy. 19, 250-272.  Day, G . (1992). In a speech to the Empire Club of Canada, Toronto; quoted in: When the JIT fits, The Globe and Mail, October 20, 1992, B24; and in Puterman (1994). Dvoretzky, A . , J. Kiefer and J. Wolfowitz (1952a). The inventory problem: I. Case of known distributions of demand. Econometrica 20, 187-222. Dvoretzky, A . , J. Kiefer and J. Wolfowitz (1952b). The inventory problem: II. Case of unknown distributions of demand. Econometrica 20, 450-466. Federgruen, A . (1993). Centralized Planning Models, in: 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  vol. 4, North-Holland, Amsterdam.  Federgruen, A . , H . Groenevelt, and H . C . Tijms (1984). Coordinated replenishments in a multi-item inventory system with compound Poisson demands and constant lead times. Management Sci. 30, 344-357. Lee, H . L . , and S. Nahmias (1993). Single-Product, Single-Location Models, in: 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. 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  Wiley, New York.  Silver, E . A . , and R. Peterson (1985). Decision Production  Discrete  Planning,  2nd edition,  Systems for Inventory  Management  and  Wiley, New York.  Taylor, H . M . , and S. Karlin (1994). An Introduction  Academic Press, San Diego.  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.  European J. Oper. Res. 17, 175-190.  75  Appendix A A Portion of the "Sales" File for Product 200001, a 30-amp Inline Fuse  200001 283 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  (253 subsequent lines omitted)  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  a) A "low"-demand product - an automobile "back-up" alarm:  PRODUCT NUMBER: 202101 PRICE: $ 6.84  DMD  N  3  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  2  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0  0  1  2  2  0  1  1  5  3  8  12  5  7  11  6  11  5  4  11  10  19  4  2  5  14  5  6  4  0  302  304  299  295  302  300  296  301  296  302  303  295  296  288  303  305  301  290  300  301  302  STORE 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  b) A "medium"-demand product - a 168 bulb  PRODUCT NUMBER: 203039 PRICE: $ .51  DMD 16  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  15  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  14  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  13  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  12  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  11  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  10  1  0  0  0  0  0  0  1  1  0  0  1  0  1  0  1  1  0  0  0  0  9  0  0  2  5  0  0  1  0  0  0  0  0  0  1  0  0  0  1  0  0  0  8  0  0  2  5  0  0  2  0  1  1  3  0  1  3  0  0  1  1  0  0  1  7  2  1  3  1  0  0  1  0  2  3  1  1  4  1  1  0  2  1  1  1  1  6  4  7  1  10  3  1  3  2  1  3  5  2  7  4  1  0  1  1  3  3  4  4  1  5  1  7  7  17  0  2  11  1  5  4  1  2  6  9  6  2  6  9  4  4  5  10  10  16  5  5  19  10  13  8  11  9  13  10  12  7  5  15  5  8  3  3  10  12  13  27  4  6  24  11  10  13  14  9  23  14  18  8  14  18  14  12  14  2  14  30  36  43  16  16  43  32  38  39  39  34  47  36  41  21  19  39  20  34  24  48  67  61  44  75  62  63  48  28  52  61  63  53  47  1  30  56  68  56  37  30  70  0  240  184  165  126  240  247  133  202  169  175  189  173  143  165  180  240  206  161  197  192  212  STORE 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  77  c) A "high"-demand product - a H4651 rectangular sealed beam headlight:  PRODUCT NUMBER: 203677 PRICE: $ 8.57  DMD 0  0  0  0  0  0  0  2  0  0 1  14  0  0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0  13  0  0  1  0  0  0  1  0  0  0  0  0  0  0  0  0  0  1  0  0  0  0  1  1  1  0  0  0  0  12  0  0  2  3  0  0  11  0  1  3  1  0  0  4  1  0  0  0  0  0  0  0  0  1  0  0  0  10  0  0  4  4  1  0  2  0  0  0  0  0  0  2  0  0  0  0  0  0  1  0  0 3  9  0  3  14  11  0  1  7  1  0  2  0  8  0  1  0  0  0  2  1  8  0  4  12  16  1  0  18  4  3  5  0  2  1  4  2  1  1  0  0  1  7  1  2  12  13  1  6  19  3  5  9  0  11  2  5  4  0  2  3  3  1  4  6  2  9  22  21  6  10  29  12  10  11  4  24  3  7  10  4  7  11  6  3  14  5  7  13  35  33  8  16  29  19  18  8  3  26  15  26  15  12  9  14  13  11  19  4  19  35  34  43  32  30  41  31  32  47  11  42  20  33  30  31  20  31  22  21  31  3  32  63  49  54  42  60  51  40  51  35  33  55  39  51  39  38  39  57  58  40  54  61  65  63  61  63  54  68  85  65  53  72  69  70  77  63  2  46  59  56  55  73  63  1  109  79  42  40  80  64  32  80  74  77  99  55  97  57  83  93  80  75  81  97  73  0  91  39  21  13  63  57  11  51  51  52  94  29  61  35  59  75  76  45  51  56  44  STORE 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  78  Appendix C A Proof that the Limiting Probability Distribution is Independent of the Initial State  In this appendix, we show that, provided 0 < 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,  S, that is independent of the initial state. Further, the  limiting distribution is the unique nonnegative solution of the equations Tt  'P =  TI  (AD  s  and J > . = 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  Prior to the proof, several preliminary results are  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)  State i > s cannot be absorbing because there is a positive probability of reaching j < i. (Since Pr{D > 0} > 0). T  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}.  Because the state space is finite  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  there must be a positive probability of returning to k from S; S -> k.  Therefore, S G 3?.  w  Further, because S is reachable from all states in A , i G A is either transient with i -» dt or recurrent with ; £ iR. Now, consider the subset of states B = {/' | j > s}.  Because Pr{D  T  > 0} > 0, the  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:  The limiting probability distribution, nxn submatrix P  m  ir*,  for the Markov chain correspondin  = [P ], i, j G dt, is independent of the initial state and tj  unique nonnegative solution of the equations TC*-  Prr  and  = re*  J2 K =  (A3)  1  (  A  4  )  jt=i  where the rows and columns of  Since, if i  are numbered from 1 to n rather th  j, i and j must be in the same equivalence class. 80  according to their associated states. First, note that both the original Markov chain and the one corresponding to the submatrix P  R R  are aperiodic because Pr{D = 0} > 0. Therefore, given that 9? is a positive T  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.  This result follows directly from the definition of a transient state.  Suppose the states are reordered such that the first  PROOF  n rows (and columns) of P  correspond to the n recurrent states of the Markov chain. Then P can be partitioned into four submatrices: PRK - the n x n submatrix [Py], i, j E 9?. P  T T  - the (S + 1-/I) x (S + l-n) submatrix [Py], i, j g 9?.  P  T R  - the (S + l-n) x n submatrix [Py], i £ 9?, j G 9?.  P  R T  - the n x (S + l-n) submatrix [Py], i G 9?, j £ 9t By definition, this is a matrix of zeros.  (Al) can then be rewritten as  81  (lt  R  , Tt ) T  P L  I-P p  (Tt  R  P  TR  T  TT  0  RR  (0- , 0 ) T  I-P  TR  , TC )  TT  1  where ir denotes the limiting probability distribution for the n recurrent states, and ir denotes R  T  the distribution for the remaining S + l-n transient states. Solving for TT gives t  TC -0 + it -(I-P ) r  T  TI  it -(I-PJJ) T  =  0  =  0  T  r  ic = r  Since  (I  - PTT)"  1  always exists (Puterman,  in agreement with Result 3.  (I-P^-Oj.  Proposition A . 3 , p.  1994,  593),  ir = 0X, which is T  Now, solving for 7r yields R  (A5) ""•R'PRR  11  R  (A2) can be rewritten as  S+l *k k=l  +  L  *k  (A6)  =  1  k=n+\  k=i  where ir* contains the appropriately reordered steady state probabilities. Since (A5) and (A6) are equivalent to (A3) and (A4), respectively, Result 2 holds.  Therefore, the Markov chain  corresponding to an inventory model with a (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-°°  - [DS, + DS. + ... + DS] = l i m ^ J 1 "1 »~ - [DT + DT + ... + DT] E[DS,] "  E[DT.]  83  Measure 2: Suppose the customer service level is calculated for each of n review periods and then averaged. Thus, the customer service level after n periods, CSL(n) , is given by  CSL(n) = -  DS,  DS,  DT,  DT  DT_  Taking the limit as n -> oo yields  CSL = lim CSL(n) DS  DS  DT,  DT  l  lim —  2  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  T  = 2} = Vi and Pr{D = 100} = Vi. x  According to Measure 1, the customer service level is  CSL -  = E[DT)  ^ 1 2)  W  (  +  +  ^ = ± „ 0.02 1(100) 51 W  while, according to Measure 2, the customer service level is  CSL = E  DS DT  1(1) i(-L  s  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.  The problem with the second measure is that equal 84  weight is given to each ratio, regardless of the magnitude of the numbers. For example, with respect to Measure 2, the events 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: +  T  E[(D -j) ] +  T  = £  <k-j)Pr[D  = k}  T  k=j+l  = £  = k] + J2(k-j)Pr{D  (k-j)Pr{D  T  T  k=j+l  = J2(k-j)Pr[D =k} T  k=0  r  k=0  -J2(k-j)Pr{D  = k]  T  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  where fx is the mean daily demand.  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  1. The lead time is less than the review period.  A. m > 0 For  0< i <  s'\  ( i-i  £ [Pr{D =k}Pr{D _ >S-k]] + L  T  Pr{D zi}Pr{D _ ±S-i}  L  L  T  L  ifj = 6  k=0  i-l  53 [Pr{D =k}Pr{D _ = S-j-k]] + Pr{D zi}Pr[D _ = S-j-i) ifO<jz S-i L  T  L  L  T  L  k=0 s-j  52 [Pr[D = k}Pr{D _ = S-j-kn L  T  L  k=0 a)  0 < / < s:  Pij = <  Pij Pij  = pij  b) s < i < s': This does not simplify; but it is identical to (2).  87  if S-i <j <S  For s' < i < S:  Pr{D >i}  ifj = 0  T  p.. = <Pr{D =i-j}  if 0 <j <; i  T  0  =  <  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  53 [Pr{D =k}Pr{D _ ±S-k]] L  T  L  +  Pr{D >i}Pr{D _ ±S-i} L  T  L  ifj = 0  i-l E  [Pr{Z> = fc}iV{Z) .=S-/-fc}] Pr{D >i}P/-{D .. = S-7-/} i  7W  +  t  7  t  ifO<j<S-i if S-i <j<S  p,  «/y' =  y  o  ifO<j*S-i  P i j  Pij  ifS-i<j*S  v  For s' < i < S:  fPr{/J>>*-} r  ,. = \Pr{D = i-j] T  0  1/7=0 ifO<j<i ifi<j±S  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<j±i  T  T  0  ifi<j*S ifj = 0 if0<j<,i  = Pt  ifi<j±S = Pi,  CASE  2. The lead time is equals the review period.  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: ifO±j<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  For s' < i < S:  «f 7=0  \Pr{D >i) T  Pr[D =i-j}  ifO<j±i  0  if i <j < S  T  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}  if S-i <j < S  r  T  ifOzj<S-i ifj = S-i if S-i <j <S  Pij = Pi,  For s' < i < S:  Pr{D >i} T  = { Pr{D = i-j} T  0  i/7  =o  ifO<j±i ifi<j<S  a) s' < i < s: This does not simplify; but it is identical to (3).  90  Pr{D zi}  ifj = 0  T  Pr{D = i-j] T  0 Py p  tj  Pij  ifO<j±i ifi<j<S  ifj = 0 ifO<j±i 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  ( S + m + l ) x ( S + m + l) matrix IP, with elements p . tj  Then, using the equations developed in  Chapter III, the elements of 7 are found as follows:  CASE  1. The lead time is less than the review period.  For 0 < i < s:  £ [Pr{D =k}Pr{D _ ±S'-k}] k=0 L  T  +  L  ifj=0  Pr{D *i)Pr{D ^S>'-/} L  T  i-l  £  [Pr[D = k}Pr{D _ = S'-j-k}-\ +Pr[D *i\Pr{D _ L  T  L  L  T  = S'-j-i\  L  ifO<j<S'-i  Jt=0  s'-i Y, [Pr[D =k}Pr{D _ k=0 L  T  = S'-j-k\]  L  i-l £ [Pr{D = k}Pr{D _ *S'-k\\ k=0 fc=0 L  T  ifS'-i<j<S'  + Pr[D *i)Pr{D _ ±S''-i)  L  L  T  if j = 0  L  i-l  £ [Pr{D =k}Pr{D _  = \ £  L  T  L  = (S+m)-j-k}] + Pr{D >i}Pr[D _ L  T  L  = (S m)-j-i} +  ifO<j  < (J5+m)-i  (S*m)-j  if (S+m)-i<j <,(S+m)  £ [Pr{D = k}Pr{D _ = (S m)-j-k]] k=0 L  T  L  +  92  I-l  53 [Pr{D = k\Pr{D _ >S'-k}] L  T  L  +  Pr{D zi}Pr{D _ *S'-i} L  T  ifj = 0  L  k=0 i-l \ Y[Pr{D  = k}Pr{D _ = S-(j-m)-k}] + Pr[D zi}Pr{D _  L  T  L  L  T  = S-(j-m)-i]  L  ifO<jzS+m-i  k=0  S-(j-m)  53  [Pr{D = k}Pr{D _ = S-(j-m)-k]] L  T  if S+m-i <j <, S+m  L  i-l  53 [Pr{D = k}Pr{D _ zS -k}] /  L  T  L  +  Pr{D zi}Pr{D _ zS''-i] L  T  ifj = 0  L  *=0 i-l  \ 13 [Pr[D = k}Pr{D _ = S-(j-m)-k}] + Pr[D zi}Pr[D _ k=o L  T  L  L  T  = S-(j-m)-i}  L  ifO<jz S+m-i and 0 z j-m  Pi(j-m)  if 0 <j <, S+m-i  and  Pi(j-m)  if S+m-i <j <, S+m  0<j-m<,S-i  and S-i < j-m zS  i-l  Y [Pr{D = k)Pr{D _ zS'-k}]  k=0  L  T  L  +  ifj = 0  Pr{D *i)Pr{D _ ±S'-i} L  T  L  i-l  53 [Pr{D = k}Pr{D _ = S-(j-m)-k}] + Pr{D zi}Pr{D _ L  T  L  L  T  L  = S-(j-m)-i}  ifO<jzm  k=0 Piij-m)  if m<j <, S+m-i  Piij-m)  if S+m-i <j <. S+m  i-l  Y,lPr{D = k}Pr[D _ ^S'-k}} L  T  L  + Pr{D *i)Pr{D _ *S'-i) L  T  ifj = 0  L  i-l  53 [Pr{D = k}Pr{D _ = S'-j-k}] + Pr{D >i}Pr{D _ L  T  L  L  T  L  = S'-j-i}  ifO<j i m  k=0 if m<j <,S'  Pi  which, for 0 < j < m, is identical to (2).  93  For s < i < S': Pr{D >i} T  Pu =  Pr{D = i-j]  if0<j<i  0  ifi<j<S'  T  a) s < i < S: Pr{D >i T  }  */7=0  Pr{D = i -j)  if0<j<i  T  0  if i <j < S  0  ifS<j<S> ifj=0 if  0 <j < i  if i <j ± S  0  ifS<j<S' ifO<j<S  0  ifS<j<S>  b) S < i < S': This does not simplify; but it is identical to (3).  CASE  2. The lead time equals the review period.  For 0 < i < s: 0  ifO < j<S'-i  Pr{D >i} T  Pr{D =S'-j} T  ifj=S'-i ifS'-i<j<S'  94  0  ifO±j<(S+m)-i  Pr{D  ifj = (S+m)-i  T  Pr{D = (S+m) -j)  if (S+m)-i <j <L (S+m)  0  if 0 <, j<S+m-i  T  if j = S+m-i  . Pr{D zi] T  Pr{D = S-(j-m)} T  if S+m-i <j <, S+m  0  if 0 <,j < S+m-i and 0 ^ j-m  Pi(j-m)  if 0<.j< S+m-i and  Pi(j-m)  if j = S+m-i and j-m = S-i  •  . Pi(j-m)  if S+m-i <j z S+m  0  if 0 zj <,m  Pi(j-m)  if m< j< S+m-i  Piij-m)  if j = S+m-i  <  and S-i < j-m ^S  if S+m-i <j < S+m  1°  if 0 <,j <.m  [PiV-m)  ifm<j<S'  which, for 0 < i < s, is identical to (3). For s < / < S': Pr{D zi}  ifj = 0  Pr{D = i-j)  if 0 <j <L i  0  ifKjzS  T  =  T  0<j-m<S-i  1  95  a) s < i < S:  Pr{D zi}  1/7=0.  Pr{D = i-j]  if0<j±i  0  ifi<j*S  0  ifS<j<S>  T  T  Pij Pij Pij  0 Pij  0  */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.  O  I  C  S  Optimat Inventory Control System For the exclusive use of Canadian Tire Pacific Associates Developed at: The Faculty of Commerce and Business Administration The University of British Columbia  Brian Kapalka Kaan Katircioghi Marty Puterman  Press <Enter> to continue  Figure A - l .  The title screen.  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  5  Figure A-2. The main menu.  Figure A-2 depicts the main menu of the program: it is from here that the manager enters all the review parameters. If the manager wishes to change one of the parameters from its default value, he or she selects the appropriate number and enters the correct information in the window presented. The new settings will then be shown in place of the default values. In this example, the relevant data files are located in the default directory "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.  Finally, in order to proceed with the analysis, the manager  executes the "main" module of the program by selecting option 5.  98  Product 200001 - Store 6 RP = 4 days  L T = 3 days  OPTIMAL POLICY  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.  As demonstrated in the previous chapter, the amount of time required to  determine the optimal policy depends on the value of S,,^ chosen.  45  Further, for a product  with a very "large" current policy, the time required to evaluate the current policy is often more than that required to determine the optimal policy (assuming a reasonable value of 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  Product 200001 - Store 6 LT » 3 days  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  Service Level : 97,7% Annual Cost : Xl$  Annual Savings: 429 (57.4%)  Would you like to evaluate a different policy? (y/n)  Figure A-4. Displaying the results.  Once the optimal policy is determined and the current policy is evaluated, the results are displayed as shown in Figure A-4. For this example, the optimal policy of (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  Product 200001 - Store 6 RP = 4 days  LT = 3 days  OPTIMAL POLICY  CURRENT POLICY  Reorder Point Target Level  Reorder Point Target Level  :  3 9  Service Level : 97.7% Annual Cost : 3.19 Annual Savings:  : :  12 14  Service Level : 100.0% Annual Cost : 7.48  4.29 (57.4%)  ALTERNATE POLICY New Reorder Point  5  New Target Level  10  Figure A-5. Entering an alternate policy.  Having requested that a different policy be evaluated, the manager is prompted for the new reorder point and target level, as shown in Figure A-5. The manager can enter any "valid" policy; that is, any policy satisfying the basic condition {0 < s < S}.  Here, the manager  chooses to evaluate the policy (6,10), which is somewhere "between" the optimal policy and the current policy.  101  Product 200001 - Store 6 RP - 4 days  L T = 3 days  OPTIMAL POLICY  CURRENT POLICY  Reorder Point Target Level  Reorder Point Target Level  :  3 9  Service Level : 97.7% Annual Cost 3.19 Annual Savings:  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  Would you like to evaluate a different policy? (y/n)  Figure A-6. The particulars of the alternate policy.  Once the new policy has been entered, the system evaluates the policy and presents the results, as depicted in Figure A-6. In this case, the new policy of (6,10) provides a customer service level of 99.8% at an annual cost of $4.41.  Because this policy is expected to meet  virtually all of the demand, the difference between the cost of the current policy and the cost of this policy is directly attributable to the cost of the marketing strategy. Thus, approximately 40% of the cost of inventory for product 200001 at store 6 is due to excess stock for the purpose of marketing. Finally, if the manager wishes to evaluate yet another policy, he or she would answer "yes" to the question, and repeat the process. to evaluate another policy. 102  Here, the manager chooses not  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  6  Figure A-7. The main menu revisited.  Having answered "no" to the previous question, the manager is returned to the main menu, as shown in Figure A - 7 .  Now, the manager might decide to evaluate another product  at store 6 or to evaluate the same product at a different store. Alternatively, the manager might decide to examine the implications of a different review scenario by changing those parameters and proceeding with the analysis.  Here, the manager chooses to end the consultation by  selecting option 6.  103  Appendix I The Source Code for the "Interface" Module  include 'fgraph.fi' include 'fgraph.fd' dimension real integer * 2 integer character * 1 character * 6 character * 40 character * 44  f(0:7,0:200), p(0:200,0:200), pi(0:200), spi(0:200) mu dummy, newx, newy, maxx, maxy rp, bigs, smalls, smax, store, target(21) more prod, prev, size(3) dir str  record /rccoord/  curpos  common common common common common common  dir, prod, store, smax f, p, rp, It, bigs, smalls pi, spi fc, vc, eac, cac, clevel, mu maxx, maxy size  data data  /initial/ /ptm/ /vector/ /costs/ /coord/ /video/  dir/'c:\tire\data\dst7, prod/'2000017, prev/' 7 store/6/, rp/4/, lt/3/, smax/25/  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  call input( 15, 45, 3 ) read( * , '(i3)', err=40) smax end do  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  dummy, maxx, maxy, maxc, maxr size(3)  record /videoconfig/ my screen common /coord/ common /video/  maxx, maxy size  call getvideoconfig( myscreen ) select case ( myscreen. adapter ) case( $vga, $ovga, $mcga ) dummy = setvideomode( $vresl6color ) size(l) = 'h26wl6' size(2) = 'h20wl2' size(3) = 'hl6w9' case default stop 'Error: cannot set graphics mode.' end select call getvideoconfig( myscreen ) maxx = myscreen. numxpixels - 1 maxy = myscreen. numypixels - 1 maxc = myscreen. numtextcols maxr = myscreen. numtextrows call titlescreen() end  subroutine titlescreen() include '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  dummy = setbkcolor( $blue ) dummy = settextcolor( 15 ) dummy = registerfonts( 'tmsrb.fon' ) call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = setfont( size(l) ) dummy = getgtextextent( 'O I C ) call moveto( ( maxx - dummy ) / 2, newy( int2( 150 ) ) , xy ) call outgtext( 'O I C ) dummy = setfont( size(2)) dummy = getgtextextent( 'OPTIMAL I N V E N T O R Y C O N T R O L ' ) call moveto( ( maxx - dummy ) / 2, newy( int2( 200 ) ), xy ) call outgtext( 'OPTIMAL INVENTORY C O N T R O L ' ) dummy = getgtextextent( 'For the exclusive use o f ) call moveto( ( maxx - dummy ) / 2, newy( int2( 340 ) ), xy ) call outgtext( 'For the exclusive use o f ) dummy = getgtextextent( 'Canadian Tire Pacific Associates' ) call moveto( ( maxx - dummy ) / 2, newy( int2( 400 ) ) , xy ) call outgtext( 'Canadian Tire Pacific Associates' ) call moveto( newx( int2( 100 ) ) , newy( int2( 600 ) ) , xy ) call outgtext( 'Developed at:' ) call moveto( newx( int2( 100 ) ), newy( int2( 670 ) ), xy ) call outgtext( 'The Faculty of Commerce' ) call moveto( newx( int2( 100 ) ) , newy( int2( 710 ) ) , xy ) call outgtext( ' and Business Administration' ) call moveto( newx( int2( 100 ) ) , newy( int2( 760 ) ) , xy ) call outgtext( 'University of British Columbia' ) call moveto( newx( int2( 650 ) ), newy( int2( 670 ) ) , xy ) call outgtext( 'Marty Puterman' ) call moveto( newx( int2( 650 ) ) , newy( int2( 715 ) ) , xy ) call outgtext( 'Kaan Katircioglu' ) call moveto( newx( int2( 650 ) ) , newy( int2( 760 ) ) , xy ) call outgtext( 'Brian Kapalka' ) call settextposition( 27, 28, curpos ) str = 'Press < Enter > to continue' call outtext( str ) call settextposition( 15, 100, curpos ) read( * , '(al)') dum end  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/  dir, prod, store, smax f, p, rp, It, bigs, smalls maxx, maxy size  call refresh() dummy4 = setcolor( int2( 15 ) ) dummy = rectangle( $gborder, newx( int2( 150 ) ), newy( int2( 110 ) ), + newx( int2( 850 ) ), newy( int2( 890 ) ) ) dummy = getgtextextent( ' 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  outtext( '1. Select data directory' ) settextposition( 8, 28, curpos ) outtext( dir ) settextposition( 10, 20, curpos )  call outtext( '2. Select product and store combination' ) call settextposition( 11 , 28, curpos ) call outtext( 'Product:' ) call settextposition( 11 , 37, curpos) call outtext( prod ) call settextposition( 12, 28, curpos ) call outtext( 'Store :' ) if( store .It. 10 ) then write(str,'(il)') store else write(str,' (12)') store 109  end call call call  if settextposition( 12, 37, curpos ) outtext( str ) settextposition( 14, 20, curpos )  call outtext( '3. Select scenario' ) call settextposition( 15, 28, curpos call outtext( 'Review Period:' ) call settextposition( 15, 43, curpos write(str,'(il)') rp call outtext( str ) call settextposition( 16, 28, curpos call outtext( 'Lead Time :' ) call settextposition( 16, 43, curpos write(str,'(il)') It call outtext( str ) call settextposition( 18, 20, curpos  ) )  ) )  )  call outtext( '4. Select search parameter' ) call settextposition( 19, 28, curpos ) call outtext( 'Smax :' ) if( smax .It. 10 ) then write(str,'(il)') smax else if( smax .It. 100 ) then write(str,'(i2)') smax else write(str,'(i3)') smax end if call settextposition( 19, 35, curpos ) call outtext( str ) call settextposition( 21, 20, curpos ) call call call call  outtext( '5. Execute program' ) settextposition( 23, 20, curpos ) outtext( '6. Exit to DOS' ) settextposition( 26, 24, curpos )  call outtext( 'Please enter the desired option' ) call input( 26, 57, 1 ) end  110  subroutine openfiles( iflag) include 'fgraph.fd' integer character character character character  *6 * 40 * 43 * 53  store, smax prod dir strl str2  record /rccoord/  curpos  common /initial/  dir, prod, store, smax  if( dir .eq. 'a:' .or. dir .eq. ' A : ' ) then open( 1, file = '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  subroutine titles( prod, store, rp, It) include 'fgraph.fd' integer * 2 integer character * 6 character * 29  dummy, temp, maxx, maxy, newx, newy store, rp prod, size(3) str  record /rccoord/ record /xycoord/  curpos xy  common /coord/ common /video/  maxx, maxy size  call clearscreen( $gclearscreen ) call refresh() dummy = setfont( size(l)) write(str, '(a9,a6,all,i2)') ' Product ',prod,' - Store ', store dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) / 2, newy( int2( 100 ) ), xy ) call outgtext( str ) call moveto( ( maxx - dummy ) / 2, newy( int2( 200 ) ) , xy ) temp = lineto( ( maxx + dummy ) / 2, newy( int2( 200 ) ) ) dummy = setfont( size(3) ) write(str, '(a5,il,al7,il,a5)') 'RP = ', rp, ' days L T = ', It, ' days' dummy = getgtextextent( str ) call moveto( ( maxx - dummy ) / 2, newy( int2( 150 ) ) , xy ) call outgtext( str ) dummy = setfont( size(2) ) dummy = getgtextextent( 'OPTIMAL POLICY' ) call moveto( newx( int2( 25 ) ) + maxx / 4 - dummy / 2, newy( int2( 250 ) ), xy ) call outgtext( 'OPTIMAL POLICY' ) call settextposition( 11, 12, curpos ) call outtext( 'Reorder Point :' ) call settextposition( 12, 12, curpos ) call outtext( 'Target Level :' ) call settextposition( 14, 12, curpos ) call outtext( 'Service Level :'.) 112  call settextposition( 15, 12, curpos ) call outtext( 'Annual Cost :' ) dummy = getgtextextent( 'CURRENT POLICY ') call moveto( maxx - newx( int2( 25 ) ) - maxx / 4 - dummy / 2, + newy( int2( 250 ) ), xy ) call outgtext( ' C U R R E N T POLICY' ) call settextposition( 11, 48, curpos ) call outtext( 'Reorder Point:' ) call settextposition( 12, 48, curpos ) call outtext( 'Target Level :' ) call settextposition( 14, 48, curpos ) call outtext( 'Service Level :' ) call settextposition( 15, 48, curpos ) call outtext( 'Annual Cost :' ) call settextposition( 17, 29, curpos ) call outtext( 'Working . . . please wait' ) end  subroutine current( more ) include 'fgraph.fd' dimension integer * 2 integer character * 1 character * 6 character * 7 character * 52  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/  f, p, rp, It, bigs, smalls fc, vc, eac, cac, clevel, mu size maxx, maxy  write(str,'(i3)') smalls call settextposition( 11, 67, curpos ) call outtext( str ) write(str,'(i3)') bigs call settextposition( 12, 67, curpos ) call outtext( str ) write(str,'(f5.1,al)') clevel * 100,'%' 113  call settextposition( 14, 64, curpos ) if( clevel .It. 0.975) dummy = settextcolor( 4 ) call outtext( str ) if( clevel .It. 0.975) dummy = settextcolor( 15 ) write(str,'(f6.2)') cac call settextposition( 15, 64, curpos ) call outtext( str ) call settextposition( 17, 28, curpos ) call outtext( ' ') if( eac .le. cac ) then icol = 12 save = cac - eac pet = save / cac * 100 write(str,'(al,f4.1,a2)') '(', pet, '%)' call settextposition( 18, 28, curpos ) call outtext( str ) else icol = 48 save = eac - cac end if call settextposition( 17, icol, curpos ) call outtext( 'Annual Savings:' ) write(str,'(f6.2)') save call settextposition( 17, icol + 16, curpos ) call outtext( str ) do while( more .ne. ' Y ' .and. more .ne. 'y' .and. more .ne. ' N ' + .and. more .ne. 'n' ) call settextposition( 27, 67, curpos ) call outtext( ' ') call settextposition( 27, 12, curpos) str2 = 'Would you like to evaluate a different policy? (y/n)' call outtext( str2 ) call input( 27, 67, 1 ) read( * , '(al)') more end do if( more .eq. ' Y ' .or. more .eq. 'y' ) then dummy = setfont( size(2)) dummy = getgtextextent( ' A L T E R N A T E POLICY' ) call moveto( ( maxx - dummy ) / 2, newy( int2( 640 ) ) , xy ) call outgtext('ALTERNATE POLICY') end if close( 7 ) end  114  subroutine alternate( more ) include 'fgraph.fd' dimension real integer integer * 2 character * 1 character * 6 character * 52  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/  f, p, rp, It, bigs, smalls fc, vc, eac, cac, clevel, mu maxx, maxy  call setviewport( newx( int2( 100 ) ) , newy( int2( 700 ) ) , newx( int2( 900 ) ) , + newy( int2( 940 ) ) ) call clearscreen( $gviewport) call setviewport( 0, 0, maxx, maxy ) call settextposition( 23, 12, curpos ) call outtext( 'Reorder Point :' ) write(str,'(i3)') smalls call settextposition( 23, 30, curpos ) call outtext( str ) call settextposition( 24, 12, curpos ) call outtext( 'Target Level :' ) write(str,'(i3)') bigs call settextposition( 24, 30, curpos ) call outtext( str ) call settextposition( 23, 48, curpos ) call outtext( 'Service Level :' ) write(str,'(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  call clearscreen( $gclearscreen ) dummy4 = setcolor( int2( 15 ) ) dummy2 = rectangle( $gborder, newx( int2( 50 ) ) , newy( int2( 50 ) ), + newx( int2( 950 ) ), newy( int2( 950 ) ) ) end  subroutine input( iy, ix, length ) include 'fgraph.fd' integer * 2 integer  dummy2, maxx, maxy dummy4  record /rccoord/ common /coord/  curpos maxx, maxy  dummy4 = setcolor( int2( 4 ) ) dummy2 = rectangle( $gborder, ( maxx * i x / 8 0 ) - 1 5 , ( maxy * iy / 30 ) - 22 + ( maxx * ( i x + length ) / 80 ) + 2, ( maxy * iy / 30 ) + 5 ) call settextposition( iy, ix, curpos ) dummy4 = setcolor( int2( 15 ) ) end 116  subroutine clearinput( iy, ix, length ) include 'fgraph.fd' integer * 2 integer  dummy2, maxx, maxy dummy4  common /coord/ maxx, maxy dummy4 = setcolor( int2( 1 ) ) dummy2 = rectangle( $gborder, (maxx * ix / 80 ) - 15, ( maxy * iy / 30 ) + ( maxx * ( ix + length ) / 80 ) + 2, ( maxy * iy / 30 ) + 5 ) dummy4 = setcolor( int2( 15 ) ) end  subroutine borderl() include 'fgraph.fd' integer * 2  dummy2, maxx, maxy  common /coord/  maxx, maxy  dummy2 = rectangle( $gborder, ( maxx * 1 0 / 8 0 ), maxy * 1 2 / 3 0 - 7 , + ( maxx * 70 / 80 ), ( maxy * 18 / 30 ) ) end  subroutine border2() include 'fgraph.fd' integer * 2  dummy2, maxx, maxy  common /coord/  maxx, maxy  dummy2 = rectangle( $gborder, ( maxx * 1 0 / 8 0 ), maxy * 1 1 / 3 0 - 7 , + ( maxx * 70 / 80 ), ( maxy * 19 / 30 ) ) end  117  integer * 2 function newx( xcoord ) integer * 2 real * 4  xcoord, maxx, maxy tempx  common /coord/  maxx, maxy  tempx = maxx / 1000. tempx = xcoord * tempx + 0.5 newx = tempx end integer * 2 function newy( ycoord ) integer * 2 real * 4  ycoord, maxx, maxy tempy  common /coord/  maxx, maxy  tempy = maxy / 1000. tempy = ycoord * tempy + 0.5 newy = tempy end  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/  dir, prod, store, smax f, p, rp, It, bigs, smalls pi, spi fc, vc, eac, cac, clevel, mu  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.  *  read in demand distribution  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  if( max .ge. 50 ) write(8, * ) 'WARNING: M A X EXCEEDS 50' ssopt = 0 bsopt = 0 eac = I.elO fill = 0.  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  iterate for S = smin to smax do while( bigs .It. smax ) iflag = 0 temp = service( mu ) if( temp .ge. 0.975 ) then do while( temp .ge. 0.975 .and. smalls .ge. 0 ) slevel = temp do 60 i = 0, bigs temppi(i) = pi(i) tempspi(i) = spi(i) if( smalls .gt. 0 ) then call update 1( smalls - 1 ) call steady() temp = service( mu )  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 ;  print optimal policy to the screen write(str,'(i3)') ssopt call settextposition( 11, 31, call outtext( str ) write(str,'(i3)') bsopt call settextposition( 12, 31, call outtext( str ) write(str,'(f5.1,al)') fill * call settextposition( 14, 28, call outtext( str ) write(str,'(f6.2)') eac call settextposition( 15, 28, call outtext( str )  curpos )  curpos ) 100,'%' curpos)  curpos )  121  1000 1100 1200  format( //10(al), f8.2 ) format(////) format( /i9, 21(f5.0)) end  subroutine conv( f, rp, max ) *  convolves the demand up to 7 days dimension integer  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  subroutine lbound( f, rp, mu, max, smin ) *  calculates a lower bound for S dimension real integer  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  subroutine updatel( new ) *  *  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/  f, p, rp, It, bs, ss  consider new > s if( ( new - ss ) .gt. 0 ) then  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  subroutine update2( new ) *  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/  f, p, rp, It, bs, ss  *  note: it is assumed that new > S  *  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  f(0:7,0:200), p(0:200,0:200), a(0:200,0:200) pi(0:200), spi(0:200) rp, bs, ss  common /ptm/ common /vector/  f, p, rp, It, bs, ss pi, spi  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 )  *  transposes a square matrix dimension  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 ) *  solves a system of linear equations dimension  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() *  calculates the steady-state probabilities for a shift of "It" days dimension integer  f(0:7,0:200), p(0:200,0:200), pi(0:200), spi(0:200) rp, bs, ss  common /ptm/ common /vector/  f, p, rp, It, bs, ss pi, spi  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  subroutine policy( new ) evaluates the policy (new,bigs) dimension real integer  f(0:7,0:200), p(0:200,0:200) mu rp, bigs, smalls  common /ptm/ common /costs/  f, p, rp, It, bigs, smalls fc, vc, eac, cac, clevel, mu  call update 1( bigs) call update 1( new ) 127  call steadyO cac = cost( fc, vc ) clevel = service( mu ) end  real function mean( f, max ) *  calculates the mean daily demand dimension  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  f(0:7,0:200), p(0:200,0:200), pi(0:200), spi(0:200) mu rp, bigs, smalls  common /ptm/ common /vector/  f, p, rp, It, bigs, smalls pi, spi  service = 1.  20 10  if( mu .gt. 0. ) then do 10 j = 0, bigs sum = 0. do 20 k = 0, j-1 sum = sum + ( k - j ) * f(rp,k) service = service - spi(j) * ( rp * mu - j - sum ) / (rp * mu) end if end  128  function cost( fc, vc ) calculates the annual expected inventory cost  10  dimension integer  f(0:7,0:200), p(0:200,0:200), pi(0:200), spi(0:200) rp, bigs, smalls  common /ptm/ common /vector/  f, p, rp, It, bigs, smalls pi, spi  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  f(0:7,0:200), p(0:200,0:200), pi(0:200), spi(0:200) rp, bigs, smalls  common /ptm/ common /vector/  f, p, rp, It, bigs, smalls pi, spi  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 ) *  evaluates Pr{ X(i) > = j } dimension  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  s  S  Cost ($)  OPTIMAL CSL  s  S  (%)  Cost ($)  SAVINGS CSL (%)  ($)  (%)  200001  12  14  7.48  100.0  3  9  3.19  97.7  4.29  57.4%  200002  4  5  6.52  99.9  2  4  4.20  98.5  2.32  35.6%  200004  3  4  2.35  100.0  1  3  1.43  98.6  0.92  39.1%  200006  3  4  2.89  100.0  1  3  1.69  99.7  1.20  41.5%  200008  2  3  2.60  100.0  0  4  1.84  97.8  0.76  29.2%  200010  1  2  1.68  100.0  0  1  0.89  98.6  0.79  47.0%  200016  6  7  5.06  100.0  2  6  2.33  98.7  2.73  54.0%  200017  2  3  4.68  100.0  0  3  2.99  98.1  1.69  36.1%  200020  2  3  2.16  100.0  0  1  0.78  98.6  1.38  63.9%  200025  14  18  7.50  100.0  3  11  3.39  97.7  4.11  54.8%  200032  0  1  0.39  100.0  0  1  0.39  100.0  0.00  0.0%  200047  3  4  1.26  100.0  0  2  0.49  98.6  0.77  61.1%  200048  5  6  2.89  100.0  1  6  1.40  97.8  1.49  51.6%  200049  3  4  2.02  100.0  1  3  1.19  98.5  0.83  41.1%  200050  3  4  1.28  100.0  0  1  0.39  98.6  0.89  69.5%  200052  4  5  3.93  99.9  1  8  2.24  97.7  1.69  43.0%  201030  3  4  7.85  99.7  2  4  6.16  98.9  1.69  21.5%  201032  21  26  . 36.62  100.0  6  11  13.42  97.8  23.20  63.4%  201036  3  4  4.04  100.0  1  3  2.38  98.1  1.66  41.1%  201038  25  45  18.74  100.0  9  23  8.97  97.5  9.77  52.1%  201045  0  1  2.82  98.6  0  1  2.82  98.6  0.00  0.0%  201502  1  2  1.48  99.3  1  3  1.23  99.7  0.25  16.9%  201503  2  3  1.99  100.0  1  4  1.31  99.7  0.68  34.2%  201505  3  4  3.50  99.7  1  6  1.78  97.5  1.72  49.1%  201506  4  5  6.42  100.0  1  4  3.60  98.0  2.82  43.9%  131  CURRENT PRODUCT  s  S  Cost ($)  OPTIMAL CSL  s  S  (%)  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  201507  7  8  7.28  100.0  2  7  3.12  97.9  4.16  57.1%  201508  3  4  2.20  100.0  0  1  0.55  100.0  1.65  75.0%  201509  3  4  2.29  100.0  0  1  0.64  98.6  1.65  72.1%  201510  3  4  2.20  100.0  0  1  0.55  100.0  1.65  75.0%  201511  3  4  2.20  100.0  0  1  0.55  100.0  1.65  75.0%  201512  4  5  3.34  100.0  1  4  1.53  98.9  1.81  54.2%  201513  3  4  3.45  97.1  3  5  3.60  98.2  -0.15  -4.3%  201514  3  4  3.50  100.0  1  3  2.12  98.5  1.38  39.4%  201521  6  8  3.76  100.0  1  6  1.80  97.7  1.96  52.1%  201522  5  7  3.66  100.0  2  6  2.24  98.4  1.42  38.8%  201523  10  12  6.49  100.0  3  9  3.05  98.0  3.44  53.0%  201525  8  10  5.55  100.0  2  8  2.56  98.0  2.99  53.9%  201526  3  4  3.31  99.4  1  7  1.78  97.8  1.53  46.2%  201530  12  15  7.13  100.0  3  10  3.29  97.7  3.84  53.9%  201531  20  25  9.57  100.0  5  14  4.29  98.0  5.28  55.2%  201532  8  10  4.68  100.0  2  7  2.24  98.8  2.44  52.1%  201533  8  10  5.14  100.0  2  9  2.51  97.5  2.63  51.2%  201534  4  5  4.52  99.9  1  9  2.10  97.8  2.42  53.5%  201550  13  16  6.74..  100.0  2  10  2.73  97.7  4.01  59.5%  201551  6  8  4.33  100.0  2  7  2.35  98.3  1.98  45.7%  201552  3  4  2.29  100.0  1  4  1.28  99.7  1.01  44.1%  201553  25  35  25.15  100.0  9  19  11.66  97.5  13.49  53.6%  201554  10  20  8.65  100.0  5  14  5.93  97.6  2.72  31.4%  201555  10  20  5.63  100.0  2  9  2.66  97.6  2.97  52.8%  201556  2  3  2.81  99.7  1  3  2.13  98.5  0.68  24.2%  201558  3  4  3.49  99.9  1  3  2.16  97.5  1.33  38.1%  201564  3  4  2.94  99.9  1  4  1.52  98.2  1.42  48.3%  201566  4  5  4.07  100.0  1  5  1.74  97.7  2.33  57.2%  201568  4  5  3.99  100.0  1  5  1.72  97.8  2.27  56.9%  132  CURRENT PRODUCT  s  S  Cost ($)  OPTIMAL CSL  s  S  (%)  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  201570  4  6  2.76  100.0  1  5  1.60  97.8  1.16  42.0%  201572  23  28  10.61  100.0  5  17  4.44  97.5  6.17  58.2%  201573  3  4  3.88  99.8  1  6  1.79  97.9  2.09  53.9%  201575  4  6  4.82  99.9  2  6  3.25  98.4  1.57  32.6%  201577  15  18  11.98  100.0  4  14  5.50  97.7  6.48  54.1%  201578  25  35  16.71  ,100.0  9  20  8.38  97.7  8.33  49.9%  201579  8  10  7.41  100.0  2  10  3.86  97.6  3.55  47.9%  201580  16  26  11.85  100.0  6  14  6.43  97.7  5.42  45.7%  201581  7  10  6.06  99.9  3  8  3.90  97.7  2.16  35.6%  201582  10  20  5.47  100.0  3  9  3.05  97.6  2.42  44.2%  201586  8  10  5.45  100.0  3  9  2.91  98.3  2.54  46.6%  201589  3  4  2.95  100.0  1  4  1.51  99.0  1.44  48.8%  202005  1  2  12.12  99.8  0  3  11.95  97.6  0.17  1.4%  202006  0  1  8.76  95.8  0  2  13.13  97.8  -4.37  -49.9%  202036  2  3  8.76  99.7  1  3  7.18  98.6  1.58  18.0%  202037  2  3  9.35  98.9  2  3  9.35  98.9  0.00  0.0%  202055  1  2  14.63  99.3  1  2  14.63  99.3  0.00  0.0%  202072  0  1  3.51  98.6  0  1  3.51  98.6  0.00  0.0%  202073  1  2  16.69  99.9  0  2  12.45  97.8  4.24  25.4%  202100  3  4  24.22  99.9  1  4  18.09  98.1  6.13  25.3%  202101  2  3  6.63  100.0  1  2  4.58  99.6  2.05  30.9%  202105  1  2  12.12  97.7  1  2  12.12  97.7  0.00  0.0%  202106  8  10  26.57  100.0  0  2  4.25  97.8  22.32  84.0%  202107  1  2  5.59  100.0  0  1  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  3  15  3.72  97.7  2.42  39.4%  202907  6  8  3.50  99.8  3  7  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  7  23  5.81  97.5  7.55  56.5%  133  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  S '  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  202921  8  10  5.94  99.7  4  11  3.59  97.7  2.35  39.6%  202925  30  40  8.42  100.0  9  24  4.23  97.6  4.19  49.8%  202930  8  10  2.85  100.0  2  7  1.43  97.6  1.42  49.8%  203001  2  3  1.73  98.0  1  6  1.03  97.9  0.70  40.5%  203003  10  20  3.00  100.0  2  8  1.53  97.7  1.47  49.0%  203004  2  3  1.62  100.0  0  5  1.01  97.7  0.61  37.7%  203008  3  4  1.95  97.6  2  7  1.67  97.6  0.28  14.4%  203010  10  20  3.88  99.1  7  20  3.33  97.7  0.55  14.2%  203012  20  30  6.05  100.0  7  23  3.62  97.6  2.43  40.2%  203013  2  3  1.57  98.5  1  4  1.23  97.7  0.34  21.7%  203017  26  36  6.82  100.0  6  20  3.27  97.9  3.55  52.1%  203018  10  12  4.48  100.0  2  6  1.90  98.0  2.58  57.6%  203019  4  6  3.07  99.6  2  7  2.11  97.8  0.96  31.3%  203020  4  5  2.57  99.5  2  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  4  11  3.14  97.6  2.06  39.6%  203032  10  12  5.18  100.0  3  12  2.86  97.6  2.32  44.8%  203033  20  24  8.86  100.0  4  13  3.56  97.7  5.30  59.8%  203039  30  40  6.29  100.0  5  16  2.45  97.9  3.84  61.0%  203040  3  4  2.92  98.2  2  6  1.97  98.0  0.95  32.5%  203044  14  24  6.20  100.0  3  12  2.94  97.7  3.26  52.6%  203045  3  5  1.84  100.0  1  3  1.17  98.6  0.67  36.4%  203047  3  4  1.60  100.0  0  2  0.63  97.8  0.97  60.6%  203053  3  5  2.48  97.3  3  6  2.57  98.0  -0.09  -3.6%  203056  5  7  3.70  100.0  2  6  2.27  98.2  1.43  38.6%  203057  2  3  2.86  99.9  1  4  1.85  99.2  1.01  35.3%  203058  6  8  4.37  100.0  2  8  2.48  97.8  1.89  43.2%  203059  4  6  4.48  100.0  2  4  3.13  98.6  1.35  30.1%  203060  6  8  3.91  99.9  2  11  2.41  97.7  1.50  38.4%  134  CURRENT PRODUCT  S  s  OPTIMAL  Cost  CSL  ($)  (%)  s  S  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  203061  3  4  2.80  99.0  2  6  1.79  98.8  1.01  36.1%  203064  8  10  4.73  99.9  3  9  2.57  97.9  2.16  45.7%  203065  4  6  2.29  99.2  2  8  1.89  97.6  0.40  17.5%  203066  6  8  5.30  100.0  2  6  2.98  97.7  2.32  43.8%  203067  4  6  3.39  99.5  2  8  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  4  6  2.95  96.8  3  10  2.47  97.5  0.48  16.3%  203070  18  20  10.05  100.0  4  14  3.91  97.6  6.14  61.1%  203071  2  3  3.21  96.7  2  4  3.20  98.4  0.01  0.3%  203072  6  8  3.13  100.0  2  6  1.80  98.4  1.33  42.5%  203076  2  3  2.68  100.0  1  2  1.99  99.6  0.69  25.7%  203081  10  20  5.29  100.0  3  9  2.95  97.6  2.34  44.2%  203082  6  8  7.25  100.0  2  9  4.51  97.7  2.74  37.8%  203083  10  20  10.46  100.0  5  11  6.62  98.2  3.84  36.7%  203085  12  16  17.79  100.0  1  3  3.50  99.2  14.29  80.3%  203086  12  16  21.50  100.0  2  6  6.88  98.0  14.62  68.0%  203091  12  14  20.01  100.0  3  9  8.97  97.6  11.04  55.2%  203093  13  16  30.57  100.0  3  6  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  3  13  3.30  97.7  3.91  54.2%  203096  3  4  6.73  99.9  1  4  4.63  97.9  2.10  31.2%  203097  30  40  49.61  100.0  7  14  14.67  97.6  34.94  70.4%  203098  1  2  4.90  100.0  0  1  2.45  100.0  2.45  50.0%  203099  6  8  21.64  100.0  2  5  11.45  97.9  10.19  47.1%  203202  1  2  5.31  100.0  0  1  2.68  98.6  2.63  49.5%  203312  3  4  2.37  30.3  12  13  7.48  98.6  -5.11  -215.6%  203313  4  5  3.29  100.0  0  2  1.37  98.6  1.92  58.4%  203314  4  6  3.78  100.0  0  4  1.72  97.8  2.06  54.5%  203315  6  7  9.08  99.0  5  6  7.86  97.7  1.22  13.4%  135  CURRENT PRODUCT  S  s  Cost ($)  OPTIMAL CSL (%)  s  s  Cost ($)  SAVINGS CSL (%)  ($)  (%)  203316  4  6  3.49  99.9  2 .  4  2.43  98.0  1.06  203317  1  2  1.24  97.7  1  2  1.24  97.7  0.00  0.0%  203318  1  2  1.36  83.3  2  4  2.20  98.5  -0.84  -61.8%  203319  3  4  2.47  100.0  0  3  1.16  98.1  1.31  53.0%  203321  4  6  3.12  100.0  1  2  1.24  98.1  1.88  60.3%  203322  3  5  2.89  100.0  1  3  1.75  98.6  1.14  39.4%  203323  3  4  2.95  99.3  2  4  2.39  98.5  0.56  19.0%  203324  1  2  1.02  98.6  0  2  1.02  98.6  0.00  0.0%  203325  4  5  2.51  99.7  1  3  1.56  97.5  0.95  37.8%  203326  1  2  1.44  96.0  1  3  1.58  97.9  -0.14  -9.7%  203327  4  5  2.92  97.8  3  6  2.90  98.1  0.02  0.7%  203400  6  8  5.11  99.9  3  4  2.94  97.6  2.17  42.5%  203403  8  10  6.89  98.1  7  11  6.43  97.8  0.46  203404  6  8  5.06  100.0  1  4  2.14  98.2  2.92  57.7%  203405  2  3  2.55  97.0  2  4  2.92  98.4  -0.37  -14.5%  203406  3  4  3.12  100.0  1  2  1.69  97.8  1.43  45.8%  203409  2  3  5.14  100.0  0  1  1.76  98.6  3.38  65.8%  203410  2  3  4.88  100.0  0  1  1.63  100.0  3.25  66.6%  203413  3  4  3.31  100.0  0  1.26  98.6  2.05  61.9%  203414  3  4  3.13  100.0  0  1  0.78  100.0  2.35  75.1%  203415  3  4  3.20  100.0  0  1  0.80  100.0  2.40  75.0%  203416  3  4  3.29  100.0  0  1  0.89  98.6  2.40  72.9%  203417  3  4  2.62  100.0  0  1  0.65  100.0  1.97  75.2%  203418  3  4  4.02  100.0  0  1  1.07  98.6  2.95  73.4%  203419  3  4  3.94  100.0  0  1  0.98  100.0  2.96  75.1%  203421  2  3  6.08  98.0  2  3  6.08  98.0  0.00  0.0%  203454  4  5  12.29  99.7  1  3  7.36  97.5  4.93  40.1%  203460  2  3  4.50  97.9  0  4  4.38  97.8  0.12  2.7%  203463  2  3  4.52  98.8  1  3  4.08  98.2  0.44  9.7%  136  30.4%  6.7%  CURRENT PRODUCT  s  S  Cost ($)  OPTIMAL CSL (%)  s  S  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  203472  5  6  8.06  98.2  4  6  8.05  98.1  0.01  0.1%  203473  10  12  11.09  100.0  3  5  4.78  98.0  6.31  56.9%  203474  10  12  10.87  100.0  2  5  4.02  98.1  6.85  63.0%  203477  1  2  2.55  99.9  0  2  1.83  97.8  0.72  28.2%  203478  1  2  2.53  97.8  1  2  2.53  97.8  0.00  0.0%  203483  6  7  12.71  100.0  2  4  6.51  97.7  6.20  48.8%  203484  4  5  9.26  100.0  1  4  5.35  98.1  3.91  42.2%  203488  3  4  2.21  100.0  1  3  1.30  98.4  0.91  41.2%  203503  3  4  7.05  100.0  0  3  3.43  97.6  3.62  51.3%  203506  2  3  4.90  99.3  0  2  3.29  98.6  1.61  32.9%  203507  4  6  9.05  100.0  .0  2  2.52  98.6  6.53  72.2%  203509  2  3  6.04  99.6  1  2  4.11  97.7  1.93  32.0%  203510  3  4  8.11  100.0  1  3  4.92  98.3  3.19  39.3%  203512  1  2.  5.96  99.0  1  2  5.96  99.0  0.00  0.0%  203520  4  6  6.87  99.9  2  4  4.69  98.1  2.18  31.7%  203521  4  5  19.53  100.0  1  3  9.59  98.2  9.94  50.9%  203523  1  2  2.00  100.0  0  1  1.00  100.0  1.00  50.0%  203525  2  3  3.00  100.0  0  1  1.00  100.0  2.00  66.7%  203527  4  6  6.26  100.0  1  3  3.16  97.7  3.10  49.5%  203532  2  3  5.17  100.0  0  3  3.32  98.1  1.85  35.8%  203533  2  3  4.95  100.0  0  1  1.70  98.6  3.25  65.7%  203566  2  3  4.34  97.6  2  3  4.34  97.6  0.00  0.0%  203590  1  2  12.23  92.7  2  3  18.30  98.7  -6.07  -49.6%  203591  1  2  12.28  90.5  2  4  20.62  98.3  -8.34  -67.9%  203596  1  2  14.96  99.7  1  2  14.96  99.7  0.00  0.0%  203597  1  2  15.03  100.0  0  2  11.23  98.6  3.80  25.3%  203598  2  3  22.35  99.9  1  2  14.85  98.7  7.50  33.6%  203599  1  2  14.95  99.6  1  2  14.95  99.6  0.00  0.0%  203601  3  4  5.40  99.6  2  4  4.19  98.8  1.21  22.4%  137  CURRENT PRODUCT  s  S  OPTIMAL  Cost ($)  CSL  s  s  (%)  Cost ($)  SAVINGS CSL (%)  ($)  (%)  203604  8  20  13.49  100.0  4  10  7.65  97.7  5.84  43.3%  203609  9  10  57.61  100.0  3  5  24.72  97.9  32.89  57.1%  203610  7  8  32.09  100.0  3  6  18.77  97.8  13.32  41.5%  203611  2  3  12.16  99.7  1  3  10.11  98.6  2.05  16.9%  203618  2  3  6.49  100.0  0  3  4.16  97.6  2.33  35.9%  203626  1  2  4.58  98.1  1  2  4.58  98.1  0.00  203641  6  7  16.13  99.8  3  6  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  1  2  3.50  100.0  0  2  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  2  3  9.73  99.2  1  4  9.41  98.1  0.32  3.3%  203676  24  30  60.12  100.0  3  6  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  9  10  32.32  100.0  4  7  17.94  98.0  14.38  44.5%  203679  8  14  57.80  100.0  4  6  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  3  4  16.33  97.9  35.24  68.3%  203683  3  4  17.50  100.0  1  4  12.07  98.2  5.43  31.0%  203696  2  3  24.86  99.7  1  3  20.85  98.6  4.01  16.1%  203698  1  2  15.90  98.1  1  2  15.90  98.1  0.00  0.0%  203699  4  5  41.16  99.8  2  4  29.19  98.2  11.97  29.1%  203702  1  2  3.40  97.2  0  4  4.97  98.6  -1.57  -46.2%  203703  2  3  5.45  100.0  1  2  3.78  99.7  1.67  30.6%  203704  2  3  5.06  99.6  1  2  3.44  97.8  1.62  32.0%  203705  3  5  8.12  100.0  1  2  4.03  99.6  4.09  50.4%  203712  2  3  6.99  100.0  0  2  3.48  98.6  3.51  50.2%  203717  2  3  5.85  100.0  0  3  3.74  97.6  2.11  36.1%  203740  1  2  3.94  100.0  0  1  1.97  100.0  1.97  50.0%  138  0.0%  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  S  SAVINGS  Cost  CSL  ($)  (%)  ($)  (%)  203877  4  5  7.12  100.0  1  2  3.27  99.3  3.85  54.1%  203879  2  3  4.47  99.6  1  2  3.05  97.8  1.42  31.8%  203906  1  2  4.56  100.0  0  2  3.37  98.6  1.19  26.1%  203907  1  2  4.57  98.1  1  2  4.57  98.1  0.00  0.0%  203911  1  2  4.51  98.6  0  2  4.51  98.6  0.00  0.0%  203914  1  2  4.60  96.6  1  3  6.20  98.2  -1.60  -34.8%  203916  3  4  13.95  100.0  1  2  7.23  99.0  6.72  48.2%  203919  3  4  14.17  100.0  1  3  8.67  98.3  5.50  38.8%  203921  1  2  3.34  98.1  1  2  3.34  98.1  0.00  0.0%  203931  5  6  10.65  99.8  3  4  7.49  97.6  3.16  29.7%  203932  10  12  19.09  100.0  3  8  9.56  97.9  9.53  49.9%  203935  4  5  17.47  100.0  2  3  10.62  98.0  6.85  39.2%  203936  1  2  5.98  95.2  2  3  8.92  98.1  -2.94  -49.2%  203937  0  1  3.06  98.6  0  1  3.06  98.6  0.00  0.0%  203938  2  3  6.23  99.0  1  3  5.43  98.0  0.80  12.8%  203939  1  2  4.13  94.8  1  4  6.06  97.8  -1.93  -46.7%  203942  2  3  8.50  99.7  1  3  6.96  98.6  1.54  18.1%  203943  2  3  8.39  99.7  1  2  5.68  97.5  2.71  32.3%  203954  1  2  8.65  100.0  0  1  4.32  100.0  4.33  50.1%  203961  7  8  25.24  100.0  2  4  11.14  98.3  14.10  55.9%  203977  0  1  12.16  94.5  0  3  24.58  98.1  -12.42  -102.1%  204001  2  3  15.95  100.0  0  3  10.47  97.6  5.48  34.4%  204004  1  2  7.29  97.7  1  2  7.29  97.7  0.00  0.0%  204510  2  3  1.06  100.0  0  2  0.53  98.6  0.53  50.0%  204511  3  4  1.52  97.9  3  4  1.52  97.9  0.00  204513  2  3  1.06  99.5  1  2  0.77  98.1  0.29  27.4%  204570  2  3  2.22  97.3  1  6  1.97  97.6  0.25  11.3%  204573  4  5  2.89  99.0  3  5  2.44  98.5  0.45  15.6%  204600  1  2  2.31  100.0  0  1  1.20  98.6  1.11  48.1%  139  0.0%  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  s  SAVINGS  Cost  CSL  ($)  .(%)  ($)  (%)  204601  1  2  2.52  96.2  1  3  3.13  98.0  -0.61  -24.2%  204603  2  3  3.54  99.6  1  3  2.68  98.3  0.86  24.3%  204604  2  3  3.36  98.6  1  4  3.02  97.6  0.34  10.1%  204649  3  4  6.75  100.0  1  2  3.64  99.6  3.11  46.1%  204663  3  4  3.21  98.8  2  5  2.43  98.2  0.78  24.3%  204665  1  2  3.05  100.0  0  1  1.53  100.0  1.52  49.8%  204666  1  2  2.45  100.0  0  1  1.22  100.0  1.23  50.2%  204667  0  1  1.22  100.0  0  1  1.22  100.0  0.00  0.0%  204668  1  2  0.94  100.0  0  1  0.52  98.6  0.42  44.7%  204808  4  5  2.77  100.0  0  2  0.88  97.8  1.89  68.2%  205350  1  2  3.08  99.6  1  2  3.08  99.6  0.00  0.0%  205375  2  3  2.41  99.1  1  3  1.93  97.8  0.48  19.9%  205376  2  3  2.44  100.0  1  3  1.81  99.8  0.63  25.8%  205377  3  4  2.26  100.0  0  4  1.19  97.8  1.07  47.3%  205378  2  3  2.27  100.0  0  4  1.56  97.8  0.71  31.3%  205379  3  4  2.63  100.0  1  3  1.61  98.6  1.02  38.8%  205380  3  4  3.59  100.0  1  3  2.10  99.6  1.49  41.5%  205381  1  2  2.52  99.8  0  3  2.21  97.6  0.31  12.3%  205382  3  4  4.92  99.8  1  5  3.69  97.9  1.23  25.0%  205383  3  4  2.44  99.7  1  5  1.60  97.5  0.84  34.4%  205384  4  5  8.02  100.0  2  3  5.09  98.6  2.93  36.5%  205385  3  4  3.36  99.4  2  4  2.64  98.4  0.72  21.4%  205389  4  5  5.98  93.4  4  8  6.45  97.6  -0.47  -7.9%  205390  2  3  2.91  88.7  3  4  3.65  97.7  -0.74  -25.4%  205392  2  3  2.45  99.1  1  3  2.01  97.9  0.44  18.0%  205393  1  2  1.90  97.2  1  3  1.87  98.5  0.03  1.6%  205394  1  ' 2  1.90  100.0  0  2  1.38  98.6  0.52  27.4%  205395  1  2  1.62  99.9  0  2  1.14  97.8  0.48  29.6%  205397  3  4  2.38  99.9  1  4  1.45  98.1  0.93  39.1%  140  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  S  Cost ($)  SAVINGS CSL (%)  ($)  (%)  205398  2  3  1.40  97.6  2  3  1.40  97.6  0.00  205635  1  2  3.90  96.7  1  3  4.19  98.2  -0.29  -7.4%  205752  0  1  3.30  97.2  0  2  4.83  98.6  -1.53  -46.4%  205905  0  1  1.66  98.6  0  1  1.66  98.6  0.00  0.0%  205922  0  1  1.08  97.2  0  2  1.44  98.6  -0.36  -33.3%  205925  1  2  2.59  99.8  0  3  2.28  97.6  0.31  12.0%  205932  0  1  1.80  95.8  0  2  2.46  97.8  -0.66  -36.7%  206018  1  2  2.14  100.0  0  1  1.07  100.0  1.07  50.0%  206019  1  2  2.02  100.0  0  1  1.01  100.0  1.01  50.0%  206101  1  2  0.87  100.0  0  1  0.48  98.6  0.39  44.8%  206118  2  3  3.34  100.0  1  2  2.45  99.5  0.89  26.6%  206119  4  6  6.91  100.0  1  3  3.56  97.8  3.35  48.5%  206121  1  2  2.43  99.9  0  2  1.75  97.8  0.68  28.0%  206350  0  1  3.33  95.8  0  2  4.80  97.8  -1.47  -44.1%  206383  0  1  3.20  100.0  0  1  3.20  100.0  0.00  0.0%  206393  0  1  3.19  77.6  1  2  6.08  97.5  -2.89  -90.6%  206405  3  5  2.01  100.0  1  4  1.34  98.7  0.67  33.3%  206406  6  8  5.57  100.0  2  6  3.12  99.1  2.45  44.0%  206407  1  2  3.07  99.9  0  3  2.83  98.1  0.24  7.8%  206408  1  2  3.30  99.6  1  2  3.30  99.6  0.00  0.0%  206409  1  2  3.22  99.7  1  2  3.22  99.7  0.00  0.0%  206410  6  8  5.73  100.0  1  3  2.28  99.2  3.45  60.2%  206411  6  8  6.01  100.0  1  4  2.59  98.0  3.42  56.9%  206414  10  12  13.86  100.0  3  6  6.34  97.7  7.52  54.3%  206415  10  12  8.94  10*0.0  1  5  2.85  97.6  6.09  68.1%  206417  10  20  5.61  100.0  3  9  3.10  97.6  2.51  44.7%  206418  3  4  3.07  99.9  1  4  1.86  97.9  1.21  39.4%  206454  4  6  3.77  99.8  2  5  2.66  97.9  1.11  29.4%  206455  4  6  4.90  100.0  1  6  3.07  97.6  1.83  37.3%  141  0.0%  CURRENT PRODUCT  s  S  Cost ($)  OPTIMAL CSL  s  s  (%)  Cost ($)  SAVINGS CSL (%)  ($)  (%)  206456  4  6  5.12  100.0  1  7  3.34  97.8  1.78  34.8%  206458  4  6  4.81  100.0  1  7  3.30  97.8  1.51  31.4%  206459  4  6  1.98  100.0  0  5  1.02  97.7  0.96  48.5%  206504  1  2  6.21  99.9  0  2  4.58  97.8  1.63  26.2%  206511  2  3  3.20  100.0  1  2  2.33  99.6  0.87  27.2%  206515  0  1  0.87  100.0  0  1  0.87  100.0  0.00  0.0%  206516  0  1  1.12  95.8  0  2  1.41  97.8  -0.29  -25.9%  206517  0  1  2.83  95.8  0  2  4.03  97.8  -1.20  -42.4%  206530  0  1  0.96  98.6  0  1  0.96  98.6  0.00  0.0%  206547  0  1  1.05  97.2  0  2  1.40  98.6  -0.35  -33.3%  206550  0  1  1.18  97.2  0  2  1.60  98.6  -0.42  -35.6%  206551  0  1  1.32  94.5  0  3  2.09  98.1  -0.77  -58.3%  206552  0  1  1.33  100.0  0  1  1.33  100.0  0.00  0.0%  206553  2  3.79  99.8  1  3  2.62  98.7  1.17  30.9%  206565  0  1  1.46  97.2  0  2  2.02  98.6  -0.56  -38.4%  206567  0  1  1.22  91.9  0  4  1.92  97.8  -0.70  -57.4%  206572  0  1  1.22  98.6  0  1  1.22  98.6  0.00  0.0%  206573  1  2  2.55  99.0  1  3  2.46  99.5  0.09  3.5%  206576  1  2  2.96  99.3  1  2  2.96  99.3  0.00  0.0%  206610  1  2  3.85  100.0  0  1  1.92  100.0  1.93  50.1%  206812  0  1  0.95  98.6  0  1  0.95  98.6  0.00  0.0%  206856  2  3  3.48  99.9  1  3  2.50  99.3  0.98  28.2%  206857  0  1  1.80  97.2  0  2  2.53  98.6  -0.73  -40.6%  206858  0  1  1.50  98.6  0  1  1.50  98.6  0.00  0.0%  206872  0  1  1.22  100.0  0  1  1.22  100.0  0.00  0.0%  206876  0  1  1.55  97.2  0  2  2.16  98.6  -0.61  -39.4%  206901  3  4  0.99  100.0  0  2  0.40  97.8  0.59  59.6%  206902  6  8  2.46  100.0  1  6  1.16  97.6  1.30  52.8%  206903  4  6  1.63  100.0  1  5  0.95  98.4  0.68  41.7%  142  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  S  Cost ($)  SAVINGS CSL (%)  ($)  (%)  206904  4  6  1.42  99.6  2  7  1.11  97.5  0.31  21.8%  206905  10  14  3.13  100.0  2  9  1.58  98.6  1.55  49.5%  206906  8  10  2.97  100.0  1  6  1.22  97.9  1.75  58.9%  206907  8  10  3.15  100.0  1  9  1.35  97.5  1.80  57.1%  206908  12  14  5.10  100.0  2  10  1.87  97.9  3.23  63.3%  206909  3  5  1.24  100.0  1  4  0.82  98.9  0.42  33.9%  206910  3  5  1.20  99.5  2  5  1.00  98.8  0.20  16.7%  206911  3  5  1.76  99.9  1  6  1.09  98.4  0.67  38.1%  206912  3  5  1.69  99.4  1  9  1.23  97.7  0.46  27.2%  206913  2  3  0.89  100.0  0  3  0.46  98.1  0.43  48.3%  206914  2  3  0.89  99.6  1  3  0.65  98.2  0.24  27.0%  206915  2  3  1.17  99.7  1  4  0.75  99.0  0.42  35.9%  206916  35  45  8.56  100.0  7  22  3.58  97.7  4.98  58.2%  206917  65  75  14.50  100.0  8  30  4.19  97.5  10.31  71.1%  206918  15  25  4.63  100.0  4  14  2.62  97.7  2.01  43.4%  206919  33  45  7.98  100.0  7  21  3.44  97.5  4.54  56.9%  206920  12  22  3.66  100.0  2  13  1.93  97.6  1.73  47.3%  206921  14  24  4.29  100.0  3  15  2.36  97.5  1.93  45.0%  206922  8  10  4.16  100.0  3  11  2.02  98.0  2.14  51.4%  206923  14  24  4.30  100.0  3  13  2.32  97.9  1.98  46.0%  206924  10  12  4.26  100.0  3  11  1.94  98.4  2.32  54.5%  206925  6  8  2.60  100.0  1  8  1.26  97.6  1.34  51.5%  206926  6  8  1.86  98.5  5  9  1.62  97.5  0.24  12.9%  206928  9  12  4.43  99.5  5  12  3.01  97.5  1.42  32.1%  206930  25  30  8.23  100.0  6  16  3.52  97.5  4.71  57.2%  206932  3  4  2.04  97.4  2  7  1.53  97.6  0.51  25.0%  206940  4  6  1.57  100.0  1  5  0.93  98.1  0.64  40.8%  206941  13  15  5.93  100.0  3  16  2.38  97.7  3.55  59.9%  206942  8  10  3.18  100.0  2  10  1.58  97.6  1.60  50.3%  143  CURRENT PRODUCT  s  S  OPTIMAL  Cost  CSL  ($)  (%)  s  S  Cost ($)  SAVINGS CSL (%)  ($)  (%)  206943  14  24  4.43  100.0  3  17  2.50  97.6  1.93  43.6%  206944  11  14  4.81  100.0  2  11  2.06  98.1  2.75  57.2%  206945  1  2  0.74  99.9  0  3  0.48  98.1  0.26  35.1%  206946  14  24  4.08  100.0  3  17  2.30  97.7  1.78  43.6%  206947  18  28  5.06  100.0  4  19  2.70  97.5  2.36  46.6%  206948  18  28  5.21  100.0  3  18  2.57  97.6  2.64  50.7%  206949  14  24  4.30  100.0  3  12  2.28  97.5  2.02  47.0%  206950  2  3  0.70  100.0  0  2  0.35  98.6  0.35  50.0%  206951  5  6  1.45  100.0  0  3  0.48  98.1  0.97  66.9%  206952  5  6  1.16  100.0  0  1  0.27  98.6  0.89  76.7%  206953  5  6  1.54  100.0  0  3  0.51  97.6  1.03  66.9%  206955  2  3  1.44  100.0  0  5  0.91  98.0  0.53  36.8%  206964  3  5  1.98  99.4  1  9  1.33  97.6  0.65  32.8%  206965  2  3  1.73  99.6  1  5  0.93  99.0  0.80  46.2%  206996  8  10  4.54  100.0  2  9  2.16  97.8  2.38  52.4%  206997  8  10  3.67  100.0  1  9  1.74  97.8  1.93  52.6%  206998  6  8  2.61  100.0  1  3  1.07  98.6  1.54  59.0%  206999  1  2  1.17  99.8  0  3  . 0.86  97.6  0.31  26.5%  207145  6  8  2.69  100.0  1  10  1.36  97.6  1.33  49.4%  207146  5  6  2.19  100.0  0  7  0.87  97.5  1.32  60.3%  207147  5  6  1.29  100.0  0  2  0.37  98.6  0.92  71.3%  207148  5  6  1.34  100.0  0  2  0.40  97.8  0.94  70.1%  207501  6  8  9.69  100.0  3  6  6.34  98.4  3.35  34.6%  207502  10  12  13.64  100.0  3  6  6.22  98.2  7.42  54.4%  207503  3  4  6.22  97.5  2  6  5.77  97.5  0.45  7.2%  207504  10  12  5.28  99.8  4  13  3.15  97.5  2.13  40.3%  207505  10  12  4.72  100.0  2  7  2.04  97.8  2.68  56.8%  207506  6  8  3.76  100.0  1  6  1.81  97.8  1.95  51.9%  207507  6  8  3.91  100.0  1  4  1.80  97.9  2.11  54.0%  144  CURRENT PRODUCT  s  S  Cost ($)  OPTIMAL CSL  s  S  (%)  Cost ($)  SAVINGS CSL (%)  ($)  (%)  207508  13  16  7.15  100.0  . 3  9  3.19  97.7  3.96  55.4%  207509  17  20  9.03  100.0  3  8  3.25  97.5  5.78  64.0%  207510  2  3  1.80  99.0  1  3  1.51  98.0  0.29  16.1%  207511  10  12  11.62  100.0  3  8  5.67  97.9  5.95  51.2%  207512  25  125  2.11  100.0  0  1  0.08  100.0  2.03  96.2%  207521  17  20  15.97  100.0  4  9  6.13  97.8  9.84  61.6%  207522  25  125  1.56  100.0  0  1  0.06  100.0  1.50  96.2%  207541  16  26  15.86  100.0  4  12  6.61  97.7  9.25  58.3%  207561  26  36  18.35  100.0  4  15  6.02  97.6  12.33  67.2%  207581  10  20  8.50  100.0  2  9  3.68  97.7  4.82  56.7%  207591  12  15  7.40  100.0  3  10  3.49  97.8  3.91  52.8%  207592  9  15  7.79  100.0  4  9  4.74  97.8  3.05  39.2%  207593  6  12  16.50  100.0  2  5  7.33  98.1  9.17  55.6%  207594  6  8  4.76  100.0  2  5  2.70  97.7  2.06  43.3%  207595  4  6  1.73  99.9  2  4  1.24  98.5  0.49  28.3%  207596  6  8  2.71  100.0  1  5  1.30  97.6  1.41  52.0%  207597  6  8  . 2.90  100.0  1  6  1.40  97.8  1.50  51.7%  207598  4  6  2.03  100.0  0  2  0.65  97.8  1.38  68.0%  145  

Cite

Citation Scheme:

        

Citations by CSL (citeproc-js)

Usage Statistics

Share

Embed

Customize your widget with the following options, then copy and paste the code below into the HTML of your page to embed this item in your website.
                        
                            <div id="ubcOpenCollectionsWidgetDisplay">
                            <script id="ubcOpenCollectionsWidget"
                            src="{[{embed.src}]}"
                            data-item="{[{embed.item}]}"
                            data-collection="{[{embed.collection}]}"
                            data-metadata="{[{embed.showMetadata}]}"
                            data-width="{[{embed.width}]}"
                            async >
                            </script>
                            </div>
                        
                    
IIIF logo Our image viewer uses the IIIF 2.0 standard. To load this item in other compatible viewers, use this url:
http://iiif.library.ubc.ca/presentation/dsp.831.1-0086746/manifest

Comment

Related Items