DisjunctiveProgramming.jl is a JuMP extension for expressing and solving Generalized Disjunctive Programs. Generalized Disjunctive Programming (GDP) is a modeling paradigm for easily modeling logical conditions which can be reformulated into a variety of mixed-integer programs.

Current VersionDocumentationBuild StatusCitation
Build Status codecov.ioarXiv

DisjunctiveProgramming builds upon JuMP to add support GDP modeling objects which include:

  • Logical variables ($Y \in \{\text{False}, \text{True}\}$)
  • Disjunctions
  • Logical constraints (also known as propositions)
  • Cardinality constraints

It also supports automatic conversion of the GDP model into a regular mixed-integer JuMP model via a variety of reformulations which include:

  • Big-M
  • Hull
  • Indicator constraints

Moreover, DisjunctiveProgramming provides an extension API to easily add new reformulation methods.


InfiniteOpt is licensed under the MIT "Expat" license.


DisjunctiveProgramming.jl is a registered Julia package and can be installed by entering the following in the REPL.

julia> import Pkg; Pkg.add("DisjunctiveProgramming")


Please visit our documentation pages to learn more.



If you use DisjunctiveProgramming.jl in your research, we would greatly appreciate your citing it.

  title={DisjunctiveProgramming. jl: Generalized Disjunctive Programming Models and Algorithms for JuMP},
  author={Perez, Hector D and Joshi, Shivank and Grossmann, Ignacio E},
  journal={arXiv preprint arXiv:2304.10492},