Class ChildThreadPlumbingTermination<Solution_>
- All Implemented Interfaces:
PhaseLifecycleListener<Solution_>,SolverLifecycleListener<Solution_>,ChildThreadSupportingTermination<Solution_,,SolverScope<Solution_>> PhaseTermination<Solution_>,SolverTermination<Solution_>,Termination<Solution_>,UniversalTermination<Solution_>,EventListener
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculatePhaseTimeGradient(AbstractPhaseScope<Solution_> phaseScope) A timeGradient is a relative estimate of how long the search will continue.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.voidphaseEnded(AbstractPhaseScope<Solution_> phaseScope) voidphaseStarted(AbstractPhaseScope<Solution_> phaseScope) voidsolvingEnded(SolverScope<Solution_> solverScope) voidsolvingStarted(SolverScope<Solution_> solverScope) voidstepEnded(AbstractStepScope<Solution_> stepScope) voidstepStarted(AbstractStepScope<Solution_> stepScope) booleanThis method is thread-safe.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface ai.timefold.solver.core.impl.solver.termination.PhaseTermination
isApplicableToMethods inherited from interface ai.timefold.solver.core.impl.solver.event.SolverLifecycleListener
solvingErrorMethods inherited from interface ai.timefold.solver.core.impl.solver.termination.UniversalTermination
getPhaseTerminationList, getPhaseTerminationsInapplicableTo
-
Field Details
-
logger
protected final transient org.slf4j.Logger logger
-
-
Constructor Details
-
ChildThreadPlumbingTermination
public ChildThreadPlumbingTermination()
-
-
Method Details
-
terminateChildren
public boolean terminateChildren()This method is thread-safe.- Returns:
- true if termination hasn't been requested previously
-
isSolverTerminated
Description copied from interface:SolverTerminationCalled by theSolverafter every phase to determine if the search should stop.- Specified by:
isSolverTerminatedin interfaceSolverTermination<Solution_>- Returns:
- true if the search should terminate.
-
calculateSolverTimeGradient
Description copied from interface:SolverTerminationA 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.
- Specified by:
calculateSolverTimeGradientin interfaceSolverTermination<Solution_>- 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.
-
isPhaseTerminated
Description copied from interface:PhaseTerminationCalled by thePhaseafter every step and every move to determine if the search should stop.- Specified by:
isPhaseTerminatedin interfacePhaseTermination<Solution_>- Returns:
- true if the search should terminate.
-
calculatePhaseTimeGradient
Description copied from interface:PhaseTerminationA 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.
- Specified by:
calculatePhaseTimeGradientin interfacePhaseTermination<Solution_>- 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.
-
createChildThreadTermination
public Termination<Solution_> createChildThreadTermination(SolverScope<Solution_> solverScope, ChildThreadType childThreadType) Description copied from interface:ChildThreadSupportingTermination- Specified by:
createChildThreadTerminationin interfaceChildThreadSupportingTermination<Solution_,SolverScope<Solution_>> - Parameters:
solverScope- EitherSolverScopeorAbstractPhaseScope- Returns:
- not null
-
toString
-
solvingStarted
- Specified by:
solvingStartedin interfaceSolverLifecycleListener<Solution_>
-
solvingEnded
- Specified by:
solvingEndedin interfaceSolverLifecycleListener<Solution_>
-
phaseStarted
- Specified by:
phaseStartedin interfacePhaseLifecycleListener<Solution_>- Specified by:
phaseStartedin interfacePhaseTermination<Solution_>
-
stepStarted
- Specified by:
stepStartedin interfacePhaseLifecycleListener<Solution_>- Specified by:
stepStartedin interfacePhaseTermination<Solution_>
-
stepEnded
- Specified by:
stepEndedin interfacePhaseLifecycleListener<Solution_>- Specified by:
stepEndedin interfacePhaseTermination<Solution_>
-
phaseEnded
- Specified by:
phaseEndedin interfacePhaseLifecycleListener<Solution_>- Specified by:
phaseEndedin interfacePhaseTermination<Solution_>
-