Top Description Interfaces Classes
[default module]

Package org.apache.commons.math3.optim


Generally, optimizers are algorithms that will either minimize or maximize a scalar function, called the objective function.
For some scalar objective functions the gradient can be computed (analytically or numerically). Algorithms that use this knowledge are defined in the org.apache.commons.math3.optim.nonlinear.scalar.gradient package. The algorithms that do not need this additional information are located in the org.apache.commons.math3.optim.nonlinear.scalar.noderiv package.

Some problems are solved more efficiently by algorithms that, instead of an objective function, need access to a model function: such a model predicts a set of values which the algorithm tries to match with a set of given target values. Those algorithms are located in the org.apache.commons.math3.optim.nonlinear.vector package.
Algorithms that also require the Jacobian matrix of the model are located in the org.apache.commons.math3.optim.nonlinear.vector.jacobian package.
The non-linear least-squares optimizers are a specialization of the the latter, that minimize the distance (called cost or χ2) between model and observations.
For cases where the Jacobian cannot be provided, a utility class will convert a (vector) model into a (scalar) objective function.

This package provides common functionality for the optimization algorithms. Abstract classes (org.apache.commons.math3.optim.BaseOptimizer and org.apache.commons.math3.optim.BaseMultivariateOptimizer) contain boiler-plate code for storing evaluations and iterations counters and a user-defined convergence checker.

For each of the optimizer types, there is a special implementation that wraps an optimizer instance and provides a "multi-start" feature: it calls the underlying optimizer several times with different starting points and returns the best optimum found, or all optima if so desired. This could be useful to avoid being trapped in a local extremum.

Interface Summary

Modifier and TypeInterface and Description
public interface
ConvergenceChecker<
Type of the (point, objective value) pair.
PAIR
>

This interface specifies how to check if an optimization algorithm has converged.

public interface
OptimizationData

Marker interface.

public interface
OptimizationProblem<
The type of value the convergence checker will operate on. It should include the value of the model function and point where it was evaluated.
PAIR
>

Common settings for all optimization problems.

Class Summary

Modifier and TypeClass and Description
public abstract class
AbstractConvergenceChecker<
Type of (point, value) pair.
PAIR
>

Base class for all convergence checker implementations.

public abstract class
AbstractOptimizationProblem<
Type of the point/value pair returned by the optimization algorithm.
PAIR
>

Base class for implementing optimization problems.

public abstract class
BaseMultiStartMultivariateOptimizer<
Type of the point/value pair returned by the optimization algorithm.
PAIR
>

Base class multi-start optimizer for a multivariate function.

public abstract class
BaseMultivariateOptimizer<
Type of the point/value pair returned by the optimization algorithm.
PAIR
>

Base class for implementing optimizers for multivariate functions.

public abstract class
BaseOptimizer<
Type of the point/value pair returned by the optimization algorithm.
PAIR
>

Base class for implementing optimizers.

public class
InitialGuess

Starting point (first guess) of the optimization procedure.

public class
MaxEval

Maximum number of evaluations of the function to be optimized.

public class
MaxIter

Maximum number of iterations performed by an (iterative) algorithm.

public class
PointValuePair

This class holds a point and the value of an objective function at that point.

public class
PointVectorValuePair

This class holds a point and the vectorial value of an objective function at that point.

public class
SimpleBounds

Simple optimization constraints: lower and upper bounds.

public class
SimplePointChecker<
Type of the (point, value) pair. The type of the "value" part of the pair (not used by this class).
PAIR extends Pair<double[], ? extends Object>
>

Simple implementation of the ConvergenceChecker interface using only point coordinates.

public class
SimpleValueChecker

Simple implementation of the ConvergenceChecker interface using only objective function values.

public class
SimpleVectorValueChecker

Simple implementation of the ConvergenceChecker interface using only objective function values.