Package edu.uci.ics.jung.algorithms.util
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 java.lang.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();
-
-
Constructor Summary
Constructors Constructor Description IterativeProcess()
Generic constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
done()
Returns true if this iterative process is finished, and false otherwise.void
evaluate()
Performs the iterative process.protected void
finalizeIterations()
Perform eventual clean-up operations (must be implement by subclass when needed).double
getDesiredPrecision()
Returns the desired precision.int
getIterations()
Returns the number of iterations performed.int
getMaximumIterations()
Returns the maximum allowed number of iterations.double
getPrecision()
Returns the attained precision.boolean
hasConverged()
Check to see if the result has been attained.protected void
initializeIterations()
Initializes internal parameters to start the iterative process.double
relativePrecision(double epsilon, double x)
void
reset()
void
setDesiredPrecision(double prec)
Defines the desired precision.void
setMaximumIterations(int maxIter)
Defines the maximum allowed number of iterations.void
setPrecision(double precision)
abstract void
step()
Evaluate the result of the current iteration.
-
-
-
Method Detail
-
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 interfaceIterativeContext
-
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()
Description copied from interface:IterativeContext
Returns true if this iterative process is finished, and false otherwise.- Specified by:
done
in interfaceIterativeContext
-
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
- doublex
- double- Returns:
- double
-
setDesiredPrecision
public void setDesiredPrecision(double prec) throws java.lang.IllegalArgumentException
Defines the desired precision.- Throws:
java.lang.IllegalArgumentException
-
setMaximumIterations
public void setMaximumIterations(int maxIter) throws java.lang.IllegalArgumentException
Defines the maximum allowed number of iterations.- Throws:
java.lang.IllegalArgumentException
-
-