ZonoOpt 2.2.0
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
ZonoOpt::Point Class Referencefinal

Point class. More...

#include <Point.hpp>

Inheritance diagram for ZonoOpt::Point:
Inheritance graph
[legend]
Collaboration diagram for ZonoOpt::Point:
Collaboration graph
[legend]

Public Member Functions

 Point ()
 Default constructor for Point class.
 
 Point (const Eigen::Vector< zono_float, -1 > &c)
 Point constructor.
 
void set (const Eigen::Vector< zono_float, -1 > &c)
 Reset point object with the given parameters.
 
HybZonoclone () const override
 Clone method for polymorphic behavior.
 
std::string print () const override
 Returns set information as a string.
 
bool remove_redundancy (int) override
 Removes redundant constraints and any unused generators.
 
void convert_form () override
 Converts the set representation between -1-1 and 0-1 forms.
 
- Public Member Functions inherited from ZonoOpt::Zono
 Zono ()
 Default constructor for Zono class.
 
 Zono (const Eigen::SparseMatrix< zono_float > &G, const Eigen::Vector< zono_float, -1 > &c, const bool zero_one_form=false)
 Zono constructor.
 
 ~Zono () override=default
 
void set (const Eigen::SparseMatrix< zono_float > &G, const Eigen::Vector< zono_float, -1 > &c, bool zero_one_form=false)
 Reset zonotope object with the given parameters.
 
HybZonoclone () const override
 Clone method for polymorphic behavior.
 
std::unique_ptr< Zonoreduce_order (int n_o)
 Perform zonotope order reduction.
 
zono_float get_volume ()
 Get volume of zonotope.
 
Eigen::Vector< zono_float, -1 > get_center ()
 get center of zonotope
 
void convert_form () override
 Converts the set representation between -1-1 and 0-1 forms.
 
std::string print () const override
 Returns set information as a string.
 
- Public Member Functions inherited from ZonoOpt::ConZono
 ConZono ()
 Default constructor for ConZono class.
 
 ConZono (const Eigen::SparseMatrix< zono_float > &G, const Eigen::Vector< zono_float, -1 > &c, const Eigen::SparseMatrix< zono_float > &A, const Eigen::Vector< zono_float, -1 > &b, const bool zero_one_form=false)
 ConZono constructor.
 
 ~ConZono () override=default
 
void set (const Eigen::SparseMatrix< zono_float > &G, const Eigen::Vector< zono_float, -1 > &c, const Eigen::SparseMatrix< zono_float > &A, const Eigen::Vector< zono_float, -1 > &b, bool zero_one_form=false)
 Reset constrained zonotope object with the given parameters.
 
virtual void constraint_reduction ()
 Execute constraint reduction algorithm from Scott et. al. 2016.
 
virtual std::unique_ptr< Zonoto_zono_approx () const
 Compute outer approximation of constrained zonotope as zonotope using SVD.
 
- Public Member Functions inherited from ZonoOpt::HybZono
 HybZono ()=default
 Default constructor for HybZono class.
 
 HybZono (const Eigen::SparseMatrix< zono_float > &Gc, const Eigen::SparseMatrix< zono_float > &Gb, const Eigen::Vector< zono_float, -1 > &c, const Eigen::SparseMatrix< zono_float > &Ac, const Eigen::SparseMatrix< zono_float > &Ab, const Eigen::Vector< zono_float, -1 > &b, const bool zero_one_form=false, const bool sharp=false)
 HybZono constructor.
 
virtual ~HybZono ()=default
 
void set (const Eigen::SparseMatrix< zono_float > &Gc, const Eigen::SparseMatrix< zono_float > &Gb, const Eigen::Vector< zono_float, -1 > &c, const Eigen::SparseMatrix< zono_float > &Ac, const Eigen::SparseMatrix< zono_float > &Ab, const Eigen::Vector< zono_float, -1 > &b, bool zero_one_form=false, bool sharp=false)
 Reset hybrid zonotope object with the given parameters.
 
virtual int get_n () const
 Returns dimension of set.
 
virtual int get_nC () const
 Returns number of constraints in set definition.
 
virtual int get_nG () const
 Returns number of generators in set definition.
 
virtual int get_nGc () const
 Returns number of continuous generators in set definition.
 
virtual int get_nGb () const
 Returns number of binary generators in set definition.
 
virtual Eigen::SparseMatrix< zono_floatget_Gc () const
 Returns continuous generator matrix.
 
virtual Eigen::SparseMatrix< zono_floatget_Gb () const
 Returns binary generator matrix.
 
virtual Eigen::SparseMatrix< zono_floatget_G () const
 Returns generator matrix.
 
virtual Eigen::SparseMatrix< zono_floatget_Ac () const
 Returns continuous constraint matrix.
 
virtual Eigen::SparseMatrix< zono_floatget_Ab () const
 Returns binary constraint matrix.
 
virtual Eigen::SparseMatrix< zono_floatget_A () const
 Returns constraint matrix.
 
virtual Eigen::Vector< zono_float, -1 > get_c () const
 Returns center vector.
 
virtual Eigen::Vector< zono_float, -1 > get_b () const
 Returns constraint vector.
 
virtual bool is_0_1_form () const
 Returns true if factors are in range [0,1], false if they are in range [-1,1].
 
bool is_sharp () const
 Returns true if set is known to be sharp.
 
virtual std::unique_ptr< ConZonoconvex_relaxation () const
 Returns convex relaxation of the hybrid zonotope.
 
virtual std::unique_ptr< HybZonocomplement (const zono_float delta_m=100, const bool remove_redundancy=true, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const int n_leaves=std::numeric_limits< int >::max(), const int contractor_iter=10)
 Computes the complement of the set Z.
 
bool is_point () const
 Polymorphic type checking: true if set is a point.
 
bool is_zono () const
 Polymorphic type checking: true if set is a zonotope.
 
bool is_conzono () const
 Polymorphic type checking: true if set is a constrained zonotope.
 
bool is_hybzono () const
 Polymorphic type checking: true if set is a hybrid zonotope.
 
bool is_empty_set () const
 Polymorphic type checking: true if set is empty set object.
 
Eigen::Vector< zono_float, -1 > optimize_over (const Eigen::SparseMatrix< zono_float > &P, const Eigen::Vector< zono_float, -1 > &q, zono_float c=0, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 Solves optimization problem with quadratic objective over the current set.
 
Eigen::Vector< zono_float, -1 > project_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 Returns the projection of the point x onto the set object.
 
bool is_empty (const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 Returns true if the set is provably empty, false otherwise.
 
zono_float support (const Eigen::Vector< zono_float, -1 > &d, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams())
 Computes support function of the set in the direction d.
 
bool contains_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 Checks whether the point x is contained in the set object.
 
Box bounding_box (const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams())
 Computes a bounding box of the set object as a Box object.
 
std::vector< ConZonoget_leaves (bool remove_redundancy=true, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, int n_leaves=std::numeric_limits< int >::max(), int contractor_iter=10) const
 Computes individual constrained zonotopes whose union is the hybrid zonotope object.
 
std::unique_ptr< HybZonooperator+ (HybZono &other) const
 minkowski sum
 
std::unique_ptr< HybZonooperator+ (const Eigen::Vector< zono_float, -1 > &v) const
 minkowski sum with point
 
std::unique_ptr< HybZonooperator+ (const Box &box) const
 minkowski sum with box
 
void operator+= (HybZono &other)
 in-place minkowski sum
 
void operator+= (const Eigen::Vector< zono_float, -1 > &v)
 in-place minkowski sum with point
 
void operator+= (const Box &box)
 in-place minkowski sum with box
 
std::unique_ptr< HybZonooperator* (zono_float f) const
 scalar multiplication: returns f*Z
 
void operator*= (zono_float f)
 scalar multiplication in place
 
std::unique_ptr< HybZonooperator- (Zono &other)
 pontryagin difference
 
std::unique_ptr< HybZonooperator- (const Eigen::Vector< zono_float, -1 > &v)
 pontryagin difference with point
 
std::unique_ptr< HybZonooperator- (const Box &box)
 pontryagin difference with box
 
void operator-= (Zono &other)
 in-place pontryagin difference
 
void operator-= (const Eigen::Vector< zono_float, -1 > &v)
 in-place pontryagin difference with point
 
void operator-= (const Box &box)
 in-place pontryagin difference with box
 
std::unique_ptr< HybZonooperator* (HybZono &other) const
 cartesian product
 
std::unique_ptr< HybZonooperator* (const Box &box) const
 cartesian product with box
 
void operator*= (HybZono &other)
 in-place cartesian product
 
void operator*= (const Box &box)
 in-place cartesian product with box
 
std::unique_ptr< HybZonooperator& (HybZono &other) const
 intersection
 
std::unique_ptr< HybZonooperator| (HybZono &other) const
 union
 
std::unique_ptr< HybZonooperator- () const
 unary minus: returns -I * this
 

Protected Member Functions

Eigen::Vector< zono_float, -1 > do_optimize_over (const Eigen::SparseMatrix< zono_float > &, const Eigen::Vector< zono_float, -1 > &, zono_float, const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) const override
 
Eigen::Vector< zono_float, -1 > do_project_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) const override
 
zono_float do_support (const Eigen::Vector< zono_float, -1 > &d, const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) override
 
bool do_contains_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) const override
 
Box do_bounding_box (const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) override
 
- Protected Member Functions inherited from ZonoOpt::Zono
bool do_is_empty (const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) const override
 
Box do_bounding_box (const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) override
 
zono_float do_support (const Eigen::Vector< zono_float, -1 > &d, const OptSettings &, std::shared_ptr< OptSolution > *, const WarmStartParams &) override
 
- Protected Member Functions inherited from ZonoOpt::ConZono
OptSolution qp_opt (const Eigen::SparseMatrix< zono_float > &P, const Eigen::Vector< zono_float, -1 > &q, zono_float c, const Eigen::SparseMatrix< zono_float > &A, const Eigen::Vector< zono_float, -1 > &b, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 
std::unique_ptr< HybZonodo_complement (zono_float delta_m, bool, const OptSettings &, std::shared_ptr< OptSolution > *, int, int) override
 
- Protected Member Functions inherited from ZonoOpt::HybZono
OptSolution mi_opt (const Eigen::SparseMatrix< zono_float > &P, const Eigen::Vector< zono_float, -1 > &q, zono_float c, const Eigen::SparseMatrix< zono_float > &A, const Eigen::Vector< zono_float, -1 > &b, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr, const WarmStartParams &warm_start_params=WarmStartParams()) const
 
std::vector< OptSolutionmi_opt_multisol (const Eigen::SparseMatrix< zono_float > &P, const Eigen::Vector< zono_float, -1 > &q, zono_float c, const Eigen::SparseMatrix< zono_float > &A, const Eigen::Vector< zono_float, -1 > &b, int n_sols, const OptSettings &settings=OptSettings(), std::shared_ptr< OptSolution > *solution=nullptr) const
 

Additional Inherited Members

- Static Protected Member Functions inherited from ZonoOpt::HybZono
static void remove_generators (Eigen::SparseMatrix< zono_float > &G, Eigen::SparseMatrix< zono_float > &A, const std::set< int > &idx_to_remove)
 
static std::set< intfind_unused_generators (const Eigen::SparseMatrix< zono_float > &G, const Eigen::SparseMatrix< zono_float > &A)
 
- Protected Attributes inherited from ZonoOpt::HybZono
Eigen::SparseMatrix< zono_floatG = Eigen::SparseMatrix<zono_float>(0, 0)
 generator matrix G = [Gc, Gb]
 
Eigen::SparseMatrix< zono_floatGc = Eigen::SparseMatrix<zono_float>(0, 0)
 continuous generator matrix
 
Eigen::SparseMatrix< zono_floatGb = Eigen::SparseMatrix<zono_float>(0, 0)
 binary generator matrix
 
Eigen::SparseMatrix< zono_floatA = Eigen::SparseMatrix<zono_float>(0, 0)
 constraint matrix A = [Ac, Ab]
 
Eigen::SparseMatrix< zono_floatAc = Eigen::SparseMatrix<zono_float>(0, 0)
 continuous constraint matrix
 
Eigen::SparseMatrix< zono_floatAb = Eigen::SparseMatrix<zono_float>(0, 0)
 binary constraint matrix
 
Eigen::Vector< zono_float, -1 > c = Eigen::Vector<zono_float, -1>(0)
 center vector
 
Eigen::Vector< zono_float, -1 > b = Eigen::Vector<zono_float, -1>(0)
 constraint vector
 
int n = 0
 set dimension
 
int nG = 0
 total number of factors. nG = nGc + nGb
 
int nGc = 0
 number of continuous factors
 
int nGb = 0
 number of binary factors
 
int nC = 0
 number of constraints
 
bool zero_one_form = false
 flag to indicate whether the set is in 0-1 or -1-1 form
 
bool sharp = false
 flag to indicate whether the set is known to be sharp (i.e., convex relaxation = convex hull)
 

Detailed Description

Point class.

A point is defined entirely by the center vector c.

Constructor & Destructor Documentation

◆ Point() [1/2]

ZonoOpt::Point::Point ( )
inline

Default constructor for Point class.

◆ Point() [2/2]

ZonoOpt::Point::Point ( const Eigen::Vector< zono_float, -1 > &  c)
explicit

Point constructor.

Parameters
ccenter

Member Function Documentation

◆ clone()

HybZono * ZonoOpt::Point::clone ( ) const
overridevirtual

Clone method for polymorphic behavior.

Reimplemented from ZonoOpt::ConZono.

◆ convert_form()

void ZonoOpt::Point::convert_form ( )
inlineoverridevirtual

Converts the set representation between -1-1 and 0-1 forms.

This method converts the set representation between -1-1 and 0-1 forms. If the set is in -1-1 form, then xi_c in [-1,1] and xi_b in {-1,1}. If the set is in 0-1 form, then xi_c in [0,1] and xi_b in {0,1}.

Reimplemented from ZonoOpt::ConZono.

◆ do_bounding_box()

Box ZonoOpt::Point::do_bounding_box ( const OptSettings ,
std::shared_ptr< OptSolution > *  ,
const WarmStartParams  
)
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_contains_point()

bool ZonoOpt::Point::do_contains_point ( const Eigen::Vector< zono_float, -1 > &  x,
const OptSettings ,
std::shared_ptr< OptSolution > *  ,
const WarmStartParams  
) const
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_optimize_over()

Eigen::Vector< zono_float, -1 > ZonoOpt::Point::do_optimize_over ( const Eigen::SparseMatrix< zono_float > &  ,
const Eigen::Vector< zono_float, -1 > &  ,
zono_float  ,
const OptSettings ,
std::shared_ptr< OptSolution > *  ,
const WarmStartParams  
) const
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_project_point()

Eigen::Vector< zono_float, -1 > ZonoOpt::Point::do_project_point ( const Eigen::Vector< zono_float, -1 > &  x,
const OptSettings ,
std::shared_ptr< OptSolution > *  ,
const WarmStartParams  
) const
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_support()

zono_float ZonoOpt::Point::do_support ( const Eigen::Vector< zono_float, -1 > &  d,
const OptSettings ,
std::shared_ptr< OptSolution > *  ,
const WarmStartParams  
)
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ print()

std::string ZonoOpt::Point::print ( ) const
overridevirtual

Returns set information as a string.

Reimplemented from ZonoOpt::ConZono.

◆ remove_redundancy()

bool ZonoOpt::Point::remove_redundancy ( int  contractor_iter)
inlineoverridevirtual

Removes redundant constraints and any unused generators.

Parameters
contractor_iternumber of interval contractor iterations to run
Returns
true if successful, false if unable to reduce the complexity of the set representation

This method uses an interval contractor to detect generators that can be removed. Additionally, any linearly dependent rows of the constraint matrix A are removed. If the linearly dependent constraints are not consistent (e.g., if A = [1, 0.1; 1, 0.1] and b = [1; 0.8]), the returned set is not equivalent to the original set. Unused factors are also removed.

Reimplemented from ZonoOpt::HybZono.

◆ set()

void ZonoOpt::Point::set ( const Eigen::Vector< zono_float, -1 > &  c)

Reset point object with the given parameters.

Parameters
ccenter

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