Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Later
-
2.1
-
None
-
None
Description
LevenbergMarquardtOptimizer inherits from AbstractLeastSquaresOptimizer which in turn implements DifferentiableMultivariateVectorialOptimizer. That interface mandates methods for setting and getting a VectorialConvergenceChecker.
In v2.1, however, that checker is never used! The convergence check is performed using parameters specific to the Levenberg-Marquardt algorithm. Such circumvention of the superclass interface is confusing and leads to totally unexpected behaviour (such as changing the values of the thresholds of the VectorialConvergenceChecker being ineffective).
In the development version, the default constructor of LevenbergMarquardtOptimizer sets the the VectorialConvergenceChecker field to "null" and when such is the case, the behaviour is as in v2.1. Although it is documented, this is still confusing since it is impossible to use LevenbergMarquardtOptimizer through its DifferentiableMultivariateVectorialOptimizer interface: When using the VectorialConvergenceChecker, one does not know what parameters to use in order to reproduce the results obtained with the LM-specific convergence check (i.e. how to reproduce the result from v2.1).
Unless I'm missing something, I think that there should be an LM-specific implementation of VectorialConvergenceChecker that, when given the usual relative and absolute thresholds, can perform a check that will give the same result as the currently specific check (when the "checker" field is "null").