de.jstacs.algorithms.optimization.termination
Class SmallStepCondition

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

public class SmallStepCondition
extends AbstractTerminationCondition

This class implements a TerminationCondition that allows no further iteration in an optimization if the scalar product of the current and the last values of x will be small, i.e., $(\underline{x}_i-\underline{x}_{i-1})^T (\underline{x}_i-\underline{x}_{i-1}) < \epsilon$.

Author:
Jens Keilwagen

Nested Class Summary
static class SmallStepCondition.SmallStepConditionParameterSet
          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
SmallStepCondition(double epsilon)
          This constructor creates an instance that allows no further iteration in an optimization if the scalar product of the current and the last values of x is smaller than epsilon.
SmallStepCondition(SmallStepCondition.SmallStepConditionParameterSet parameter)
          This is the main constructor creating an instance from a given parameter set.
SmallStepCondition(StringBuffer xml)
          The standard constructor for the interface Storable.
 
Method Summary
 boolean doNextIteration(int iteration, double f_last, double f_current, 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

SmallStepCondition

public SmallStepCondition(double epsilon)
                   throws Exception
This constructor creates an instance that allows no further iteration in an optimization if the scalar product of the current and the last values of x 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

SmallStepCondition

public SmallStepCondition(SmallStepCondition.SmallStepConditionParameterSet 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.

SmallStepCondition

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

Parameters:
xml - the XML representation as StringBuffer
Throws:
NonParsableException - if the SmallStepCondition 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 f_last,
                               double f_current,
                               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
f_last - last value of the function
f_current - 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