70 size_t nbParams = params.size();
72 gradient_.resize(nbParams);
75 hdg_.resize(nbParams);
79 hessian_.resize(nbParams);
80 for (
size_t i = 0; i < nbParams; i++)
82 hessian_[i].resize(nbParams);
85 for (
size_t i = 0; i < nbParams; i++)
87 const Constraint* cp = params[i].getConstraint();
100 getFunction_()->enableFirstOrderDerivatives(
true);
101 getFunction_()->setParameters(params);
103 getGradient(gradient_);
105 for (
size_t i = 0; i < nbParams; i++)
107 p_[i] = getParameters()[i].getValue();
109 for (
unsigned int j = 0; j < nbParams; j++)
111 hessian_[i][j] = 0.0;
113 hessian_[i][i] = 1.0;
118 for (
size_t i = 0; i < nbParams; i++)
120 sum += p_[i] * p_[i];
134 for (i = 0; i < n; i++)
150 for (i = 0; i < n; i++)
158 printMessage(
"!!! Optimization might have failed. Try to reparametrize your function to remove constraints.");
184 for (i = 0; i < n; i++)
210 for (i = 0; i < n; i++)
215 for (i = 0; i < n; i++)
218 for (
unsigned int j = 0; j < n; j++)
224 double fae(0), fac(0), sumdg(0), sumxi(0);
226 for (i = 0; i < n; i++)
231 sumxi += xi_[i] * xi_[i];
234 if (fac > sqrt(1e-7 * sumdg * sumxi))
237 double fad = 1.0 / fae;
238 for (i = 0; i < n; i++)
242 for (i = 0; i < n; i++)
244 for (
unsigned int j = i; j < n; j++)
259 for (
unsigned int i = 0; i < gradient.size(); i++)
271 for (
size_t i = 0; i < nbParams; i++)
274 for (
unsigned int j = 0; j < nbParams; j++)
280 double v = 1, alpmax = 1;
281 for (
size_t i = 0; i < nbParams; i++)
291 for (
size_t i = 0; i < nbParams; i++)