1#ifndef ZONOOPT_HYBZONO_HPP_
2#define ZONOOPT_HYBZONO_HPP_
27using namespace detail;
66 HybZono(
const Eigen::SparseMatrix<zono_float>&
Gc,
const Eigen::SparseMatrix<zono_float>&
Gb,
const Eigen::Vector<zono_float, -1>&
c,
67 const Eigen::SparseMatrix<zono_float>&
Ac,
const Eigen::SparseMatrix<zono_float>&
Ab,
const Eigen::Vector<zono_float, -1>&
b,
85 void set(
const Eigen::SparseMatrix<zono_float>&
Gc,
const Eigen::SparseMatrix<zono_float>&
Gb,
const Eigen::Vector<zono_float, -1>&
c,
86 const Eigen::SparseMatrix<zono_float>&
Ac,
const Eigen::SparseMatrix<zono_float>&
Ab,
const Eigen::Vector<zono_float, -1>&
b,
101 virtual int get_n()
const {
return this->
n; }
136 virtual Eigen::SparseMatrix<zono_float>
get_Gc()
const {
return this->
Gc; }
143 virtual Eigen::SparseMatrix<zono_float>
get_Gb()
const {
return this->
Gb; }
150 virtual Eigen::SparseMatrix<zono_float>
get_G()
const {
return this->
G; }
157 virtual Eigen::SparseMatrix<zono_float>
get_Ac()
const {
return this->
Ac; }
164 virtual Eigen::SparseMatrix<zono_float>
get_Ab()
const {
return this->
Ab; }
171 virtual Eigen::SparseMatrix<zono_float>
get_A()
const {
return this->
A; }
224 virtual std::unique_ptr<HybZono>
remove_redundancy(
int contractor_iter=10)
const;
254 std::shared_ptr<OptSolution>* solution=
nullptr,
const int n_leaves = std::numeric_limits<int>::max(),
const int contractor_iter=10)
294 virtual std::string
print()
const;
319 const Eigen::SparseMatrix<zono_float> &P,
const Eigen::Vector<zono_float, -1> &q,
zono_float c=0,
425 std::shared_ptr<OptSolution>* solution=
nullptr,
int n_leaves = std::numeric_limits<int>::max(),
int contractor_iter=10)
const;
429 const Eigen::SparseMatrix<zono_float>& R,
const Eigen::Vector<zono_float, -1>&
s);
435 const Eigen::SparseMatrix<zono_float>& R);
437 const std::vector<int>&
dims);
439 const Eigen::Vector<zono_float, -1>&
f,
const Eigen::SparseMatrix<zono_float>& R);
441 friend std::unique_ptr<ConZono>
convex_hull(
const std::vector<std::shared_ptr<HybZono>>&
Zs);
443 friend std::unique_ptr<HybZono>
constrain(
HybZono&
Z,
const Eigen::SparseMatrix<zono_float>&
H,
444 const Eigen::Vector<zono_float, -1>&
f,
char direction,
const Eigen::SparseMatrix<zono_float>& R);
466 std::unique_ptr<HybZono>
operator+(
const Eigen::Vector<zono_float, -1>&
v)
const;
475 friend std::unique_ptr<HybZono>
operator+(
const Eigen::Vector<zono_float, -1>&
v,
HybZono&
Z);
506 void operator+=(
const Eigen::Vector<zono_float, -1>&
v);
522 friend std::unique_ptr<HybZono>
operator*(
const Eigen::SparseMatrix<zono_float>& R,
const HybZono&
Z);
531 friend std::unique_ptr<HybZono>
operator*(
const Eigen::Matrix<zono_float, -1, -1>& R,
const HybZono&
Z);
579 std::unique_ptr<HybZono>
operator-(
const Eigen::Vector<zono_float, -1>&
v);
600 void operator-=(
const Eigen::Vector<zono_float, -1>&
v);
665 std::unique_ptr<HybZono>
operator-()
const;
672 Eigen::SparseMatrix<zono_float>
G = Eigen::SparseMatrix<zono_float>(0, 0);
675 Eigen::SparseMatrix<zono_float>
Gc = Eigen::SparseMatrix<zono_float>(0, 0);
678 Eigen::SparseMatrix<zono_float>
Gb = Eigen::SparseMatrix<zono_float>(0, 0);
681 Eigen::SparseMatrix<zono_float>
A = Eigen::SparseMatrix<zono_float>(0, 0);
684 Eigen::SparseMatrix<zono_float>
Ac = Eigen::SparseMatrix<zono_float>(0, 0);
687 Eigen::SparseMatrix<zono_float>
Ab = Eigen::SparseMatrix<zono_float>(0, 0);
718 const Eigen::SparseMatrix<zono_float> &P,
const Eigen::Vector<zono_float, -1> &q,
zono_float c,
719 const OptSettings &settings, std::shared_ptr<OptSolution>* solution,
738 std::shared_ptr<OptSolution>* solution,
int n_leaves,
int contractor_iter);
742 static std::set<int>
find_unused_generators(
const Eigen::SparseMatrix<zono_float>&
G,
const Eigen::SparseMatrix<zono_float>&
A);
743 OptSolution mi_opt(
const Eigen::SparseMatrix<zono_float>& P,
const Eigen::Vector<zono_float, -1>& q,
744 zono_float c,
const Eigen::SparseMatrix<zono_float>&
A,
const Eigen::Vector<zono_float, -1>&
b,
747 std::vector<OptSolution>
mi_opt_multisol(
const Eigen::SparseMatrix<zono_float>& P,
const Eigen::Vector<zono_float, -1>& q,
748 zono_float c,
const Eigen::SparseMatrix<zono_float>&
A,
const Eigen::Vector<zono_float, -1>&
b,
int n_sols,
754 void set_Ac_Ab_from_A();
756 int n_leaves = std::numeric_limits<int>::max())
const;
757 std::vector<std::pair<int, int>> get_simplifiable_constraints()
const;
758 void apply_constraint_simplification(
const std::vector<std::pair<int, int>>&
cons,
Box&
box);
760 void remove_generators(
const std::set<int>&
idx_c,
const std::set<int>& idx_b,
MI_Box&
box);
776 const Eigen::SparseMatrix<zono_float>& R,
const Eigen::Vector<zono_float, -1>& s = Eigen::Vector<zono_float, -1>());
793 const Eigen::Vector<zono_float, -1>& s=Eigen::Vector<zono_float, -1>());
840 const Eigen::SparseMatrix<zono_float>& R=Eigen::SparseMatrix<zono_float>());
852 const std::vector<int>& dims);
867 const Eigen::Vector<zono_float, -1>& f,
const Eigen::SparseMatrix<zono_float>& R=Eigen::SparseMatrix<zono_float>());
882std::unique_ptr<HybZono>
union_of_many(
const std::vector<std::shared_ptr<HybZono>>& Zs,
bool preserve_sharpness=
false,
bool expose_indicators=
false);
894std::unique_ptr<ConZono>
convex_hull(
const std::vector<std::shared_ptr<HybZono>>& Zs);
918std::unique_ptr<HybZono>
constrain(
HybZono& Z,
const Eigen::SparseMatrix<zono_float>& H,
919 const Eigen::Vector<zono_float, -1>& f,
char direction,
const Eigen::SparseMatrix<zono_float>& R=Eigen::SparseMatrix<zono_float>());
937 int n_leaves = std::numeric_limits<int>::max(),
int contractor_iter = 10);
955std::unique_ptr<HybZono>
vrep_2_hybzono(
const std::vector<Eigen::Matrix<zono_float, -1, -1>> &Vpolys,
bool expose_indicators=
false);
971std::unique_ptr<HybZono>
zono_union_2_hybzono(std::vector<std::shared_ptr<Zono>> &Zs,
bool expose_indicators=
false);
Data structures for mixed-integer optimization in ZonoOpt library.
Internal branch-and-bound routines for ZonoOpt library.
Utilities for sparse matrix operations in ZonoOpt library.
Box (i.e., interval vector) class.
Definition Box.hpp:25
Hybrid zonotope class.
Definition HybZono.hpp:43
virtual Eigen::Vector< zono_float, -1 > do_project_point(const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params) const
Definition HybZono.cpp:604
virtual Box do_bounding_box(const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params)
Definition HybZono.cpp:1132
virtual std::unique_ptr< HybZono > do_complement(zono_float, bool remove_redundancy, const OptSettings &settings, std::shared_ptr< OptSolution > *solution, int n_leaves, int contractor_iter)
Definition HybZono.cpp:1201
friend std::unique_ptr< HybZono > affine_map(const HybZono &Z, const Eigen::SparseMatrix< zono_float > &R, const Eigen::Vector< zono_float, -1 > &s)
Returns affine map R*Z + s of set Z.
Definition SetOperations.cpp:12
virtual bool is_0_1_form() const
Returns true if factors are in range [0,1], false if they are in range [-1,1].
Definition HybZono.hpp:192
int nC
number of constraints
Definition HybZono.hpp:708
friend std::unique_ptr< HybZono > constrain(HybZono &Z, const Eigen::SparseMatrix< zono_float > &H, const Eigen::Vector< zono_float, -1 > &f, char direction, const Eigen::SparseMatrix< zono_float > &R)
Computes the generalized intersection of set Z with H*x <= f, H*x >= f, or H*x = f over matrix R.
Definition SetOperations.cpp:820
virtual int get_n() const
Returns dimension of set.
Definition HybZono.hpp:101
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
Definition HybZono.cpp:674
friend std::unique_ptr< ConZono > convex_hull(const std::vector< std::shared_ptr< HybZono > > &Zs)
Computes convex hull of several sets.
Definition SetOperations.cpp:742
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.
Definition HybZono.hpp:318
std::vector< std::unique_ptr< ConZono > > get_leaves(bool remove_redundancy=false, 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.
Definition HybZono.cpp:900
friend std::unique_ptr< HybZono > pontry_diff(HybZono &Z1, Zono &Z2, bool exact)
Computes the Pontryagin difference Z1 - Z2.
Definition SetOperations.cpp:328
bool is_sharp() const
Returns true if set is known to be sharp.
Definition HybZono.hpp:201
friend std::unique_ptr< HybZono > cartesian_product(const HybZono &Z1, HybZono &Z2)
Computes the Cartesian product of two sets Z1 and Z2.
Definition SetOperations.cpp:760
int n
set dimension
Definition HybZono.hpp:696
virtual Eigen::SparseMatrix< zono_float > get_Gc() const
Returns continuous generator matrix.
Definition HybZono.hpp:136
friend std::unique_ptr< HybZono > minkowski_sum(const HybZono &Z1, HybZono &Z2)
Computes Minkowski sum of two sets Z1 and Z2.
Definition SetOperations.cpp:155
virtual 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, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params) const
Definition HybZono.cpp:579
friend std::unique_ptr< HybZono > intersection_over_dims(const HybZono &Z1, HybZono &Z2, const std::vector< int > &dims)
Computes the generalized intersection of sets Z1 and Z2 over the specified dimensions.
Definition SetOperations.cpp:289
virtual std::unique_ptr< HybZono > complement(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.
Definition HybZono.hpp:253
friend std::unique_ptr< HybZono > operator*(const Eigen::SparseMatrix< zono_float > &R, const HybZono &Z)
affine map with sparse matrix: returns R*Z
Definition HybZono.cpp:1317
bool is_hybzono() const
Polymorphic type checking: true if set is a hybrid zonotope.
Definition HybZono.cpp:1258
std::unique_ptr< HybZono > operator|(HybZono &other) const
union
Definition HybZono.cpp:1439
virtual bool do_contains_point(const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params) const
Definition HybZono.cpp:648
virtual int get_nC() const
Returns number of constraints in set definition.
Definition HybZono.hpp:108
friend std::unique_ptr< HybZono > vrep_2_hybzono(const std::vector< Eigen::Matrix< zono_float, -1, -1 > > &Vpolys, bool expose_indicators)
Computes a hybrid zonotope from a union of vertex representation polytopes.
Definition HybZono.cpp:960
virtual int get_nGb() const
Returns number of binary generators in set definition.
Definition HybZono.hpp:129
std::unique_ptr< HybZono > operator-() const
unary minus: returns -I * this
Definition HybZono.cpp:1358
bool zero_one_form
flag to indicate whether the set is in 0-1 or -1-1 form
Definition HybZono.hpp:711
Eigen::SparseMatrix< zono_float > Gc
continuous generator matrix
Definition HybZono.hpp:675
virtual void convert_form()
Converts the set representation between -1-1 and 0-1 forms.
Definition HybZono.cpp:52
virtual std::string print() const
Returns set information as a string.
Definition HybZono.cpp:554
Eigen::SparseMatrix< zono_float > Gb
binary generator matrix
Definition HybZono.hpp:678
int nG
total number of factors. nG = nGc + nGb
Definition HybZono.hpp:699
virtual HybZono * clone() const
Clone method for polymorphic behavior.
Definition HybZono.cpp:16
bool is_conzono() const
Polymorphic type checking: true if set is a constrained zonotope.
Definition HybZono.cpp:1249
friend std::unique_ptr< HybZono > halfspace_intersection(HybZono &Z, const Eigen::SparseMatrix< zono_float > &H, const Eigen::Vector< zono_float, -1 > &f, const Eigen::SparseMatrix< zono_float > &R)
Computes the intersection generalized intersection of set Z with halfspace H*x <= f over matrix R.
Definition SetOperations.cpp:320
virtual Eigen::Vector< zono_float, -1 > get_c() const
Returns center vector.
Definition HybZono.hpp:178
bool is_point() const
Polymorphic type checking: true if set is a point.
Definition HybZono.cpp:1236
virtual ~HybZono()=default
virtual int get_nGc() const
Returns number of continuous generators in set definition.
Definition HybZono.hpp:122
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.
Definition HybZono.hpp:351
friend std::unique_ptr< HybZono > zono_union_2_hybzono(std::vector< std::shared_ptr< Zono > > &Zs, bool expose_indicators)
Computes a hybrid zonotope from a union of zonotopes.
Definition SetOperations.cpp:955
virtual zono_float do_support(const Eigen::Vector< zono_float, -1 > &d, const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params)
Definition HybZono.cpp:1101
void operator+=(HybZono &other)
in-place minkowski sum
Definition HybZono.cpp:1302
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.
Definition HybZono.cpp:21
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.
Definition HybZono.hpp:385
virtual Eigen::SparseMatrix< zono_float > get_Ab() const
Returns binary constraint matrix.
Definition HybZono.hpp:164
virtual std::unique_ptr< ConZono > convex_relaxation() const
Returns convex relaxation of the hybrid zonotope.
Definition HybZono.cpp:940
virtual Eigen::SparseMatrix< zono_float > get_A() const
Returns constraint matrix.
Definition HybZono.hpp:171
bool sharp
flag to indicate whether the set is known to be sharp (i.e., convex relaxation = convex hull)
Definition HybZono.hpp:714
Eigen::Vector< zono_float, -1 > c
center vector
Definition HybZono.hpp:690
int nGb
number of binary factors
Definition HybZono.hpp:705
virtual bool do_is_empty(const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params) const
Definition HybZono.cpp:627
HybZono()=default
Default constructor for HybZono class.
void operator-=(Zono &other)
in-place pontryagin difference
Definition HybZono.cpp:1392
bool is_zono() const
Polymorphic type checking: true if set is a zonotope.
Definition HybZono.cpp:1242
virtual Eigen::Vector< zono_float, -1 > get_b() const
Returns constraint vector.
Definition HybZono.hpp:185
friend std::unique_ptr< HybZono > union_of_many(const std::vector< std::shared_ptr< HybZono > > &Zs, bool preserve_sharpness, bool expose_indicators)
Computes union of several sets.
Definition SetOperations.cpp:447
static std::set< int > find_unused_generators(const Eigen::SparseMatrix< zono_float > &G, const Eigen::SparseMatrix< zono_float > &A)
Definition HybZono.cpp:782
virtual int get_nG() const
Returns number of generators in set definition.
Definition HybZono.hpp:115
static void remove_cols(Eigen::SparseMatrix< zono_float > &M, const std::set< int > &idx_to_remove)
Definition HybZono.cpp:753
Eigen::SparseMatrix< zono_float > A
constraint matrix A = [Ac, Ab]
Definition HybZono.hpp:681
Eigen::Vector< zono_float, -1 > b
constraint vector
Definition HybZono.hpp:693
friend std::ostream & operator<<(std::ostream &os, const HybZono &Z)
Displays set information to the given output stream.
Definition HybZono.cpp:573
friend std::unique_ptr< HybZono > project_onto_dims(const HybZono &Z, const std::vector< int > &dims)
Projects set Z onto the dimensions specified in dims.
Definition SetOperations.cpp:125
friend std::unique_ptr< HybZono > intersection(const HybZono &Z1, HybZono &Z2, const Eigen::SparseMatrix< zono_float > &R)
Computes the generalized intersection of sets Z1 and Z2 over the matrix R.
Definition SetOperations.cpp:213
friend std::unique_ptr< HybZono > set_diff(const HybZono &Z1, HybZono &Z2, zono_float delta_m, bool remove_redundancy, const OptSettings &settings, std::shared_ptr< OptSolution > *solution, const WarmStartParams &warm_start_params, int n_leaves, int contractor_iter)
bool is_empty_set() const
Polymorphic type checking: true if set is empty set object.
Definition HybZono.cpp:1266
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.
Definition HybZono.hpp:401
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.
Definition HybZono.hpp:368
Eigen::SparseMatrix< zono_float > Ab
binary constraint matrix
Definition HybZono.hpp:687
virtual Eigen::SparseMatrix< zono_float > get_G() const
Returns generator matrix.
Definition HybZono.hpp:150
friend std::unique_ptr< HybZono > affine_inclusion(const HybZono &Z, const IntervalMatrix &R, const Eigen::Vector< zono_float, -1 > &s)
Returns inclusion of zonotopic set for uncertain affine map R*Z + s.
Definition SetOperations.cpp:57
Eigen::SparseMatrix< zono_float > Ac
continuous constraint matrix
Definition HybZono.hpp:684
virtual Eigen::SparseMatrix< zono_float > get_Gb() const
Returns binary generator matrix.
Definition HybZono.hpp:143
void operator*=(zono_float f)
scalar multiplication in place
Definition HybZono.cpp:1353
Eigen::SparseMatrix< zono_float > G
generator matrix G = [Gc, Gb]
Definition HybZono.hpp:672
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.
Definition HybZono.hpp:335
int nGc
number of continuous factors
Definition HybZono.hpp:702
virtual std::unique_ptr< HybZono > remove_redundancy(int contractor_iter=10) const
Removes redundant constraints and any unused generators.
Definition HybZono.cpp:81
virtual Eigen::SparseMatrix< zono_float > get_Ac() const
Returns continuous constraint matrix.
Definition HybZono.hpp:157
std::vector< OptSolution > mi_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
Definition HybZono.cpp:713
friend std::unique_ptr< HybZono > operator+(const Eigen::Vector< zono_float, -1 > &v, HybZono &Z)
minkowski sum with point
Definition HybZono.cpp:1284
std::unique_ptr< HybZono > operator&(HybZono &other) const
intersection
Definition HybZono.cpp:1434
Class for interval matrices (i.e., every element of the matrix is an interval)
Definition IntervalMatrix.hpp:27
Mixed-integer box.
Definition Box.hpp:611
Zonotope class.
Definition Zono.hpp:32
#define zono_float
Defines the floating-point type used in ZonoOpt.
Definition ZonoOpt.hpp:45
std::unique_ptr< HybZono > pontry_diff(HybZono &Z1, Zono &Z2, bool exact=true)
Computes the Pontryagin difference Z1 - Z2.
Definition SetOperations.cpp:328
std::unique_ptr< HybZono > cartesian_product(const HybZono &Z1, HybZono &Z2)
Computes the Cartesian product of two sets Z1 and Z2.
Definition SetOperations.cpp:760
std::unique_ptr< HybZono > set_diff(const HybZono &Z1, HybZono &Z2, zono_float delta_m=100, 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)
Set difference Z1 \ Z2.
Definition SetOperations.cpp:936
std::unique_ptr< HybZono > minkowski_sum(const HybZono &Z1, HybZono &Z2)
Computes Minkowski sum of two sets Z1 and Z2.
Definition SetOperations.cpp:155
std::unique_ptr< HybZono > project_onto_dims(const HybZono &Z, const std::vector< int > &dims)
Projects set Z onto the dimensions specified in dims.
Definition SetOperations.cpp:125
std::unique_ptr< HybZono > affine_inclusion(const HybZono &Z, const IntervalMatrix &R, const Eigen::Vector< zono_float, -1 > &s=Eigen::Vector< zono_float, -1 >())
Returns inclusion of zonotopic set for uncertain affine map R*Z + s.
Definition SetOperations.cpp:57
std::unique_ptr< HybZono > affine_map(const HybZono &Z, const Eigen::SparseMatrix< zono_float > &R, const Eigen::Vector< zono_float, -1 > &s=Eigen::Vector< zono_float, -1 >())
Returns affine map R*Z + s of set Z.
Definition SetOperations.cpp:12
std::unique_ptr< HybZono > union_of_many(const std::vector< std::shared_ptr< HybZono > > &Zs, bool preserve_sharpness=false, bool expose_indicators=false)
Computes union of several sets.
Definition SetOperations.cpp:447
std::unique_ptr< HybZono > intersection(const HybZono &Z1, HybZono &Z2, const Eigen::SparseMatrix< zono_float > &R=Eigen::SparseMatrix< zono_float >())
Computes the generalized intersection of sets Z1 and Z2 over the matrix R.
Definition SetOperations.cpp:213
std::unique_ptr< HybZono > constrain(HybZono &Z, const Eigen::SparseMatrix< zono_float > &H, const Eigen::Vector< zono_float, -1 > &f, char direction, const Eigen::SparseMatrix< zono_float > &R=Eigen::SparseMatrix< zono_float >())
Computes the generalized intersection of set Z with H*x <= f, H*x >= f, or H*x = f over matrix R.
Definition SetOperations.cpp:820
std::unique_ptr< HybZono > halfspace_intersection(HybZono &Z, const Eigen::SparseMatrix< zono_float > &H, const Eigen::Vector< zono_float, -1 > &f, const Eigen::SparseMatrix< zono_float > &R=Eigen::SparseMatrix< zono_float >())
Computes the intersection generalized intersection of set Z with halfspace H*x <= f over matrix R.
Definition SetOperations.cpp:320
std::unique_ptr< ConZono > convex_hull(const std::vector< std::shared_ptr< HybZono > > &Zs)
Computes convex hull of several sets.
Definition SetOperations.cpp:742
std::unique_ptr< HybZono > intersection_over_dims(const HybZono &Z1, HybZono &Z2, const std::vector< int > &dims)
Computes the generalized intersection of sets Z1 and Z2 over the specified dimensions.
Definition SetOperations.cpp:289
std::unique_ptr< HybZono > vrep_2_hybzono(const std::vector< Eigen::Matrix< zono_float, -1, -1 > > &Vpolys, bool expose_indicators=false)
Computes a hybrid zonotope from a union of vertex representation polytopes.
Definition HybZono.cpp:960
std::unique_ptr< HybZono > zono_union_2_hybzono(std::vector< std::shared_ptr< Zono > > &Zs, bool expose_indicators=false)
Computes a hybrid zonotope from a union of zonotopes.
Definition SetOperations.cpp:955
Definition ZonoOpt.hpp:58
Settings for optimization routines in ZonoOpt library.
Definition SolverDataStructures.hpp:25
Solution data structure for optimization routines in ZonoOpt library.
Definition SolverDataStructures.hpp:199
Warm start parameters for optimization routines in ZonoOpt library.
Definition ADMM.hpp:49