Drake

Drake's MathematicalProgram class is used to solve the mathematical optimization problem in the following form.
minₓ f(x) s.t x ∈ S
Depending on the formulation of the objective function f, and the structure of the constraint set S, this optimization problem can be grouped into different categories (linear programming, quadratic programming, nonconvex nonlinear programming, etc). Drake will call suitable solvers for each category of optimization problem.
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 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 SolverInterface and passing the MathematicalProgram directly to the SolverInterface::Solve() method.
Our solver coverage still has many gaps, but is under active development.
Closedform solutions When the mathematical problem is formulated as the following linear system
find x s.t Ax = b
, then LinearSystemSolver provides efficient closed form solution.
When the mathematical problem is formulated as the following (convex) quadratic program with only linear equality constraint
min 0.5 xᵀHx + aᵀx + b s.t Ax = b
, then EqualityConstraintQPSolver provides efficient closed form solution.
Convex Optimization
Solver  LP  QP  SOCP  SDP  SOS 
† Gurobi  ♦  ♦  ♦  
† Mosek  ♦  ♦  ♦  ♦  ♦ 
SCS  ♦  ♦  ♦  ♦  ♦ 
OSQP  ♦  ♦  
CSDP  ♦  ♦  ♦ 
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 that Drake's precompiled binary releases provide SNOPT.
Classes  
class  MathematicalProgram 
MathematicalProgram stores the decision variables, the constraints and costs of an optimization problem. More...  