public class QNMinimizer extends java.lang.Object implements Minimizer<DiffFunction>, HasEvaluators
Numerical Optimization (second edition) 2006 Jorge Nocedal and Stephen J. WrightA variety of different options are available.
private boolean useAveImprovement = true;
private boolean useRelativeNorm = true;
private boolean useNumericalZero = true;
private boolean useEvalImprovement = false;
To use the QNMinimizer first construct it using
QNMinimizer qn = new QNMinimizer(mem, true)
mem - the number of previous estimate vector pairs to
store, generally 15 is plenty. true - this tells the QN to use the MINPACK
linesearch with DIAGONAL scaling. false would lead to the use of the criteria
used in the old QNMinimizer class.
Then call:
qn.minimize(dfunction,convergenceTolerance,initialGuess,maxFunctionEvaluations);
Modifier and Type | Class and Description |
---|---|
static class |
QNMinimizer.SurpriseConvergence |
Modifier and Type | Field and Description |
---|---|
boolean |
outputToFile |
Constructor and Description |
---|
QNMinimizer() |
QNMinimizer(FloatFunction monitor) |
QNMinimizer(Function monitor) |
QNMinimizer(Function monitor,
int m) |
QNMinimizer(Function monitor,
int m,
boolean useRobustOptions) |
QNMinimizer(int m) |
QNMinimizer(int m,
boolean useRobustOptions) |
Modifier and Type | Method and Description |
---|---|
float[] |
minimize(DiffFloatFunction function,
float functionTolerance,
float[] initial) |
double[] |
minimize(DiffFunction function,
double functionTolerance,
double[] initial)
Attempts to find an unconstrained minimum of the objective
function starting at initial , accurate to
within functionTolerance (normally implemented as
a multiplier of the range value to give range tolerance). |
double[] |
minimize(DiffFunction dFunction,
double functionTolerance,
double[] initial,
int maxFunctionEvaluations)
Attempts to find an unconstrained minimum of the objective
function starting at initial , accurate to
within functionTolerance (normally implemented as
a multiplier of the range value to give range tolerance), but
running only for at most maxIterations iterations. |
double[] |
minimize(DiffFunction dFunction,
double functionTolerance,
double[] initial,
int maxFunctionEvaluations,
edu.stanford.nlp.optimization.QNMinimizer.QNInfo qn) |
edu.stanford.nlp.optimization.QNMinimizer.QNInfo |
newQNInfo(java.util.List<double[]> s,
java.util.List<double[]> y) |
void |
setEvaluators(int iters,
Evaluator[] evaluators) |
void |
setEvaluators(int iters,
int startEvaluateIters,
Evaluator[] evaluators) |
void |
setHistory(java.util.List<double[]> s,
java.util.List<double[]> y) |
void |
setIterationCallbackFunction(CallbackFunction func) |
void |
setM(int m) |
void |
setOldOptions() |
void |
setRobustOptions() |
void |
setTerminateOnEvalImprovementNumOfEpoch(int terminateOnEvalImprovementNumOfEpoch) |
void |
shutUp() |
void |
suppressTestPrompt(boolean suppressTestPrompt) |
void |
terminateOnAverageImprovement(boolean toTerminate) |
void |
terminateOnEvalImprovement(boolean toTerminate) |
void |
terminateOnMaxItr(int maxItr) |
void |
terminateOnNumericalZero(boolean toTerminate) |
void |
terminateOnRelativeNorm(boolean toTerminate) |
void |
useBacktracking() |
void |
useDiagonalScaling() |
void |
useMinPackSearch() |
void |
useOWLQN(boolean use,
double lambda)
To set QNMinimizer to use L1 regularization, call this method before use,
with the boolean set true, and the appropriate lambda parameter.
|
void |
useScalarScaling() |
boolean |
wasSuccessful() |
public QNMinimizer()
public QNMinimizer(int m)
public QNMinimizer(int m, boolean useRobustOptions)
public QNMinimizer(Function monitor)
public QNMinimizer(Function monitor, int m)
public QNMinimizer(Function monitor, int m, boolean useRobustOptions)
public QNMinimizer(FloatFunction monitor)
public void setOldOptions()
public final void setRobustOptions()
public void setEvaluators(int iters, Evaluator[] evaluators)
setEvaluators
in interface HasEvaluators
public void setEvaluators(int iters, int startEvaluateIters, Evaluator[] evaluators)
public void setIterationCallbackFunction(CallbackFunction func)
public void terminateOnRelativeNorm(boolean toTerminate)
public void terminateOnNumericalZero(boolean toTerminate)
public void terminateOnAverageImprovement(boolean toTerminate)
public void terminateOnEvalImprovement(boolean toTerminate)
public void terminateOnMaxItr(int maxItr)
public void suppressTestPrompt(boolean suppressTestPrompt)
public void setTerminateOnEvalImprovementNumOfEpoch(int terminateOnEvalImprovementNumOfEpoch)
public void useMinPackSearch()
public void useBacktracking()
public void useDiagonalScaling()
public void useScalarScaling()
public boolean wasSuccessful()
public void shutUp()
public void setM(int m)
public void setHistory(java.util.List<double[]> s, java.util.List<double[]> y)
public edu.stanford.nlp.optimization.QNMinimizer.QNInfo newQNInfo(java.util.List<double[]> s, java.util.List<double[]> y)
public float[] minimize(DiffFloatFunction function, float functionTolerance, float[] initial)
public double[] minimize(DiffFunction function, double functionTolerance, double[] initial)
Minimizer
function
starting at initial
, accurate to
within functionTolerance
(normally implemented as
a multiplier of the range value to give range tolerance).minimize
in interface Minimizer<DiffFunction>
function
- The objective functionfunctionTolerance
- A double
valueinitial
- An initial feasible pointpublic double[] minimize(DiffFunction dFunction, double functionTolerance, double[] initial, int maxFunctionEvaluations)
Minimizer
function
starting at initial
, accurate to
within functionTolerance
(normally implemented as
a multiplier of the range value to give range tolerance), but
running only for at most maxIterations
iterations.minimize
in interface Minimizer<DiffFunction>
dFunction
- The objective functionfunctionTolerance
- A double
valueinitial
- An initial feasible pointmaxFunctionEvaluations
- Maximum number of iterationspublic double[] minimize(DiffFunction dFunction, double functionTolerance, double[] initial, int maxFunctionEvaluations, edu.stanford.nlp.optimization.QNMinimizer.QNInfo qn)
public void useOWLQN(boolean use, double lambda)
use
- Whether to use Orthant-wise optimizationlambda
- The L1 regularization parameter.