Drake
Drake C++ Documentation
Loading...
Searching...
No Matches

Detailed Description

Implements a spectrahedron (the feasible set of a semidefinite program).

The ambient dimension of the set is N(N+1)/2; the number of variables required to describe the N-by-N semidefinite matrix.

By convention, a zero-dimensional spectrahedron is considered nonempty.

#include <drake/geometry/optimization/spectrahedron.h>

Public Member Functions

 Spectrahedron ()
 Default constructor (yields the zero-dimensional nonempty set).
 Spectrahedron (const solvers::MathematicalProgram &prog)
 Constructs the spectrahedron from a MathematicalProgram.
 ~Spectrahedron () final
double CalcVolume () const
bool IsBounded (Parallelism parallelism=Parallelism::None()) const
 Spectrahedron uses the generic method for boundedness checking, which uses parallelism.
Implements CopyConstructible, CopyAssignable, MoveConstructible, MoveAssignable
 Spectrahedron (const Spectrahedron &)=default
Spectrahedronoperator= (const Spectrahedron &)=default
 Spectrahedron (Spectrahedron &&)=default
Spectrahedronoperator= (Spectrahedron &&)=default
Public Member Functions inherited from ConvexSet
virtual ~ConvexSet ()
std::unique_ptr< ConvexSetClone () const
 Creates a unique deep copy of this set.
int ambient_dimension () const
 Returns the dimension of the vector space in which the elements of this set are evaluated.
bool IntersectsWith (const ConvexSet &other) const
 Returns true iff the intersection between this and other is non-empty.
bool IsBounded (Parallelism parallelism=Parallelism::None()) const
 Returns true iff the set is bounded, e.g., there exists an element-wise finite lower and upper bound for the set.
bool IsEmpty () const
 Returns true iff the set is empty.
std::optional< Eigen::VectorXd > MaybeGetPoint () const
 If this set trivially contains exactly one point, returns the value of that point.
std::optional< Eigen::VectorXd > MaybeGetFeasiblePoint () const
 Returns a feasible point within this convex set if it is nonempty, and nullopt otherwise.
bool PointInSet (const Eigen::Ref< const Eigen::VectorXd > &x, double tol=0) const
 Returns true iff the point x is contained in the set.
std::pair< VectorX< symbolic::Variable >, std::vector< solvers::Binding< solvers::Constraint > > > AddPointInSetConstraints (solvers::MathematicalProgram *prog, const Eigen::Ref< const solvers::VectorXDecisionVariable > &vars) const
 Adds a constraint to an existing MathematicalProgram enforcing that the point defined by vars is inside the set.
std::vector< solvers::Binding< solvers::Constraint > > AddPointInNonnegativeScalingConstraints (solvers::MathematicalProgram *prog, const Eigen::Ref< const solvers::VectorXDecisionVariable > &x, const symbolic::Variable &t) const
 Let S be this convex set.
std::vector< solvers::Binding< solvers::Constraint > > AddPointInNonnegativeScalingConstraints (solvers::MathematicalProgram *prog, const Eigen::Ref< const Eigen::MatrixXd > &A, const Eigen::Ref< const Eigen::VectorXd > &b, const Eigen::Ref< const Eigen::VectorXd > &c, double d, const Eigen::Ref< const solvers::VectorXDecisionVariable > &x, const Eigen::Ref< const solvers::VectorXDecisionVariable > &t) const
 Let S be this convex set.
std::pair< std::unique_ptr< Shape >, math::RigidTransformd > ToShapeWithPose () const
 Constructs a Shape and a pose of the set in the world frame for use in the SceneGraph geometry ecosystem.
double CalcVolume () const
 Computes the exact volume for the convex set.
SampledVolume CalcVolumeViaSampling (RandomGenerator *generator, const double desired_rel_accuracy=1e-2, const int max_num_samples=1e4) const
 Calculates an estimate of the volume of the convex set using sampling and performing Monte Carlo integration.
std::optional< std::pair< std::vector< double >, Eigen::MatrixXd > > Projection (const Eigen::Ref< const Eigen::MatrixXd > &points) const
 Computes in the L₂ norm the distance and the nearest point in this convex set to every column of points.
bool has_exact_volume () const
 Returns true if the exact volume can be computed for this convex set instance.

Static Public Member Functions

static const solvers::ProgramAttributessupported_attributes ()
 Returns the list of solvers::ProgramAttributes supported by this class.

Additional Inherited Members

Protected Member Functions inherited from ConvexSet
 ConvexSet (int ambient_dimension, bool has_exact_volume)
 For use by derived classes to construct a ConvexSet.
template<typename Archive>
void Serialize (Archive *a)
 Implements non-virtual base class serialization.
virtual std::optional< bool > DoIsBoundedShortcutParallel (Parallelism) const
 Non-virtual interface implementation for DoIsBoundedShortcutParallel().
virtual std::vector< std::optional< double > > DoProjectionShortcut (const Eigen::Ref< const Eigen::MatrixXd > &points, EigenPtr< Eigen::MatrixXd > projected_points) const
 Non-virtual interface implementation for DoProjectionShortcut().
virtual bool DoIsEmpty () const
 Non-virtual interface implementation for IsEmpty().
virtual std::optional< Eigen::VectorXd > DoMaybeGetPoint () const
 Non-virtual interface implementation for MaybeGetPoint().
virtual std::optional< Eigen::VectorXd > DoMaybeGetFeasiblePoint () const
 Non-virtual interface implementation for MaybeGetFeasiblePoint().
virtual bool DoPointInSet (const Eigen::Ref< const Eigen::VectorXd > &x, double tol) const
 Non-virtual interface implementation for PointInSet().
virtual double DoCalcVolume () const
 Non-virtual interface implementation for CalcVolume().
std::optional< symbolic::VariableHandleZeroAmbientDimensionConstraints (solvers::MathematicalProgram *prog, const ConvexSet &set, std::vector< solvers::Binding< solvers::Constraint > > *constraints) const
 Instances of subclasses such as CartesianProduct and MinkowskiSum can have constituent sets with zero ambient dimension, which much be handled in a special manner when calling methods such as DoAddPointInSetConstraints.
virtual std::unique_ptr< ConvexSetDoAffineHullShortcut (std::optional< double > tol) const
 NVI implementation of DoAffineHullShortcut, which trivially returns null.
 ConvexSet (const ConvexSet &)=default
ConvexSetoperator= (const ConvexSet &)=default
 ConvexSet (ConvexSet &&)=default
ConvexSetoperator= (ConvexSet &&)=default
Static Protected Member Functions inherited from ConvexSet
static std::unique_ptr< ConvexSetAffineHullShortcut (const ConvexSet &self, std::optional< double > tol)
 When there is a more efficient strategy to compute the affine hull of this set, returns affine hull as an AffineSubspace.

Constructor & Destructor Documentation

◆ Spectrahedron() [1/4]

Spectrahedron ( const Spectrahedron & )
default

◆ Spectrahedron() [2/4]

Spectrahedron ( Spectrahedron && )
default

◆ Spectrahedron() [3/4]

Default constructor (yields the zero-dimensional nonempty set).

◆ Spectrahedron() [4/4]

Spectrahedron ( const solvers::MathematicalProgram & prog)
explicit

Constructs the spectrahedron from a MathematicalProgram.

Exceptions
std::exceptionif prog.required_capabilities() is not a subset of supported_attributes().

◆ ~Spectrahedron()

~Spectrahedron ( )
final

Member Function Documentation

◆ CalcVolume()

double CalcVolume ( ) const
Exceptions
Notimplemented.

◆ IsBounded()

bool IsBounded ( Parallelism parallelism = Parallelism::None()) const

Spectrahedron uses the generic method for boundedness checking, which uses parallelism.

Parameters
parallelismThe maximum number of threads to use.
Note
See parent class's documentation for more details.

◆ operator=() [1/2]

Spectrahedron & operator= ( const Spectrahedron & )
default

◆ operator=() [2/2]

Spectrahedron & operator= ( Spectrahedron && )
default

◆ supported_attributes()

const solvers::ProgramAttributes & supported_attributes ( )
static

Returns the list of solvers::ProgramAttributes supported by this class.


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