62 bool useBounds =
true,
94 const Eigen::VectorXd &
result()
const;
112 bool equalityConstraints_ =
false;
113 bool inequalityConstraints_ =
false;
114 bool bounds_ =
false;
115 bool objectives_ =
false;
117 template<
typename Derived>
118 static bool willReallocate(
const Eigen::DenseBase<Derived> & M,
int rows,
int cols = 1);
125 bool any()
const {
return equalityConstraints_ || inequalityConstraints_ || bounds_ || objectives_; }
139 virtual const Eigen::VectorXd &
result_()
const = 0;
164 template<
typename... Args>
165 void addAssignement(Args &&... args);
177 template<
typename... Args>
183 template<
typename K,
typename T>
198 bool buildInProgress_;
227 virtual std::unique_ptr<LSSolverFactory>
clone()
const = 0;
231 std::string solverName_;
234 template<
typename... Args>
236 { assignments_.emplace_back(
new MarkedAssignment(std::forward<Args>(args)...)); }
238 template<
typename Derived>
242 {
return M.rows() * M.cols() != rows * cols; }
#define TVM_DLLAPI
Definition: api.h:35
Definition: VariableVector.h:41
Definition: LinearConstraint.h:56
Definition: Substitutions.h:24
Definition: AssignmentTarget.h:37
Definition: Assignment.h:32
Definition: LeastSquareSolver.h:220
LSSolverFactory(const std::string &solverName)
Definition: LeastSquareSolver.h:222
virtual std::unique_ptr< LSSolverFactory > clone() const =0
virtual std::unique_ptr< LeastSquareSolver > createSolver() const =0
virtual ~LSSolverFactory()=default
Definition: LeastSquareSolver.h:37
virtual void addObjective_(LinearConstraintPtr obj, SolvingRequirementsPtr req, double additionalWeight=1)=0
LeastSquareSolver(const LeastSquareSolver &)=delete
std::vector< MarkedAssignment * > AssignmentPtrVector
Definition: LeastSquareSolver.h:186
virtual void preAssignmentProcess_()
Definition: LeastSquareSolver.h:136
virtual ~LeastSquareSolver()=default
int objSize_
Definition: LeastSquareSolver.h:193
virtual Range nextInequalityConstraintRange_(const constraint::abstract::LinearConstraint &cstr) const =0
int nObj_
Definition: LeastSquareSolver.h:192
int constraintSize(const constraint::abstract::LinearConstraint &c) const
const VariableVector & variables() const
Definition: LeastSquareSolver.h:161
std::vector< std::unique_ptr< MarkedAssignment > > AssignmentVector
Definition: LeastSquareSolver.h:185
int nIneq_
Definition: LeastSquareSolver.h:191
void addBound(LinearConstraintPtr bound)
void addConstraint(LinearConstraintPtr cstr)
LeastSquareSolver & operator=(const LeastSquareSolver &)=delete
virtual void addIneqalityConstraint_(LinearConstraintPtr cstr)=0
virtual void addEqualityConstraint_(LinearConstraintPtr cstr)=0
LeastSquareSolver(bool verbose=false)
virtual Range nextObjectiveRange_(const constraint::abstract::LinearConstraint &cstr) const =0
utils::internal::map< K, T > map
Definition: LeastSquareSolver.h:184
virtual void updateObjectiveTargetData(scheme::internal::AssignmentTarget &target)=0
virtual void setMinimumNorm_()=0
void addObjective(LinearConstraintPtr obj, SolvingRequirementsPtr req, double additionalWeight=1)
virtual void updateBoundTargetData(scheme::internal::AssignmentTarget &target)=0
virtual Range nextEqualityConstraintRange_(const constraint::abstract::LinearConstraint &cstr) const =0
map< constraint::abstract::LinearConstraint *, AssignmentPtrVector > MapToAssignment
Definition: LeastSquareSolver.h:187
virtual const Eigen::VectorXd & result_() const =0
virtual bool handleDoubleSidedConstraint_() const =0
virtual void updateInequalityTargetData(scheme::internal::AssignmentTarget &target)=0
virtual void removeBounds_(const Range &range)=0
virtual void printProblemData_() const =0
int ineqSize_
Definition: LeastSquareSolver.h:195
virtual void printDiagnostic_() const =0
void startBuild(const VariableVector &x, int nObj, int nEq, int nIneq, bool useBounds=true, const hint::internal::Substitutions *const subs=nullptr)
void addAssignement(Args &&... args)
Definition: LeastSquareSolver.h:235
virtual void resetBounds_()=0
virtual void updateEqualityTargetData(scheme::internal::AssignmentTarget &target)=0
virtual void initializeBuild_(int nObj, int nEq, int nIneq, bool useBounds)=0
int eqSize_
Definition: LeastSquareSolver.h:194
const hint::internal::Substitutions * substitutions() const
Definition: LeastSquareSolver.h:162
const Eigen::VectorXd & result() const
virtual void applyImpactLogic(ImpactFromChanges &impact)
virtual void postAssignmentProcess_()
Definition: LeastSquareSolver.h:137
void process(const internal::SolverEvents &se)
virtual void addBound_(LinearConstraintPtr bound, RangePtr range, bool first)=0
virtual ImpactFromChanges resize_(int nObj, int nEq, int nIneq, bool useBounds)=0
int nEq_
Definition: LeastSquareSolver.h:190
Definition: SolverEvents.h:14
std::map< KeyWithId, Value, IdLess< KeyWithId >, Allocator > map
Definition: map.h:41
std::shared_ptr< constraint::abstract::LinearConstraint > LinearConstraintPtr
Definition: defs.h:59
std::shared_ptr< Range > RangePtr
Definition: defs.h:61
std::shared_ptr< requirements::SolvingRequirementsWithCallbacks > SolvingRequirementsPtr
Definition: defs.h:63
Definition: LeastSquareSolver.h:111
ImpactFromChanges & orAssign(const ImpactFromChanges &other)
static bool willReallocate(const Eigen::DenseBase< Derived > &M, int rows, int cols=1)
Definition: LeastSquareSolver.h:239
ImpactFromChanges operator||(const ImpactFromChanges &other)
ImpactFromChanges operator||(bool b)
bool any() const
Definition: LeastSquareSolver.h:125
Definition: LeastSquareSolver.h:176
scheme::internal::Assignment assignment
Definition: LeastSquareSolver.h:180
bool markedForRemoval
Definition: LeastSquareSolver.h:181
MarkedAssignment(Args &&... args)
Definition: LeastSquareSolver.h:178