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 Version | Documentation | Build Status | Citation |
---|---|---|---|
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
InfiniteOpt
is licensed under the MIT "Expat" 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
If you use DisjunctiveProgramming.jl in your research, we would greatly appreciate your citing it.
@article{perez2023disjunctiveprogramming,
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},
year={2023}
}