DisjunctiveProgramming.jl

Logo

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
VersionDocsBuild Status codecov.ioDOI

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.

License

DisjunctiveProgramming is licensed under the MIT license.

Installation

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

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

Documentation

Please visit our documentation pages to learn more.

Citing

DOI

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

@article{Perez2023,
  title = {DisjunctiveProgramming.jl: Generalized Disjunctive Programming Models and Algorithms for JuMP},
  author = {Hector D. Perez and Shivank Joshi and Ignacio E. Grossmann},
  journal = {Proceedings of the JuliaCon Conferences},
  year = {2023},
  publisher = {The Open Journal},
  volume = {1},
  number = {1},
  pages = {117}
}