Description
We should be able to automate DLL for conic problems by using the projections in https://github.com/matbesancon/MathOptSetDistances.jl/blob/master/src/projections.jl. Hopefully we can differentiate through those functions 🤞
There may be some complexity with detecting the variable decomposition (which variables do we predict then project (y
) vs solve for (z
)) in general. Probably a good default is to use z
for variable-in-set constraints and y
for the rest.
Also relevant:
https://github.com/jump-dev/Dualization.jl -- formulate the dual MOI/JuMP model
https://github.com/matbesancon/MathOptSetDistances.jl -- project predicted y
onto its cone
https://github.com/jump-dev/ParametricOptInterface.jl -- formulate z
completion problem with y
as parameters
https://github.com/jump-dev/DiffOpt.jl -- differentiate through z
completion (compute dobj/dy
jump-dev/DiffOpt.jl#282)
Would also be super cool to detect special cases (e.g. examples 1, 2, 3 in DLL) to handle those efficiently.