30 Memory(
int solverId, std::unique_ptr<solver::abstract::HierarchicalLeastSquareSolver> solver);
32 void reset(std::unique_ptr<solver::abstract::HierarchicalLeastSquareSolver> solver);
34 std::unique_ptr<solver::abstract::HierarchicalLeastSquareSolver> solver;
44 using isFactory = std::is_base_of<solver::abstract::HLSSolverFactory, T>;
47 struct FactoryMemberIsFactory
49 static constexpr
bool value = isFactory<typename T::Factory>::value;
53 using isHLSSolverFactoryOption =
54 std::conjunction<tvm::internal::has_public_member_type_Factory<T>, FactoryMemberIsFactory<T>>;
64 template<class SolverFactory, typename std::enable_if<isFactory<SolverFactory>::value,
int>::type = 0>
66 : LinearResolutionScheme<HierarchicalLeastSquares>(abilities_), options_(schemeOptions),
67 solverFactory_(solverFactory.clone())
77 template<class SolverOptions, typename std::enable_if<isHLSSolverFactoryOption<SolverOptions>::value,
int>::type = 0>
86 typename std::enable_if<!isFactory<T>::value && !isHLSSolverFactoryOption<T>::value,
int>::type = 0>
88 : LinearResolutionScheme<HierarchicalLeastSquares>(abilities_)
91 "First argument can only be a HLSSolverFactory or a solver configuration. "
92 "A configuration needs to have a Factory member type that is itself deriving from HLSSolverFactory. "
93 "See LexLSHLSSolverOptions for an example.");
#define TVM_ADD_NON_DEFAULT_OPTION(optionName, defaultValue)
Definition: Option.h:30
#define TVM_DLLAPI
Definition: api.h:35
Definition: LinearizedControlProblem.h:24
Definition: ControlProblem.h:22
Definition: VariableCountingVector.h:30
Definition: HierarchicalLeastSquares.h:18
Definition: HierarchicalLeastSquares.h:26
void addTask(const LinearizedControlProblem &problem, Memory *memory, const TaskWithRequirements &task, solver::internal::SolverEvents &se) const
HierarchicalLeastSquares & operator=(const HierarchicalLeastSquares &)=delete
void updateComputationData_(const LinearizedControlProblem &problem, internal::ProblemComputationData *data) const
void resetComputationData(const LinearizedControlProblem &problem, Memory *memory) const
HierarchicalLeastSquares(const T &, HierarchicalLeastSquaresOptions={})
Definition: HierarchicalLeastSquares.h:87
Memory ComputationDataType
Definition: HierarchicalLeastSquares.h:57
HierarchicalLeastSquares & operator=(HierarchicalLeastSquares &&)=delete
HierarchicalLeastSquares(HierarchicalLeastSquares &&)=delete
bool solve_(const LinearizedControlProblem &problem, internal::ProblemComputationData *data) const
std::unique_ptr< Memory > createComputationData_(const LinearizedControlProblem &problem) const
HierarchicalLeastSquares(const HierarchicalLeastSquares &)=delete
void removeTask(const LinearizedControlProblem &problem, Memory *memory, const TaskWithRequirements &task, solver::internal::SolverEvents &se) const
HierarchicalLeastSquares(const SolverOptions &solverOptions, HierarchicalLeastSquaresOptions schemeOptions={})
Definition: HierarchicalLeastSquares.h:78
std::unique_ptr< solver::abstract::HLSSolverFactory > solverFactory_
Definition: HierarchicalLeastSquares.h:125
HierarchicalLeastSquares(const SolverFactory &solverFactory, HierarchicalLeastSquaresOptions schemeOptions={})
Definition: HierarchicalLeastSquares.h:65
void processProblem(const LinearizedControlProblem &problem, Memory *memory) const
HierarchicalLeastSquaresOptions options_
Definition: HierarchicalLeastSquares.h:123
Definition: ResolutionScheme.h:65
Definition: LinearizedProblemComputationData.h:20
Definition: ProblemComputationData.h:27
Definition: SchemeAbilities.h:59
Definition: SolverEvents.h:14