Skip to content
Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time


Build Status codecov DOI

GitHub tag (latest SemVer) master
Documentation Documentation Status Documentation Status

DSP (Decomposition of Structured Programs) is an open-source and parallel package that implements decomposition methods for structured Mixed-Integer Quadratically Constrained Quadratic Programming (MIQCQP) problems. Structured programming problems refer to the class of problems that embed decomposable structures (e.g., block-angular matrices). Multiple decomposition methods can effectively utilize such structures in order to accelerate the solutions.

DSP Solution Methods:

  • Extensive form solver (global solver)
  • Serial/parallel dual decomposition (dual bounding solver)
  • Serial/parallel Dantzig-Wolfe decomposition (global solver)
  • Serial/parallel (integer) Benders decomposition

Problem Types:

  • Two-stage stochastic MIQCQP problems
  • Wasserstein-based distributionally robust variants
  • Structured MIQCQPs

Problem Input Formats:

  • SMPS file format for stochastic programs (possibly with optional arguments for Wasserstein distributionally robust)
  • MPS and DEC files for generic block-structured optimization problems
  • Julia modeling package DSPopt.jl


git clone --recursive


  • Kibaek Kim, Mathematics and Computer Science Division, Argonne National Laboratory.
  • Victor M. Zavala, Department of Chemical and Biological Engineering, University of Wisconsin-Madison.
  • Christian Tjandraatmadja, Google Research.
  • Yingqiu Zhang, Industrial and Systems Engineering, Virginia Tech.
  • Geunyeong Byeon, Industrial Engineering, Arizona State University.

The contributors are listed in chronological order (first-come first-listed).

Key Publications


This material is based upon work supported by the U.S. Department of Energy, Office of Science, under contract number DE-AC02-06CH11357.