Drake
Drake C++ Documentation

Detailed Description

Impose a generic (potentially nonlinear) cost represented as a symbolic Expression.

Expression::Evaluate is called on every constraint evaluation.

Uses symbolic::Jacobian to provide the gradients to the AutoDiff method.

#include <drake/solvers/cost.h>

Public Member Functions

 ExpressionCost (const symbolic::Expression &e)
 
const VectorXDecisionVariablevars () const
 
const symbolic::Expressionexpression () const
 
Does not allow copy, move, or assignment
 ExpressionCost (const ExpressionCost &)=delete
 
ExpressionCostoperator= (const ExpressionCost &)=delete
 
 ExpressionCost (ExpressionCost &&)=delete
 
ExpressionCostoperator= (ExpressionCost &&)=delete
 
- Public Member Functions inherited from Cost
 Cost (const Cost &)=delete
 
Costoperator= (const Cost &)=delete
 
 Cost (Cost &&)=delete
 
Costoperator= (Cost &&)=delete
 
- Public Member Functions inherited from EvaluatorBase
virtual ~EvaluatorBase ()
 
void Eval (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::VectorXd *y) const
 Evaluates the expression. More...
 
void Eval (const Eigen::Ref< const AutoDiffVecXd > &x, AutoDiffVecXd *y) const
 Evaluates the expression. More...
 
void Eval (const Eigen::Ref< const VectorX< symbolic::Variable >> &x, VectorX< symbolic::Expression > *y) const
 Evaluates the expression. More...
 
void set_description (const std::string &description)
 Set a human-friendly description for the evaluator. More...
 
const std::string & get_description () const
 Getter for a human-friendly description for the evaluator. More...
 
std::ostream & Display (std::ostream &os, const VectorX< symbolic::Variable > &vars) const
 Formats this evaluator into the given stream using vars for the bound decision variable names. More...
 
std::ostream & Display (std::ostream &os) const
 Formats this evaluator into the given stream, without displaying the decision variables it is bound to. More...
 
std::string ToLatex (const VectorX< symbolic::Variable > &vars, int precision=3) const
 Returns a LaTeX string describing this evaluator. More...
 
int num_vars () const
 Getter for the number of variables, namely the number of rows in x, as used in Eval(x, y). More...
 
int num_outputs () const
 Getter for the number of outputs, namely the number of rows in y, as used in Eval(x, y). More...
 
void SetGradientSparsityPattern (const std::vector< std::pair< int, int >> &gradient_sparsity_pattern)
 Set the sparsity pattern of the gradient matrix ∂y/∂x (the gradient of y value in Eval, w.r.t x in Eval) . More...
 
const std::optional< std::vector< std::pair< int, int > > > & gradient_sparsity_pattern () const
 Returns the vector of (row_index, col_index) that contains all the entries in the gradient of Eval function (∂y/∂x) whose value could be non-zero, namely if ∂yᵢ/∂xⱼ could be non-zero, then the pair (i, j) is in gradient_sparsity_pattern. More...
 
bool is_thread_safe () const
 Returns whether it is safe to call Eval in parallel. More...
 
 EvaluatorBase (const EvaluatorBase &)=delete
 
EvaluatorBaseoperator= (const EvaluatorBase &)=delete
 
 EvaluatorBase (EvaluatorBase &&)=delete
 
EvaluatorBaseoperator= (EvaluatorBase &&)=delete
 

Protected Member Functions

void DoEval (const Eigen::Ref< const Eigen::VectorXd > &x, Eigen::VectorXd *y) const override
 Implements expression evaluation for scalar type double. More...
 
void DoEval (const Eigen::Ref< const AutoDiffVecXd > &x, AutoDiffVecXd *y) const override
 Implements expression evaluation for scalar type AutoDiffXd. More...
 
void DoEval (const Eigen::Ref< const VectorX< symbolic::Variable >> &x, VectorX< symbolic::Expression > *y) const override
 Implements expression evaluation for scalar type symbolic::Expression. More...
 
std::ostream & DoDisplay (std::ostream &, const VectorX< symbolic::Variable > &) const override
 NVI implementation of Display. More...
 
std::string DoToLatex (const VectorX< symbolic::Variable > &, int) const override
 
- Protected Member Functions inherited from Cost
 Cost (int num_vars, const std::string &description="")
 Constructs a cost evaluator. More...
 
- Protected Member Functions inherited from EvaluatorBase
 EvaluatorBase (int num_outputs, int num_vars, const std::string &description="")
 Constructs a evaluator. More...
 
void set_num_outputs (int num_outputs)
 
void set_is_thread_safe (bool is_thread_safe)
 

Constructor & Destructor Documentation

◆ ExpressionCost() [1/3]

ExpressionCost ( const ExpressionCost )
delete

◆ ExpressionCost() [2/3]

ExpressionCost ( ExpressionCost &&  )
delete

◆ ExpressionCost() [3/3]

ExpressionCost ( const symbolic::Expression e)
explicit

Member Function Documentation

◆ DoDisplay()

std::ostream& DoDisplay ( std::ostream &  os,
const VectorX< symbolic::Variable > &  vars 
) const
overrideprotectedvirtual

NVI implementation of Display.

The default implementation will report the NiceTypeName, get_description, and list the bound variables. Subclasses may override to customize the message.

Precondition
vars size is consistent with num_vars".

Reimplemented from EvaluatorBase.

◆ DoEval() [1/3]

void DoEval ( const Eigen::Ref< const Eigen::VectorXd > &  x,
Eigen::VectorXd *  y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type double.

Parameters
xInput vector.
yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ DoEval() [2/3]

void DoEval ( const Eigen::Ref< const AutoDiffVecXd > &  x,
AutoDiffVecXd y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type AutoDiffXd.

Parameters
xInput vector.
yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ DoEval() [3/3]

void DoEval ( const Eigen::Ref< const VectorX< symbolic::Variable >> &  x,
VectorX< symbolic::Expression > *  y 
) const
overrideprotectedvirtual

Implements expression evaluation for scalar type symbolic::Expression.

Parameters
[in]xInput vector.
[out]yOutput vector.
Precondition
x must be of size num_vars x 1.
Postcondition
y will be of size num_outputs x 1.

Implements EvaluatorBase.

◆ DoToLatex()

std::string DoToLatex ( const VectorX< symbolic::Variable > &  ,
int   
) const
overrideprotectedvirtual

Reimplemented from EvaluatorBase.

◆ expression()

const symbolic::Expression& expression ( ) const
Returns
the symbolic expression.

◆ operator=() [1/2]

ExpressionCost& operator= ( const ExpressionCost )
delete

◆ operator=() [2/2]

ExpressionCost& operator= ( ExpressionCost &&  )
delete

◆ vars()

const VectorXDecisionVariable& vars ( ) const
Returns
the list of the variables involved in the vector of expressions, in the order that they are expected to be received during DoEval. Any Binding that connects this constraint to decision variables should pass this list of variables to the Binding.

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