de.jstacs.algorithms.optimization.termination
Class SmallGradientConditon

java.lang.Object
  extended by de.jstacs.algorithms.optimization.termination.AbstractTerminationCondition
      extended by de.jstacs.algorithms.optimization.termination.SmallGradientConditon
All Implemented Interfaces:
TerminationCondition, InstantiableFromParameterSet, Storable, Cloneable

public class SmallGradientConditon
extends AbstractTerminationCondition

This class implements a TerminationCondition that allows no further iteration in an optimization if the the gradient becomes small, i.e., $\sum_i \left|\frac{\partial f(\underline{x})}{\partial x_i}\right| < \epsilon$.

Author:
Jan Grau, Jens Keilwagen

Nested Class Summary
static class SmallGradientConditon.SmallGradientConditonParameterSet
          This class implements the parameter set for a SmallStepCondition.
 
Nested classes/interfaces inherited from class de.jstacs.algorithms.optimization.termination.AbstractTerminationCondition
AbstractTerminationCondition.AbstractTerminationConditionParameterSet
 
Field Summary
 
Fields inherited from class de.jstacs.algorithms.optimization.termination.AbstractTerminationCondition
parameter
 
Constructor Summary
SmallGradientConditon(double epsilon)
          This constructor creates an instance that stops the optimization if the sum of the absolute values of gradient components is smaller than epsilon.
SmallGradientConditon(SmallGradientConditon.SmallGradientConditonParameterSet parameter)
          This is the main constructor creating an instance from a given parameter set.
SmallGradientConditon(StringBuffer xml)
          The standard constructor for the interface Storable.
 
Method Summary
 boolean doNextIteration(int iteration, double fLast, double fCurrent, double[] gradient, double[] direction, double alpha, Time t)
          This method allows to decide whether to do another iteration in an optimization or not.
protected  String getXmlTag()
          This method returns the xml tag that is used in the method AbstractTerminationCondition.toXML() and in the constructor AbstractTerminationCondition.AbstractTerminationCondition(StringBuffer).
 boolean isSimple()
          This method returns false if the TerminationCondition uses either the gradient or the direction for the decision, otherwise it returns true.
protected  void set()
          This method sets internal member variables from AbstractTerminationCondition.parameter.
 
Methods inherited from class de.jstacs.algorithms.optimization.termination.AbstractTerminationCondition
clone, getCurrentParameterSet, toXML
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SmallGradientConditon

public SmallGradientConditon(double epsilon)
                      throws Exception
This constructor creates an instance that stops the optimization if the sum of the absolute values of gradient components is smaller than epsilon.

Parameters:
epsilon - the threshold for stopping, has to be non-negative
Throws:
Exception - if the parameter can not be set properly

SmallGradientConditon

public SmallGradientConditon(SmallGradientConditon.SmallGradientConditonParameterSet parameter)
                      throws CloneNotSupportedException
This is the main constructor creating an instance from a given parameter set.

Parameters:
parameter - the set of parameters
Throws:
CloneNotSupportedException - if parameter can not be cloned properly.

SmallGradientConditon

public SmallGradientConditon(StringBuffer xml)
                      throws NonParsableException
The standard constructor for the interface Storable. Constructs a SmallGradientConditon out of an XML representation.

Parameters:
xml - the XML representation as StringBuffer
Throws:
NonParsableException - if the SmallGradientConditon could not be reconstructed out of the StringBuffer xml
Method Detail

set

protected void set()
Description copied from class: AbstractTerminationCondition
This method sets internal member variables from AbstractTerminationCondition.parameter. It is used in the constructors.

Specified by:
set in class AbstractTerminationCondition

getXmlTag

protected String getXmlTag()
Description copied from class: AbstractTerminationCondition
This method returns the xml tag that is used in the method AbstractTerminationCondition.toXML() and in the constructor AbstractTerminationCondition.AbstractTerminationCondition(StringBuffer).

Specified by:
getXmlTag in class AbstractTerminationCondition
Returns:
the xml tag of the instance

doNextIteration

public boolean doNextIteration(int iteration,
                               double fLast,
                               double fCurrent,
                               double[] gradient,
                               double[] direction,
                               double alpha,
                               Time t)
Description copied from interface: TerminationCondition
This method allows to decide whether to do another iteration in an optimization or not. If it returns true it is recommended to do another iteration, otherwise (the method returns false and) it is recommended to stop the algorithm.

Parameters:
iteration - the number of performed iterations
fLast - last value of the function
fCurrent - current value of the function
gradient - the gradient of the function
direction - the last direction of the optimization
alpha - the last step size
t - a time object measuring the time that has been elapsed in the optimization
Returns:
true if another iteration should be done

isSimple

public boolean isSimple()
Description copied from interface: TerminationCondition
This method returns false if the TerminationCondition uses either the gradient or the direction for the decision, otherwise it returns true.

Returns:
false for gradient or direction based TerminationConditions