org.apache.commons.math3.optim.nonlinear.scalar.gradient
Class NonLinearConjugateGradientOptimizer

java.lang.Object
  extended by org.apache.commons.math3.optim.BaseOptimizer<PAIR>
      extended by org.apache.commons.math3.optim.BaseMultivariateOptimizer<PointValuePair>
          extended by org.apache.commons.math3.optim.nonlinear.scalar.MultivariateOptimizer
              extended by org.apache.commons.math3.optim.nonlinear.scalar.GradientMultivariateOptimizer
                  extended by org.apache.commons.math3.optim.nonlinear.scalar.gradient.NonLinearConjugateGradientOptimizer

public class NonLinearConjugateGradientOptimizer
extends GradientMultivariateOptimizer

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.

Since:
2.0
Version:
$Id: NonLinearConjugateGradientOptimizer.java 1416643 2012-12-03 19:37:14Z tn $

Nested Class Summary
static class NonLinearConjugateGradientOptimizer.BracketingStep
          The initial step is a factor with respect to the search direction (which itself is roughly related to the gradient of the function).
static class NonLinearConjugateGradientOptimizer.Formula
          Available choices of update formulas for the updating the parameter that is used to compute the successive conjugate search directions.
static class NonLinearConjugateGradientOptimizer.IdentityPreconditioner
          Default identity preconditioner.
 
Field Summary
 
Fields inherited from class org.apache.commons.math3.optim.BaseOptimizer
evaluations, iterations
 
Constructor Summary
NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula, ConvergenceChecker<PointValuePair> checker)
          Constructor with default line search solver and preconditioner.
NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula, ConvergenceChecker<PointValuePair> checker, UnivariateSolver lineSearchSolver)
          Constructor with default preconditioner.
NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula, ConvergenceChecker<PointValuePair> checker, UnivariateSolver lineSearchSolver, Preconditioner preconditioner)
           
 
Method Summary
protected  PointValuePair doOptimize()
          Performs the bulk of the optimization algorithm.
 PointValuePair optimize(OptimizationData... optData)
          Stores data and performs the optimization.
 
Methods inherited from class org.apache.commons.math3.optim.nonlinear.scalar.GradientMultivariateOptimizer
computeObjectiveGradient
 
Methods inherited from class org.apache.commons.math3.optim.nonlinear.scalar.MultivariateOptimizer
computeObjectiveValue, getGoalType
 
Methods inherited from class org.apache.commons.math3.optim.BaseMultivariateOptimizer
getLowerBound, getStartPoint, getUpperBound
 
Methods inherited from class org.apache.commons.math3.optim.BaseOptimizer
getConvergenceChecker, getEvaluations, getIterations, getMaxEvaluations, getMaxIterations, incrementEvaluationCount, incrementIterationCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NonLinearConjugateGradientOptimizer

public NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula,
                                           ConvergenceChecker<PointValuePair> checker)
Constructor with default line search solver and preconditioner.

Parameters:
updateFormula - formula to use for updating the β parameter, must be one of NonLinearConjugateGradientOptimizer.Formula.FLETCHER_REEVES or NonLinearConjugateGradientOptimizer.Formula.POLAK_RIBIERE.
checker - Convergence checker.

NonLinearConjugateGradientOptimizer

public NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula,
                                           ConvergenceChecker<PointValuePair> checker,
                                           UnivariateSolver lineSearchSolver)
Constructor with default preconditioner.

Parameters:
updateFormula - formula to use for updating the β parameter, must be one of NonLinearConjugateGradientOptimizer.Formula.FLETCHER_REEVES or NonLinearConjugateGradientOptimizer.Formula.POLAK_RIBIERE.
checker - Convergence checker.
lineSearchSolver - Solver to use during line search.

NonLinearConjugateGradientOptimizer

public NonLinearConjugateGradientOptimizer(NonLinearConjugateGradientOptimizer.Formula updateFormula,
                                           ConvergenceChecker<PointValuePair> checker,
                                           UnivariateSolver lineSearchSolver,
                                           Preconditioner preconditioner)
Parameters:
updateFormula - formula to use for updating the β parameter, must be one of NonLinearConjugateGradientOptimizer.Formula.FLETCHER_REEVES or NonLinearConjugateGradientOptimizer.Formula.POLAK_RIBIERE.
checker - Convergence checker.
lineSearchSolver - Solver to use during line search.
preconditioner - Preconditioner.
Method Detail

optimize

public PointValuePair optimize(OptimizationData... optData)
                        throws TooManyEvaluationsException
Stores data and performs the optimization.
The list of parameters is open-ended so that sub-classes can extend it with arguments specific to their concrete implementations.
When the method is called multiple times, instance data is overwritten only when actually present in the list of arguments: when not specified, data set in a previous call is retained (and thus is optional in subsequent calls).

Overrides:
optimize in class GradientMultivariateOptimizer
Parameters:
optData - Optimization data. The following data will be looked for:
Returns:
a point/value pair that satifies the convergence criteria.
Throws:
TooManyEvaluationsException - if the maximal number of evaluations (of the objective function) is exceeded.

doOptimize

protected PointValuePair doOptimize()
Performs the bulk of the optimization algorithm.

Specified by:
doOptimize in class BaseOptimizer<PointValuePair>
Returns:
the point/value pair giving the optimal value of the objective function.


Copyright © 2003-2013 The Apache Software Foundation. All Rights Reserved.