ZonoOpt v2.0.1
Loading...
Searching...
No Matches
Inequality.hpp
Go to the documentation of this file.
1#ifndef INEQUALITY_HPP_
2#define INEQUALITY_HPP_
3
15#include <vector>
16
17namespace ZonoOpt
18{
19
25{
27 int idx;
28
31};
32
38{
39 LESS_OR_EQUAL = -1, // less than or equal to
40 GREATER_OR_EQUAL = 1, // greater than or equal to
41 EQUAL = 0, // equal to
42 LESS = -2, // strictly less than
43 GREATER = 2 // strictly greater than
44};
45
51public:
57 explicit Inequality(const int n_dims) : n_dims(n_dims) {}
58
67 Inequality(const int n_dims, const std::vector<IneqTerm>& terms, const zono_float rhs, const IneqType type) :
68 n_dims(n_dims), terms(terms), rhs(rhs), type(type) {}
69
76 void add_term(const int idx, const zono_float coeff)
77 {
78 IneqTerm term{};
79 term.idx = idx;
80 term.coeff = coeff;
81 this->terms.push_back(term);
82 }
83
89 void set_rhs(const zono_float rhs)
90 {
91 this->rhs = rhs;
92 }
93
99 void set_ineq_type(const IneqType type)
100 {
101 this->type = type;
102 }
103
109 const std::vector<IneqTerm>& get_terms() const
110 {
111 return this->terms;
112 }
113
119 {
120 return this->rhs;
121 }
122
128 {
129 return this->type;
130 }
131
136 int get_n_dims() const
137 {
138 return n_dims;
139 }
140
141private:
143 int n_dims;
144
146 std::vector<IneqTerm> terms;
147
149 zono_float rhs = 0;
150
152 IneqType type = EQUAL;
153};
154
155}
156
157#endif
Inequality class.
Definition Inequality.hpp:50
IneqType get_ineq_type() const
Get inequality type / direction.
Definition Inequality.hpp:127
Inequality(const int n_dims, const std::vector< IneqTerm > &terms, const zono_float rhs, const IneqType type)
Constructs inequality with all quantities specified.
Definition Inequality.hpp:67
zono_float get_rhs() const
Get right hand side of the inequality.
Definition Inequality.hpp:118
int get_n_dims() const
Get number of dimensions for inequality.
Definition Inequality.hpp:136
void set_ineq_type(const IneqType type)
Sets the direction of the inequality or sets it to be an equality.
Definition Inequality.hpp:99
void set_rhs(const zono_float rhs)
Set the right hand side of the inequality.
Definition Inequality.hpp:89
const std::vector< IneqTerm > & get_terms() const
Get reference to terms in the inequality.
Definition Inequality.hpp:109
Inequality(const int n_dims)
Constructs inequality, must specify number of dimensions.
Definition Inequality.hpp:57
void add_term(const int idx, const zono_float coeff)
Adds a term to the inequality.
Definition Inequality.hpp:76
#define zono_float
Defines the floating-point type used in ZonoOpt.
Definition ZonoOpt.hpp:45
Definition ZonoOpt.hpp:58
IneqType
Enumeration to select inequality direction / use equality.
Definition Inequality.hpp:38
@ LESS_OR_EQUAL
Definition Inequality.hpp:39
@ GREATER_OR_EQUAL
Definition Inequality.hpp:40
@ GREATER
Definition Inequality.hpp:43
@ EQUAL
Definition Inequality.hpp:41
@ LESS
Definition Inequality.hpp:42
Structure containing term in 0-1 inequality.
Definition Inequality.hpp:25
zono_float coeff
coefficient of variable
Definition Inequality.hpp:30
int idx
index of variable
Definition Inequality.hpp:27