ZonoOpt v2.0.1
Loading...
Searching...
No Matches
ConZono.hpp
Go to the documentation of this file.
1#ifndef ZONOOPT_CONZONO_HPP_
2#define ZONOOPT_CONZONO_HPP_
3
15#include "HybZono.hpp"
16
17namespace ZonoOpt
18{
19
20using namespace detail;
21
32class ConZono : public HybZono
33{
34 public:
35
36 // constructors
37
42 ConZono() { sharp = true; }
43
53 ConZono(const Eigen::SparseMatrix<zono_float>& G, const Eigen::Vector<zono_float, -1>& c,
54 const Eigen::SparseMatrix<zono_float>& A, const Eigen::Vector<zono_float, -1>& b,
55 bool zero_one_form=false);
56
57 // virtual destructor
58 ~ConZono() override = default;
59
63 HybZono* clone() const override;
64
65 // set method
75 void set(const Eigen::SparseMatrix<zono_float>& G, const Eigen::Vector<zono_float, -1>& c,
76 const Eigen::SparseMatrix<zono_float>& A, const Eigen::Vector<zono_float, -1>& b,
77 bool zero_one_form=false);
78
85 virtual void constraint_reduction();
86
87 // generator conversion between [-1,1] and [0,1]
88 void convert_form() override;
89
90 // over-approximate as zonotope
91
96 virtual std::unique_ptr<Zono> to_zono_approx() const;
97
98 // display methods
99 std::string print() const override;
100
101 protected:
102
103 OptSolution qp_opt(const Eigen::SparseMatrix<zono_float>& P, const Eigen::Vector<zono_float, -1>& q,
104 zono_float c, const Eigen::SparseMatrix<zono_float>& A, const Eigen::Vector<zono_float, -1>& b,
105 const OptSettings &settings=OptSettings(), OptSolution* solution=nullptr) const;
106
107 Eigen::Vector<zono_float, -1> do_optimize_over(
108 const Eigen::SparseMatrix<zono_float> &P, const Eigen::Vector<zono_float, -1> &q, zono_float c,
109 const OptSettings &settings, OptSolution* solution) const override;
110
111 Eigen::Vector<zono_float, -1> do_project_point(const Eigen::Vector<zono_float, -1>& x,
112 const OptSettings &settings, OptSolution* solution) const override;
113
114 bool do_is_empty(const OptSettings &settings, OptSolution* solution) const override;
115
116 zono_float do_support(const Eigen::Vector<zono_float, -1>& d, const OptSettings &settings,
117 OptSolution* solution) override;
118
119 bool do_contains_point(const Eigen::Vector<zono_float, -1>& x, const OptSettings &settings,
120 OptSolution* solution) const override;
121
122 Box do_bounding_box(const OptSettings &settings, OptSolution*) override;
123
124 std::unique_ptr<HybZono> do_complement(zono_float delta_m, bool, const OptSettings&,
125 OptSolution*, int, int) override;
126};
127
128// forward declarations
129
139std::unique_ptr<ConZono> vrep_2_conzono(const Eigen::Matrix<zono_float, -1, -1> &Vpoly);
140
141
142} // namespace ZonoOpt
143
144
145#endif
Hybrid zonotope class for ZonoOpt library.
Box (i.e., interval vector) class.
Definition Intervals.hpp:718
Constrained zonotope class.
Definition ConZono.hpp:33
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.
Definition ConZono.cpp:20
virtual void constraint_reduction()
Execute constraint reduction algorithm from Scott et. al. 2016.
Definition PolymorphicFunctions.cpp:1741
std::unique_ptr< HybZono > do_complement(zono_float delta_m, bool, const OptSettings &, OptSolution *, int, int) override
Definition PolymorphicFunctions.cpp:1005
HybZono * clone() const override
Clone method for polymorphic behavior.
Definition ConZono.cpp:15
ConZono()
Default constructor for ConZono class.
Definition ConZono.hpp:42
void convert_form() override
Converts the set representation between -1-1 and 0-1 forms.
Definition ConZono.cpp:49
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
Definition ConZono.cpp:203
Box do_bounding_box(const OptSettings &settings, OptSolution *) override
Definition ConZono.cpp:227
bool do_contains_point(const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, OptSolution *solution) const override
Definition ConZono.cpp:178
~ConZono() override=default
bool do_is_empty(const OptSettings &settings, OptSolution *solution) const override
Definition ConZono.cpp:137
std::string print() const override
Returns set information as a string.
Definition ConZono.cpp:74
virtual std::unique_ptr< Zono > to_zono_approx() const
Compute outer approximation of constrained zonotope as zonotope using SVD.
Definition PolymorphicFunctions.cpp:1941
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
Definition ConZono.cpp:89
zono_float do_support(const Eigen::Vector< zono_float, -1 > &d, const OptSettings &settings, OptSolution *solution) override
Definition ConZono.cpp:155
Eigen::Vector< zono_float, -1 > do_project_point(const Eigen::Vector< zono_float, -1 > &x, const OptSettings &settings, OptSolution *solution) const override
Definition ConZono.cpp:114
Hybrid zonotope class.
Definition HybZono.hpp:44
bool zero_one_form
flag to indicate whether the set is in 0-1 or -1-1 form
Definition HybZono.hpp:479
bool sharp
flag to indicate whether the set is known to be sharp (i.e., convex relaxation = convex hull)
Definition HybZono.hpp:482
Eigen::Vector< zono_float, -1 > c
center vector
Definition HybZono.hpp:458
Eigen::SparseMatrix< zono_float > A
constraint matrix A = [Ac, Ab]
Definition HybZono.hpp:449
Eigen::Vector< zono_float, -1 > b
constraint vector
Definition HybZono.hpp:461
Eigen::SparseMatrix< zono_float > G
generator matrix G = [Gc, Gb]
Definition HybZono.hpp:440
#define zono_float
Defines the floating-point type used in ZonoOpt.
Definition ZonoOpt.hpp:45
std::unique_ptr< ConZono > vrep_2_conzono(const Eigen::Matrix< zono_float, -1, -1 > &Vpoly)
Builds a constrained zonotope from a vertex representation polytope.
Definition PolymorphicFunctions.cpp:1531
Definition ZonoOpt.hpp:58
Settings for optimization routines in ZonoOpt library.
Definition SolverDataStructures.hpp:26
Solution data structure for optimization routines in ZonoOpt library.
Definition SolverDataStructures.hpp:153