29 #ifndef HPP_CONSTRAINTS_SOLVER_IMPL_BY_SUBSTITUTION_HH
30 #define HPP_CONSTRAINTS_SOLVER_IMPL_BY_SUBSTITUTION_HH
33 namespace constraints {
38 template <
typename LineSearchType>
40 vectorOut_t arg,
bool _optimize, LineSearchType lineSearch)
const {
59 static const value_type dqMinSquaredNorm = NumTraits::dummy_precision();
65 bool onlyLineSearch =
false;
69 computeValue<true>(arg);
71 if (optimize) previousCost =
datas_.back().error.squaredNorm();
75 if (errorWasBelowThr) {
83 if (optimize && !errorIsAboveThr) qopt = arg;
86 while ((optimize || (errorIsAboveThr && errorDecreased))) {
96 if (!onlyLineSearch) {
104 if (optimize)
dq_ *= scaling;
105 if (
dq_.squaredNorm() < dqMinSquaredNorm) {
112 lineSearch(*
this, arg,
dq_);
113 explicit_.
solve(arg);
120 computeValue<true>(arg);
136 if (!errorIsAboveThr) {
138 if (cost < previousCost) {
141 if (scaling < 0.5) scaling *= 2;
143 onlyLineSearch =
false;
147 if (qopt.size() > 0) arg = qopt;
148 onlyLineSearch =
true;
155 if (!optimize && errorWasBelowThr) {
163 if (optimize && qopt.size() > 0) arg = qopt;
bool solve(vectorOut_t arg) const
Exception thrown when a function is evaluated outside its definition domain.
Definition: explicit.hh:41
void updateJacobian(vectorIn_t arg) const
size_type reducedDimension_
Definition: hierarchical-iterative.hh:596
size_type maxIterations_
Definition: hierarchical-iterative.hh:592
value_type squaredNorm_
Definition: hierarchical-iterative.hh:619
void computeSaturation(vectorIn_t arg) const
value_type squaredErrorThreshold_
Definition: hierarchical-iterative.hh:591
vector_t dq_
Definition: hierarchical-iterative.hh:614
Status
Definition: hierarchical-iterative.hh:245
@ ERROR_INCREASED
Definition: hierarchical-iterative.hh:245
@ SUCCESS
Definition: hierarchical-iterative.hh:245
@ MAX_ITERATION_REACHED
Definition: hierarchical-iterative.hh:245
@ INFEASIBLE
Definition: hierarchical-iterative.hh:245
std::vector< Data > datas_
Definition: hierarchical-iterative.hh:620
void computeError() const
void computeDescentDirection() const
bool lastIsOptional_
Definition: hierarchical-iterative.hh:597
assert(d.lhs()._blocks()==d.rhs()._blocks())
Eigen::NumTraits< value_type > NumTraits
Definition: by-substitution.hh:36
std::numeric_limits< value_type > numeric_limits
Definition: by-substitution.hh:35
pinocchio::size_type size_type
Definition: fwd.hh:47
pinocchio::value_type value_type
Definition: fwd.hh:48
pinocchio::vectorOut_t vectorOut_t
Definition: fwd.hh:61
pinocchio::vector_t vector_t
Definition: fwd.hh:59
Definition: active-set-differentiable-function.hh:36