Drake
Formulating and Solving Optimization Problems

Classes

class  MathematicalProgram
 MathematicalProgram stores the decision variables, the constraints and costs of an optimization problem. More...
 

Detailed Description

Drake wraps a number of commercial solvers (+ a few custom solvers) to provide a common interface for convex optimization, mixed-integer convex optimization, and other non-convex 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.

Closed-form solutions

The LinearSystemSolver and EqualityConstrainedQPSolver classes provide efficient closed-form solutions to these special cases.

Convex Optimization

Solver LP QP SOCP SDP SOS
Gurobi
Mosek
SCS
OSQP

Mixed-Integer 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).