Drake
MinDistanceFromPlaneToOrigin Class Reference

An SOCP with Lorentz cone and rotated Lorentz cone constraints. More...

#include <solvers/test/optimization_examples.h>

Public Member Functions

 MinDistanceFromPlaneToOrigin (const Eigen::MatrixXd &A, const Eigen::VectorXd &b, CostForm cost_form, ConstraintForm constraint_form)
 
MathematicalProgramprog_lorentz () const
 
MathematicalProgramprog_rotated_lorentz () const
 
void SetInitialGuess ()
 
void CheckSolution (bool is_rotated_cone) const
 
Does not allow copy, move, or assignment
 MinDistanceFromPlaneToOrigin (const MinDistanceFromPlaneToOrigin &)=delete
 
MinDistanceFromPlaneToOriginoperator= (const MinDistanceFromPlaneToOrigin &)=delete
 
 MinDistanceFromPlaneToOrigin (MinDistanceFromPlaneToOrigin &&)=delete
 
MinDistanceFromPlaneToOriginoperator= (MinDistanceFromPlaneToOrigin &&)=delete
 

Static Public Member Functions

static std::vector< CostFormcost_forms ()
 
static std::vector< ConstraintFormconstraint_forms ()
 

Detailed Description

An SOCP with Lorentz cone and rotated Lorentz cone constraints.

The objective is to find the smallest distance from a hyperplane A * x = b to the origin. We can solve the following SOCP with Lorentz cone constraint min t s.t t >= sqrt(xᵀ*x) A * x = b. Alternatively, we can solve the following SOCP with rotated Lorentz cone constraint min t s.t t >= xᵀ*x A * x = b.

The optimal solution of this equality constrained QP can be found using Lagrangian method. The optimal solution x* and Lagrangian multiplier z* satisfy A_hat * [x*; z*] = [b; 0] where A_hat = [A 0; 2*I Aᵀ].

Constructor & Destructor Documentation

MinDistanceFromPlaneToOrigin ( const Eigen::MatrixXd &  A,
const Eigen::VectorXd &  b,
CostForm  cost_form,
ConstraintForm  constraint_form 
)

Member Function Documentation

void CheckSolution ( bool  is_rotated_cone) const

Here is the call graph for this function:

Here is the caller graph for this function:

static std::vector<ConstraintForm> constraint_forms ( )
inlinestatic

Here is the caller graph for this function:

static std::vector<CostForm> cost_forms ( )
inlinestatic

Here is the caller graph for this function:

MathematicalProgram* prog_lorentz ( ) const
inline

Here is the caller graph for this function:

MathematicalProgram* prog_rotated_lorentz ( ) const
inline

Here is the caller graph for this function:

void SetInitialGuess ( )

Here is the caller graph for this function:


The documentation for this class was generated from the following files: