org.apache.commons.math.optimization.direct
Class BOBYQAOptimizer

java.lang.Object
  extended by org.apache.commons.math.optimization.direct.BaseAbstractScalarOptimizer<MultivariateRealFunction>
      extended by org.apache.commons.math.optimization.direct.BOBYQAOptimizer
All Implemented Interfaces:
BaseMultivariateRealOptimizer<MultivariateRealFunction>, BaseOptimizer<RealPointValuePair>, MultivariateRealOptimizer

public class BOBYQAOptimizer
extends BaseAbstractScalarOptimizer<MultivariateRealFunction>
implements MultivariateRealOptimizer

Powell's BOBYQA algorithm. This implementation is translated and adapted from the Fortran version available here. See this paper for an introduction.
BOBYQA is particularly well suited for high dimensional problems where derivatives are not available. In most cases it outperforms the PowellOptimizer significantly. Stochastic algorithms like CMAESOptimizer succeed more often than BOBYQA, but are more expensive. BOBYQA could also be considered as a replacement of any derivative-based optimizer when the derivatives are approximated by finite differences.

Since:
3.0
Version:
$Id$

Field Summary
static double DEFAULT_INITIAL_RADIUS
          Default value for initialTrustRegionRadius: 10.0 .
static double DEFAULT_STOPPING_RADIUS
          Default value for stoppingTrustRegionRadius: 1.0E-8 .
static int MINIMUM_PROBLEM_DIMENSION
          Minimum dimension of the problem: 2
 
Fields inherited from class org.apache.commons.math.optimization.direct.BaseAbstractScalarOptimizer
evaluations
 
Constructor Summary
BOBYQAOptimizer(int numberOfInterpolationPoints)
           
BOBYQAOptimizer(int numberOfInterpolationPoints, double[] lowerBound, double[] upperBound)
           
BOBYQAOptimizer(int numberOfInterpolationPoints, double[] lowerBound, double[] upperBound, double initialTrustRegionRadius, double stoppingTrustRegionRadius)
           
 
Method Summary
protected  RealPointValuePair doOptimize()
          Perform the bulk of the optimization algorithm.
 
Methods inherited from class org.apache.commons.math.optimization.direct.BaseAbstractScalarOptimizer
computeObjectiveValue, getConvergenceChecker, getEvaluations, getGoalType, getMaxEvaluations, getStartPoint, optimize, setConvergenceChecker
 
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.math.optimization.BaseMultivariateRealOptimizer
optimize
 
Methods inherited from interface org.apache.commons.math.optimization.BaseOptimizer
getConvergenceChecker, getEvaluations, getMaxEvaluations, setConvergenceChecker
 

Field Detail

MINIMUM_PROBLEM_DIMENSION

public static final int MINIMUM_PROBLEM_DIMENSION
Minimum dimension of the problem: 2

See Also:
Constant Field Values

DEFAULT_INITIAL_RADIUS

public static final double DEFAULT_INITIAL_RADIUS
Default value for initialTrustRegionRadius: 10.0 .

See Also:
Constant Field Values

DEFAULT_STOPPING_RADIUS

public static final double DEFAULT_STOPPING_RADIUS
Default value for stoppingTrustRegionRadius: 1.0E-8 .

See Also:
Constant Field Values
Constructor Detail

BOBYQAOptimizer

public BOBYQAOptimizer(int numberOfInterpolationPoints)
Parameters:
numberOfInterpolationPoints - Number of interpolation conditions. For a problem of dimension n, its value must be in the interval [n+2, (n+1)(n+2)/2]. Choices that exceed 2n+1 are not recommended.

BOBYQAOptimizer

public BOBYQAOptimizer(int numberOfInterpolationPoints,
                       double[] lowerBound,
                       double[] upperBound)
Parameters:
numberOfInterpolationPoints - Number of interpolation conditions. For a problem of dimension n, its value must be in the interval [n+2, (n+1)(n+2)/2]. Choices that exceed 2n+1 are not recommended.
lowerBound - Lower bounds (constraints) of the objective variables.
upperBound - Upperer bounds (constraints) of the objective variables.

BOBYQAOptimizer

public BOBYQAOptimizer(int numberOfInterpolationPoints,
                       double[] lowerBound,
                       double[] upperBound,
                       double initialTrustRegionRadius,
                       double stoppingTrustRegionRadius)
Parameters:
numberOfInterpolationPoints - Number of interpolation conditions. For a problem of dimension n, its value must be in the interval [n+2, (n+1)(n+2)/2]. Choices that exceed 2n+1 are not recommended.
lowerBound - Lower bounds (constraints) of the objective variables.
upperBound - Upperer bounds (constraints) of the objective variables.
initialTrustRegionRadius - Initial trust region radius.
stoppingTrustRegionRadius - Stopping trust region radius.
Method Detail

doOptimize

protected RealPointValuePair doOptimize()
Perform the bulk of the optimization algorithm.

Specified by:
doOptimize in class BaseAbstractScalarOptimizer<MultivariateRealFunction>
Returns:
the point/value pair giving the optimal value for the objective function.


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