jebl.math
Class OrthogonalSearch

java.lang.Object
  extended by jebl.math.MultivariateMinimum
      extended by jebl.math.OrthogonalSearch

public class OrthogonalSearch
extends MultivariateMinimum

minimization of a real-valued function of several variables without using derivatives, using the simple strategy of optimizing variables one by one.

Author:
Korbinian Strimmer, Matthew Goode

Nested Class Summary
protected static interface OrthogonalSearch.RoundOptimiser
           
 
Nested classes/interfaces inherited from class jebl.math.MultivariateMinimum
MultivariateMinimum.Factory
 
Field Summary
 
Fields inherited from class jebl.math.MultivariateMinimum
maxFun, numFun, numFuncStops
 
Constructor Summary
OrthogonalSearch()
          Initialization
OrthogonalSearch(boolean shuffle)
          Initialization
OrthogonalSearch(OrderEnumerator.OEFactory orderingFactory)
          Initialization
 
Method Summary
protected  void debug(Object output)
           
static MultivariateMinimum.Factory generateFactory(boolean shuffle)
          Generate a MultivariateMinimum.Factory for an OrthogonalSearch
protected  OrthogonalSearch.RoundOptimiser generateOrthogonalRoundOptimiser(MultivariateFunction mf)
           
protected  UnivariateMinimum generateUnivariateMinimum()
           
protected  boolean isDebug()
           
protected  boolean isFrequentMonitoring()
           
protected  boolean isIgnoreNonMinimalUnivariateMinimisations()
          Should we ignore new minisations that are not as minimal as the current one?
protected  boolean isUseCurrentInUnivariateMinimisation()
           
 void optimize(MultivariateFunction f, double[] xvec, double tolfx, double tolx)
          The actual optimization routine (needs to be implemented in a subclass of MultivariateMinimum).
 void optimize(MultivariateFunction f, double[] xvec, double tolfx, double tolx, MinimiserMonitor monitor)
          The actual optimization routine It finds a minimum close to vector x when the absolute tolerance for each parameter is specified.
 void setIgnoreNonMinimalUnivariateMinimisations(boolean value)
          Should we ignore new minisations that are not as minimal as the current one?
 void setUseCurrentInUnivariateMinimisation(boolean value)
           
 
Methods inherited from class jebl.math.MultivariateMinimum
copy, findMinimum, findMinimum, findMinimum, stopCondition
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OrthogonalSearch

public OrthogonalSearch()
Initialization


OrthogonalSearch

public OrthogonalSearch(boolean shuffle)
Initialization

Parameters:
shuffle - If true uses shuffling, else uses ascending order, when choosing next parameter to optimse (true means equivalent to old StochasticOSearch)

OrthogonalSearch

public OrthogonalSearch(OrderEnumerator.OEFactory orderingFactory)
Initialization

Method Detail

setUseCurrentInUnivariateMinimisation

public void setUseCurrentInUnivariateMinimisation(boolean value)

setIgnoreNonMinimalUnivariateMinimisations

public void setIgnoreNonMinimalUnivariateMinimisations(boolean value)
Should we ignore new minisations that are not as minimal as the current one?


optimize

public void optimize(MultivariateFunction f,
                     double[] xvec,
                     double tolfx,
                     double tolx)
Description copied from class: MultivariateMinimum
The actual optimization routine (needs to be implemented in a subclass of MultivariateMinimum). It finds a minimum close to vector x when the absolute tolerance for each parameter is specified.

Specified by:
optimize in class MultivariateMinimum
Parameters:
f - multivariate function
xvec - initial guesses for the minimum (contains the location of the minimum on return)
tolfx - absolute tolerance of function value
tolx - absolute tolerance of each parameter

optimize

public void optimize(MultivariateFunction f,
                     double[] xvec,
                     double tolfx,
                     double tolx,
                     MinimiserMonitor monitor)
Description copied from class: MultivariateMinimum
The actual optimization routine It finds a minimum close to vector x when the absolute tolerance for each parameter is specified.

Overrides:
optimize in class MultivariateMinimum
Parameters:
f - multivariate function
xvec - initial guesses for the minimum (contains the location of the minimum on return)
tolfx - absolute tolerance of function value
tolx - absolute tolerance of each parameter
monitor - A monitor object that receives information about the minimising process (for display purposes) note: The default implementation just calls the optimize function with out the Monitor!

generateFactory

public static final MultivariateMinimum.Factory generateFactory(boolean shuffle)
Generate a MultivariateMinimum.Factory for an OrthogonalSearch

Parameters:
shuffle - if true shuffles order for each round (see OrthogonalSearch constructors)

generateUnivariateMinimum

protected UnivariateMinimum generateUnivariateMinimum()

isFrequentMonitoring

protected boolean isFrequentMonitoring()

generateOrthogonalRoundOptimiser

protected OrthogonalSearch.RoundOptimiser generateOrthogonalRoundOptimiser(MultivariateFunction mf)

isUseCurrentInUnivariateMinimisation

protected final boolean isUseCurrentInUnivariateMinimisation()

isIgnoreNonMinimalUnivariateMinimisations

protected final boolean isIgnoreNonMinimalUnivariateMinimisations()
Should we ignore new minisations that are not as minimal as the current one?


debug

protected void debug(Object output)

isDebug

protected boolean isDebug()