29#ifndef HPP_CONSTRAINTS_SOLVER_IMPL_BY_SUBSTITUTION_HH
30#define HPP_CONSTRAINTS_SOLVER_IMPL_BY_SUBSTITUTION_HH
33namespace constraints {
38template <
typename LineSearchType>
40 vectorOut_t arg,
bool _optimize, LineSearchType lineSearch)
const {
42 assert(!arg.hasNaN());
52 assert(!arg.hasNaN());
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);
117 assert(!arg.hasNaN());
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;
165 assert(!arg.hasNaN());
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
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