public class SequentialGaussNewtonOptimizer extends Object implements LeastSquaresOptimizer
This class solve a least-square problem by solving the normal equations of the linearized problem at each iteration.
LeastSquaresOptimizer.Optimum
Constructor and Description |
---|
SequentialGaussNewtonOptimizer()
Create a sequential Gauss Newton optimizer.
|
SequentialGaussNewtonOptimizer(MatrixDecomposer decomposer,
boolean formNormalEquations,
LeastSquaresProblem.Evaluation evaluation)
Create a sequential Gauss Newton optimizer that uses the given matrix
decomposition algorithm to solve the normal equations.
|
Modifier and Type | Method and Description |
---|---|
MatrixDecomposer |
getDecomposer()
Get the matrix decomposition algorithm.
|
LeastSquaresProblem.Evaluation |
getOldEvaluation()
Get the previous evaluation used by the optimizer.
|
boolean |
isFormNormalEquations()
Get if the normal equations are explicitly formed.
|
LeastSquaresOptimizer.Optimum |
optimize(LeastSquaresProblem lsp)
Solve the non-linear least squares problem.
|
String |
toString() |
SequentialGaussNewtonOptimizer |
withAPrioriData(RealVector aPrioriState,
RealMatrix aPrioriCovariance)
Configure from a priori state and covariance.
|
SequentialGaussNewtonOptimizer |
withDecomposer(MatrixDecomposer newDecomposer)
Configure the matrix decomposition algorithm.
|
SequentialGaussNewtonOptimizer |
withEvaluation(LeastSquaresProblem.Evaluation previousEvaluation)
Configure the previous evaluation used by the optimizer.
|
SequentialGaussNewtonOptimizer |
withFormNormalEquations(boolean newFormNormalEquations)
Configure if the normal equations should be explicitly formed.
|
public SequentialGaussNewtonOptimizer()
The default for the algorithm is to use QR decomposition, not form normal equations and have no previous evaluation
public SequentialGaussNewtonOptimizer(MatrixDecomposer decomposer, boolean formNormalEquations, LeastSquaresProblem.Evaluation evaluation)
The decomposer
is used to solve JTJx=JTr.
decomposer
- the decomposition algorithm to use.formNormalEquations
- whether the normal equations should be explicitly
formed. If true
then decomposer
is used
to solve JTJx=JTr, otherwise
decomposer
is used to solve Jx=r. If decomposer
can only solve square systems then this
parameter should be true
.evaluation
- old evaluation previously computed, null if there are no previous evaluations.public MatrixDecomposer getDecomposer()
public SequentialGaussNewtonOptimizer withDecomposer(MatrixDecomposer newDecomposer)
newDecomposer
- the decomposition algorithm to use.public boolean isFormNormalEquations()
true
then
decomposer
is used to solve JTJx=JTr, otherwise
decomposer
is used to solve Jx=r.public SequentialGaussNewtonOptimizer withFormNormalEquations(boolean newFormNormalEquations)
newFormNormalEquations
- whether the normal equations should be explicitly
formed. If true
then decomposer
is used
to solve JTJx=JTr, otherwise
decomposer
is used to solve Jx=r. If decomposer
can only solve square systems then this
parameter should be true
.public LeastSquaresProblem.Evaluation getOldEvaluation()
public SequentialGaussNewtonOptimizer withEvaluation(LeastSquaresProblem.Evaluation previousEvaluation)
This building method uses a complete evaluation to retrieve
a priori data. Note that as withAPrioriData(RealVector, RealMatrix)
generates a fake evaluation and calls this method, either
withAPrioriData(RealVector, RealMatrix)
or withEvaluation(LeastSquaresProblem.Evaluation)
should be called, but not both as the last one called will override the previous one.
previousEvaluation
- the previous evaluation used by the optimizer.public SequentialGaussNewtonOptimizer withAPrioriData(RealVector aPrioriState, RealMatrix aPrioriCovariance)
This building method generates a fake evaluation and calls
withEvaluation(LeastSquaresProblem.Evaluation)
, so either
withAPrioriData(RealVector, RealMatrix)
or withEvaluation(LeastSquaresProblem.Evaluation)
should be called, but not both as the last one called will override the previous one.
aPrioriState
- a priori state to useaPrioriCovariance
- a priori covariance to usepublic LeastSquaresOptimizer.Optimum optimize(LeastSquaresProblem lsp)
optimize
in interface LeastSquaresOptimizer
lsp
- the problem definition, including model function and
convergence criteria.Copyright © 2016-2021 CS GROUP. All rights reserved.