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());
45 assert(!arg.hasNaN());
49 static const value_type dqMinSquaredNorm = NumTraits::dummy_precision();
55 bool onlyLineSearch =
false;
59 computeValue<true>(arg);
61 if (optimize) previousCost =
datas_.back().error.squaredNorm();
65 if (errorWasBelowThr) {
73 if (optimize && !errorIsAboveThr) qopt = arg;
76 while ((optimize || (errorIsAboveThr && errorDecreased))) {
86 if (!onlyLineSearch) {
94 if (optimize)
dq_ *= scaling;
95 if (
dq_.squaredNorm() < dqMinSquaredNorm) {
101 lineSearch(*
this, arg,
dq_);
102 explicit_.
solve(arg);
103 assert(!arg.hasNaN());
106 computeValue<true>(arg);
122 if (!errorIsAboveThr) {
124 if (cost < previousCost) {
127 if (scaling < 0.5) scaling *= 2;
129 onlyLineSearch =
false;
133 if (qopt.size() > 0) arg = qopt;
134 onlyLineSearch =
true;
141 if (!optimize && errorWasBelowThr) {
149 if (optimize && qopt.size() > 0) arg = qopt;
151 assert(!arg.hasNaN());
bool solve(vectorOut_t arg) const
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