Class LevenbergMarquardtEstimator
- All Implemented Interfaces:
Serializable
,Estimator
This implementation should work even for over-determined systems (i.e. systems having more variables than equations). Over-determined systems are solved by ignoring the variables which have the smallest impact according to their jacobian column norm. Only the rank of the matrix and some loop bounds are changed to implement this.
The resolution engine is a simple translation of the MINPACK lmder routine with minor changes. The changes include the over-determined resolution and the Q.R. decomposition which has been rewritten following the algorithm described in the P. Lascaux and R. Theodor book Analyse numérique matricielle appliquée à l'art de l'ingénieur, Masson 1986.
The authors of the original fortran version are:
- Argonne National Laboratory. MINPACK project. March 1980
- Burton S. Garbow
- Kenneth E. Hillstrom
- Jorge J. More
Minpack Copyright Notice (1999) University of Chicago. All rights reserved |
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
|
- Since:
- 1.2
- Version:
- $Revision: 990655 $ $Date: 2010-08-29 23:49:40 +0200 (dim. 29 août 2010) $
- See Also:
-
Field Summary
Fields inherited from class org.apache.commons.math.estimation.AbstractEstimator
cols, cost, DEFAULT_MAX_COST_EVALUATIONS, jacobian, measurements, parameters, residuals, rows
-
Constructor Summary
ConstructorsConstructorDescriptionDeprecated.Build an estimator for least squares problems. -
Method Summary
Modifier and TypeMethodDescriptionvoid
estimate
(EstimationProblem problem) Deprecated.Solve an estimation problem using the Levenberg-Marquardt algorithm.void
setCostRelativeTolerance
(double costRelativeTolerance) Deprecated.Set the desired relative error in the sum of squares.void
setInitialStepBoundFactor
(double initialStepBoundFactor) Deprecated.Set the positive input variable used in determining the initial step bound.void
setOrthoTolerance
(double orthoTolerance) Deprecated.Set the desired max cosine on the orthogonality.void
setParRelativeTolerance
(double parRelativeTolerance) Deprecated.Set the desired relative error in the approximate solution parameters.Methods inherited from class org.apache.commons.math.estimation.AbstractEstimator
getChiSquare, getCostEvaluations, getCovariances, getJacobianEvaluations, getRMS, guessParametersErrors, incrementJacobianEvaluationsCounter, initializeEstimate, setMaxCostEval, updateJacobian, updateResidualsAndCost
-
Constructor Details
-
LevenbergMarquardtEstimator
public LevenbergMarquardtEstimator()Deprecated.Build an estimator for least squares problems.The default values for the algorithm settings are:
initial step bound factor
: 100.0maximal cost evaluations
: 1000cost relative tolerance
: 1.0e-10parameters relative tolerance
: 1.0e-10orthogonality tolerance
: 1.0e-10
-
-
Method Details
-
setInitialStepBoundFactor
public void setInitialStepBoundFactor(double initialStepBoundFactor) Deprecated.Set the positive input variable used in determining the initial step bound. This bound is set to the product of initialStepBoundFactor and the euclidean norm of diag*x if nonzero, or else to initialStepBoundFactor itself. In most cases factor should lie in the interval (0.1, 100.0). 100.0 is a generally recommended value- Parameters:
initialStepBoundFactor
- initial step bound factor- See Also:
-
setCostRelativeTolerance
public void setCostRelativeTolerance(double costRelativeTolerance) Deprecated.Set the desired relative error in the sum of squares.- Parameters:
costRelativeTolerance
- desired relative error in the sum of squares- See Also:
-
setParRelativeTolerance
public void setParRelativeTolerance(double parRelativeTolerance) Deprecated.Set the desired relative error in the approximate solution parameters.- Parameters:
parRelativeTolerance
- desired relative error in the approximate solution parameters- See Also:
-
setOrthoTolerance
public void setOrthoTolerance(double orthoTolerance) Deprecated.Set the desired max cosine on the orthogonality.- Parameters:
orthoTolerance
- desired max cosine on the orthogonality between the function vector and the columns of the jacobian- See Also:
-
estimate
Deprecated.Solve an estimation problem using the Levenberg-Marquardt algorithm.The algorithm used is a modified Levenberg-Marquardt one, based on the MINPACK lmder routine. The algorithm settings must have been set up before this method is called with the
setInitialStepBoundFactor(double)
,AbstractEstimator.setMaxCostEval(int)
,setCostRelativeTolerance(double)
,setParRelativeTolerance(double)
andsetOrthoTolerance(double)
methods. If these methods have not been called, the default values set up by theconstructor
will be used.The authors of the original fortran function are:
- Argonne National Laboratory. MINPACK project. March 1980
- Burton S. Garbow
- Kenneth E. Hillstrom
- Jorge J. More
Luc Maisonobe did the Java translation.
- Specified by:
estimate
in interfaceEstimator
- Specified by:
estimate
in classAbstractEstimator
- Parameters:
problem
- estimation problem to solve- Throws:
EstimationException
- if convergence cannot be reached with the specified algorithm settings or if there are more variables than equations- See Also:
-