Details

Type: Bug

Status: Closed

Priority: Major

Resolution: Fixed

Affects Version/s: None

Fix Version/s: 3.3

Labels:None
Description
In package : org.apache.commons.math3.optim.nonlinear.scalar.gradient
In a minimization problem, a line search should not return a point where the value is greater than the values at the edges of the interval. The line search violates this obvious requirement by focusing solely on solving for gradient=0 and ignoring the value.
Moreover LineSearchFunction is something that can be used in other contexts, so perhaps this should be a standalone class.
Here is a proposal to factor out the "LineSearch" defined in "PowellOptimizer"
(which uses "BrentOptimizer").
When replacing what needed be in "NonlinearConjugateGradientOptimizer", a series of unit test started to fail.
I've performed some checks that the convergence criterion is indeed met even though the result found is now farther from the expected optimum.
The change also uncovered that by using the root solver, the optimizer could not correctly count the evaluations (cf. "MultiStartMultivariateOptimizerTest").