Dualization.jl

Automatic dualization feature for MathOptInterface.jl
Popularity
37 Stars
Updated Last
4 Months Ago
Started In
April 2019

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 .