DisjunctiveProgramming.jl

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
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
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}
}