ZonoOpt v2.0.1
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
ZonoOpt::Zono Class Reference

Zonotope class. More...

#include <Zono.hpp>

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

Public Member Functions

 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.
 
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, 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, bool zero_one_form=false, 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 void remove_redundancy (int contractor_iter=100)
 Removes redundant constraints and any unused generators.
 
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(), OptSolution *solution=nullptr, const int n_leaves=std::numeric_limits< int >::max(), const int contractor_iter=100)
 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(), OptSolution *solution=nullptr) 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(), OptSolution *solution=nullptr) const
 Returns the projection of the point x onto the set object.
 
bool is_empty (const OptSettings &settings=OptSettings(), OptSolution *solution=nullptr) 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(), OptSolution *solution=nullptr)
 Computes support function of the set in the direction d.
 
bool contains_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings=OptSettings(), OptSolution *solution=nullptr) const
 Checks whether the point x is contained in the set object.
 
Box bounding_box (const OptSettings &settings=OptSettings(), OptSolution *solution=nullptr)
 Computes a bounding box of the set object as a Box object.
 
std::vector< ConZonoget_leaves (bool remove_redundancy=true, const OptSettings &settings=OptSettings(), 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.
 

Protected Member Functions

bool do_is_empty (const OptSettings &, OptSolution *) const override
 
Box do_bounding_box (const OptSettings &, OptSolution *) override
 
zono_float do_support (const Eigen::Vector< zono_float, -1 > &d, const OptSettings &, OptSolution *) 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(), OptSolution *solution=nullptr) const
 
Eigen::Vector< zono_float, -1 > do_optimize_over (const Eigen::SparseMatrix< zono_float > &P, const Eigen::Vector< zono_float, -1 > &q, zono_float c, const OptSettings &settings, OptSolution *solution) const override
 
Eigen::Vector< zono_float, -1 > do_project_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, OptSolution *solution) const override
 
bool do_contains_point (const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, OptSolution *solution) const override
 
std::unique_ptr< HybZonodo_complement (zono_float delta_m, bool, const OptSettings &, 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(), OptSolution *solution=nullptr) 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(), 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

Zonotope class.

A zonotope is defined as: Z = {G * xi + c | xi in [-1, 1]^nG}. Equivalently, the following shorthand can be used: Z = <G, c>. Optionally, in 0-1 form, the factors are xi in [0, 1]^nG. The set dimension is n, and the number of equality constraints is nC.

Constructor & Destructor Documentation

◆ Zono() [1/2]

ZonoOpt::Zono::Zono ( )
inline

Default constructor for Zono class.

◆ Zono() [2/2]

ZonoOpt::Zono::Zono ( const Eigen::SparseMatrix< zono_float > &  G,
const Eigen::Vector< zono_float, -1 > &  c,
const bool  zero_one_form = false 
)

Zono constructor.

Parameters
Ggenerator matrix
ccenter
zero_one_formtrue if set is in 0-1 form

◆ ~Zono()

ZonoOpt::Zono::~Zono ( )
overridedefault

Member Function Documentation

◆ clone()

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

Clone method for polymorphic behavior.

Reimplemented from ZonoOpt::ConZono.

◆ convert_form()

void ZonoOpt::Zono::convert_form ( )
overridevirtual

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::Zono::do_bounding_box ( const OptSettings ,
OptSolution  
)
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_is_empty()

bool ZonoOpt::Zono::do_is_empty ( const OptSettings ,
OptSolution  
) const
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ do_support()

zono_float ZonoOpt::Zono::do_support ( const Eigen::Vector< zono_float, -1 > &  d,
const OptSettings ,
OptSolution  
)
overrideprotectedvirtual

Reimplemented from ZonoOpt::ConZono.

◆ get_volume()

zono_float ZonoOpt::Zono::get_volume ( )

Get volume of zonotope.

Returns
volume

Reference: Gover and Krikorian 2010, "Determinants and the volumes of parallelotopes and zonotopes" Requires nG choose n determinant computations.

◆ print()

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

Returns set information as a string.

Reimplemented from ZonoOpt::ConZono.

◆ reduce_order()

std::unique_ptr< Zono > ZonoOpt::Zono::reduce_order ( int  n_o)

Perform zonotope order reduction.

Parameters
n_odesired order, must be greater than or equal to the dimension of the set
Returns
zonotope with order n_o

◆ set()

void ZonoOpt::Zono::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.

Parameters
Ggenerator matrix
ccenter
zero_one_formtrue if set is in 0-1 form

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