org.drools.planner.core.solver
Class BasicPlumbingTermination

java.lang.Object
  extended by org.drools.planner.core.termination.AbstractTermination
      extended by org.drools.planner.core.solver.BasicPlumbingTermination
All Implemented Interfaces:
EventListener, SolverPhaseLifecycleListener, SolverLifecycleListener, Termination

public class BasicPlumbingTermination
extends AbstractTermination


Field Summary
protected  BlockingQueue<ProblemFactChange> problemFactChangeQueue
           
protected  AtomicBoolean terminatedEarly
           
 
Fields inherited from class org.drools.planner.core.termination.AbstractTermination
logger
 
Constructor Summary
BasicPlumbingTermination()
           
 
Method Summary
 boolean addProblemFactChange(ProblemFactChange problemFactChange)
           
 double calculatePhaseTimeGradient(AbstractSolverPhaseScope solverPhaseScope)
          See Termination.calculateSolverTimeGradient(DefaultSolverScope).
 double calculateSolverTimeGradient(DefaultSolverScope solverScope)
          A timeGradient is a relative estimate of how long the search will continue.
 BlockingQueue<ProblemFactChange> getProblemFactChangeQueue()
           
 boolean isPhaseTerminated(AbstractSolverPhaseScope solverPhaseScope)
          Called by the SolverPhase after every step 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()
           
 void resetTerminateEarly()
           
 boolean terminateEarly()
           
 
Methods inherited from class org.drools.planner.core.termination.AbstractTermination
beforeDeciding, phaseEnded, phaseStarted, solvingEnded, solvingStarted, stepDecided, stepTaken
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

terminatedEarly

protected AtomicBoolean terminatedEarly

problemFactChangeQueue

protected BlockingQueue<ProblemFactChange> problemFactChangeQueue
Constructor Detail

BasicPlumbingTermination

public BasicPlumbingTermination()
Method Detail

resetTerminateEarly

public void resetTerminateEarly()

terminateEarly

public boolean terminateEarly()

isTerminateEarly

public boolean isTerminateEarly()

addProblemFactChange

public boolean addProblemFactChange(ProblemFactChange problemFactChange)

getProblemFactChangeQueue

public BlockingQueue<ProblemFactChange> getProblemFactChangeQueue()

isSolverTerminated

public boolean isSolverTerminated(DefaultSolverScope solverScope)
Description copied from interface: Termination
Called by the Solver after every phase to determine if the search should stop.

Parameters:
solverScope - never null
Returns:
true if the search should terminate.

isPhaseTerminated

public boolean isPhaseTerminated(AbstractSolverPhaseScope solverPhaseScope)
Description copied from interface: Termination
Called by the SolverPhase after every step to determine if the search should stop.

Parameters:
solverPhaseScope - never null
Returns:
true if the search should terminate.

calculateSolverTimeGradient

public double calculateSolverTimeGradient(DefaultSolverScope solverScope)
Description copied from interface: Termination
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 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.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

public double calculatePhaseTimeGradient(AbstractSolverPhaseScope solverPhaseScope)
Description copied from interface: Termination
See Termination.calculateSolverTimeGradient(DefaultSolverScope).

Parameters:
solverPhaseScope - 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.


Copyright © 2001-2011 JBoss by Red Hat. All Rights Reserved.