Background of the Invention
1. Field of the Invention
The present invention generally relates to computer software for business management and, more particularly, to a computer implemented method for generating sensitivity information about average lost sales and inventory levels of a lost-sale (R,s,S) inventory system for what-if analysis and optimization of the decision variables s and S.
2. Background Description
The system under consideration manages the inventory level of an item where once every period or at recurring intervals, the inventory level is reviewed and, if necessary, purchase orders are placed to replenish depleted inventory, in accordance with a pre-specified decision rule. An (s,S) inventory policy is one such decision rule that specifies that an order be placed when the level of inventory on hand plus on order falls below the level s (a specified number), and the amount of order be the difference between S (another specified number) and the present level of inventory on hand plus on order; i.e., every time the inventory position (which refers to the sum of inventory on hand plus on order) falls below s, an order is placed to bring it up to S.
(s,S) policies are of great practical and theoretical interest, and much effort has gone into the determination of the appropriate values of s and S to optimize system performance measures and to obtain sensitivity information in this regard. The determination of these values becomes exceedingly complicated in the general case due to a number of factors. Specifically, the inventory system may be of the back order or lost sale type (depending on whether requests are backlogged or refused when there is no inventory on hand), and the demand distribution to which the system is subjected may vary over time. The term "demand distribution", as used in this description, means the statistics of the consumer demand per unit time period, in terms of known approximation forms for, and/or hypothetical models based on, probability density and distribution functions characterizing observed sales events or hypothetical sales statistics, respectively. The only requirement for the selected demand distributions are that they be unambiguous and that they provide sufficient information to generate values of simulated demand over the time horizon under consideration.
In such cases of determining appropriate values of s and S to optimize system performance measures and to obtain sensitivity information, simulation is a useful tool to obtain information about the expected performance. Due to the requirement that several replications of the simulation have to be done to obtain meaningful estimates of performance, and the fact that a typical manufacturer/retailer has thousands of items in inventory, the use of simulation to do sensitivity analysis to changes in s and S values becomes an extremely time consuming task. This has made undesirable and in some cases precluded the use of simulation to do performance analysis and optimization.
To address this problem, investigations into obtaining the sample path derivative of performance measures with respect to s and S have been conducted for the back order case with stationary demands. See M. C. Fu, "Sample path derivatives for (s,S) inventory systems", Operations Research, Vol. 42, No. 2, pp. 351-364 (1994). Extensions to address stochastic lead times are presented in M. C. Fu and J-Q Hu, "(s,S) inventory systems with random lead times", Probability in the Engineering and Informational Sciences, Vol. 8, pp. 355-376 (1994). The use of Perturbation Analysis to obtain sensitivity information on inventory levels for base stock multi-echelon systems in discussed in P. Glasserman and S. Taylor, "Sensitivity analysis for base-stock levels in multiechelon production-inventory systems", Management Science, Vol. 41, No. 2, pp. 263-281 (1995). However, none of the methods in the surveyed literature address either the lost sales case or the case with non-stationary demands.
Summary of the Invention
It is therefore an object of the invention to provide sensitivity information about the average lost sales and inventory levels of a lost-sale (R,s,S) inventory system with respect to the two decision variables s and S and a review period fo inventory R.
It is another object of the invention to provide sensitivity information which is used for "what-if" analysis and optimization of the decision variables s and S.
The computer software method according to the invention implements an algorithm that provides sensitivity of both average inventory levels as well as average lost sales with respect to changes in s and q(q=S-s) for a lost-sale inventory simulation for any specified demand distribution. Further, the sensitivity information provided is exact when compared to a finite-difference simulation for the case of both discrete and continuous, stationary and non-stationary demands. A finite difference estimate of the sensitivity is obtained by running two simulations where the parameter in question (s or S) differ by a chosen small number, and then calculating the resulting difference in the performance measure of interest, in this case average inventory and lost sales.
The method according to the invention is at least two and up to three times faster than the equivalent method of obtaining the very same information using a set of finite difference simulations. By virtue of the fact that the method provides this sensitivity information for a type of inventory system that is both commonly found in real-life retail/distribution situations, as well as difficult to analyze mathematically, it can become a useful part of inventory control software to enable optimization and "what-if" analysis by the user.
Brief Description of the Drawings
The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of a preferred embodiment of the invention with reference to the drawings, in which:
FIG. 1 is a graph of an inventory system with lost sales illustrating the effect on sample path of inventory levels with q fixed and s perturbed;
FIG. 2 is a schematic-type functional block diagram of an implementation of the present method for generating sensitivity information for inventory performance measures;
FIG. 3 is a flow diagram for the FIG. 2 schematic, depicting an example of the present method of providing sensitivity information; and
FIGS. 4A and 4B are an example of a sub-level flow diagram for a main block of the FIG. 3 flow diagram.
Detailed Description of a Preferred Embodiment of the Invention
This invention will be described by first defining terms to be used, and describing the general method referring to FIG. 1, and then presenting a detailed embodiment by reference to the other drawings.
Problem Statement:
Let
T=time horizon under consideration;
I=1,2, . . . ,T be the index of time;
Y.sub.i =inventory position in period I, where inventory position refers to stock on hand plus on order;
W.sub.i =inventory level in period I, refers to physical stock on hand;
K.sub.i =Lost Sales in period I;
D.sub.i =randomly realized demand in period I;
L=order lead time, the time between placement of an order and its arrival;
O.sub.i =incoming orders in period I;
s=Specified reorder point;
S=Specified order up to level
Consider an inventory system where at discrete and periodic time intervals, first incoming orders are received, the inventory position is reviewed and then an ordering decision is made at the beginning of the period according to the (s,S) policy; i.e., if at the start of the time period, the inventory position is below s, then an order is placed to bring it up to S. The demand for the period is then realized and subtracted at the end of the period. If Y.sub.i and W.sub.i are defined after order placement and before demand subtraction, then
Y.sub.i+1 =Y.sub.i -min (W.sub.i,D.sub.i) if Y.sub.i -min(W.sub.i,D.sub.i).gtoreq.s=S if Y.sub.i -min(W.sub.i,D.sub.i)<s
and
W.sub.i+1 =max(0, W.sub.i -D.sub.i)+O.sub.i+1.
The lost sales at the end of each period are K.sub.i =max(0,D.sub.i -W.sub.i) The performance measures of interest to us are ##EQU1## and we are interested in computing the sensitivity of these measures with respect to s and q where S=s+q; i.e., we would like to calculate .DELTA.E(W.sub.T )/.DELTA.s, .DELTA.E(K.sub.T )/.DELTA.s, .DELTA.E(W.sub.T )/.DELTA.q, and .DELTA.E(K.sub.T )/.DELTA.q, where E equals the average over the number of replications N of the simulation.
Due to the fact that in practice inventory systems deal with discrete units of items, demand is realized as a random integer, and the setting of s,S levels is also in integer values. The smallest value of .DELTA. that is of interest is one unit. Changes in s or q less than one unit will result in the same inventory system as before and there will be no change in the performance measures. Clearly, then, for the purpose of sensitivity analysis or optimization of the decision variables, it is only necessary to be concerned with integer value changes in s and q.
The algorithm implemented by the method according to the invention calculates the effect on performance due to unit changes in s and q. During each replication of the finite horizon simulation, the effect of the perturbation or change in performance due to a unit change in s and q is calculated, and the effect averaged over a repeated number of replications.
If s1 is the initial value of s, and s2=s1+.DELTA.s, then the estimate made after N replications is
Equation (1) shows that the estimates made by running the algorithm are unbiased.
Considering first the sensitivity of inventory levels with respect to "s", an adjustment algorithm modifies the Infinitesimal Perturbation Analysis (IPA) based calculation for the back order case, which is described by (M. C. Fu, supra), and then further augments it with a finite difference simulation to account for event changes.
For this description a "nominal" system is defined as the base inventory system with the given, or initial, values of s and S. The nominal path is the inventory state of the nominal system with respect to an event sequence. The "perturbed" system is defined as that same inventory system except for having either the s or q values changes, or perturbed. The perturbed path is the inventory state of the perturbed system with respect to an event sequence. Also, Perturbation Analysis will be abbreviated as PA.
Referring to FIG. 1, and examining the nominal and perturbed path, shown as solid line NL and dotted line PL, respectively, with respect to a change of .DELTA. in "s", and assuming initially that both paths have the same event sequence, it can be seen that the IPA algorithm described by (M. C. Fu, supra) is applicable except in periods where the inventory level becomes zero and a few periods thereafter. Specifically, when the inventory level becomes zero, and there is a lost sale, then the incremental increase of inventory in the perturbed path will not have any effect. Further, the nominal and perturbed paths (with respect to changes in s) come together at this time. The difference of .DELTA. in the inventory levels of the two paths will reappear only on arrival of the first order placed after the inventory levels become zero, shown as the point ARRIVAL. Adjustments to this end are therefore made in the IPA calculations, and a new algorithm is termed as the adjusted IPA algorithm. This is illustrated in FIG. 1.
Event changes can occur when the Inventory Position of both the nominal and perturbed paths come together, which happens after the inventory level hits zero as described above, and falls between s and s+.DELTA.. The nominal system then does not place an order (since the inventory position is above s), but the perturbed system does (as the inventory position is below s+.DELTA.). At this point, a finite difference simulation is launched for the perturbed path and the differences in inventory level are recorded till such time that the event sequence for the paths come back together. When the event sequence becomes the same for both paths, then the method reverts to the adjusted IPA calculations.
For the case of sensitivity with respect to q, the algorithm remains the same except that event changes are now triggered by having the inventory position fall below s for the nominal system, such that the nominal system places an order but the perturbed system does not. Again a finite difference simulation is used to track the differences when the paths diverge, and the adjusted IPA algorithm used when the event sequences converge.
The implementation of the algorithm for the lost sale case involves additional computational effort due to the fact that at certain points in time, two finite difference calculations may be in progress; one for sensitivity with respect to s and the other for sensitivity with respect to q. The overall computation time is still, however, significantly faster than the equivalent method of performing three finite difference simulations.
Referring to FIG. 2, a general system architecture for implementing this invention is shown, having a data input device or database 100 for storing and inputting simulation parameter settings, a data input device or database 102 for storing and inputting inventory parameters, a processor 104 for executing the steps described further below in reference to FIGS. 3, 4A and 4B, and a data output device or database 106 for outputting and storing the sensitivity information and performance measures obtained with the present method. It will be understood that the particular hardware on which the invention can be implemented and practiced includes any standard workstation (not shown) or personal computer (not shown) having a central processing unit, random-access memory, a mass storage unit, an optional accelerator card, and a data I/O device. Further, the invention can be implemented on a large scale computer system such as an IBM system 390, IBM AS400 or IBM RS6000.
Referring to FIGS. 3, 4A and 4B, the following pseudocode is one example implementation for carrying out the present invention, and the pseudocode is commented for referencing the figures and for a ready understanding of its operations:
First, referring to FIG. 3, the initialization block 200 can, for example, be implemented by the following pseudocode block Y.sub.l =W.sub.1 =S;
O.sub.i =0, I=l, . . . T;
TOTORD=0;
RCT.sub.-- FLAG.sub.i =1, I=1, . . . , T;
HZERO=OFF;
OFLAG=OFF;
NOWHZERO=OFF;
PASWITCH=ON;
PAQSWITCH=ON;
JEPA=OFF;
JEPAQ=OFF;
DELTA=User input value, default value=1;
The default value of 1, which may be called logical ON, is for computing sensitivity with respect to a unit change in s.
Additionally, all other variables, which will be defined below, are initialized to zero.
Block 202 represents the steps in execution for Replications=1 to N,
More particularly, for Replications=1 to N the following are performed
Block 206a of FIG. 4A, which checks if the nominal and perturbed systems have converged to the same event sequence and set flags, and which can be implemented by the following example pseudocode
Next, the process goes to block 206b in FIG. 4A, which receives incoming orders for the period I, and updates the inventory level and the outstanding orders for the nominal system. Block 206b can be implemented by the following example pseudocode
W.sub.i =W.sub.i +O.sub.i ;
TOTORD=TOTORD-O.sub.i ;
Next, the process goes to block 206c of FIG. 4A, where it sets certain flags for PA calculation, which can be performed by the following pseudocode
After the above-described block 206c, the process goes to a conditional branch block 206d, which checks if an order is to be placed for the nominal system, shown, for this example by the following pseudocode
Next, block 206g is performed, which sets flags for PA calculations. An example pseudocode is
After block 206g, the process goes to block 206h, which is where it had jumped to if Y.sub.i was greater than s at block 206d. Block 206g generates demand D.sub.i using any given suitable demand distribution. A pseudocode for block 206h is not necessary for this description, as demand generating algorithms and software are well known in the art.
After the generate demand of block 206h the process goes to block 206i. Block 206i checks conditions for starting a finite difference simulation with respect to changes in s, and constructs a perturbed system with respect to changes in s if needed. An example pseudocode is:
The process then goes to block 206j of FIG. 4A and updates current period statistics using, for this example, the following pseudocode;
OLDW.sub.i =W.sub.i ;
K.sub.i =max(0,D.sub.i -W.sub.i);
W.sub.i =max(0,W.sub.i -D.sub.i);
Y.sub.i =W.sub.i +TOTORD;
The process then proceeds to block 206k of FIG. 4A, which sets certain ones of the conditional flags for PA calculations, and which is performed, for this example, by the following pseudocode;
Referring now to FIG. 4B, the present process, after completing the above-described block 206k shown on FIG. 4A, goes to block 206l, which checks flags and traces the path for the perturbed system with respect to s if needed. Block 206l is implemented, for this example, by the following pseudocode:
The following sub-block of pseudocode within block 206l checks if an order for goods is to be placed for the perturbed system:
As shown by FIG. 4B, the present process, after completing the above-described block 206l, goes to block 206m, which updates statistics for the perturbed path with respect to changes in s, and which can be implemented by the following example pseudocode:
POLDW.sub.i =PW.sub.i ;
PK.sub.i =max(0,D.sub.i -PW.sub.i);
PW.sub.i =max(0,PW.sub.i -D.sub.i);
PY.sub.i =PW.sub.i +PTOTORD;
After completing the above-described block 206m, the present process goes to block 206n, which cumulates difference statistics for the perturbed system with respect to changes in s. Block 206n can be implemented by the following example pseudocode:
PTOTK=PTOTK+(PK.sub.i -K.sub.i);
PTOTW=PTOTW+(PW.sub.i -W.sub.i);
Next, after completing the above-described block 206n, the present process goes to block 206o, which checks flags and the traces the path for the perturbed system with respect to changes in q if necessary, and which can be implemented by the following example pseudocode:
The following sub-block of pseudocode within block 206o checks if an order is to be placed for the perturbed system:
After completing the above-described block 206o, the process goes to block 206p, which updates the updates statistics for the nominal system. This processing block 206p can be implemented by the following example pseudocode:
PQOLDW.sub.i =PqW.sub.i ;
PqK.sub.i =max(0,D.sub.i -PqW.sub.i);
PqW.sub.i =max(0,PqW.sub.i -D.sub.i);
PqY.sub.i =PqW.sub.i +PQTOTORD;
Next, after completing the above-described block 206p, the present process goes to block 206p, and cumulates the difference statistics for the perturbed system with respect to q, using the following example pseudocode
After completing the above-described block 206q the process goes to block 206r, which updates the cumulative statistics characterizing the nominal system's performance, using the following example pseudocode
TOTK=TOTK+K.sub.i
TOTW=TOTW+W.sub.i
Next, the process moves to block 206s and performs adjusted IPA calculations, using, for example, the following pseudocode
The final step of the example process block 206 of FIG. 3 is block 206t shown in FIG. 4B. Block 206t sets the flags for the PA calculations. An example pseudocode for implementing this block is
After the N replications through functional blocks 202, 204 and 206 of FIG. 3, the average statistics characterizing the sensitivity of the system with respect to a .DELTA. change in s and q, are updated at block 208 by, for example, the following pseudocode:
.DELTA.E(W.sub.T )/.DELTA.s=(DWDSPLUS+PTOTW)/(N*T);
.DELTA.E(K.sub.T )/.DELTA.s=(-DWDSMINUS+PTOTK)/(N*T);
.DELTA.E(W.sub.T )/.DELTA.q=(DWDQPLUS+PQTOTW)/(N*T );
.DELTA.E(K.sub.T )/.DELTA.q=(-DWDQMINUS+PTOTK)/(N*T);
While the invention has been described in terms of a single preferred embodiment, those skilled in the art will recognize that the invention can be practiced with modification within the spirit and scope of the appended claims.