Class UnimprovedTimeMillisSpentTermination
- java.lang.Object
-
- org.optaplanner.core.impl.solver.event.SolverLifecycleListenerAdapter<Solution_>
-
- org.optaplanner.core.impl.phase.event.PhaseLifecycleListenerAdapter
-
- org.optaplanner.core.impl.solver.termination.AbstractTermination
-
- org.optaplanner.core.impl.solver.termination.UnimprovedTimeMillisSpentTermination
-
- All Implemented Interfaces:
EventListener,PhaseLifecycleListener,SolverLifecycleListener,Termination
public class UnimprovedTimeMillisSpentTermination extends AbstractTermination
-
-
Field Summary
-
Fields inherited from class org.optaplanner.core.impl.solver.termination.AbstractTermination
logger
-
-
Constructor Summary
Constructors Modifier Constructor Description UnimprovedTimeMillisSpentTermination(long unimprovedTimeMillisSpentLimit)protectedUnimprovedTimeMillisSpentTermination(long unimprovedTimeMillisSpentLimit, Clock clock)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doublecalculatePhaseTimeGradient(AbstractPhaseScope phaseScope)doublecalculateSolverTimeGradient(DefaultSolverScope solverScope)A timeGradient is a relative estimate of how long the search will continue.protected doublecalculateTimeGradient(long bestSolutionTimeMillis)UnimprovedTimeMillisSpentTerminationcreateChildThreadTermination(DefaultSolverScope solverScope, ChildThreadType childThreadType)longgetUnimprovedTimeMillisSpentLimit()booleanisPhaseTerminated(AbstractPhaseScope phaseScope)Called by thePhaseafter every step and every move to determine if the search should stop.booleanisSolverTerminated(DefaultSolverScope solverScope)Called by theSolverafter every phase to determine if the search should stop.protected booleanisTerminated(long bestSolutionTimeMillis)StringtoString()-
Methods inherited from class org.optaplanner.core.impl.phase.event.PhaseLifecycleListenerAdapter
phaseEnded, phaseStarted, stepEnded, stepStarted
-
Methods inherited from class org.optaplanner.core.impl.solver.event.SolverLifecycleListenerAdapter
solvingEnded, solvingStarted
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
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, solvingStarted
-
-
-
-
Constructor Detail
-
UnimprovedTimeMillisSpentTermination
public UnimprovedTimeMillisSpentTermination(long unimprovedTimeMillisSpentLimit)
-
UnimprovedTimeMillisSpentTermination
protected UnimprovedTimeMillisSpentTermination(long unimprovedTimeMillisSpentLimit, Clock clock)
-
-
Method Detail
-
getUnimprovedTimeMillisSpentLimit
public long getUnimprovedTimeMillisSpentLimit()
-
isSolverTerminated
public boolean isSolverTerminated(DefaultSolverScope solverScope)
Description copied from interface:TerminationCalled by theSolverafter every phase to determine if the search should stop.- Parameters:
solverScope- never null- Returns:
- true if the search should terminate.
-
isPhaseTerminated
public boolean isPhaseTerminated(AbstractPhaseScope phaseScope)
Description copied from interface:TerminationCalled 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.
-
isTerminated
protected boolean isTerminated(long bestSolutionTimeMillis)
-
calculateSolverTimeGradient
public double calculateSolverTimeGradient(DefaultSolverScope solverScope)
Description copied from interface:TerminationA 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 can not 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
public double calculatePhaseTimeGradient(AbstractPhaseScope phaseScope)
Description copied from interface:Termination- 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.
-
calculateTimeGradient
protected double calculateTimeGradient(long bestSolutionTimeMillis)
-
createChildThreadTermination
public UnimprovedTimeMillisSpentTermination createChildThreadTermination(DefaultSolverScope solverScope, ChildThreadType childThreadType)
Description copied from interface:Termination- Specified by:
createChildThreadTerminationin interfaceTermination- Overrides:
createChildThreadTerminationin classAbstractTermination- Parameters:
solverScope- never nullchildThreadType- never null- Returns:
- not null
-
-