public class BasicPlumbingTermination extends AbstractTermination
problemFactChangeQueue is not empty or terminatedEarly is true).| Modifier and Type | Field and Description | 
|---|---|
protected boolean | 
daemon  | 
protected BlockingQueue<ProblemFactChange> | 
problemFactChangeQueue  | 
protected boolean | 
problemFactChangesBeingProcessed  | 
protected boolean | 
terminatedEarly  | 
logger| Constructor and Description | 
|---|
BasicPlumbingTermination(boolean daemon)  | 
| Modifier and Type | Method and Description | 
|---|---|
<Solution_> | 
addProblemFactChange(ProblemFactChange<Solution_> problemFactChange)
Concurrency note: unblocks  
waitForRestartSolverDecision(). | 
<Solution_> | 
addProblemFactChanges(List<ProblemFactChange<Solution_>> problemFactChangeList)
Concurrency note: unblocks  
waitForRestartSolverDecision(). | 
double | 
calculatePhaseTimeGradient(AbstractPhaseScope phaseScope)
 | 
double | 
calculateSolverTimeGradient(DefaultSolverScope solverScope)
A timeGradient is a relative estimate of how long the search will continue. 
 | 
Termination | 
createChildThreadTermination(DefaultSolverScope solverScope,
                            ChildThreadType childThreadType)
 | 
void | 
endProblemFactChangesProcessing()  | 
boolean | 
isEveryProblemFactChangeProcessed()  | 
boolean | 
isPhaseTerminated(AbstractPhaseScope phaseScope)
Called by the  
Phase after every step and every move to determine if the search should stop. | 
boolean | 
isSolverTerminated(DefaultSolverScope solverScope)
Called by the  
Solver after every phase to determine if the search should stop. | 
boolean | 
isTerminateEarly()
This method is thread-safe. 
 | 
void | 
resetTerminateEarly()
This method is thread-safe. 
 | 
BlockingQueue<ProblemFactChange> | 
startProblemFactChangesProcessing()  | 
boolean | 
terminateEarly()
This method is thread-safe. 
 | 
String | 
toString()  | 
boolean | 
waitForRestartSolverDecision()
If this returns true, then the problemFactChangeQueue is definitely not empty. 
 | 
phaseEnded, phaseStarted, stepEnded, stepStartedsolvingEnded, solvingStartedclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitphaseEnded, phaseStarted, stepEnded, stepStartedsolvingEnded, solvingStartedprotected final boolean daemon
protected boolean terminatedEarly
protected BlockingQueue<ProblemFactChange> problemFactChangeQueue
protected boolean problemFactChangesBeingProcessed
public void resetTerminateEarly()
public boolean terminateEarly()
 Concurrency note: unblocks waitForRestartSolverDecision().
public boolean isTerminateEarly()
public boolean waitForRestartSolverDecision()
 Concurrency note: Blocks until problemFactChangeQueue is not empty or terminatedEarly is true.
public <Solution_> boolean addProblemFactChange(ProblemFactChange<Solution_> problemFactChange)
waitForRestartSolverDecision().problemFactChange - never nullCollection.add(E)public <Solution_> boolean addProblemFactChanges(List<ProblemFactChange<Solution_>> problemFactChangeList)
waitForRestartSolverDecision().problemFactChangeList - never nullCollection.add(E)public BlockingQueue<ProblemFactChange> startProblemFactChangesProcessing()
public void endProblemFactChangesProcessing()
public boolean isEveryProblemFactChangeProcessed()
public boolean isSolverTerminated(DefaultSolverScope solverScope)
TerminationSolver after every phase to determine if the search should stop.solverScope - never nullpublic boolean isPhaseTerminated(AbstractPhaseScope phaseScope)
TerminationPhase after every step and every move to determine if the search should stop.phaseScope - never nullpublic double calculateSolverTimeGradient(DefaultSolverScope solverScope)
TerminationClients 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.
solverScope - never null0.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.public double calculatePhaseTimeGradient(AbstractPhaseScope phaseScope)
TerminationphaseScope - never null0.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.public Termination createChildThreadTermination(DefaultSolverScope solverScope, ChildThreadType childThreadType)
TerminationcreateChildThreadTermination in interface TerminationcreateChildThreadTermination in class AbstractTerminationsolverScope - never nullchildThreadType - never nullCopyright © 2006–2021 JBoss by Red Hat. All rights reserved.