Finding Optimal (s, S) Policies Is About As Simple As Evaluating a Single Policy: The Zheng–Federgruen Algorithm Terminates with an Optimal (s, S) Policy and c⁰ = c*Research Paper
Motivation
The (s, S) policy is the standard control rule for a single item reviewed periodically: when the inventory position reaches or drops below a reorder level , order enough to bring it up to the order-up-to level . Under a fixed ordering cost and fairly general holding and shortage costs, some (s, S) policy minimizes the long-run average cost among all policies (Veinott 1966). That makes computing the best (s, S) pair a routine subproblem in inventory software, in multi-echelon heuristics, and in textbooks.
Before 1991 the available methods searched a box of candidate pairs. Veinott and Wagner (1965) bounded the optimal and and compared policies within the bounds. Later methods (Johnson, Management Science 15, 1968; Bell, SIAM J. Applied Mathematics 18, 1970; Federgruen and Zipkin 1984) used policy iteration or partial enumeration. Zheng and Federgruen (1991) gave an exact search that walks a monotone staircase path through the grid, and showed it costs about as much as evaluating a single policy. The procedure is the one presented in standard inventory texts such as Zipkin's Foundations of Inventory Management (2000).
Setting
One-period demands are i.i.d. and integer valued, with , , and . An order costs . is the one-period expected cost when a period starts at inventory position . The paper assumes only:
- is unimodal: for some integer , is nonincreasing on and nondecreasing on ;
- .
Write and for the smallest and largest minimizers of . The renewal density and renewal function are
For integers , the long-run average cost of the (s, S) policy is
A pair is an optimal policy if for all integers . The optimal cost is the value of any optimal policy. For fixed , is an optimal reorder level if for all .
The algorithm (§3, p. 659) starts at any minimizer of .
- Step 0. Decrease from until . Set , and .
- Step 1. While : if , set , increase while , and set . In either case, .
Formalization targets
Goal: Theorem 1(a)
For every demand law with , every , every satisfying the two assumptions, and every minimizer of , the algorithm terminates. On termination, with final values ,
Milestones
The milestones are the results the paper's justification of the algorithm (p. 659) rests on, in the order it uses them:
- the weighted-average identity (6), with and , and Lemma 0 on the comparisons it implies;
- Lemma 1(a): a reorder level with (condition (7)) is optimal for ;
- Corollary 1, the stopping rule of Step 0;
- Lemma 2(a)–(c), the bounds and , which give the stopping rule of Step 1;
- Lemma 3(a), the single-comparison test for improvement, and Corollary 2(b) with Lemma 3(b), which justify the inner loop.
Significance
The result. Theorem 1(a) makes the exact optimum of the (s, S) problem as cheap to compute as the cost of one policy, for any with unimodal. No convexity is needed, and lead times, random lead times of the Zipkin type, and linear purchase costs are allowed. Its bounds (Lemma 2) and the monotone staircase structure of the search also underlie later work on continuous review, discounting and approximation.
Formalizing it. The theorem is proved on paper. As far as we know, none of the results in this mission has a machine-checked proof: the platform's Veinott–Wagner items concern a different (discounted, convex) model. Formalizing it produces a verified correctness proof of a widely implemented algorithm, and checks the paper's lemmas at their edge cases. Two of the printed statements need repair: Lemma 1(b) and Lemma 3(a) (see the scope section).
Difficulty
Optimality is claimed over all pairs , an infinite set, but the algorithm visits only a monotone path. The proof therefore has to show that every pair it skips is no better. For a fixed , the skipped reorder levels are handled by the unimodality of (Lemma 1). The skipped order-up-to levels are handled by the one-comparison test of Lemma 3(a), and those above the stopping point by the bound of Lemma 2(b). An argument from joint convexity or joint unimodality of in is not available. The paper uses no structure of beyond what Lemmas 0–3 state, and these hold only under the side conditions written in them.
Lemma 2(b)'s printed proof leaves the class of (s, S) policies (it uses a randomized order-up-to level). The limit at may be finite, so need not be attained for every . Lattice demands, for which vanishes somewhere, create ties between adjacent reorder levels. Each of these breaks a naive transcription of the paper's argument.
Formalization scope
- Levels are integers. Demand values are natural numbers, and the demand law is the published
VeinottWagnerSS.RenewalCost.DemandDistwith the extra hypothesis . All costs are real. - The cost is the ratio above. Equation (1) on p. 655 is misprinted as , and the ratio is the form fixed by (3) and (5). The Lean value for is a junk , so every quantifier over reorder levels carries .
- is defined by the solved recursion (p. 660), and .
- The growth assumption is encoded as: has a minimizer and for all but finitely many . Under unimodality this is equivalent to the page's limit condition. It is not strengthened to .
- Optimality is among (s, S) policies. That an (s, S) policy is optimal among all policies is Veinott (1966) and is neither stated nor used. , , , , and are never real infima: they are the cost of a given optimal pair, -statements, or binders characterised as least or greatest elements.
- The algorithm is a step function on the state that keeps the paper's order of tests and its weak and strict inequalities. The run with steps returns an output only if the algorithm has terminated.
- Ruled out as trivializing: comparing only with the pairs the algorithm visits or with a bounded box; assuming termination, or a budget that returns the current state; assuming ; leaving unguarded for .
- Repaired statements. Lemma 3(a) is stated with condition (7) at as an extra hypothesis. With merely optimal it fails when has a zero: for , and adjacent reorder levels tie. The algorithm always has (7). Lemma 1(b), "an optimal reorder level satisfying (7) exists for every ", is false when is finite. An example is , , , (), , where no optimal reorder level exists. It is not posed here, and the goal does not depend on it.
- Not formalized: Theorem 1(b)–(c), the operation counts, which depend on a bookkeeping model described in words; Corollary 3, which the paper notes is not needed for the algorithm; and the variant for a general starting level .
- Welcome contributions: general facts about the discrete renewal density (, ), the identity (6), and lemmas on that are reusable for related (s, S) and (r, Q) work.
Selected references
- Y.-S. Zheng and A. Federgruen, Finding Optimal (s, S) Policies Is About As Simple As Evaluating a Single Policy, Operations Research 39(4):654–665, 1991. https://doi.org/10.1287/opre.39.4.654
- A. F. Veinott Jr. and H. M. Wagner, Computing Optimal (s, S) Inventory Policies, Management Science 11(5):525–552, 1965. https://doi.org/10.1287/mnsc.11.5.525
- A. F. Veinott Jr., On the Optimality of (s, S) Inventory Policies: New Conditions and a New Proof, SIAM J. Applied Mathematics 14(5):1067–1083, 1966. https://doi.org/10.1137/0114086
- A. Federgruen and P. Zipkin, An Efficient Algorithm for Computing Optimal (s, S) Policies, Operations Research 32(6):1268–1285, 1984. https://doi.org/10.1287/opre.32.6.1268
- A. Federgruen and Y.-S. Zheng, An Efficient Algorithm for Computing an Optimal (r, Q) Policy in Continuous Review Stochastic Inventory Systems, Operations Research 40(4):808–813, 1992. https://doi.org/10.1287/opre.40.4.808