This package provides common interfaces for the optimization algorithms
provided in sub-packages. The main interfaces defines optimizers and convergence
checkers. The functions that are optimized by the algorithms provided by this
package and its sub-packages are a subset of the one defined in the
package, namely the real and vector valued functions. These functions are called
objective function here. When the goal is to minimize, the functions are often called
cost function, this name is not used in this package.
Optimizers are the algorithms that will either minimize or maximize, the objective function by changing its input variables set until an optimal set is found. There are only four interfaces defining the common behavior of optimizers, one for each supported type of objective function:
univariate real functions
multivariate real functions
differentiable multivariate real functions
differentiable multivariate vectorial functions
Despite there are only four types of supported optimizers, it is possible to optimize a
non-differentiable multivariate vectorial function by converting it to a
real function thanks to the
LeastSquaresConverter helper class.
The transformed function can be optimized using any implementation of the
For each of the four types of supported optimizers, there is a special implementation which wraps a classical optimizer in order to add it a multi-start feature. This feature call the underlying optimizer several times in sequence with different starting points and returns the best optimum found or all optima if desired. This is a classical way to prevent being trapped into a local extremum when looking for a global one.
Interface Summary Interface Description DifferentiableMultivariateRealOptimizerThis interface represents an optimization algorithm for
scalar differentiable objective functions.
DifferentiableMultivariateVectorialOptimizerThis interface represents an optimization algorithm for
vectorial differentiable objective functions.
MultivariateRealOptimizerThis interface represents an optimization algorithm for
scalar objective functions.
RealConvergenceCheckerThis interface specifies how to check if an
optimization algorithmhas converged.
UnivariateRealOptimizerInterface for (univariate real) optimization algorithms. VectorialConvergenceCheckerThis interface specifies how to check if a
optimization algorithmhas converged.
Class Summary Class Description LeastSquaresConverterThis class converts
vectorial objective functionsto
scalar objective functionswhen the goal is to minimize them.
MultiStartDifferentiableMultivariateRealOptimizerSpecial implementation of the
DifferentiableMultivariateRealOptimizerinterface adding multi-start features to an existing optimizer.
MultiStartDifferentiableMultivariateVectorialOptimizerSpecial implementation of the
DifferentiableMultivariateVectorialOptimizerinterface adding multi-start features to an existing optimizer.
MultiStartMultivariateRealOptimizerSpecial implementation of the
MultivariateRealOptimizerinterface adding multi-start features to an existing optimizer.
MultiStartUnivariateRealOptimizerSpecial implementation of the
UnivariateRealOptimizerinterface adding multi-start features to an existing optimizer.
RealPointValuePairThis class holds a point and the value of an objective function at this point. SimpleRealPointCheckerSimple implementation of the
RealConvergenceCheckerinterface using only point coordinates.
SimpleScalarValueCheckerSimple implementation of the
RealConvergenceCheckerinterface using only objective function values.
SimpleVectorialPointCheckerSimple implementation of the
VectorialConvergenceCheckerinterface using only point coordinates.
SimpleVectorialValueCheckerSimple implementation of the
VectorialConvergenceCheckerinterface using only objective function values.
VectorialPointValuePairThis class holds a point and the vectorial value of an objective function at this point.
Enum Summary Enum Description GoalTypeGoal type for an optimization problem.
Exception Summary Exception Description OptimizationException Deprecated.in 2.2 (to be removed in 3.0).