Package pal.math
Class MultivariateMinimum
- java.lang.Object
-
- pal.math.MultivariateMinimum
-
- Direct Known Subclasses:
ConjugateDirectionSearch
,ConjugateGradientSearch
,DifferentialEvolution
,GeneralizedDEOptimizer
,OrthogonalSearch
public abstract class MultivariateMinimum extends java.lang.Object
abstract base class for minimisation of a multivariate function- Author:
- Korbinian Strimmer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
MultivariateMinimum.Factory
A factory interface for MultivariateMinimums (because they aren't statefree)
-
Field Summary
Fields Modifier and Type Field Description int
maxFun
maxFun is the maximum number of calls to fun allowed.int
numFun
total number of function evaluations necessaryint
numFuncStops
numFuncStops is the number of consecutive positive evaluations of the stop criterion based on function evaluation necessary to cause the abortion of the optimization (default is 4)
-
Constructor Summary
Constructors Constructor Description MultivariateMinimum()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static void
copy(double[] target, double[] source)
Copy source vector into target vectordouble
findMinimum(MultivariateFunction f, double[] xvec)
Find minimum close to vector xdouble
findMinimum(MultivariateFunction f, double[] xvec, int fxFracDigits, int xFracDigits)
Find minimum close to vector x (desired fractional digits for each parameter is specified)double
findMinimum(MultivariateFunction f, double[] xvec, int fxFracDigits, int xFracDigits, MinimiserMonitor monitor)
Find minimum close to vector x (desired fractional digits for each parameter is specified)abstract 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.boolean
stopCondition(double fx, double[] x, double tolfx, double tolx, boolean firstCall)
Checks whether optimization should stop
-
-
-
Field Detail
-
numFun
public int numFun
total number of function evaluations necessary
-
maxFun
public int maxFun
maxFun is the maximum number of calls to fun allowed. the default value of 0 indicates no limit on the number of calls.
-
numFuncStops
public int numFuncStops
numFuncStops is the number of consecutive positive evaluations of the stop criterion based on function evaluation necessary to cause the abortion of the optimization (default is 4)
-
-
Method Detail
-
findMinimum
public double findMinimum(MultivariateFunction f, double[] xvec)
Find minimum close to vector x- Parameters:
f
- multivariate functionxvec
- initial guesses for the minimum (contains the location of the minimum on return)- Returns:
- minimal function value
-
findMinimum
public double findMinimum(MultivariateFunction f, double[] xvec, int fxFracDigits, int xFracDigits)
Find minimum close to vector x (desired fractional digits for each parameter is specified)- Parameters:
f
- multivariate functionxvec
- initial guesses for the minimum (contains the location of the minimum on return)fxFracDigits
- desired fractional digits in the function valuexFracDigits
- desired fractional digits in parameters x- Returns:
- minimal function value
-
findMinimum
public double findMinimum(MultivariateFunction f, double[] xvec, int fxFracDigits, int xFracDigits, MinimiserMonitor monitor)
Find minimum close to vector x (desired fractional digits for each parameter is specified)- Parameters:
f
- multivariate functionxvec
- initial guesses for the minimum (contains the location of the minimum on return)fxFracDigits
- desired fractional digits in the function valuexFracDigits
- desired fractional digits in parameters x- Returns:
- minimal function value
-
optimize
public abstract void optimize(MultivariateFunction f, double[] xvec, double tolfx, double tolx)
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.- Parameters:
f
- multivariate functionxvec
- initial guesses for the minimum (contains the location of the minimum on return)tolfx
- absolute tolerance of function valuetolx
- absolute tolerance of each parameter
-
optimize
public 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.- Parameters:
f
- multivariate functionxvec
- initial guesses for the minimum (contains the location of the minimum on return)tolfx
- absolute tolerance of function valuetolx
- absolute tolerance of each parametermonitor
- A monitor object that receives information about the minimising process (for display purposes)
-
stopCondition
public boolean stopCondition(double fx, double[] x, double tolfx, double tolx, boolean firstCall)
Checks whether optimization should stop- Parameters:
fx
- current function valuex
- current values of function parameterstolfx
- absolute tolerance of function valuetolx
- absolute tolerance of each parameterfirstCall
- needs to be set to true when this routine is first called otherwise it should be set to false- Returns:
- true if either x and its previous value are sufficiently similar or if fx and its previous values are sufficiently similar (test on function value has to be succesful numFuncStops consecutive times)
-
copy
public static final void copy(double[] target, double[] source)
Copy source vector into target vector- Parameters:
target
- parameter arraysource
- parameter array
-
-