TVM  0.9.4
Constraint.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <tvm/constraint/enums.h>
9 
10 #include <Eigen/Core>
11 
12 #include <memory>
13 
14 namespace tvm
15 {
16 
17 namespace constraint
18 {
19 
20 namespace abstract
21 {
22 
50  public graph::abstract::OutputSelector<Constraint, tvm::internal::FirstOrderProvider>
51 {
52 public:
53  SET_OUTPUTS(Constraint, L, U, E)
54 
55 
64  virtual const Eigen::VectorXd & l() const;
69  virtual const Eigen::VectorXd & u() const;
74  virtual const Eigen::VectorXd & e() const;
75 
77  Type type() const;
78 
80  bool isEquality() const;
81 
85  RHS rhs() const;
86 
87 protected:
93  Constraint(Type ct, RHS cr, int m = 0);
94 
98  void resizeCache() override;
99 
101  Eigen::VectorXd & lRef();
103  Eigen::VectorXd & uRef();
105  Eigen::VectorXd & eRef();
106 
109 
110 private:
111  Type cstrType_; // The constraint type
112  RHS constraintRhs_; // The rhs convention
113 };
114 
115 inline const Eigen::VectorXd & Constraint::l() const { return vectors_.l(); }
116 
117 inline const Eigen::VectorXd & Constraint::u() const { return vectors_.u(); }
118 
119 inline const Eigen::VectorXd & Constraint::e() const { return vectors_.e(); }
120 
121 inline Eigen::VectorXd & Constraint::lRef() { return vectors_.l(); }
122 
123 inline Eigen::VectorXd & Constraint::uRef() { return vectors_.u(); }
124 
125 inline Eigen::VectorXd & Constraint::eRef() { return vectors_.e(); }
126 
127 } // namespace abstract
128 
129 } // namespace constraint
130 
131 } // namespace tvm
#define SET_OUTPUTS(SelfT,...)
Definition: Outputs.h:113
#define TVM_DLLAPI
Definition: api.h:35
Definition: Constraint.h:51
Eigen::VectorXd & uRef()
Definition: Constraint.h:123
virtual const Eigen::VectorXd & l() const
Definition: Constraint.h:115
Eigen::VectorXd & lRef()
Definition: Constraint.h:121
internal::RHSVectors vectors_
Definition: Constraint.h:108
Eigen::VectorXd & eRef()
Definition: Constraint.h:125
virtual const Eigen::VectorXd & e() const
Definition: Constraint.h:119
virtual const Eigen::VectorXd & u() const
Definition: Constraint.h:117
Constraint(Type ct, RHS cr, int m=0)
Definition: RHSVectors.h:24
Eigen::VectorXd & e()
Definition: RHSVectors.h:108
Eigen::VectorXd & l()
Definition: RHSVectors.h:100
Eigen::VectorXd & u()
Definition: RHSVectors.h:104
Definition: OutputSelector.h:79
Definition: ObjWithId.h:14
Type
Definition: enums.h:15
RHS
Definition: enums.h:30
Definition: Clock.h:12