public class ConvergenceDetector extends Object
Convergence is reached when one of these conditions is met: 1. No progress in current pass (no new columns resolved) 2. All columns are resolved 3. Maximum iterations reached 4. No change in last N passes (stable state) 5. Progress rate falls below threshold
The detector uses multiple strategies to avoid: - Infinite loops (max iterations) - Premature stopping (stable state detection) - Wasted iterations (progress rate threshold)
Example:
Pass 1: 10 columns resolved -> continue Pass 2: 5 columns resolved -> continue Pass 3: 2 columns resolved -> continue Pass 4: 0 columns resolved -> CONVERGED (no progress)
| Modifier and Type | Class and Description |
|---|---|
static class |
ConvergenceDetector.ConvergenceResult
Result of convergence check.
|
| Constructor and Description |
|---|
ConvergenceDetector() |
ConvergenceDetector(int maxIterations,
int stablePasses,
double minProgressRate) |
| Modifier and Type | Method and Description |
|---|---|
ConvergenceDetector.ConvergenceResult |
checkConvergence()
Check if resolution has converged.
|
int |
getPassCount()
Get the total number of passes so far.
|
List<ResolutionPass> |
getPassHistory()
Get the pass history.
|
String |
getStatistics()
Get statistics about the iteration process.
|
void |
recordPass(ResolutionPass pass)
Record a completed pass.
|
public ConvergenceDetector()
public ConvergenceDetector(int maxIterations, int stablePasses, double minProgressRate)
public void recordPass(ResolutionPass pass)
pass - the completed passpublic ConvergenceDetector.ConvergenceResult checkConvergence()
public int getPassCount()
public List<ResolutionPass> getPassHistory()
public String getStatistics()