Skip to content

Automatic dualization feature for MathOptInterface.jl

License

Notifications You must be signed in to change notification settings

martincornejo/Dualization.jl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dualization.jl

Documentation Build Status Social
Build Status Codecov branch Gitter

Repository with implementations of the automatic dualization feature for MathOptInterface.jl conic optimization problems

Dualization.jl has two main features.

  • The function dualize that can dualize either a MathOptInterface.jl or JuMP.jl model.
dual_model = dualize(model)
  • The DualOptimizer that will pass the dual representation of the model to the solver of your choice.
model = Model(dual_optimizer(SOLVER.Optimizer))

Common use cases

Solve problems via dual representation

This is specially useful for conic optimization because some solvers can only represent specific formulation types. Dualizing the problem can leave a problem closer to the form expected by the solver without adding slack variables and constraints.

Solving an optimization problem via its dual representation can be useful because some conic solvers assume the model is in the standard form and others use the geometric form.

Standard form Geometric form
SDPT3 CDCS
SDPNAL SCS
CSDP ECOS
SDPA SeDuMi
Mosek MOI.FileFormats.SDPA

For more informations please read the documentation

Bilevel optimization

One classic method employed to solve bilevel optimization programs is to add the KKT conditions of the second level problem to the upper level problem. This package is used to obtain the dual feasibility constraint of the KKT conditions in: https://github.com/joaquimg/BilevelJuMP.jl .

About

Automatic dualization feature for MathOptInterface.jl

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%