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

## Class PowellOptimizer

- java.lang.Object
- - org.apache.commons.math3.optim.BaseOptimizer<PAIR>
  - - 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
  Version:
    $Id: PowellOptimizer.java 1579346 2014-03-19 18:43:39Z erans $

- - ### Field Summary

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

      `evaluations, iterations`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `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

    Methods
    Modifier and Type | Method and 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 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–2014 The Apache Software Foundation. All rights reserved.