Class IterativeProcess

java.lang.Object
edu.uci.ics.jung.algorithms.util.IterativeProcess
All Implemented Interfaces:
IterativeContext
Direct Known Subclasses:
AbstractRanker, EdmondsKarpMaxFlow

public abstract class IterativeProcess extends Object implements IterativeContext
Provides basic infrastructure for iterative algorithms. Services provided include:
  • storage of current and max iteration count
  • framework for initialization, iterative evaluation, and finalization
  • test for convergence
  • etc.

Algorithms that subclass this class are typically used in the following way:

 FooAlgorithm foo = new FooAlgorithm(...)
 foo.setMaximumIterations(100); //set up conditions
 ...
 foo.evaluate(); //key method which initiates iterative process
 foo.getSomeResult();
 
  • Field Details

    • iterations

      private int iterations
      Number of iterations performed.
    • maximumIterations

      private int maximumIterations
      Maximum allowed number of iterations.
    • desiredPrecision

      private double desiredPrecision
      Desired precision.
    • precision

      private double precision
      Achieved precision.
  • Constructor Details

    • IterativeProcess

      public IterativeProcess()
      Generic constructor.
  • Method Details

    • evaluate

      public void evaluate()
      Performs the iterative process. Note: this method does not return anything because Java does not allow mixing double, int, or objects
    • step

      public abstract void step()
      Evaluate the result of the current iteration.
      Specified by:
      step in interface IterativeContext
    • finalizeIterations

      protected void finalizeIterations()
      Perform eventual clean-up operations (must be implement by subclass when needed).
    • getDesiredPrecision

      public double getDesiredPrecision()
      Returns:
      the desired precision.
    • getIterations

      public int getIterations()
      Returns:
      the number of iterations performed.
    • getMaximumIterations

      public int getMaximumIterations()
      Returns:
      the maximum allowed number of iterations.
    • getPrecision

      public double getPrecision()
      Returns:
      the attained precision.
    • setPrecision

      public void setPrecision(double precision)
      Parameters:
      precision - the precision to set
    • hasConverged

      public boolean hasConverged()
      Check to see if the result has been attained.
      Returns:
      boolean
    • done

      public boolean done()
      Specified by:
      done in interface IterativeContext
      Returns:
      true if this iterative process is finished, and false otherwise.
    • initializeIterations

      protected void initializeIterations()
      Initializes internal parameters to start the iterative process.
    • reset

      public void reset()
    • relativePrecision

      public double relativePrecision(double epsilon, double x)
      Parameters:
      epsilon - double
      x - double
      Returns:
      double
    • setDesiredPrecision

      public void setDesiredPrecision(double prec) throws IllegalArgumentException
      Parameters:
      prec - the desired precision.
      Throws:
      IllegalArgumentException
    • setMaximumIterations

      public void setMaximumIterations(int maxIter) throws IllegalArgumentException
      Parameters:
      maxIter - the maximum allowed number of iterations
      Throws:
      IllegalArgumentException