Interface Termination<Solution_>
- All Superinterfaces:
 EventListener,PhaseLifecycleListener<Solution_>,SolverLifecycleListener<Solution_>
- All Known Implementing Classes:
 AbstractCompositeTermination,AbstractTermination,AndCompositeTermination,BasicPlumbingTermination,BestScoreFeasibleTermination,BestScoreTermination,ChildThreadPlumbingTermination,OrCompositeTermination,PhaseToSolverTerminationBridge,ScoreCalculationCountTermination,StepCountTermination,TimeMillisSpentTermination,UnimprovedStepCountTermination,UnimprovedTimeMillisSpentScoreDifferenceThresholdTermination,UnimprovedTimeMillisSpentTermination
A Termination determines when a 
Solver or a Phase should stop.
 
 An implementation must extend AbstractTermination to ensure backwards compatibility in future versions.
- See Also:
 
- 
Method Summary
Modifier and TypeMethodDescriptiondoublecalculatePhaseTimeGradient(AbstractPhaseScope<Solution_> phaseScope) doublecalculateSolverTimeGradient(SolverScope<Solution_> solverScope) A timeGradient is a relative estimate of how long the search will continue.createChildThreadTermination(SolverScope<Solution_> solverScope, ChildThreadType childThreadType) booleanisPhaseTerminated(AbstractPhaseScope<Solution_> phaseScope) Called by thePhaseafter every step and every move to determine if the search should stop.booleanisSolverTerminated(SolverScope<Solution_> solverScope) Called by theSolverafter every phase to determine if the search should stop.Methods inherited from interface org.optaplanner.core.impl.phase.event.PhaseLifecycleListener
phaseEnded, phaseStarted, stepEnded, stepStartedMethods inherited from interface org.optaplanner.core.impl.solver.event.SolverLifecycleListener
solvingEnded, solvingError, solvingStarted 
- 
Method Details
- 
isSolverTerminated
Called by theSolverafter every phase to determine if the search should stop.- Parameters:
 solverScope- never null- Returns:
 - true if the search should terminate.
 
 - 
isPhaseTerminated
Called by thePhaseafter every step and every move to determine if the search should stop.- Parameters:
 phaseScope- never null- Returns:
 - true if the search should terminate.
 
 - 
calculateSolverTimeGradient
A timeGradient is a relative estimate of how long the search will continue.Clients that use a timeGradient should cache it at the start of a single step because some implementations are not time-stable.
If a timeGradient cannot be calculated, it should return -1.0. Several implementations (such a
SimulatedAnnealingAcceptor) require a correctly implemented timeGradient.A Termination's timeGradient can be requested after they are terminated, so implementations should be careful not to return a timeGradient above 1.0.
- Parameters:
 solverScope- never null- Returns:
 - timeGradient t for which 
0.0 <= t <= 1.0 or -1.0when it is not supported. At the start of a solver t is 0.0 and at the end t would be 1.0. 
 - 
calculatePhaseTimeGradient
- Parameters:
 phaseScope- never null- Returns:
 - timeGradient t for which 
0.0 <= t <= 1.0 or -1.0when it is not supported. At the start of a phase t is 0.0 and at the end t would be 1.0. 
 - 
createChildThreadTermination
Termination<Solution_> createChildThreadTermination(SolverScope<Solution_> solverScope, ChildThreadType childThreadType) - Parameters:
 solverScope- never nullchildThreadType- never null- Returns:
 - not null
 - Throws:
 UnsupportedOperationException- if not supported by this termination
 
 -