RobotLocomotion / drake

Model-based design and verification for robotics.
https://drake.mit.edu
Other
3.29k stars 1.26k forks source link

support exponential cone in MathematicalProgram #11101

Closed hongkai-dai closed 5 years ago

hongkai-dai commented 5 years ago

The exponential cone has this form

{(x,y,z) | y e^(x/y) <= z, y>0 }

Some of the convex solvers support this cone (SCS, Mosek). Many of our optimization problem can be formulated using exponential cone. For example, if we want to minimize the volume of an ellipsoid {x | x'Ax <= 1}, we will impose this cost

max log(det(A))
s.t A is positive semidefinite

This cost can be reformulated to the conic optimization form

max t
s.t [A        Z]
    [Z' diag(Z)] is positive semidefinite
   ∑ᵢ log(Z(i, i)) >= t

where Z is a lower triangular matrix. The constraint ∑ᵢ log(Z(i, i)) >= t can be formulated using the exponential cone

(y(i), 1, Z(i, i)) is in exponential cone
∑ᵢ y(i) >= t
hongkai-dai commented 5 years ago

The exponential cone constraint is supported when the user calls SCS solver through MathematicalProgram. For Mosek, currently Drake uses Mosek 8, whose API for exponential cone constraint is not well supported. I will wait until Mosek 9 has a stable release (currently still beta release), and then upgrade Drake's Mosek to Mosek 9, and add the exponential cone constraint through Mosek 9's API.

EDIT (eric): FTR, Mosek 9 landed as of #11595