org.apache.commons.math.estimation
Class GaussNewtonEstimator

java.lang.Object
  extended by org.apache.commons.math.estimation.AbstractEstimator
      extended by org.apache.commons.math.estimation.GaussNewtonEstimator
All Implemented Interfaces:
java.io.Serializable, Estimator

public class GaussNewtonEstimator
extends AbstractEstimator
implements java.io.Serializable

This class implements a solver for estimation problems.

This class solves estimation problems using a weighted least squares criterion on the measurement residuals. It uses a Gauss-Newton algorithm.

Since:
1.2
Version:
$Revision: 627987 $ $Date: 2008-02-15 03:01:26 -0700 (Fri, 15 Feb 2008) $
See Also:
Serialized Form

Field Summary
private  double convergence
          Threshold for cost convergence.
private static long serialVersionUID
          Serializable version identifier
private  double steadyStateThreshold
          Threshold for cost steady state detection.
 
Fields inherited from class org.apache.commons.math.estimation.AbstractEstimator
cols, cost, jacobian, measurements, parameters, residuals, rows
 
Constructor Summary
GaussNewtonEstimator(int maxCostEval, double convergence, double steadyStateThreshold)
          Simple constructor.
 
Method Summary
 void estimate(EstimationProblem problem)
          Solve an estimation problem using a least squares criterion.
 
Methods inherited from class org.apache.commons.math.estimation.AbstractEstimator
getChiSquare, getCostEvaluations, getCovariances, getJacobianEvaluations, getRMS, guessParametersErrors, incrementJacobianEvaluationsCounter, initializeEstimate, setMaxCostEval, updateJacobian, updateResidualsAndCost
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

steadyStateThreshold

private double steadyStateThreshold
Threshold for cost steady state detection.


convergence

private double convergence
Threshold for cost convergence.


serialVersionUID

private static final long serialVersionUID
Serializable version identifier

See Also:
Constant Field Values
Constructor Detail

GaussNewtonEstimator

public GaussNewtonEstimator(int maxCostEval,
                            double convergence,
                            double steadyStateThreshold)
Simple constructor.

This constructor builds an estimator and stores its convergence characteristics.

An estimator is considered to have converged whenever either the criterion goes below a physical threshold under which improvements are considered useless or when the algorithm is unable to improve it (even if it is still high). The first condition that is met stops the iterations.

The fact an estimator has converged does not mean that the model accurately fits the measurements. It only means no better solution can be found, it does not mean this one is good. Such an analysis is left to the caller.

If neither conditions are fulfilled before a given number of iterations, the algorithm is considered to have failed and an EstimationException is thrown.

Parameters:
maxCostEval - maximal number of cost evaluations allowed
convergence - criterion threshold below which we do not need to improve the criterion anymore
steadyStateThreshold - steady state detection threshold, the problem has converged has reached a steady state if Math.abs (Jn - Jn-1) < Jn * convergence, where Jn and Jn-1 are the current and preceding criterion value (square sum of the weighted residuals of considered measurements).
Method Detail

estimate

public void estimate(EstimationProblem problem)
              throws EstimationException
Solve an estimation problem using a least squares criterion.

This method set the unbound parameters of the given problem starting from their current values through several iterations. At each step, the unbound parameters are changed in order to minimize a weighted least square criterion based on the measurements of the problem.

The iterations are stopped either when the criterion goes below a physical threshold under which improvement are considered useless or when the algorithm is unable to improve it (even if it is still high). The first condition that is met stops the iterations. If the convergence it nos reached before the maximum number of iterations, an EstimationException is thrown.

Specified by:
estimate in interface Estimator
Specified by:
estimate in class AbstractEstimator
Parameters:
problem - estimation problem to solve
Throws:
EstimationException - if the problem cannot be solved
See Also:
EstimationProblem