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

public Class MultiStartUnivariateOptimizer

extends UnivariateOptimizer
Class Inheritance
Imports
java.util.Arrays, .Comparator, org.apache.commons.math3.exception.MathIllegalStateException, .NotStrictlyPositiveException, org.apache.commons.math3.exception.util.LocalizedFormats, org.apache.commons.math3.random.RandomGenerator, org.apache.commons.math3.optim.MaxEval, .OptimizationData, org.apache.commons.math3.optim.nonlinear.scalar.GoalType

Special implementation of the UnivariateOptimizer interface adding multi-start features to an existing optimizer.
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).
Since
3.0

Field Summary

Modifier and TypeField and Description
private RandomGenerator
generator

Random generator for multi-start.

private int
maxEvalIndex

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

private UnivariatePointValuePair[]
optima

Found optima.

private OptimizationData[]
optimData

Optimization data.

private final UnivariateOptimizer
optimizer

Underlying classical optimizer.

private int
searchIntervalIndex

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

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
MultiStartUnivariateOptimizer(final UnivariateOptimizer
Single-start optimizer to wrap.
optimizer
,
final int
Number of starts to perform. If starts == 1, the optimize methods will return the same solution as optimizer would.
starts
,
final RandomGenerator
Random generator to use for restarts.
generator
)

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

Method Summary

Modifier and TypeMethod and Description
protected UnivariatePointValuePair
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 UnivariatePointValuePair[]

Returns:

an array containing the optima.
getOptima
()

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

public UnivariatePointValuePair
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.univariate.UnivariateOptimizer.optimize.

Stores data and performs the optimization.

private void
sortPairs(final GoalType
Goal type.
goal
)

Sort the optima from best to worst, followed by null elements.

Inherited from org.apache.commons.math3.optim.univariate.UnivariateOptimizer:
computeObjectiveValuegetGoalTypegetMaxgetMingetStartValueparseOptimizationData

Field Detail

generatorback to summary
private RandomGenerator generator

Random generator for multi-start.

maxEvalIndexback to summary
private int maxEvalIndex

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

optimaback to summary
private UnivariatePointValuePair[] optima

Found optima.

optimDataback to summary
private OptimizationData[] optimData

Optimization data.

optimizerback to summary
private final UnivariateOptimizer optimizer

Underlying classical optimizer.

searchIntervalIndexback to summary
private int searchIntervalIndex

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

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

MultiStartUnivariateOptimizerback to summary
public MultiStartUnivariateOptimizer(final UnivariateOptimizer optimizer, final int starts, final RandomGenerator generator)

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

Parameters
optimizer:UnivariateOptimizer

Single-start optimizer to wrap.

starts:int

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

generator:RandomGenerator

Random generator to use for restarts.

Exceptions
NotStrictlyPositiveException:
if starts < 1.

Method Detail

doOptimizeback to summary
protected UnivariatePointValuePair 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:UnivariatePointValuePair

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 UnivariatePointValuePair[] 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.

Returns:UnivariatePointValuePair[]

an array containing the optima.

Exceptions
MathIllegalStateException:
if optimize has not been called.
optimizeback to summary
public UnivariatePointValuePair optimize(OptimizationData... optData)

Overrides org.apache.commons.math3.optim.univariate.UnivariateOptimizer.optimize.

Doc from org.apache.commons.math3.optim.univariate.UnivariateOptimizer.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:UnivariatePointValuePair

a point/value pair that satisfies the convergence criteria.

Annotations
@Override
Exceptions
MathIllegalStateException:
if optData does not contain an instance of MaxEval or SearchInterval.
sortPairsback to summary
private void sortPairs(final GoalType goal)

Sort the optima from best to worst, followed by null elements.

Parameters
goal:GoalType

Goal type.