37 const std::vector<std::vector<size_t>> & groups,
38 const std::vector<size_t> order);
61 void extractSubstitutions(
const std::vector<Substitution> & substitutionPool,
62 const std::vector<std::vector<size_t>> & groups,
63 const std::vector<size_t> order);
68 void scanSubstitutions();
70 void computeDependencies();
72 void initializeMatrices();
74 void createFunctions();
79 std::vector<Substitution> substitutions_;
81 std::vector<std::shared_ptr<abstract::SubstitutionCalculatorImpl>> calculators_;
83 std::vector<LinearConstraintPtr> constraints_;
93 std::vector<Range> substitutionMRanges_;
98 std::vector<Range> substitutionNRanges_;
103 std::vector<std::vector<size_t>> sub2cstr_;
107 std::vector<std::vector<size_t>> sub2x_;
111 std::vector<size_t> x2sub_;
115 std::vector<Range> xRange_;
118 std::vector<std::vector<int>> constraintsY_;
120 std::vector<std::vector<int>> CXdependencies_;
122 std::vector<std::vector<int>> XYdependencies_;
124 std::vector<std::vector<int>> XZdependencies_;
126 std::vector<std::vector<int>> SYdependencies_;
128 std::vector<std::vector<int>> SZdependencies_;
131 std::vector<std::shared_ptr<function::BasicLinearFunction>> varSubstitutions_;
133 std::vector<std::shared_ptr<constraint::BasicLinearConstraint>> remaining_;
150 std::vector<bool> cIsZero_;
162 Eigen::MatrixXd AsZ_;
168 std::vector<bool> uIsZero_;
172 std::vector<Eigen::MatrixXd> StB_;
176 std::vector<Eigen::MatrixXd> StZ_;
178 std::vector<Eigen::VectorXd> Stc_;
181 std::vector<bool> firstY_;
183 std::vector<bool> firstZ_;
#define TVM_DLLAPI
Definition: api.h:35
Definition: VariableVector.h:41
Definition: SubstitutionUnit.h:29
const std::vector< VariablePtr > & variables() const
const std::vector< std::shared_ptr< constraint::BasicLinearConstraint > > & additionalConstraints() const
const std::vector< VariablePtr > & additionalVariables() const
const std::vector< std::shared_ptr< function::BasicLinearFunction > > & variableSubstitutions() const
const std::vector< VariablePtr > & otherVariables() const
SubstitutionUnit(const std::vector< Substitution > &substitutionPool, const std::vector< std::vector< size_t >> &groups, const std::vector< size_t > order)