Top Description Fields Constructors Methods
org.apache.commons.math3.optim

public abstract Class BaseMultiStartMultivariateOptimizer<PAIR>

extends BaseMultivariateOptimizer<PAIR>
Class Inheritance
Known Direct Subclasses
org.apache.commons.math3.optim.nonlinear.scalar.MultiStartMultivariateOptimizer, org.apache.commons.math3.optim.nonlinear.vector.MultiStartMultivariateVectorOptimizer
Type Parameters
<PAIR>
Type of the point/value pair returned by the optimization algorithm.
Imports
org.apache.commons.math3.exception.MathIllegalStateException, .NotStrictlyPositiveException, .TooManyEvaluationsException, org.apache.commons.math3.random.RandomVectorGenerator

Base class multi-start optimizer for a multivariate function.
This class wraps an optimizer in order to use it several times in turn with different starting points (trying to avoid being trapped in a local extremum when looking for a global one). It is not a "user" class.
Since
3.0

Field Summary

Modifier and TypeField and Description
private RandomVectorGenerator
generator

Random generator for multi-start.

private int
initialGuessIndex

Location in optimData where the updated start value will be stored.

private int
maxEvalIndex

Location in optimData where the updated maximum number of evaluations will be stored.

private OptimizationData[]
optimData

Optimization data.

private final BaseMultivariateOptimizer<PAIR>
optimizer

Underlying classical optimizer.

private int
starts

Number of starts to go.

private int
totalEvaluations

Number of evaluations already performed for all starts.

Constructor Summary

AccessConstructor and Description
public
BaseMultiStartMultivariateOptimizer(final BaseMultivariateOptimizer<PAIR>
Single-start optimizer to wrap.
optimizer
,
final int
Number of starts to perform. If starts == 1, the optimize will return the same solution as the given optimizer would return.
starts
,
final RandomVectorGenerator
Random vector generator to use for restarts.
generator
)

Create a multi-start optimizer from a single-start optimizer.

Method Summary

Modifier and TypeMethod and Description
protected abstract void
clear()

Method that will called in order to clear all stored optima.

protected PAIR
doOptimize()

Implements abstract org.apache.commons.math3.optim.BaseOptimizer.doOptimize.

Performs the bulk of the optimization algorithm.

public int
getEvaluations()

Overrides org.apache.commons.math3.optim.BaseOptimizer.getEvaluations.

Gets the number of evaluations of the objective function.

public abstract PAIR[]

Returns:

an array containing the optima sorted from best to worst.
getOptima
()

Gets all the optima found during the last call to optimize.

public PAIR
optimize(OptimizationData...
Optimization data. In addition to those documented in BaseOptimizer, this method will register the following data:
optData
)

Overrides org.apache.commons.math3.optim.BaseMultivariateOptimizer.optimize.

Stores data and performs the optimization.

protected abstract void
store(PAIR
Result of an optimization run.
optimum
)

Method that will be called in order to store each found optimum.

Inherited from org.apache.commons.math3.optim.BaseMultivariateOptimizer:
getLowerBoundgetStartPointgetUpperBoundparseOptimizationData

Field Detail

generatorback to summary
private RandomVectorGenerator generator

Random generator for multi-start.

initialGuessIndexback to summary
private int initialGuessIndex

Location in optimData where the updated start value will be stored.

maxEvalIndexback to summary
private int maxEvalIndex

Location in optimData where the updated maximum number of evaluations will be stored.

optimDataback to summary
private OptimizationData[] optimData

Optimization data.

optimizerback to summary
private final BaseMultivariateOptimizer<PAIR> optimizer

Underlying classical optimizer.

startsback to summary
private int starts

Number of starts to go.

totalEvaluationsback to summary
private int totalEvaluations

Number of evaluations already performed for all starts.

Constructor Detail

BaseMultiStartMultivariateOptimizerback to summary
public BaseMultiStartMultivariateOptimizer(final BaseMultivariateOptimizer<PAIR> optimizer, final int starts, final RandomVectorGenerator generator)

Create a multi-start optimizer from a single-start optimizer.

Note that if there are bounds constraints (see getLowerBound() and getUpperBound()), then a simple rejection algorithm is used at each restart. This implies that the random vector generator should have a good probability to generate vectors in the bounded domain, otherwise the rejection algorithm will hit the getMaxEvaluations() count without generating a proper restart point. Users must be take great care of the curse of dimensionality.

Parameters
optimizer:BaseMultivariateOptimizer<PAIR>

Single-start optimizer to wrap.

starts:int

Number of starts to perform. If starts == 1, the optimize will return the same solution as the given optimizer would return.

generator:RandomVectorGenerator

Random vector generator to use for restarts.

Exceptions
NotStrictlyPositiveException:
if starts < 1.

Method Detail

clearback to summary
protected abstract void clear()

Method that will called in order to clear all stored optima.

doOptimizeback to summary
protected PAIR doOptimize()

Implements abstract org.apache.commons.math3.optim.BaseOptimizer.doOptimize.

Doc from org.apache.commons.math3.optim.BaseOptimizer.doOptimize.

Performs the bulk of the optimization algorithm.

Returns:PAIR

the point/value pair giving the optimal value of the objective function.

Annotations
@Override
getEvaluationsback to summary
public int getEvaluations()

Overrides org.apache.commons.math3.optim.BaseOptimizer.getEvaluations.

Doc from org.apache.commons.math3.optim.BaseOptimizer.getEvaluations.

Gets the number of evaluations of the objective function. The number of evaluations corresponds to the last call to the optimize method. It is 0 if the method has not been called yet.

Returns:int

the number of evaluations of the objective function.

Annotations
@Override
getOptimaback to summary
public abstract PAIR[] getOptima()

Gets all the optima found during the last call to optimize. The optimizer stores all the optima found during a set of restarts. The optimize method returns the best point only. This method returns all the points found at the end of each starts, including the best one already returned by the optimize method.
The returned array as one element for each start as specified in the constructor. It is ordered with the results from the runs that did converge first, sorted from best to worst objective value (i.e in ascending order if minimizing and in descending order if maximizing), followed by null elements corresponding to the runs that did not converge. This means all elements will be null if the optimize method did throw an exception. This also means that if the first element is not null, it is the best point found across all starts.
The behaviour is undefined if this method is called before optimize; it will likely throw NullPointerException.

Returns:PAIR[]

an array containing the optima sorted from best to worst.

optimizeback to summary
public PAIR optimize(OptimizationData... optData)

Overrides org.apache.commons.math3.optim.BaseMultivariateOptimizer.optimize.

Doc from org.apache.commons.math3.optim.BaseMultivariateOptimizer.optimize.

Stores data and performs the optimization.

The list of parameters is open-ended so that sub-classes can extend it with arguments specific to their concrete implementations.

When the method is called multiple times, instance data is overwritten only when actually present in the list of arguments: when not specified, data set in a previous call is retained (and thus is optional in subsequent calls).

Important Note

Subclasses must override parseOptimizationData(OptimizationData[]) if they need to register their own options; but then, they must also call super.parseOptimizationData(optData) within that method.

Parameters
optData:OptimizationData[]

Optimization data. In addition to those documented in BaseOptimizer, this method will register the following data:

Returns:PAIR

a point/value pair that satisfies the convergence criteria.

Annotations
@Override
Exceptions
MathIllegalStateException:
if optData does not contain an instance of MaxEval or InitialGuess.
storeback to summary
protected abstract void store(PAIR optimum)

Method that will be called in order to store each found optimum.

Parameters
optimum:PAIR

Result of an optimization run.