org.apache.commons.math3.optim.nonlinear.scalar.noderiv
Class PowellOptimizer

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.noderiv.PowellOptimizer

public class PowellOptimizer
extends MultivariateOptimizer

Powell's algorithm. This code is translated and adapted from the Python version of this algorithm (as implemented in module optimize.py v0.5 of SciPy).
The default stopping criterion is based on the differences of the function value between two successive iterations. It is however possible to define a custom convergence checker that might terminate the algorithm earlier.
The internal line search optimizer is a BrentOptimizer with a convergence checker set to SimpleUnivariateValueChecker.
Constraints are not supported: the call to optimize will throw MathUnsupportedOperationException if bounds are passed to it. In order to impose simple constraints, the objective function must be wrapped in an adapter like MultivariateFunctionMappingAdapter or MultivariateFunctionPenaltyAdapter.

Since:
2.2
Version:
$Id: PowellOptimizer.java 1462503 2013-03-29 15:48:27Z luc $

Field Summary
 
Fields inherited from class org.apache.commons.math3.optim.BaseOptimizer
evaluations, iterations
 
Constructor Summary
PowellOptimizer(double rel, double abs)
          The parameters control the default convergence checking procedure.
PowellOptimizer(double rel, double abs, ConvergenceChecker<PointValuePair> checker)
          This constructor allows to specify a user-defined convergence checker, in addition to the parameters that control the default convergence checking procedure.
PowellOptimizer(double rel, double abs, double lineRel, double lineAbs)
          Builds an instance with the default convergence checking procedure.
PowellOptimizer(double rel, double abs, double lineRel, double lineAbs, ConvergenceChecker<PointValuePair> checker)
          This constructor allows to specify a user-defined convergence checker, in addition to the parameters that control the default convergence checking procedure and the line search tolerances.
 
Method Summary
protected  PointValuePair doOptimize()
          Performs the bulk of the optimization algorithm.
 
Methods inherited from class org.apache.commons.math3.optim.nonlinear.scalar.MultivariateOptimizer
computeObjectiveValue, getGoalType, optimize, parseOptimizationData
 
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

PowellOptimizer

public PowellOptimizer(double rel,
                       double abs,
                       ConvergenceChecker<PointValuePair> checker)
This constructor allows to specify a user-defined convergence checker, in addition to the parameters that control the default convergence checking procedure.
The internal line search tolerances are set to the square-root of their corresponding value in the multivariate optimizer.

Parameters:
rel - Relative threshold.
abs - Absolute threshold.
checker - Convergence checker.
Throws:
NotStrictlyPositiveException - if abs <= 0.
NumberIsTooSmallException - if rel < 2 * Math.ulp(1d).

PowellOptimizer

public PowellOptimizer(double rel,
                       double abs,
                       double lineRel,
                       double lineAbs,
                       ConvergenceChecker<PointValuePair> checker)
This constructor allows to specify a user-defined convergence checker, in addition to the parameters that control the default convergence checking procedure and the line search tolerances.

Parameters:
rel - Relative threshold for this optimizer.
abs - Absolute threshold for this optimizer.
lineRel - Relative threshold for the internal line search optimizer.
lineAbs - Absolute threshold for the internal line search optimizer.
checker - Convergence checker.
Throws:
NotStrictlyPositiveException - if abs <= 0.
NumberIsTooSmallException - if rel < 2 * Math.ulp(1d).

PowellOptimizer

public PowellOptimizer(double rel,
                       double abs)
The parameters control the default convergence checking procedure.
The internal line search tolerances are set to the square-root of their corresponding value in the multivariate optimizer.

Parameters:
rel - Relative threshold.
abs - Absolute threshold.
Throws:
NotStrictlyPositiveException - if abs <= 0.
NumberIsTooSmallException - if rel < 2 * Math.ulp(1d).

PowellOptimizer

public PowellOptimizer(double rel,
                       double abs,
                       double lineRel,
                       double lineAbs)
Builds an instance with the default convergence checking procedure.

Parameters:
rel - Relative threshold.
abs - Absolute threshold.
lineRel - Relative threshold for the internal line search optimizer.
lineAbs - Absolute threshold for the internal line search optimizer.
Throws:
NotStrictlyPositiveException - if abs <= 0.
NumberIsTooSmallException - if rel < 2 * Math.ulp(1d).
Method Detail

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.