Drake

Drake wraps a number of commercial solvers (+ a few custom solvers) to provide a common interface for convex optimization, mixedinteger convex optimization, and other nonconvex mathematical programs.
The MathematicalProgram class handles the coordination of decision variables, objectives, and constraints. The MathematicalProgram::Solve() method reflects on the accumulated objectives and constraints and will dispatch to the most appropriate solver. Alternatively, one can invoke specific solver by instantiating its MathematicalProgramSolverInterface and passing the MathematicalProgram directly to the MathematicalProgramSolverInterface::Solve() method.
Our solver coverage still has many gaps, but is under active development.
Closedform solutions
The LinearSystemSolver and EqualityConstrainedQPSolver classes provide efficient closedform solutions to these special cases.
Convex Optimization
Solver  LP  QP  SOCP  SDP  SOS 
† Gurobi  ♦  ♦  ♦  
† Mosek  ♦  ♦  ♦  ♦ 
MixedInteger Convex Optimization
Solver  MILP  MIQP  MISOCP  MISDP 
† Gurobi  ♦  ♦  ♦  
† Mosek  ♦  ♦  ♦ 
Nonconvex Programming
Solver  Nonlinear Program  LCP  SMT 
† SNOPT  ♦  
Ipopt  ♦  
NLopt  ♦  
Moby LCP  ♦  
dReal  ♦ 
† indicates that this is a commercial solver which requires a license (note that some have free licenses for academics).
Note: Drake must be able to locate each solver on your system during the configuration step (when you run cmake), otherwise that solver will be disabled. To simplify this process, we have attempted to make solvers available as a part of the Drake superbuild, but we are unable to publicly share the distributions for commercially licensed solvers.