ZonoOpt v2.0.1
Loading...
Searching...
No Matches
Zono.hpp
Go to the documentation of this file.
1#ifndef ZONOOPT_ZONO_HPP_
2#define ZONOOPT_ZONO_HPP_
3
15#include "ConZono.hpp"
16
17namespace ZonoOpt
18{
19
20using namespace detail;
21
32class Zono : public ConZono
33{
34 public:
35
36 // constructors
41 Zono() { sharp = true; }
42
50 Zono(const Eigen::SparseMatrix<zono_float>& G, const Eigen::Vector<zono_float, -1>& c,
51 const bool zero_one_form=false);
52
53 // virtual destructor
54 ~Zono() override = default;
55
56 // set method
64 void set(const Eigen::SparseMatrix<zono_float>& G, const Eigen::Vector<zono_float, -1>& c,
65 bool zero_one_form=false);
66
70 HybZono* clone() const override;
71
78 std::unique_ptr<Zono> reduce_order(int n_o);
79
88
89 // generator conversion between [-1,1] and [0,1]
90 void convert_form() override;
91
92 // display methods
93 std::string print() const override;
94
95 protected:
96
97 bool do_is_empty(const OptSettings&, OptSolution*) const override;
98
99 Box do_bounding_box(const OptSettings&, OptSolution*) override;
100
101 zono_float do_support(const Eigen::Vector<zono_float, -1>& d, const OptSettings&,
102 OptSolution*) override;
103};
104
105// forward declarations
113std::unique_ptr<Zono> interval_2_zono(const Box& box);
114
125std::unique_ptr<Zono> make_regular_zono_2D(zono_float radius, int n_sides, bool outer_approx=false, const Eigen::Vector<zono_float, 2>& c=Eigen::Vector<zono_float, 2>::Zero());
126
127
128} // namespace ZonoOpt
129
130#endif
Constrained zonotope class for ZonoOpt library.
Box (i.e., interval vector) class.
Definition Intervals.hpp:718
Constrained zonotope class.
Definition ConZono.hpp:33
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 > G
generator matrix G = [Gc, Gb]
Definition HybZono.hpp:440
Zonotope class.
Definition Zono.hpp:33
bool do_is_empty(const OptSettings &, OptSolution *) const override
Definition Zono.cpp:80
std::string print() const override
Returns set information as a string.
Definition Zono.cpp:68
zono_float do_support(const Eigen::Vector< zono_float, -1 > &d, const OptSettings &, OptSolution *) override
Definition Zono.cpp:180
HybZono * clone() const override
Clone method for polymorphic behavior.
Definition Zono.cpp:14
~Zono() override=default
std::unique_ptr< Zono > reduce_order(int n_o)
Perform zonotope order reduction.
Definition Zono.cpp:108
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.
Definition Zono.cpp:19
zono_float get_volume()
Get volume of zonotope.
Definition Zono.cpp:194
Box do_bounding_box(const OptSettings &, OptSolution *) override
Definition Zono.cpp:88
Zono()
Default constructor for Zono class.
Definition Zono.hpp:41
void convert_form() override
Converts the set representation between -1-1 and 0-1 forms.
Definition Zono.cpp:47
#define zono_float
Defines the floating-point type used in ZonoOpt.
Definition ZonoOpt.hpp:45
std::unique_ptr< Zono > interval_2_zono(const Box &box)
Builds a zonotope from a Box object.
Definition PolymorphicFunctions.cpp:1559
std::unique_ptr< Zono > make_regular_zono_2D(zono_float radius, int n_sides, bool outer_approx=false, const Eigen::Vector< zono_float, 2 > &c=Eigen::Vector< zono_float, 2 >::Zero())
Builds a 2D regular zonotope with a given radius and number of sides.
Definition PolymorphicFunctions.cpp:1578
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