Dualization.jl

DocumentationBuild StatusSocial
Build StatusCodecov branchGitter

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(with_optimizer(DualOptimizer, SOLVER.Optimizer(options...)))

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 formGeometric form
SDPT3CDCS
SDPNALSCS
CSDPECOS
SDPASeDuMi
Mosek

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 .