|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer<DifferentiableMultivariateFunction>
org.apache.commons.math3.optimization.general.AbstractScalarDifferentiableOptimizer
org.apache.commons.math3.optimization.general.NonLinearConjugateGradientOptimizer
public class NonLinearConjugateGradientOptimizer
Non-linear conjugate gradient optimizer.
This class supports both the Fletcher-Reeves and the Polak-Ribière update formulas for the conjugate search directions. It also supports optional preconditioning.
Nested Class Summary | |
---|---|
static class |
NonLinearConjugateGradientOptimizer.IdentityPreconditioner
Default identity preconditioner. |
private class |
NonLinearConjugateGradientOptimizer.LineSearchFunction
Internal class for line search. |
Field Summary | |
---|---|
private double |
initialStep
Initial step used to bracket the optimum in line search. |
private double[] |
point
Current point. |
private Preconditioner |
preconditioner
Preconditioner (may be null). |
private UnivariateSolver |
solver
solver to use in the line search (may be null). |
private ConjugateGradientFormula |
updateFormula
Update formula for the beta parameter. |
Fields inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer |
---|
evaluations |
Constructor Summary | |
---|---|
NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula)
Constructor with default checker ,
line search solver and
preconditioner . |
|
NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula,
ConvergenceChecker<PointValuePair> checker)
Constructor with default line search solver and
preconditioner . |
|
NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula,
ConvergenceChecker<PointValuePair> checker,
UnivariateSolver lineSearchSolver)
Constructor with default preconditioner . |
|
NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula,
ConvergenceChecker<PointValuePair> checker,
UnivariateSolver lineSearchSolver,
Preconditioner preconditioner)
|
Method Summary | |
---|---|
protected PointValuePair |
doOptimize()
Perform the bulk of the optimization algorithm. |
private double |
findUpperBound(UnivariateFunction f,
double a,
double h)
Find the upper bound b ensuring bracketing of a root between a and b. |
void |
setInitialStep(double initialStep)
Set the initial step used to bracket the optimum in line search. |
Methods inherited from class org.apache.commons.math3.optimization.general.AbstractScalarDifferentiableOptimizer |
---|
computeObjectiveGradient, optimize |
Methods inherited from class org.apache.commons.math3.optimization.direct.BaseAbstractMultivariateOptimizer |
---|
computeObjectiveValue, getConvergenceChecker, getEvaluations, getGoalType, getMaxEvaluations, getStartPoint |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.apache.commons.math3.optimization.BaseOptimizer |
---|
getConvergenceChecker, getEvaluations, getMaxEvaluations |
Field Detail |
---|
private final ConjugateGradientFormula updateFormula
private final Preconditioner preconditioner
private final UnivariateSolver solver
private double initialStep
private double[] point
Constructor Detail |
---|
public NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula)
checker
,
line search solver
and
preconditioner
.
updateFormula
- formula to use for updating the β parameter,
must be one of ConjugateGradientFormula.FLETCHER_REEVES
or ConjugateGradientFormula.POLAK_RIBIERE
.public NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula, ConvergenceChecker<PointValuePair> checker)
line search solver
and
preconditioner
.
updateFormula
- formula to use for updating the β parameter,
must be one of ConjugateGradientFormula.FLETCHER_REEVES
or ConjugateGradientFormula.POLAK_RIBIERE
.checker
- Convergence checker.public NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula, ConvergenceChecker<PointValuePair> checker, UnivariateSolver lineSearchSolver)
preconditioner
.
updateFormula
- formula to use for updating the β parameter,
must be one of ConjugateGradientFormula.FLETCHER_REEVES
or ConjugateGradientFormula.POLAK_RIBIERE
.checker
- Convergence checker.lineSearchSolver
- Solver to use during line search.public NonLinearConjugateGradientOptimizer(ConjugateGradientFormula updateFormula, ConvergenceChecker<PointValuePair> checker, UnivariateSolver lineSearchSolver, Preconditioner preconditioner)
updateFormula
- formula to use for updating the β parameter,
must be one of ConjugateGradientFormula.FLETCHER_REEVES
or ConjugateGradientFormula.POLAK_RIBIERE
.checker
- Convergence checker.lineSearchSolver
- Solver to use during line search.preconditioner
- Preconditioner.Method Detail |
---|
public void setInitialStep(double initialStep)
The initial step is a factor with respect to the search direction, which itself is roughly related to the gradient of the function
initialStep
- initial step used to bracket the optimum in line search,
if a non-positive value is used, the initial step is reset to its
default value of 1.0protected PointValuePair doOptimize()
doOptimize
in class BaseAbstractMultivariateOptimizer<DifferentiableMultivariateFunction>
private double findUpperBound(UnivariateFunction f, double a, double h)
f
- function whose root must be bracketed.a
- lower bound of the interval.h
- initial step to try.
MathIllegalStateException
- if no bracket can be found.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |