Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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(nlp_solver = Ipopt.Optimizer,
    mip_solver = 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 = MOIDisjunction())

MOIDisjunction() 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