Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DisjunctiveAlgorithms.jl

Stable Dev Build Status Coverage

An optimizer suite for generalized disjunctive programming (GDP).

DisjunctiveAlgorithms.jl is an MOI-layer solver for models that contain disjunctions encoded as vector constraints in DisjunctiveProgramming.DisjunctionSet. Disjunction-aware algorithms (currently logic-based outer approximation) solve the model by dispatching subproblems to user-provided MIP and NLP solvers.

The design follows MultiObjectiveAlgorithms.jl: one Optimizer that wraps inner solvers, with the algorithm and its options selected through optimizer attributes.

Usage with DisjunctiveProgramming.jl

using DisjunctiveProgramming, DisjunctiveAlgorithms, HiGHS, Ipopt
import DisjunctiveAlgorithms as DA

model = GDPModel(() -> DA.Optimizer(Ipopt.Optimizer, HiGHS.Optimizer))
@variable(model, 0 <= x <= 10)
@variable(model, Y[1:2], Logical)
@constraint(model, x <= 3, Disjunct(Y[1]))
@constraint(model, x^2 == 64, Disjunct(Y[2]))
@disjunction(model, Y)
@objective(model, Max, x)
optimize!(model, gdp_method = Direct())

Direct() lowers each disjunction to a single DisjunctionSet constraint that this package consumes directly; no Big-M or Hull reformulation is performed on the modeling side.

About

An optimizer suite for generalized disjunctive programming.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages