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 TypeMethodDescriptiondouble
calculatePhaseTimeGradient
(AbstractPhaseScope<Solution_> phaseScope) double
calculateSolverTimeGradient
(SolverScope<Solution_> solverScope) A timeGradient is a relative estimate of how long the search will continue.createChildThreadTermination
(SolverScope<Solution_> solverScope, ChildThreadType childThreadType) boolean
isPhaseTerminated
(AbstractPhaseScope<Solution_> phaseScope) Called by thePhase
after every step and every move to determine if the search should stop.boolean
isSolverTerminated
(SolverScope<Solution_> solverScope) Called by theSolver
after every phase to determine if the search should stop.Methods inherited from interface org.optaplanner.core.impl.phase.event.PhaseLifecycleListener
phaseEnded, phaseStarted, stepEnded, stepStarted
Methods inherited from interface org.optaplanner.core.impl.solver.event.SolverLifecycleListener
solvingEnded, solvingError, solvingStarted
-
Method Details
-
isSolverTerminated
Called by theSolver
after every phase to determine if the search should stop.- Parameters:
solverScope
- never null- Returns:
- true if the search should terminate.
-
isPhaseTerminated
Called by thePhase
after 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.0
when 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.0
when 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
-