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
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 Summary
FieldsModifier and TypeFieldDescriptionprivate double
Desired precision.private int
Number of iterations performed.private int
Maximum allowed number of iterations.private double
Achieved precision. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
done()
void
evaluate()
Performs the iterative process.protected void
Perform eventual clean-up operations (must be implement by subclass when needed).double
int
int
double
boolean
Check to see if the result has been attained.protected void
Initializes internal parameters to start the iterative process.double
relativePrecision
(double epsilon, double x) void
reset()
void
setDesiredPrecision
(double prec) void
setMaximumIterations
(int maxIter) void
setPrecision
(double precision) abstract void
step()
Evaluate the result of the current iteration.
-
Field Details
-
iterations
private int iterationsNumber of iterations performed. -
maximumIterations
private int maximumIterationsMaximum allowed number of iterations. -
desiredPrecision
private double desiredPrecisionDesired precision. -
precision
private double precisionAchieved 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 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()- Specified by:
done
in interfaceIterativeContext
- Returns:
true
if this iterative process is finished, andfalse
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
- doublex
- double- Returns:
- double
-
setDesiredPrecision
- Parameters:
prec
- the desired precision.- Throws:
IllegalArgumentException
-
setMaximumIterations
- Parameters:
maxIter
- the maximum allowed number of iterations- Throws:
IllegalArgumentException
-