Package org.ddogleg.optimization
Class GaussNewtonBase_F64<C extends ConfigGaussNewton,HM extends HessianMath>
java.lang.Object
org.ddogleg.optimization.GaussNewtonBase_F64<C,HM>
- All Implemented Interfaces:
VerbosePrint
- Direct Known Subclasses:
LevenbergMarquardt_F64,TrustRegionBase_F64
public abstract class GaussNewtonBase_F64<C extends ConfigGaussNewton,HM extends HessianMath>
extends Object
implements VerbosePrint
Base class for Gauss-Newton based approaches for unconstrained optimization.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptiondoubledoubleStorage for the gradientdoubleprotected DMatrixRMajprotected GaussNewtonBase_F64.ModeAfter the parameter array has been update this function is called with the array passed in.protected booleanprotected intprotected intprotected @Nullable PrintStreamprotected int -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidApply scaling to gradient and Hessianprotected booleanChecks for convergence using f-test:protected voidSets scaling to the sqrt() of the diagonal elements in the Hessian matrixvoidcomputeHessianScaling(DMatrixRMaj scaling) Applies the standard formula for computing scaling.doubleComputes predicted reduction for step 'p'protected abstract booleanSelects the next stepprotected abstract voidfunctionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HM hessian) Computes the gradient and Hessian at 'x'.voidinitialize(double[] initial, int numberOfParameters) booleaniterate()Performs one iterationmode()voidsetVerbose(@Nullable PrintStream out, int level) Deprecated.voidsetVerbose(@Nullable PrintStream out, @Nullable Set<String> configuration) If set to a non-null output then extra information will be printed to the specified stream.protected voidUndo scaling on estimated parametersprotected abstract booleanComputes all the derived data structures and attempts to update the parameters
-
Field Details
-
postUpdateAdjuster
After the parameter array has been update this function is called with the array passed in. Here any necessary adjustments can be made as long as they don't change the resulting residual errors. For example this can ensure that a vector which has been parameterized has a norm of one to prevent it from scaling to infinity. -
hessian
-
x
-
x_next
-
p
-
fx
public double fx -
gradient
Storage for the gradient -
sameStateAsCost
protected boolean sameStateAsCost -
hessianScaling
-
mode
-
totalFullSteps
protected int totalFullSteps -
totalSelectSteps
protected int totalSelectSteps -
verbose
-
verboseLevel
protected int verboseLevel -
config
-
ftest_val
public double ftest_val -
gtest_val
public double gtest_val
-
-
Constructor Details
-
GaussNewtonBase_F64
-
-
Method Details
-
initialize
public void initialize(double[] initial, int numberOfParameters) -
iterate
public boolean iterate()Performs one iteration- Returns:
- true if it has converged or false if not
-
updateDerivates
protected abstract boolean updateDerivates()Computes all the derived data structures and attempts to update the parameters- Returns:
- true if it has converged.
-
computeStep
protected abstract boolean computeStep()Selects the next step- Returns:
- true if it has converged.
-
computeHessianScaling
protected void computeHessianScaling()Sets scaling to the sqrt() of the diagonal elements in the Hessian matrix -
computeHessianScaling
Applies the standard formula for computing scaling. This is broken off into its own function so that it easily invoked if the function above is overridden- Parameters:
scaling- Vector containing scaling information
-
applyHessianScaling
protected void applyHessianScaling()Apply scaling to gradient and Hessian -
undoHessianScalingOnParameters
Undo scaling on estimated parameters -
checkConvergenceGTest
Checks for convergence using f-test:
g-test : gtol ≤ ||g(x)||_inf- Returns:
- true if converged or false if it hasn't converged
-
functionGradientHessian
protected abstract void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HM hessian) Computes the gradient and Hessian at 'x'. If sameStateAsCost is true then it can be assumed that 'x' has not changed since the cost was last computed.- Parameters:
gradient- (Input) xsameStateAsCost- (Input) If true then when the cost (or residuals) was last called it had the same value of xgradient- (Output) gradienthessian- (Output) hessian
-
computePredictedReduction
Computes predicted reduction for step 'p'- Parameters:
p- Change in state or the step- Returns:
- predicted reduction in quadratic model
-
mode
-
setVerbose
Deprecated.If set to a non-null output then extra information will be printed to the specified stream.- Parameters:
out- Stream that is printed to. Set to null to disablelevel- (Future use) Parameter which can be used to specify level of verbose output. Set to zero for now.
-
setVerbose
public void setVerbose(@Nullable @Nullable PrintStream out, @Nullable @Nullable Set<String> configuration) Description copied from interface:VerbosePrintIf set to a non-null output then extra information will be printed to the specified stream.- Specified by:
setVerbosein interfaceVerbosePrint- Parameters:
out- Stream that is printed to. Set to null to disableconfiguration- (Future use) Set which specifies flags that can be used to turn on and off different output
-