Package org.apache.commons.math3.optim.nonlinear.scalar.noderiv

# Class PowellOptimizer

java.lang.Object
org.apache.commons.math3.optim.BaseOptimizer<PointValuePair>
org.apache.commons.math3.optim.BaseMultivariateOptimizer<PointValuePair>
org.apache.commons.math3.optim.nonlinear.scalar.MultivariateOptimizer
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.
Line search is performed by the `LineSearch` class.
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

## Field Summary

### Fields inherited from class org.apache.commons.math3.optim.BaseOptimizer

`evaluations, iterations`

## Constructor Summary

Constructors
Constructor
Description
`PowellOptimizer(double rel, double abs)`
The parameters 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.
`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.

## Method Summary

Modifier and Type
Method
Description
`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, optimize`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### 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 Details

### 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.