@PublicationReference(author="R. Fletcher",title="Practical Methods of Optimization, Second Edition",type=Book,year=1987,pages={116,117},notes="Section 6.1 motivates the algorithm w.r.t. Gauss-Newton, BFGS, and Levenberg-Marquardt") @PublicationReference(author={"R. Fletcher","C. Xu"},title="Hybrid Methods for Nonlinear Least Squares",type=Journal,year=1987,pages={371,389},publication="Institute of Mathematics and its Applications Journal of Numerical Analysis") public class FletcherXuHybridEstimation extends LeastSquaresEstimator
| Modifier and Type | Field and Description |
|---|---|
static double |
DEFAULT_DAMPING_DIVISOR
Divisor of the damping factor on unsuccessful iteration, dividing
damping factor on cost-reducing iteration 2.0
|
static LineMinimizer<?> |
DEFAULT_LINE_MINIMIZER
Default line minimization algorithm, LineMinimizerDerivativeFree
|
static double |
DEFAULT_REDUCTION_TEST
Reduction test for Equation 6.1.16 in Fletcher PMOO, 0.2 given on page 117.
|
DEFAULT_MAX_ITERATIONS, DEFAULT_TOLERANCEdata, keepGoingmaxIterationsDEFAULT_ITERATION, iteration| Constructor and Description |
|---|
FletcherXuHybridEstimation()
Creates a new instance of FletcherXuHybridEstimation
|
FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer)
Creates a new instance of FletcherXuHybridEstimation
|
FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer,
double reductionTest)
Creates a new instance of FletcherXuHybridEstimation
|
FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer,
double reductionTest,
double dampingFactorDivisor)
Creates a new instance of FletcherXuHybridEstimation
|
FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer,
double reductionTest,
double dampingFactorDivisor,
int maxIterations,
double tolerance)
Creates a new instance of FletcherXuHybridEstimation
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
cleanupAlgorithm()
Called to clean up the learning algorithm's state after learning has
finished.
|
double |
getDampingFactorDivisor()
Getter for dampingFactorDivisor
|
LineMinimizer<?> |
getLineMinimizer()
Getter for lineMinimizer
|
double |
getReductionTest()
Getter for reduction test.
|
protected boolean |
initializeAlgorithm()
Called to initialize the learning algorithm's state based on the
data that is stored in the data field.
|
void |
setDampingFactorDivisor(double dampingFactorDivisor)
Setter for dampingFactorDivisor
|
void |
setLineMinimizer(LineMinimizer<?> lineMinimizer)
Setter for lineMinimizer
|
void |
setReductionTest(double reductionTest)
Setter for reduction test.
|
protected boolean |
step()
Called to take a single step of the learning algorithm.
|
getCostFunction, getObjectToOptimize, getPerformance, getResult, getResultCost, getTolerance, setCostFunction, setObjectToOptimize, setResult, setResultCost, setToleranceclone, getData, getKeepGoing, learn, setData, setKeepGoing, stopgetMaxIterations, isResultValid, setMaxIterationsaddIterativeAlgorithmListener, fireAlgorithmEnded, fireAlgorithmStarted, fireStepEnded, fireStepStarted, getIteration, getListeners, removeIterativeAlgorithmListener, setIteration, setListenersequals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitlearnclonegetMaxIterations, setMaxIterationsaddIterativeAlgorithmListener, getIteration, removeIterativeAlgorithmListenerisResultValid, stoppublic static final double DEFAULT_REDUCTION_TEST
public static final double DEFAULT_DAMPING_DIVISOR
public static final LineMinimizer<?> DEFAULT_LINE_MINIMIZER
public FletcherXuHybridEstimation()
public FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer)
lineMinimizer - The minimizerpublic FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer, double reductionTest)
lineMinimizer - Workhorse algorithm that finds the minimum along a particular directionreductionTest - Reduction test for switching between BFGS and Levenberg-Marquardt, must
be [0,1]. Lower values result in more Levenberg-Marquardt steps,
larger values result in more BFGS steps.public FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer, double reductionTest, double dampingFactorDivisor)
lineMinimizer - Workhorse algorithm that finds the minimum along a particular directionreductionTest - Reduction test for switching between BFGS and Levenberg-Marquardt, must
be [0,1]. Lower values result in more Levenberg-Marquardt steps,
larger values result in more BFGS steps.dampingFactorDivisor - Amount to modify the damping factor, typically 2.0 or 10.0public FletcherXuHybridEstimation(LineMinimizer<?> lineMinimizer, double reductionTest, double dampingFactorDivisor, int maxIterations, double tolerance)
lineMinimizer - Workhorse algorithm that finds the minimum along a particular directionreductionTest - Reduction test for switching between BFGS and Levenberg-Marquardt, must
be [0,1]. Lower values result in more Levenberg-Marquardt steps,
larger values result in more BFGS steps.dampingFactorDivisor - Amount to modify the damping factor, typically 2.0 or 10.0maxIterations - Maximum number of iterations before stoppingtolerance - Tolerance of the algorithm.protected boolean initializeAlgorithm()
AbstractAnytimeBatchLearnerinitializeAlgorithm in class AbstractAnytimeBatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vector,Vector>>,GradientDescendable>protected boolean step()
AbstractAnytimeBatchLearnerstep in class AbstractAnytimeBatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vector,Vector>>,GradientDescendable>protected void cleanupAlgorithm()
AbstractAnytimeBatchLearnercleanupAlgorithm in class AbstractAnytimeBatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vector,Vector>>,GradientDescendable>public double getReductionTest()
public void setReductionTest(double reductionTest)
reductionTest - Reduction test for switching between BFGS and Levenberg-Marquardt, must
be [0,1]. Lower values result in more Levenberg-Marquardt steps,
larger values result in more BFGS steps.public double getDampingFactorDivisor()
public void setDampingFactorDivisor(double dampingFactorDivisor)
dampingFactorDivisor - Amount to modify the damping factor, typically 2.0 or 10.0public LineMinimizer<?> getLineMinimizer()
public void setLineMinimizer(LineMinimizer<?> lineMinimizer)
lineMinimizer - Workhorse algorithm that finds the minimum along a particular direction