@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_TOLERANCE
data, keepGoing
maxIterations
DEFAULT_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, setTolerance
clone, getData, getKeepGoing, learn, setData, setKeepGoing, stop
getMaxIterations, isResultValid, setMaxIterations
addIterativeAlgorithmListener, fireAlgorithmEnded, fireAlgorithmStarted, fireStepEnded, fireStepStarted, getIteration, getListeners, removeIterativeAlgorithmListener, setIteration, setListeners
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
learn
clone
getMaxIterations, setMaxIterations
addIterativeAlgorithmListener, getIteration, removeIterativeAlgorithmListener
isResultValid, stop
public 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()
AbstractAnytimeBatchLearner
initializeAlgorithm
in class AbstractAnytimeBatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vector,Vector>>,GradientDescendable>
protected boolean step()
AbstractAnytimeBatchLearner
step
in class AbstractAnytimeBatchLearner<java.util.Collection<? extends InputOutputPair<? extends Vector,Vector>>,GradientDescendable>
protected void cleanupAlgorithm()
AbstractAnytimeBatchLearner
cleanupAlgorithm
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