A computationally efficient FPTAS for convex stochastic dynamic programs

Nir Halman, Giacomo Nannicini, James Orlin

Research output: Contribution to journalArticlepeer-review

Abstract

We propose a computationally efficient fully polynomial-time approximation scheme (FPTAS) to compute an approximation with arbitrary precision of the value function of convex stochastic dynamic programs, using the technique of K-approximation sets and functions introduced by Halman et al. [Math. Oper. Res., 34, (2009), pp. 674-685]. This paper deals with the convex case only, and it has the following contributions. First, we improve on the worst-case running time given by Halman et al. Second, we design and implement an FPTAS with excellent computational performance and show that it is faster than an exact algorithm even for small problem instances and small approximation factors, becoming orders of magnitude faster as the problem size increases. Third, we show that with careful algorithm design, the errors introduced by floating point computations can be bounded, so that we can provide a guarantee on the approximation factor over an exact infinite-precision solution. We provide an extensive computational evaluation based on randomly generated problem instances coming from applications in supply chain management and finance. The running time of the FPTAS is both theoretically and experimentally linear in the size of the uncertainty set.

Original languageEnglish
Pages (from-to)317-350
Number of pages34
JournalSIAM Journal on Optimization
Volume25
Issue number1
DOIs
StatePublished - 2015
Externally publishedYes

Keywords

  • Approximation algorithms
  • Discrete convexity
  • Dynamic programming
  • Fully polynomial-time approximation scheme
  • Inventory control

All Science Journal Classification (ASJC) codes

  • Software
  • Theoretical Computer Science
  • Applied Mathematics

Fingerprint

Dive into the research topics of 'A computationally efficient FPTAS for convex stochastic dynamic programs'. Together they form a unique fingerprint.

Cite this