Repository with implementations of the automatic dualization feature for MathOptInterface.jl conic optimization problems
Dualization.jl has two main features.
- The function
dualizethat can dualize either a
dual_model = dualize(model)
DualOptimizerthat 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|
For more informations please read the documentation
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 .