WO1990009638A1 - Retail shelf inventory system - Google Patents

Retail shelf inventory system Download PDF

Info

Publication number
WO1990009638A1
WO1990009638A1 PCT/US1990/000652 US9000652W WO9009638A1 WO 1990009638 A1 WO1990009638 A1 WO 1990009638A1 US 9000652 W US9000652 W US 9000652W WO 9009638 A1 WO9009638 A1 WO 9009638A1
Authority
WO
WIPO (PCT)
Prior art keywords
shelf
inventory
value
retail
management system
Prior art date
Application number
PCT/US1990/000652
Other languages
French (fr)
Inventor
Leonard Christopher Gordon Rogers
Francis Patrick Kelly
Jacquelin Winifred Pullin
Original Assignee
A.C. Nielsen Company
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by A.C. Nielsen Company filed Critical A.C. Nielsen Company
Publication of WO1990009638A1 publication Critical patent/WO1990009638A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders

Definitions

  • the present invention relates generally to inventory management systems and more particularly to data processing methodology and system for retail shelf inventory management.
  • a principal object of the present invention is to provide an improved retail shelf inventory management systern.
  • Other important objects of the present invention are to provide an improved retail shelf inventory management system capable of identifying an optimum shelf capacity on an individual product basis; to provide such a system capable of identifying target stock levels and order-to-levels separately utilizing the identified optimum shelf capacity and/or a user supplied shelf capacity value; and to provide such a system capable of identifying estimated sales and customer service levels achieved.
  • a retail shelf inventory management system including memory for storing inventory data.
  • the inventory data includes a study period and a retail opening time and a retail closing time for each day within the study period and historical inventory data for the study period for each of a number of different inventory items or products.
  • the historical inventory data includes a movement value, a customer service level, a proportion of business done for each day within the study period, and a variability of demand.
  • Optimizing means are operatively connected to said memory means for optimizing a shelf capacity for any or each of said plurality of inventory items. Both user selected shelf capacity values and the optimized shelf capacity value can be separately utilized for calculating target stock levels, order-tolevels, estimated sales, estimated lost sales, average inventory values and customer service levels achieved.
  • FIG. 1 is a block diagram representation of a retail shelf inventory system according to the present invention
  • FIGS. 2-7 are flow charts illustrating the logical steps performed by the retail shelf inventory system of FIG. 1.
  • FIG. 1 there is illustrated a block diagram representation of a retail shelf inventory system generally designated by the reference character 10.
  • Appendix I sets forth a detailed description of a stochastic inventory model according tq the present invention.
  • Appendix I provides a problem definition and provides the results by the stochastic inventory rtodel of the invention and includes both a mathematical description and a corresponding exemplary program specification written in Pascal for implementing the mathematical description.
  • the retail shelf inventory system 10 includes a central processing unit 12 and an associated memory generally designated by the reference character 14.
  • the memory 14 includes a. program memory space 16 for storing the retail shelf inventory program of the invention and a plurality of data memory spaces 18 for storing multiple data files (1)-(Q) including both user supplied data and computed results data of data sets and arrays.
  • a keyboard 20 is coupled to the central processing unit 12 for entering user selections and data.
  • a display 22 and a printer 24 are also coupled to iphe central processing unit 12 for reporting calculated results to the user.
  • the retail shelf inventory system 10 can be implemented by a personal computer system, for example, such as, an IBM PS/2 Model 80 with an associated disk drive 70M bytes memory, or various other commercially available microcomputer based systems.
  • the retail shelf inventory system 10 provides an optimum shelf capacity on an individual product basis. Optimum stocking times when a shell should be replenished also can be provided by the retail shelf inventory system 10.
  • the inventory system 10 generated results can include order-to-quantities for reordering, estimated lost sales and average inventory stock values for both the store and shelf stock as seen by a customer.
  • the daily opening and closing store times and historical values of the proportions of business done by day within a study period are supplied by the user and utilized for generating the user selected results to be reported for a particular product. The use of actual opening and closing store times together with the proportional business done values simplifies mathematical calculations and can provide increased accuracy for generated results.
  • FIG. 2 there is shown a flow chart generally illustrating the overall program logic sequence in accordance with the principles of the invention for the shelf inventory system 10.
  • the program starts with an INITIALIZATION routine performed indicated at a block 200.
  • the INITIALIZATION routine is illustrated and
  • an optional STOCKING TIME routine indicated at a block 202 indicated at a block 204 shown in dotted line can be performed to provide optimum stocking times when a shelf should be replenished. At least an initial stocking time is supplied by the user, then subsequent optimal stocking times are calculated to space the subsequent stockings evenly in shop time over the study period. Subsequent optimal stock times are identified by calculating an inverse function of clock as defined in Appendix I under the heading "Solution: Mathematical Description,” subheading "3. Optimal stocking times.”
  • a TARGET STOCK routine indicated at a block 206 is performed for calculating target stock levels and order-to-levels.
  • the TARGET STOCK routine is illustrated and described with respect to FIG. 5 and in Appendix I under the heading "Solution: Mathematical Description,” subheading "5. Calculating target stock levels, and order- to levels” and under the heading "Solution: Program
  • LOST SALES routine indicated at -a block 208 is performed for calculating the expected lost sales and the customer service level achieved for the study period.
  • the LOST SALES routine is illustrated and
  • an AVERAGE INVENTORY routine indicated at a block 210 is performed for calculating the expected average shelf inventory seen by the customer, the expected average store inventory at the close of business on a particular day within the study period and the expected total store amount.
  • the AVERAGE INVENTORY routine is illustrated and described with respect to FIG. 7 and in Appendix I under the heading "Solution: Mathematical Description,” subheading "7. Average inventory calculations” and under the heading “Solution: Program Specifications,” subheading "6. Average inventory calculations.”
  • the INITILIZATION routine begins with the definition of initial and default values for constants, variables, and functions utilizing user supplied data structure definitions.
  • the user supplied data is set forth in Appendix I under the heading "A. factors influencing the model.”
  • the user supplied data is included within the list of variables used in the program in Appendix I under the heading "Solution: Program Specifications, subheading "1. Variables" as defined under the heading "Solution :
  • Fig. 4 there is shown a flow chart illustrating the logical steps of the SHELF CAPACITY routine performed for calculating an optimal shelf capacity.
  • Appendix I under the heading "Solution: Mathematical Description", subheading "4. Calculating optimal shelf capacity” and under the heading “Solution: Program Specifications, subheading "3. Calculating shelf capacity” describes the SHELF CAPACITY routine in detail. The sequential steps begin by identifying one of Methods 1 indicated at a block 400, Method 2 indicated at a block 402 or Method 3
  • a block 404 to be utilized for calculating the optimal shelf capacity.
  • a particular Method 1, 2, or 3 is performed responsive to a user entered method selection for the optimum shelf capacity calculation.
  • Next for either of the Methods 1, 2, and 3, historical demand inventory data for the particular product, the proportion of business done, the modified mean demand during each interstocking interval and the desired customer service level is collected indicated respectively at block 406, 408 or 41.0.
  • Method 1 When Method 1 is selected a root finding routine is performed to identify the optimum shelf capacity C.
  • This root finding routine evaluates repeatedly the expected overall lost sales indicated at a block 412 for the entire study period utilizing user supplied data, the calculated values of proportions of business done and modified mean demand for each interstocking period, the demand and the customer service level to be achieved as set forth in Appendix I under the subheadings "Method 1.” If the root finding fails indicated at a block 414, then an error flag is set and no value is stored. Otherwise the result from the root finding calculation is stored indicated at a block 416 as the optimum shelf capacity.
  • Method 2 When Method 2 is utilized for finding the optimum shelf capacity C, then an index k is found for which the proportion of business done in the j th interstocking period is greatest. Then the optimum shelf capacity is identified to achieve the desired customer service level during the identified busiest interstocking period indicated at a block 418 rather than the entire study period utilized in Method 1.
  • the Method 2 routine is set forth in Appendix I under the subheadings "Method 2.”
  • an error indicated at a block 420 does not result from the calculation of the optimum shelf capacity of Method 2
  • the computed optimum shelf value is stored indicated at a block 422.
  • Method 3 identifies an optimum value for shelf capacity utilizing a block of the busiest or worst r consecutive days identified in the entire study period
  • the user has supplied one or more values for the shelf capacity indicated at a block 430, for example, such as, a current shelf capacity and a selected shelf capacity then the user defined C value or values are stored indicated at a block 432 for subsequent computations.
  • FIG. 5 there is shown a flow chart illustrating the TARGET STOCK LEVEL routine.
  • the sequential steps begin with identifying first a stored shelf value C indicated at a block 500.
  • the identified stored shelf value C can be either the calculated optimum shelf value or one supplied by the user.
  • the expected sales in the j th interstocking period are calculated indicated at a block 502 using the formula set forth in Appendix I under the heading "Solution: A Mathematical Description,", subheading "Method 3.”
  • an effective delivery time is calculated indicated at a block 504 as set forlth in
  • an order-to-level is calculated indicated at blocks 508, 510 utilising the shelf value C and the stored internal target stock level by calculating the expected sales between the order time and the delivery time using the formulas set forth under para- graphs (5a), (5b).
  • the order-to-level is identified to ensure that the stored internal target stock level value W k is satisfied at the delivery time.
  • FIG. 6 there is shown a flow chart illustrating the logical steps performed for the LOST SALES routine.
  • the LOST SALES routine is described in Appendix I under the heading "Solution: Mathematical Description,” subheading "6. Lost sales” and under the heading “Solution: Program Specifications,” subheading "5,. Lost sales.”
  • the sequential steps begin with a calculation indicated at a block 600 of the effective stock level that is recursively calculated starting from a selected index k for which internal calculated target stock level is maximal utilizing the formulas set forth in paragraphs (6), (6a), and (6b).
  • the calculated effective stock levels are then stored for subsequent computations.
  • Average inventory calculations describes the AVERAGE INVENTORY routine in detail.
  • the sequential steps begin with calculations indicated at a block 700 of the expected amount of backroom stock b and shelf stock a just after the j th stocking time, utilizing a computed expected sales value utilizing the formulas of paragraphs 7(a) and 7(b).
  • the functions a(t) and b(t) are interpolated indicated at a block 702 between the calculated a, b values to identify average stock amount on the shelf and in the backroom in accordance with the formulas of paragraphs 7(c) and 7(d).
  • the study period variable from 1 day to a year.
  • the target stock levels the total amount of stock in the store after each delivery.
  • the purpose of clock is to convert the real time t into the shop time clock(t). As far as the shop is concerned, it is shop time which matters; business proceeds at a constant rate in shop time.
  • T N L + T 0 .
  • This function can be expressed explicitly in terms of the ⁇ j , , S j , t j and L very much as clock can. Less satisfactorily, it can be evaluated by a general root-finding routine from clock.
  • the user can, of course, ignore the recommended T j and supply his own.
  • the expected lost sales in the j th interstocking period is given by the formula
  • Method 1 This method should be used if the aim is to ensure that on average 100 ⁇ % of the total demand throughout the study period will be met. Assuming that there is always enough available at the start of an interstocking period to fill the'shelf, The expected lost sales in the study period is
  • the program has a value of C to work with, either computed by one of the three methods, or else input by the user. Now one can compute, for example, the expected sales in the j th interstocking period:
  • the user inputs the number M of deliveries in the study period, the times D' 0 . ... ,D' M-1 at which they are made, and the times O 0 , ...,O M-1 at which the corresponding orders arc placed.
  • Some retailers may require to be protected against delays in delivery of up to ⁇ , in which case we replace D) by D' j + ⁇ , and since we cannot make use of delivered goods until the next stocking after delivery, we immediately replace D' j by the effective delivery time
  • Wc have chosen a shelf capacity C, and target stock levels W 0 , ...,W M- 1 .
  • Wc could now just sum the ⁇ k (C, W k ) to yield expected lost sales, but this would be erroneous for the following reason.
  • W 1 , ...,W M-1 were all very small, but W 0 was enormous. Then there would be lots of unsold stock at time D 1 , so effectively there would be more in the shop at time D 1 than W 1 . What we need to do is replace the target stock levels W k by the effective target stock levels , and then proceed.
  • the first step here is to calculate the expected amount on the shelf and in the backroom just before and just after the j th stocking time, T j .
  • ⁇ j +1 (( ⁇ j - S j )+ + b j ) ⁇ C except when T j is a delivery time D k , in whicvh case b j + ⁇ j is simply the effective target stock level W k , and oy is just
  • the second stage is to interpolate between these values to obtain functions a ( ⁇ ), b ( ⁇ ) for the average amount on the shelf and in the backroom.
  • the backroom stock level is easy:
  • vec_int array [0..MAX] of integer
  • stock_true_time[0],..., stock_true_time [nstock-1] are the successive times at which stockings are made. All subsequent entries in the array are initialised to 0. Similarly for del_tn ⁇ e_time, order_true_time.
  • the program contains a facility for calculating the array stock_true_ time from the input value stock_tme_time[0] alone; so in some uses, it would be satisfactory to input only this one value.
  • stock_true_time [nstock] stock_true_time[01;
  • deLshop_time[ j] clock(del_true_time[j], opentimes, closetimes,
  • order_shop_time[j] clock(order_tme_time[j], opentimes, closetimes.
  • ⁇ It may be that the user has input only stock_true_time[0], and is leaving it to the program to calculate the rest of the array. This is done as follows:
  • stock_shop_time[0] clock(siock_true_time[0], openiimes, closetimes,
  • stock_sbop_time[j] plus(stock_shop_time[j-1],h);
  • Stock_tn ⁇ e_time[j] : clockinv(stock_shop_timc[j], opentimes,
  • sales[j] demand*p[j] - loss(C, sigma, p[j], mod_demands[j]);
  • del_true_time(j] : plus(del_true_time[j], delay_protect -epsilon);
  • del_shop_time[ j] clock(deLtrue_time[j], opentimes, closetimes,
  • del_shop_time[k] plus(stock_shop_time[1], -epsilon);
  • del_shop_time[ndel] deLshop_time[0];
  • order_shop_time[k] plus(clock(order_true _time[k], opentimes, closetimes,
  • target_stock_levcls[j] max(raw_tsl[j],C);
  • lead_time_sales[k] : x;
  • ⁇ It may be that the user has input target stock levels, rather than relying on the values calculated by the program. Either way, there is an array target.stockjevels containing this data. ⁇
  • order_to[k] lead _time_sales[k] + target_stock_levels[k];
  • x min(raw__tsl [k], effcc ⁇ ivc_tsl[k]) + x;
  • lost_sales : demand - x
  • backroom[ j] max(effective_tsl[k]-C, 0.0);
  • backroomfl] max(backroom[k] - x, 0.0);
  • shelf[1] min(backroom[k] + y, C); end;
  • g[j] a(clock(j/nday)) + b(clock(j/nday));
  • Subprogram Specifications function clock(t: real; a: daily; b: daily; pr. daily; n: integer): real;
  • this function calculates the propo ⁇ ion of business done by time t. It also extends periodically to the whole line.
  • y max(0.0, (x - a[j])/(b[j] - a[j]));
  • clock : clock + m
  • clockinv m + b[j] - (b[j] - a[j])*z/pr[j];
  • v : v - 1.821256*y*y*y*y;
  • function contain(x: real; a: real; b: real): boolean;

Landscapes

  • Business, Economics & Management (AREA)
  • Economics (AREA)
  • Engineering & Computer Science (AREA)
  • Marketing (AREA)
  • Quality & Reliability (AREA)
  • Finance (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Accounting & Taxation (AREA)
  • Operations Research (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

A retail shelf inventory management system includes memory for storing inventory data. The inventory data includes a study period and a retail opening time and a retail closing time for each day within the study period and historical inventory data for the study period for each of a number of different inventory items or products. The historical inventory data includes a movement value, a customer service level, a proportion of business done for each day within the study period, and a variability of demand. An optimizing program and processing unit are operatively connected to the memory devices for optimizing a shelf capacity (204) for any or each of said plurality of inventory items. Both user selected shelf capacity values and the optimized shelf capacity value can be separately utilized for calculating target stock levels (205), order-to-levels, estimated sales estimated lost sales (208), average inventory values (210) and customer service levels achieved.

Description

RETAIL SHELF INVENTORY SYSTEM
BACKGROUND OF THE INVENTION
Field of the Invention
The present invention relates generally to inventory management systems and more particularly to data processing methodology and system for retail shelf inventory management.
Description of the Prior Art
Computerized inventory management systems are known. A publication entitled "INFOREM Principles of Inventory Management Application Description," second edition May, 1978 copyright IBM Corporation, provides a description of general principles of inventory management and how these principles are implemented in the INFOREM application program for inventory management developed by IBM Corporation. However, such computerized inventory systems have not adequately addressed the problem of providing a retail shelf inventory management system having data processing methodology capable of identifying an optimum shelf capacity on an individual product basis and utilizing the identified optimum shelf capacity for generating reordering time schedules and quantities for individual products.
Summary of the Invention
A principal object of the present invention is to provide an improved retail shelf inventory management systern. Other important objects of the present invention are to provide an improved retail shelf inventory management system capable of identifying an optimum shelf capacity on an individual product basis; to provide such a system capable of identifying target stock levels and order-to-levels separately utilizing the identified optimum shelf capacity and/or a user supplied shelf capacity value; and to provide such a system capable of identifying estimated sales and customer service levels achieved.
In brief, the objects and advantages of the present invention are achieved by a retail shelf inventory management system including memory for storing inventory data. The inventory data includes a study period and a retail opening time and a retail closing time for each day within the study period and historical inventory data for the study period for each of a number of different inventory items or products. The historical inventory data includes a movement value, a customer service level, a proportion of business done for each day within the study period, and a variability of demand. Optimizing means are operatively connected to said memory means for optimizing a shelf capacity for any or each of said plurality of inventory items. Both user selected shelf capacity values and the optimized shelf capacity value can be separately utilized for calculating target stock levels, order-tolevels, estimated sales, estimated lost sales, average inventory values and customer service levels achieved.
Brief Description of the Drawings
The present invention together with the above and other objects and advantages may best be understood from the following detailed description of the embodiment of the invention illustrated in the drawings, wherein:
FIG. 1 is a block diagram representation of a retail shelf inventory system according to the present invention; and FIGS. 2-7 are flow charts illustrating the logical steps performed by the retail shelf inventory system of FIG. 1.
Detailed Description of the Preferred Embodiment
Referring now to the drawings,, in FIG. 1 there is illustrated a block diagram representation of a retail shelf inventory system generally designated by the reference character 10.
Appendix I below sets forth a detailed description of a stochastic inventory model according tq the present invention. Appendix I provides a problem definition and provides the results by the stochastic inventory rtodel of the invention and includes both a mathematical description and a corresponding exemplary program specification written in Pascal for implementing the mathematical description.
As illustrated in FIG. 1, the retail shelf inventory system 10 includes a central processing unit 12 and an associated memory generally designated by the reference character 14. As shown, the memory 14 includes a. program memory space 16 for storing the retail shelf inventory program of the invention and a plurality of data memory spaces 18 for storing multiple data files (1)-(Q) including both user supplied data and computed results data of data sets and arrays. A keyboard 20 is coupled to the central processing unit 12 for entering user selections and data. A display 22 and a printer 24 are also coupled to iphe central processing unit 12 for reporting calculated results to the user. The retail shelf inventory system 10 can be implemented by a personal computer system, for example, such as, an IBM PS/2 Model 80 with an associated disk drive 70M bytes memory, or various other commercially available microcomputer based systems.
As set forth below in Appendix I under,theading "B. Results from the model", the retail shelf inventory system 10 provides an optimum shelf capacity on an individual product basis. Optimum stocking times when a shell should be replenished also can be provided by the retail shelf inventory system 10. For both the calculated optimum shelf capacity and each of the user entered shelf capacity values, the inventory system 10 generated results can include order-to-quantities for reordering, estimated lost sales and average inventory stock values for both the store and shelf stock as seen by a customer. In accordance with a feature of the invention, the daily opening and closing store times and historical values of the proportions of business done by day within a study period are supplied by the user and utilized for generating the user selected results to be reported for a particular product. The use of actual opening and closing store times together with the proportional business done values simplifies mathematical calculations and can provide increased accuracy for generated results.
Referring now to FIG. 2, there is shown a flow chart generally illustrating the overall program logic sequence in accordance with the principles of the invention for the shelf inventory system 10. The program starts with an INITIALIZATION routine performed indicated at a block 200. The INITIALIZATION routine is illustrated and
described with respect to FIG. 3 and in Appendix I under the heading "Solution: Mathematical Description",
subheadings "1. Notation" and "2. Preliminaries"; under the heading "Solution: Program Specifications," subheadings "1. Variables" and "2. Initialisation."
Then an optional STOCKING TIME routine indicated at a block 202 indicated at a block 204 shown in dotted line can be performed to provide optimum stocking times when a shelf should be replenished. At least an initial stocking time is supplied by the user, then subsequent optimal stocking times are calculated to space the subsequent stockings evenly in shop time over the study period. Subsequent optimal stock times are identified by calculating an inverse function of clock as defined in Appendix I under the heading "Solution: Mathematical Description," subheading "3. Optimal stocking times."
Next an optimum SHELF CAPACITY routine indicated at a block 204 is performed for providing an optimum shelf capacity value. The optimum SHELF CAPACITY routine is illustrated and described with respect to FIG. 4 and in Appendix I under the heading "Solution: Mathematical
Description," subheading "4. Calculating optimal shelf capacity" and under the heading "Solution: Program
Specifications," subheading "3. Calculating shelf
capacity."
Next a TARGET STOCK routine indicated at a block 206 is performed for calculating target stock levels and order-to-levels. The TARGET STOCK routine is illustrated and described with respect to FIG. 5 and in Appendix I under the heading "Solution: Mathematical Description," subheading "5. Calculating target stock levels, and order- to levels" and under the heading "Solution: Program
Specifications," subheading "4. Calculating target stock levels, and order-to levels."
Next a LOST SALES routine indicated at -a block 208 is performed for calculating the expected lost sales and the customer service level achieved for the study period. The LOST SALES routine is illustrated and
described with respect to FIG. 6 and in Appendix I under the heading "Solution: Mathematical Description,"
subheading "6. Lost sales" and under the heading "Solution: Program Specifications," subheading "5. Lost sales."
Next an AVERAGE INVENTORY routine indicated at a block 210 is performed for calculating the expected average shelf inventory seen by the customer, the expected average store inventory at the close of business on a particular day within the study period and the expected total store amount. The AVERAGE INVENTORY routine is illustrated and described with respect to FIG. 7 and in Appendix I under the heading "Solution: Mathematical Description," subheading "7. Average inventory calculations" and under the heading "Solution: Program Specifications," subheading "6. Average inventory calculations."
Referring to FIG. 3, there is shown a flow chart illustrating the sequential steps performed during the INITILIZATION routine. The INITILIZATION routine begins with the definition of initial and default values for constants, variables, and functions utilizing user supplied data structure definitions. The user supplied data is set forth in Appendix I under the heading "A. factors influencing the model." The user supplied data is included within the list of variables used in the program in Appendix I under the heading "Solution: Program Specifications, subheading "1. Variables" as defined under the heading "Solution :
Mathematical Description", subheadings "1. Notation" and "2. Preliminaries." The user supplied data is read and copied into the defined data structures, then precalculations are performed on the user supplied data on an individual product basis indicated at a block 300.
As illustrated in Appendix I under the heading "Solution: Program Specifications, subheading "2. Initialisation," the user supplied time schedule values are converted from real time into shop time and the proportion of total business done and the modified mean demand in each interstocking period is calculated indicated at a block 302 and described with reference to FIG. 3 as follows.
First an order shop time array and a delivery shop time array is calculated utilizing the user supplied store opening and closing time for each day J=0, ... , L-1 in the study period and user supplied order and delivery real time schedule indicated at a block 304. Next when stocking times are user supplied, the user supplied
stocking times are converted to shop time to generate a stocking shop time array indicated at a block 306. Otherwise when only an initial stocking time is user supplied, then the stocking shop time array is calculated indicated at the block 306. Next the proportion of business done and the modified mean demand during each stocking interval is calculated indicated at a block 308. Error checking routines indicated at blocks 310, 312 are sequentially performed on the calculated results for each of the above described steps. When errors are not detected at the block 310, the results are stored indicated at a block 314 in predefined corresponding data structure for results of supply, stock and demand data sets.
Referring now to Fig. 4, there is shown a flow chart illustrating the logical steps of the SHELF CAPACITY routine performed for calculating an optimal shelf capacity. Appendix I under the heading "Solution: Mathematical Description", subheading "4. Calculating optimal shelf capacity" and under the heading "Solution: Program Specifications, subheading "3. Calculating shelf capacity" describes the SHELF CAPACITY routine in detail. The sequential steps begin by identifying one of Methods 1 indicated at a block 400, Method 2 indicated at a block 402 or Method 3
indicated at a block 404 to be utilized for calculating the optimal shelf capacity. A particular Method 1, 2, or 3 is performed responsive to a user entered method selection for the optimum shelf capacity calculation. Next for either of the Methods 1, 2, and 3, historical demand inventory data for the particular product, the proportion of business done, the modified mean demand during each interstocking interval and the desired customer service level is collected indicated respectively at block 406, 408 or 41.0.
When Method 1 is selected a root finding routine is performed to identify the optimum shelf capacity C.
This root finding routine evaluates repeatedly the expected overall lost sales indicated at a block 412 for the entire study period utilizing user supplied data, the calculated values of proportions of business done and modified mean demand for each interstocking period, the demand and the customer service level to be achieved as set forth in Appendix I under the subheadings "Method 1." If the root finding fails indicated at a block 414, then an error flag is set and no value is stored. Otherwise the result from the root finding calculation is stored indicated at a block 416 as the optimum shelf capacity.
When Method 2 is utilized for finding the optimum shelf capacity C, then an index k is found for which the proportion of business done in the jth interstocking period is greatest. Then the optimum shelf capacity is identified to achieve the desired customer service level during the identified busiest interstocking period indicated at a block 418 rather than the entire study period utilized in Method 1. The Method 2 routine is set forth in Appendix I under the subheadings "Method 2." When an error indicated at a block 420 does not result from the calculation of the optimum shelf capacity of Method 2, then the computed optimum shelf value is stored indicated at a block 422.
Method 3 identifies an optimum value for shelf capacity utilizing a block of the busiest or worst r consecutive days identified in the entire study period
indicated at a block 424 as set forth in Appendix I under the subheadings "Method 3." The worst r consecutive days can occur within a single or multiple interstocking
periods. When an error indicated at a block 426 does not result from the calculation of the optimum shelf capacity of Method 3, then the computed optimum shelf value is stored indicated at a block 428.
When the user has supplied one or more values for the shelf capacity indicated at a block 430, for example, such as, a current shelf capacity and a selected shelf capacity then the user defined C value or values are stored indicated at a block 432 for subsequent computations.
Referring to FIG. 5, there is shown a flow chart illustrating the TARGET STOCK LEVEL routine. The sequential steps begin with identifying first a stored shelf value C indicated at a block 500. The identified stored shelf value C can be either the calculated optimum shelf value or one supplied by the user. Next the expected sales in the jth interstocking period are calculated indicated at a block 502 using the formula set forth in Appendix I under the heading "Solution: A Mathematical Description,", subheading "Method 3." Then an effective delivery time is calculated indicated at a block 504 as set forlth in
paragraph (5i) in Appendix I under the heading "Solution: Mathematical Description", subheading "5. Calculating target stock levels, and order-to levels." Next an
internal target stock level value Wk is calculated
indicated at a block 506 using the formula set fprth under paragraph (5). The calculated internal stock level is then stored for subsequent computations. Next an order-to-level is calculated indicated at blocks 508, 510 utilising the shelf value C and the stored internal target stock level by calculating the expected sales between the order time and the delivery time using the formulas set forth under para- graphs (5a), (5b). The order-to-level is identified to ensure that the stored internal target stock level value Wk is satisfied at the delivery time.
Referring now to FIG. 6, there is shown a flow chart illustrating the logical steps performed for the LOST SALES routine. The LOST SALES routine is described in Appendix I under the heading "Solution: Mathematical Description," subheading "6. Lost sales" and under the heading "Solution: Program Specifications," subheading "5,. Lost sales." The sequential steps begin with a calculation indicated at a block 600 of the effective stock level that is recursively calculated starting from a selected index k for which internal calculated target stock level is maximal utilizing the formulas set forth in paragraphs (6), (6a), and (6b). The calculated effective stock levels are then stored for subsequent computations. Then the expected lost sales for the whole study period is calculated indicated at a block 602 in accordance with the formula set forth in paragraph 6(c). Then the customer service level CSL achieved is calculated indicated at a block 604 using the resultant expected lost sales value utilizing the formula set forth in paragraph 6(d). Referring now to FIG. 7, there is shown a flow chart illustrating the sequential steps of the AVERAGE INVENTORY routine. Appendix I under the heading "Solution: Mathematical Description", subheading "7. Average inventory calculations" and under the heading "Solution: Program
Specifications, subheading "6. Average inventory calculations" describes the AVERAGE INVENTORY routine in detail. The sequential steps begin with calculations indicated at a block 700 of the expected amount of backroom stock b and shelf stock a just after the jth stocking time, utilizing a computed expected sales value utilizing the formulas of paragraphs 7(a) and 7(b). Next the functions a(t) and b(t) are interpolated indicated at a block 702 between the calculated a, b values to identify average stock amount on the shelf and in the backroom in accordance with the formulas of paragraphs 7(c) and 7(d). Next numerical integration of the a(t) time value is calculated indicated at a block 704 as set forth under paragraph (i) "Average Amounts Seen by the Customer." Next the average store inventory is calculated indicated at a block 706 utilizing store time as set forth under paragraph (ii). Then a numerical integration routine can be performed indicated at a block 708 to provide a real time average store inventory as set forth under paragraph (iii).
Then the sequential functions or selected functions of the TARGET STOCK LEVEL, LOST SALES and AVERAGE INVENTORY routines are repeated for the next stored shelf capacity value C.
APPENDIX I
STOCHASTIC INVENTORY MODEL
Problem Definition
To derive, on an individual product basis, a stochastic inventory model using the factors, given below, influencing sales and hence the stock level and re-order strategics.
A. Factors influencing the model
1. The study period; variable from 1 day to a year.
2. The daily opening times; for each day in the study period, the opening and closing times of the store are stated.
3. The demand cycle; this is derived from the following historical data:
(i) movement figure over the period
(ii) customer service level over the period
(iii) distribution of business by day (i.e. sales percentages by day)
(iv) variability of demand over the period.
4. The number of times the shelf is replenished during the study period.
5. The stocking schedule; each time and day within the study period when the shelf is replenished is stated.
6. The number of deliveries to the store during the study period.
7. The order and delivery schedule; each time and day when an order is raised, i.e. the time at which the amount to be re-ordered is calculated, together with its associated time and day of delivery within the study period.
8. The target stock levels; the total amount of stock in the store after each delivery.
9. The actual shelf capacity; the amount of the product currently displayed on the shelf.
10. The desired customer service level.
[User definition of factors
Obligatory
A1 to A4
First stocking time in A5
A6 to A7, A10.
Optional
Rest of stocking schedule in A5
A8 and A9.
(If A5 and A8 are not fully defined by the user, then the optimal values are produced and used by the model.) ] B. Results from the model
1. Optimal stocking times, the times and days during the study period when the shelf should be replenished.
[Only used if A5 not fully defined by the user.]
2. Optimal shelf capacity; the amount of the product which should be displayed on the shelf to meet the factors Al to A5.
3. For each of the shelf capacities (i.e. both Actual and Optimal) the following results may be derived:
(i) Re-order schedule; for each order point a stock level which the store must reorder to (hence any stock in the store and any stock currently on order must be taken into account when calculating the amount to re-order).
(ii) Lost sales; the sales not achieved by accepting this shelf size and accounting for the backroom.
(iii) Average inventory; the average amount of stock in the store.
(iv) Average amount on shelf; the average amount of stock on the shelf as seen by the customer.
4. Actual customer service level; the customer service level actually achieved when using the actual shelf capacity (A9) rather than the optimal shelf capacity (B2).
Solution: Mathematical Description
1. Notation
L length of study period (in days)
Sj time of opening on day j, j = O, ..., L-1
Ij time of closing on day j, j = O, .... L-1
μ' historical movement figure for the study period
100β% desired customer service level
100α% historical customer service level
θj proportion of business done on day j
100v% variability of demand
N number of stockings of shelf
Tk time of kth stocking of shelf, k = 0, .... N-1
M number of deliveries
Dj' time of jth delivery, j = O, ..., M-1
Oj time of jth order,; = 0 M-1
Wj jth target stock level, j = 0, .... M-1
C* actual shelf capacity
2. Preliminaries
(i) We input the historical movement figure μ' and the historical customer service level α, but what really matters is the demand, μ, which is the number of times someone wants to buy one of the product during the study period. Of course, sometimes a customer who wants the product will find the shelf empty and be unable to get the item, but this will only happen in a proportion (1 - α) of cases. Otherwise, the customer will take the item from the shelf, and the movement figure goes up by one. Hence
μ' = movement - demand x historical customer service Ifcvel
= μα ,
so demand μ = μ'/α.
(ii) If the variability of demand is v, the standard deviation will be μv, and so the variance of demand, σ2, will be (μv)2.
(iii) To calculate the proportions of business done in each interstocking period, we make use of the function clock: [0.L]→ [0,1], which is defined as
clock(r) a proportion of total business done by time t
Figure imgf000016_0001
We subsequently extend clock periodically to the whole of the real line, so that
clock(nL + t) = n + clock(t)
for integers n, and t in [0,L]. The purpose of clock is to convert the real time t into the shop time clock(t). As far as the shop is concerned, it is shop time which matters; business proceeds at a constant rate in shop time.
(iv) We also assume that the study period repeats itself, so that if (T0,T1] is the zeroth interstocking period, the (N-1)th is (TN-1,L + T 0], for example. The proponion of business done in the jth interstocking period is simply
pj = clock(Tj +1) - clock(Tj) ,
where TN = L + T0.
(v) We model the demand in the jth interstocking period by the random variable Yj, which is the positive pan of a normal random variable Xj, whose variance is Pjσ 2 and whose mean μj is chosen so that the expected value of Yj, EYj, is equal to the mean demand in the period, μpj. More explicitly, if we define the function A by
Figure imgf000016_0002
where Φ(z )≡ P (Z > z ) for 2 a N (0, 1 ) random variable, then
(2) A (z) = E(Z -z)+ ;
thus we choose μj to solve
Figure imgf000016_0003
[Note: The choice of a normal distribution for Z is essentially arbitrary, and any zero- mean unit-variance distribution could serve instead. The expression (2) for A stays the same, but the explicit formula (1) will change.]
3. Optimal stocking times
Suppose we have been told the time T0 of the zeroth stocking, which occurs at the shop time to≡clock(T 0). Then the best way to choose subsequent stocking times is to space them out evenly through the study period - but 'evenly' in terms of shop time. Thus we define
Figure imgf000017_0001
(with addition mod 1) and set the recommended stocking times T1 , ...,TN-1 to be
Tj = clockinv(τj) , where clockinv is the inverse function to clock; clockinv(t) = inf{u: clock (u) > t}. This function can be expressed explicitly in terms of the θj, , Sj, tj and L very much as clock can. Less satisfactorily, it can be evaluated by a general root-finding routine from clock.
The user can, of course, ignore the recommended Tj and supply his own.
4, Calculating optimal shelf capacity
If the shelf capacity is C, then assuming that the shelf is full at the beginning of the jth interstocking period, the expected lost sales in the jth interstocking period is given by the formula
Figure imgf000017_0002
which is E{Yj - C)+.
There are now three possible ways of choosing the optimal shelf capacity, depending on the user's performance criteria. We consider the first to be the most natural. As usual, the user is free to ignore the recommended shelf capacity, and input his own value C* instead.
Method 1. This method should be used if the aim is to ensure that on average 100β% of the total demand throughout the study period will be met. Assuming that there is always enough available at the start of an interstocking period to fill the'shelf, The expected lost sales in the study period is
Figure imgf000017_0003
when the shelf capacity is C, and we simply pick C so that l(C) = (1 - β)μ . This will need a root-finding routine. n Method 2. This method will ensure that during each interstocking period, at least 100β% of the demand will be met. Find the index k for which pj is greatest, and then choose C to satisfy λk(C) = (1 - β)μpk .
This choice of C will always be higher than in Method 1.
Method 3. This method should be used if the aim is to have the shelf large enough to carry through the worst r consecutive days in the study period. To do this, let p be the maximum of θj + . . . + θj +r- 1 as j varies, calculate v as in (3):
Figure imgf000018_0001
and now choose C as in Method 2:
Figure imgf000018_0002
At this stage, the program has a value of C to work with, either computed by one of the three methods, or else input by the user. Now one can compute, for example, the expected sales in the jth interstocking period:
Figure imgf000018_0003
5. Calculating target stock levels, and order-to levels
The user inputs the number M of deliveries in the study period, the times D'0. ... ,D'M-1 at which they are made, and the times O0, ...,OM-1 at which the corresponding orders arc placed. Some retailers may require to be protected against delays in delivery of up to δ, in which case we replace D) by D'j + δ, and since we cannot make use of delivered goods until the next stocking after delivery, we immediately replace D'j by the effective delivery time
(5i) Dj = inf (Tk : Tk > D'j ) .
Now if Dk = Tr, Dk+1 = Tr +n +1 (n≥ 0), our target stock level Wk at the delivery time Dk will be set so as to meet on average the sales to be made in (Tr,Tr +n+1]:
Figure imgf000019_0001
We take the maximum with C so as to ensure that we start with a full shelf at Dk. The objective is to ensure that just after the kth delivery has been made, the totaf amount in the shop (shelf + backroom) is Wk (or more). Thus we choose the order-to level Vk to achieve this, as follows.
Firstly we calculate (an upper bound for) the expected sales in (Ok,Dk], by summing the expected sales Sj for each interstocking interval j contained entirely in (Ok,Dk], and then adding a correction for the sales between Ok and the next stocking time. Explicitly, if Ok occurs in interstocking period m, shop time t after the beginning of the interstocking period, then the expected sales between Ok and the end of interstocking period m is
Figure imgf000019_0002
this is the correction we add in, to arrive at the expected sales Uk during (Ok,Dk], We now define the kth order-to level by ■
Figure imgf000019_0003
The interpretation is this. At time Ok, we have amount x in the shop (shelf + backroom) and we have placed orders for a total amount y which has not yet been delivered; we therefore place an order for amount (Vk -x -y)+.
6. Lost sales
Wc have chosen a shelf capacity C, and target stock levels W0, ...,WM- 1. Suppose that Dk = Tr, Dk +1 = Tr +n +1. Then the lost sales in (Dk,Dk +1 ] is exactly
Figure imgf000019_0004
The expected value of this is too cumbersome to evaluate explicitly, so we approximate the expected lost sales in (Dk,Dk + 1] by
Figure imgf000019_0005
Wc could now just sum the Λk(C, Wk) to yield expected lost sales, but this would be erroneous for the following reason. Suppose that W1, ...,WM-1 were all very small, but W0 was enormous. Then there would be lots of unsold stock at time D 1, so effectively there would be more in the shop at time D 1 than W1. What we need to do is replace the target stock levels Wk by the effective target stock levels
Figure imgf000020_0005
, and then proceed.
We calculate the effective target stock levels
Figure imgf000020_0004
as follows. Pick the index k for which Wk is maximal; suppose for convenience that it is k = 0. Then we set
Figure imgf000020_0003
and define recursively
Figure imgf000020_0006
This is because if we had
Figure imgf000020_0009
in the shop at Di, the demand in (Di,Di +1] would be μ{clock(Di +1) - clock(Di)}, of which on average
Figure imgf000020_0001
would be lost. The amount remaining just before Di+1 would be
Figure imgf000020_0002
and this might exceed Wi+1.
Finally, then, we calculate the expected lost sales for the whole study period:
Figure imgf000020_0007
From this follows the customer service level achieved: 6 (d) 100 [1 - (Expected lost sales)/μ]% .
7. Average inventory calculations
The first step here is to calculate the expected amount on the shelf and in the backroom just before and just after the jth stocking time, Tj.
Suppose that just after Tj, there is αj on the shelf and bj in the backroom. Just before Tj+1, there is bj in the backroom and (approximately) (αj -Sj)+≡ (αj - E(Yj Λ C))+ on the shelf. Thus
7 (a) bj +1 = ( bj - (Sj Λ αj))+
7 (b) αj +1 = ((αj - Sj)+ + bj) Λ C except when Tj is a delivery time Dk, in whicvh case bj + αj is simply the effective target stock level Wk, and oy is just
Figure imgf000020_0008
The second stage is to interpolate between these values to obtain functions a (·), b (·) for the average amount on the shelf and in the backroom. The backroom stock level is easy:
7 (c ) b (t) ≡ bjj≤ t < τj +1) .
For the amount on the shelf, we set
7 (d) α (t) = (αj - μt) v (αj - Sj)+j≤ t < τj + 1 ) .
[Recall that τj = clock(Tj).] From this, we can obtain the average amount on the shelf (or in the backroom), however one may choose to define it We suggest some possibilities here.
(i) Average amount seen by the customer. This is simply
Figure imgf000021_0003
which can be evaluated by a (trapezium rule) numerical integration.
(ii) Average amount in the store at the end of the day's trading. This amount in the shop at the close of trading on day j is simply
Pj ≡ α (clock(tj)) + b (clock(tj)) , so the average amount at the end of the day's business is just
Figure imgf000021_0001
(iii) Average amount in store, (This is the 'true' average, averagecfin real time.) This is calculated simply as
Figure imgf000021_0002
again a candidate for the numerical integration routine. solution: Program Specifications
There follows a largely complete Pascal program to carry out the calculations laid out in the mathematical description.
1. Variables
type
vec = array [0..MAX] of real;
daily = array [0..365] of real;
vec_int = array [0..MAX] of integer,
[the parameter MAX should be set large enough to cope with the biggest value of nstock, the number of stockings. MAX = 700 will probabty do. }
(There follows a list of the variables used in the program, together with their type, range of possible values, and symbol used in the mathematical description (if applicable). It is assumed that all the variables above the line have already been input.)
Variable name type range math, symbol nday integer 1,...,365 L openiimes daily array of increasing reals in [0.1] (Sj) closetimes daily array of increasing reals in [0.1] (tj ) hist_movement real positive integer μ'
CSL real (0.1) β hist_CSI, real (0,1) α proportions daily reals in [0,1] (θj) variability real positive real V nstock integer 0,...,MAX N stock_true_timc(1 ),{2) vec reals in [0,1] (Tk) ndel integer 0,..., MAX M del_true_ιimc( 1) vec reals in [0,1] (D'k) order_true._time(1) vec reals in [0,1] (Ok) delay.protect real [0,1] δ
C(3) real positive real c* target_stock_lcvels{4) positive reals (Wj) demand real positive real μ sigma real positive real σ stock_shop_time vec real s in [0,1] (τk) del_shop_time vec reals in [0,1]
order_shop_time vec reals in [0,1]
P vec reals in [0,1] (Pj) mod_demands vec (μj) sales vec positive reals (Sj) raw_tsl vec positive reals
target_stock_levels vec positive reals (Wj) effective_tsl vec positive reals
Figure imgf000023_0001
shelf vec positive reals (αj) backroom vec positive reals (bj) order_to vec positive reals (Vk) var real positive real
h real positive real
flag vec_ int -1,0,...,MAX-1
lead_time_sales vec positive real
lost_sales real positive real
CSL_achieved real real in [0,1]
(1) The entries stock_true_time[0],..., stock_true_time [nstock-1] are the successive times at which stockings are made. All subsequent entries in the array are initialised to 0. Similarly for del_tnιe_time, order_true_time.
(2) The program contains a facility for calculating the array stock_true_ time from the input value stock_tme_time[0] alone; so in some uses, it would be satisfactory to input only this one value.
(3) There may be no value of C offered, because the main program has the capacity to calculate C.
(4) The user may wish to input the target stock levels (one for each of the ndel deliveries), but the program will calculate these if they are not input. 2. Initialisation
begin
epsilon := 1.0E-6;
variability := max (variability, epsilon);
demand := hist_movcment/hist_CSL;
sigma := dcmand*variability;
var := sigma* sigma;
h := 1.0/nstock;
stock_true_time [nstock] := stock_true_time[01;
del_true_time [ndel] := del_true_ιime[0];
order_true_time [ndel] := order_true_time[0];
{These conventions make 'wrap round' easier.}
for j := 0 to ndel do
begin
deLshop_time[ j] := clock(del_true_time[j], opentimes, closetimes,
proportions, nday);
order_shop_time[j] := clock(order_tme_time[j], opentimes, closetimes.
proportions, nday);
end;
{It may be that the user has input only stock_true_time[0], and is leaving it to the program to calculate the rest of the array. This is done as follows:
stock_shop_time[0] := clock(siock_true_time[0], openiimes, closetimes,
proportions, nday);
for j :- 1 to nstock do
begin
stock_sbop_time[j] := plus(stock_shop_time[j-1],h);
Stock_tnιe_time[j] := clockinv(stock_shop_timc[j], opentimes,
closetimes, proportions, nday);
end;
We assume therefore that the arrays stock__.true_time and stock_shop_time have been initialised.) for j := 0 to nstock- 1 do
begin
p[j] := plus(stock_shop_time[j+1], -stock_shop_time[j]); mod.demandsij] := modmean(p[j], sigma, demand)
end; Main Routines
3. Calculating shelf capacity
{Firstly, note that if the shelf capacity is C, then the expected lost sales for the whole study period (assuming no backroom interference) is given by the function
tot_loss(C:real;sigma:real; nstockύnteger, p:vec; mod_demands:vec):real.
There are three methods available.
Method 1
Use a root-finding routine to pick C so that
tot_loss(C,...) = demand*(1-CSL).
Method 2
Find which of p[0],...,p[nstock-1] is greatest (p[r], say) and then choose C so that
loss(C,sigma,p[r], mod_demands[r]) = demand*p[r]*(1-CSL).
Method 3
This is used when a retailer requires to be covered against the busiest consecutive K days trading
read(K);
x := 0.0;
for i := 0 to nday-1 do
begin
y := 0.0;
for k:= 0 to K-1 do
begin
1 := (i+k) mod nday;
y := y + proportions [1]
end;
if (y > x) then
χ := y;
end;
z := modmean (x, sigma, demand);
{and now we use the root-finding routine to pick C so that loss(C sigma, x, z) = demand* x * (1-CSL). }
{By now, the program has a value of C to work with, either calculated by one of the above methods, or input by the user. Now we can compute the expected sales in each interstocking period: }
for j := 0 to nstock-l do
sales[j] := demand*p[j] - loss(C, sigma, p[j], mod_demands[j]);
4. Calculating target stock levels, and order-to levels
for j := 0 to ndel do
begin
del_true_time(j] := plus(del_true_time[j], delay_protect -epsilon);
del_shop_time[ j] := clock(deLtrue_time[j], opentimes, closetimes,
proportions, nday)
end;
{next, we work out the effective delivery times, and store these in del_true_time, del _shop_ time.}
for i := 0 to MAX do
flag[i] := -1;
for k := 0 to ndel-1 do
begin
for j := 0 to nstock-1 do
begin
1 := (j+1) mod nstock;
if contain(deljrue_rime[k], stock_true_time[j], stock_true-time[1)) then begin
del_true_time[k] := plus(stock__true_time[1], -epsilon);
del_shop_time[k] := plus(stock_shop_time[1], -epsilon);
flag[ 1] := k
end;
end;
end;
del_shop_time[ndel] := deLshop_time[0];
{now we get the order times into shop time) for k := 0 to ndel do
order_shop_time[k] := plus(clock(order_true _time[k], opentimes, closetimes,
proportions, nday), -2* epsilon);
{Now the calculation of target stock levels:}
for j := 0 to ndcl-1 do
begin
raw_tsl[j] := 0.0;
for i := 0 to nstock-1 do
begin
if contain(stock_shop_time[i], dcl_shop_ time[j], deLshop_time[j+1]) then
raw_tsl(j] := raw_tsl[j] + sales[i];
end;
target_stock_levcls[j] := max(raw_tsl[j],C);
{this assignment statement must be skipped if the user has chosen to input his own target _stock_levels }
end;
{Now the calculation of lead-time sales: }
for k := 0 to ndel-1 do
begin{ 1}
x := 0.0;
for j := 0 to nstock-1 do
begin {2}
if contain(stock_shop_time[j], order_shop_time[k], det_shop_time[k]) then
x := x + sales[j];
else
if
contain(order_shop_time[k],stock_shop-.time[j],stock_.shop_time[j+1]) then
begin{3) t := plus(order_shoρ_time[k], -stock.shop_time[j]);
z := loss(C*p[j]/t, Sigma, p[j], mod _demands[j]);
z := t*(demand - (z/p[j]));
z := sales[j] -z;
x := x+z;
end;{3)
end; {2}
lead_time_sales[k] := x;
end;{ 1 }
{It may be that the user has input target stock levels, rather than relying on the values calculated by the program. Either way, there is an array target.stockjevels containing this data.}
for k := 0 to ndel-1 do
order_to[k] := lead _time_sales[k] + target_stock_levels[k];
5. Lost sales
{Firstly, calculate effective_tsl.}
x := 0.0;
k := 0;
forj := 0 to ndel-1 do
begin
if (target_stock_levels[j] > x) then
begin
k :=j;
x := target_stock_levels[j]
end;
end;
effective_tsl[k] := target_stock_levels[k];
for i := 1 to ndel-1 do
begin
j := (k+i-1) mod ndel;
1 := (k+i) mod ndel;
x := effectivc_tsl[j] -min(raw_tsl[j], effective_tsl[j]);
effective.tsl[1] := max(x, target_stock_levels[1])
end; {From this, we calculate next the overall lost sales, and the customer service level achieved,}
x := 0.0;
for k := 0 to ndel-1 do
x := min(raw__tsl [k], effccιivc_tsl[k]) + x;
lost_sales : = demand - x;
CSL_achieved := x/demand;
6. Average inventory calculations
for k := 0 to ndel-1 do
begin
for j := 0 to nstock-l do
begin
if (flag[j] = k) then
begin
backroom[ j] := max(effective_tsl[k]-C, 0.0);
shelf[j] := min(C effective_tsl[k])
end;
end;
end;
{this has set the values of backroom and shelf at stocking times when there is a delivery. The next task is to calculate it for all stocking times, for which we must find the first stocking time which has a delivery, and work from there.}
i := 0;
while (flag[i] = -1) do
i .= i+1;
forj := 1 to nstock-1 do
begin
k := (i+j-1) mod nstock;
1 := (i+j) mod nstock;
if (flag[1] = -1) then
begin
x := min(shelf[k], sales[k]);
y := shelf[k] - x;
backroomfl] := max(backroom[k] - x, 0.0);
shelf[1] := min(backroom[k] + y, C); end;
end;
{The functions a and b allow us to obtain for any t in [0,1] the average amount on the shelf (respectively, in the backroom) at time t.
To calculate the average amount seen by the customers, we do a (trapezium-rule) calculation of
Figure imgf000030_0001
To calculate the average amount in the store at the end of the day's business, we take for j := 0 to nday-1 do
g[j] := a(clock(j/nday)) + b(clock(j/nday));
average := 0.0;
forj := 0 to nday-1 do
average := average + g[j];
average := average/nday;
To find the genuine time-average, we make the integral
Figure imgf000030_0002
Subprogram Specifications function clock(t: real; a: daily; b: daily; pr. daily; n: integer): real;
{given a time t in the interval (0,1), this function calculates the propoπion of business done by time t. It also extends periodically to the whole line.)
var
m j : integer,
x, sum, y : real;
begin
m := trunc(t);
x := t-m;
if (x >= b[n-l]) then
clock := 1.0
else
begin
j := 0;
sum := 0.0;
while (x >= b[j]) do
begin
sum := sum + pr[j];
J := j+1
end;
y := max(0.0, (x - a[j])/(b[j] - a[j]));
clock := sum + pr[j]*min(1.0,y)
end;
clock := clock + m;
end;
We also need
function max(x: real; y: real): real
which returns the larger of x and y,
function min(x: real; y: real): real
which returns the smaller of x and y, and function frac(x: real): real
which returns x - trunc(x), the fractional part of x. function plυs(x: real; y: real): real;
{ this adds x to y modi }
begin
plus := frac(x+y)
end; function clockinv(t: real; a: daily; b: daily, pr: daily; n: integer): real;
{this is the inverse function to clock; given t, it returns s such that clock(s) = 1. The array a contains opening times, b contains closing times, and pr contains proportions of business done on the various days}
var
m j: integer,
x, sum: real;
begin
m := trunc(t);
x := t-m;
j := 0;
sum := 0.0;
while (x >= sum) do
begin
sum := sum + pr[j];
j :=j+1
end;
z := sum - x;
clockinv := m + b[j] - (b[j] - a[j])*z/pr[j];
end; function N(z: real): real;
{this gives a good approximation to the integral from z to infinity of the standard normal distribution.) var
x,y,v: real;
begin
y := 1/(1 + 0.23164190*abs(z));
x := 0.3989423*exp(-0.5*z*z);
v := l.330274*y*y*y*y*y;
v := v - 1.821256*y*y*y*y;
v := v + 1.781478*y*y*y;
v := v - 0.356538*y*y;
v := v + 0.3193875*y;
v := x*v;
if (z >= 0.0) then
N := v
else
N := 1-v
end; function A(z: real): real
{this gives the expectation of the positive part of Y-z, where Y is a standard normal random variable)
begin
A := 0.3989423*exp(-0.5*z*z)• z*N(z)
end; function modmean(x: real; s: real; d: real): real;
{if x is the proportion of the business done in some interstocking interval, s is the standard deviation of the overall demand, and d is the overall mean demand, this function works out the mean of a normal random variable Y so tha' the expected value of Y+ is equal to xd.}
Once again a general root-finding routing is needed. This function should return that value y such that
Figure imgf000033_0001
The value y will always be less than xd; negative values are possible, function loss(C: real; sigma: real; x: real; mean: real): real; {this calculates expected lost sales in our interstocking interval when the shelf capacity is C and a proportion x of the business for whole study period is done}
var
z: real;
begin
z := sigma*sqrt(x);
loss := z*A((C-mean)/z)
end; function tot_loss(C: real; sigma: real; nstock: integer. p:vec; mod_mean: vec): real;
var
j: integer,
begin
tot_loss = 0.0;
for j := 0 to nstock-1 do
totjoss := tot_loss + loss(C, sigma, p[j], mod_mean[j])
end; function contain(x: real; a: real; b: real): boolean;
{this function should only be used on arguments in the interval [0,1]; it returns 'true' if x is in the interval from a to b (with the endpoinu of the interval wrapped around) otherwise 'false'.}
begin
if (a < b) then
if (a <= x) and (x <= b) then
contain := true
else contain := false;
else
if (a <= x) or (x <= b) then
contain := true
else contain := false
end; function a(t: real; stock_shop_time: vec; shelf: vec; sales: vec; demand: real): real; {this works out the average amount on the shelf at time t.)
var
j: integer,
begin
forj := 0 to nstock-1 do
begin
if contain(t, stock_shop_time[j], stock_shop_timc(j + 1]) then
a := max(shelf[j] - demand* (t-stock_shop_time[jl), max(shelf[j]-sales[j], 0.0))
end;
end; function b(t: real; stock.shop.time: vec; backroom: vec): real;
{this works out the average amount in the backroom at time t.}
var
j: integer,
begin
forj :~ 0 to nstock-1 do
begin
if contain(t, stock_shop_time[j], stock.shop_time[j+1]) then
b := backroom[j]
end;
end;
While the invention has been described with reference to details of the illustrated embodiment, these details are not intended to limit the scope of the invention as defined in the appended claims.

Claims

Claims
1. A retail shelf inventory management system comprising:
memory means for storing inventory data, said inventory data including a study period and a retail opening time and a retail closing time for each day within said study period and historical inventory data for said study period for each of a plurality of inventory items including a movement value, a customer service level, a proportion of business done for each day within said study period, and a variability of demand; and
optimizing means operatively connected to said memory means for optimizing a shelf capacity for each of said plurality of inventory items.
2. A retail shelf inventory management system as recited in claim 1 wherein said optimizing means include means for calculating an expected lost sales value for said study period and identifying said shelf capacity resppnsive to said calculated expected lost sales value.
3. A retail shelf inventory management system as recited in claim 1 wherein said inventory data includes a desired customer service level value to be achieved; and wherein said optimizing means include means for calculating an expected lost sales value for said study period and identifying said shelf capacity responsive to said calculated expected lost sales value and said desired customer service level value.
4. A retail shelf inventory management system as recited in claim 1 wherein said inventory data includes stocking time values and wherein said optimizing means include means for identifying an interstocking period having a maximum proportional value of business done and identifying said shelf capacity responsive to said
identified interstocking period.
5. A retail shelf inventory management system as recited in claim 1 wherein said inventory data includes a desired customer service level value to be achieved and said historical inventory data includes interstocking time values and wherein said optimizing means include means for identifying an interstocking period having a maximum proportional value of business done and identifying said shelf capacity responsive to said identified interstocking period and said desired customer service level value.
6. A retail shelf inventory management system as recited in claim 1 wherein said inventory data includes a desired customer service level value to be achieved; and wherein said optimizing means include means for identifying a predetermined number of consecutive days having a maximum proportional value of business done and identifying said shelf capacity responsive to said identified consecutive days and said desired customer service level value.
7. A retail shelf inventory management system as recited in claim 1 wherein said inventory data includes a number of shelf stockings and at least a first stocking time; and further comprising means for calculating an optimum shelf stocking schedule for said study period.
8. A retail shelf inventory management system as recited in claim 1 wherein said historical inventory data includes a number of order deliveries and delivery times in said study period for each of said plurality of inventory items and further comprising means for calculating an effective delivery time and means for calculating a target stock level responsive to said calculated effective delivery time and said shelf capacity for any of said inventory items.
9. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an order to level defining an order quantity amount for any of said inventory items.
10. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an expected lost sales value responsive to a user selected shelf capacity.
11. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an expected lost sales value responsive to said optimized shelf capacity.
12. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an average shelf inventory value responsive to said optimized shelf capacity.
13. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an average store inventory value responsive to said optimized shelf capacity.
14. A retail shelf inventory management system as recited in claim 1 further comprising means for calculating an average shelf inventory value and an average store inventory value responsive to a user selected shelf capacity.
15. A retail shelf inventory management system as recited in claim l further comprising input means coupled to said memory means for receiving user input selections.
16. A retail shelf inventory management system as recited in claim 1 further comprising display means coupled to said optimizing means for displaying results for a user of the system.
17. A retail shelf inventory management system comprising:
memory means for storing inventory data, said inventory data including a study period .and a retail opening time and a retail closing time for each day within said study period and historical inventory data for said study period for each of a plurality of inventory items including a movement value, a customer service level, a proportion of business done for each day within said study period, and a variability of demand, a number of deliveries and order delivery times within said study period and a number of stockings and stocking times within said study period, and a customer service level to be achieved;
optimizing means operatively connected to said memory means for optimizing a shelf capacity for any of said plurality of inventory items; and
means coupled to said optimizing means for calculating an effective delivery time and an order quantity amount for any of said inventory items responsive to said optimized shelf capacity.
18. A retail shelf inventory management system as recited in claim 17 wherein said optimizing means inelude means for calculating an expected lost sales value for said study period and identifying said shelf capacity responsive to said calculated expected lost sales value.
19. A retail shelf inventory management system as recited in claim 17 wherein said inventory data includes a desired customer service level value to be achieved; and wherein said optimizing means include means for calculating an expected lost sales value for said study period and identifying said shelf capacity responsive to said calculated expected lost sales value and said desired customer service level value.
20. A retail shelf inventory management system as recited in claim 17 wherein said inventory data includes a desired customer service level value to be achieved and said historical inventory data includes interstocking time values and wherein said optimizing means include means for identifying an interstocking period having a maximum proportional value of business done and identifying said shelf capacity responsive to said identified interstocking period and said desired customer service level value.
PCT/US1990/000652 1989-02-17 1990-02-02 Retail shelf inventory system WO1990009638A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US31225689A 1989-02-17 1989-02-17
US312,256 1989-02-17

Publications (1)

Publication Number Publication Date
WO1990009638A1 true WO1990009638A1 (en) 1990-08-23

Family

ID=23210600

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1990/000652 WO1990009638A1 (en) 1989-02-17 1990-02-02 Retail shelf inventory system

Country Status (3)

Country Link
AU (1) AU5098890A (en)
PT (1) PT93187A (en)
WO (1) WO1990009638A1 (en)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0733986A2 (en) * 1995-03-24 1996-09-25 Panduit Corp. System and method for controlling the number of units of parts in an inventory
EP0984379A2 (en) * 1998-08-31 2000-03-08 Ncr International Inc. System and method of altering transaction terms based upon current inventory levels
WO2001080073A2 (en) * 2000-04-13 2001-10-25 Ness - I.S.I Ltd. A system for manipulating data
WO2002082211A2 (en) * 2001-04-04 2002-10-17 Profitlogic, Inc. Assortment decisions
US6834266B2 (en) 2001-10-11 2004-12-21 Profitlogic, Inc. Methods for estimating the seasonality of groups of similar items of commerce data sets based on historical sales data values and associated error information
SG108883A1 (en) * 2001-11-27 2005-02-28 World Co Ltd Sales forecasting apparatus and sales forecasting method
US6910017B1 (en) 1999-03-05 2005-06-21 Profitlogic, Inc. Inventory and price decision support
US6960135B2 (en) 2001-12-05 2005-11-01 Profitlogic, Inc. Payout distributions for games of chance
SG118166A1 (en) * 2001-11-27 2006-01-27 World Co Ltd Goods sorting system and goods sorting method based on moving state
US7085734B2 (en) 2001-07-06 2006-08-01 Grant D Graeme Price decision support
EP1806691A1 (en) 2006-01-10 2007-07-11 Tesco Stores Ltd. System and Method of Inventory Management
US7251615B2 (en) 2002-06-07 2007-07-31 Oracle International Corporation Markdown management

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MANAGEMENT SCIENCE, Volume 33, No. 6, issued June 1987, F.J. ARCELUS et al.: "Inventory policies under various optimizing criteria and variable markup rates", see pages 756-62. *
PROCEEDING, AMERICAN INSTITUTE OF INDUSTRIAL ENGINEERS, 1985 Annual International Engineering Conference, Los Angles, CA, I.W. KABAK et al.: "Utilization of inventory and satisfaction of demand", see pages 516-521. *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0733986A2 (en) * 1995-03-24 1996-09-25 Panduit Corp. System and method for controlling the number of units of parts in an inventory
EP0733986A3 (en) * 1995-03-24 1997-07-02 Panduit Corp System and method for controlling the number of units of parts in an inventory
EP0984379A2 (en) * 1998-08-31 2000-03-08 Ncr International Inc. System and method of altering transaction terms based upon current inventory levels
EP0984379A3 (en) * 1998-08-31 2001-08-01 Ncr International Inc. System and method of altering transaction terms based upon current inventory levels
US6397199B1 (en) 1998-08-31 2002-05-28 Ncr Corporation System and method of altering transaction terms based upon current inventory levels
US6910017B1 (en) 1999-03-05 2005-06-21 Profitlogic, Inc. Inventory and price decision support
WO2001080073A3 (en) * 2000-04-13 2004-01-15 Ness I S I Ltd A system for manipulating data
WO2001080073A2 (en) * 2000-04-13 2001-10-25 Ness - I.S.I Ltd. A system for manipulating data
WO2002082211A3 (en) * 2001-04-04 2003-05-01 Profitlogic Inc Assortment decisions
WO2002082211A2 (en) * 2001-04-04 2002-10-17 Profitlogic, Inc. Assortment decisions
US7085734B2 (en) 2001-07-06 2006-08-01 Grant D Graeme Price decision support
US6834266B2 (en) 2001-10-11 2004-12-21 Profitlogic, Inc. Methods for estimating the seasonality of groups of similar items of commerce data sets based on historical sales data values and associated error information
US7437308B2 (en) 2001-10-11 2008-10-14 Oracle International Corporation Methods for estimating the seasonality of groups of similar items of commerce data sets based on historical sales date values and associated error information
SG108883A1 (en) * 2001-11-27 2005-02-28 World Co Ltd Sales forecasting apparatus and sales forecasting method
SG118166A1 (en) * 2001-11-27 2006-01-27 World Co Ltd Goods sorting system and goods sorting method based on moving state
US6960135B2 (en) 2001-12-05 2005-11-01 Profitlogic, Inc. Payout distributions for games of chance
US7251615B2 (en) 2002-06-07 2007-07-31 Oracle International Corporation Markdown management
EP1806691A1 (en) 2006-01-10 2007-07-11 Tesco Stores Ltd. System and Method of Inventory Management

Also Published As

Publication number Publication date
PT93187A (en) 1992-03-31
AU5098890A (en) 1990-09-05

Similar Documents

Publication Publication Date Title
EP0733986B1 (en) System and method for controlling the number of units of parts in an inventory
WO1990009638A1 (en) Retail shelf inventory system
CA2431116C (en) Stochastic multiple choice knapsack assortment optimizer
CN1601541B (en) Self-maintaining real-time data aggregations method and data processing device
US5504887A (en) Storage clustering and packing of objects on the basis of query workload ranking
US9990597B2 (en) System and method for forecast driven replenishment of merchandise
US20170140406A1 (en) System and method for providing a multi-channel inventory allocation approach for retailers
Çeven et al. Optimal wave release times for order fulfillment systems with deadlines
CN108108933B (en) Storage position distribution method and device
CN111815198B (en) Method, device and equipment for replenishing goods in store
WO2020205259A1 (en) Computerized inventory redistribution control system
US20160148226A1 (en) System and method for forecasting and managing returned merchanidse in retail
Chiu A heuristic (R, T) periodic review perishable inventory model with lead times
van der Heijden Multi-echelon inventory control in divergent systems with shipping frequencies
CN113205232A (en) Commodity sales data prediction method, commodity sales data prediction device, commodity sales data prediction equipment, commodity sales data prediction medium and commodity sales data prediction product
WO2007048035A2 (en) Apparatus and method for analyzing out of stock conditions
JP2007018216A (en) Reasonable inventory quantity calculation system and reasonable inventory quantity calculation method
Johnston An interactive stock control system with a strategic management role
CN114331043A (en) Dynamic planning and allocating system and method for centralized medicine storage platform
CN110615226A (en) Storage bit allocation method, device and computer readable storage medium
Sinha et al. Multiechelon (R, S) inventory model
JPH0798741A (en) Integrated management method for production sales article
JP2002304452A (en) Device and method for managing commodity distribution
Hill Allocating warehouse stock in a retail chain
EP1843232B1 (en) Production scheduling system

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU BR FI JP KR NO

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB IT LU NL SE