Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| OptaPlanner distribution 6.1.0.CR1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.optaplanner.core.impl.solver
Class BasicPlumbingTermination

    java.lang.Object
      org.optaplanner.core.impl.solver.event.SolverLifecycleListenerAdapter
          org.optaplanner.core.impl.phase.event.PhaseLifecycleListenerAdapter
              org.optaplanner.core.impl.solver.termination.AbstractTermination
                  org.optaplanner.core.impl.solver.BasicPlumbingTermination

All Implemented Interfaces:
  EventListener, PhaseLifecycleListener, SolverLifecycleListener, Termination

    public class BasicPlumbingTermination

extends AbstractTermination

Concurrency notes: Condition predicate on (`problemFactChangeQueue` is not empty or `terminatedEarly` is true)

Field Summary
`protected boolean` | `daemon`
`protected BlockingQueue<ProblemFactChange>` | `problemFactChangeQueue`
`protected boolean` | `problemFactChangesBeingProcessed`
`protected boolean` | `terminatedEarly`

Fields inherited from class org.optaplanner.core.impl.solver.termination.AbstractTermination
`logger`

Constructor Summary
`BasicPlumbingTermination(boolean daemon)`

Method Summary
`boolean` | `addProblemFactChange(ProblemFactChange problemFactChange)` Concurrency note: unblocks `waitForRestartSolverDecision()`
`double` | `calculatePhaseTimeGradient(AbstractPhaseScope phaseScope)` See `Termination.calculateSolverTimeGradient(DefaultSolverScope)`.
`double` | `calculateSolverTimeGradient(DefaultSolverScope solverScope)` A timeGradient is a relative estimate of how long the search will continue.
`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()`
`void` | `resetTerminateEarly()`
`BlockingQueue<ProblemFactChange>` | `startProblemFactChangesProcessing()`
`boolean` | `terminateEarly()` Concurrency note: unblocks `waitForRestartSolverDecision()`
`boolean` | `waitForRestartSolverDecision()` If this returns true, then the problemFactChangeQueue is definitely not empty.

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, toString, 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`

Field Detail

### daemon

    protected final boolean daemon

### terminatedEarly

    protected boolean terminatedEarly

### problemFactChangeQueue

    protected BlockingQueue<ProblemFactChange> problemFactChangeQueue

### problemFactChangesBeingProcessed

    protected boolean problemFactChangesBeingProcessed

Constructor Detail

### BasicPlumbingTermination

    public BasicPlumbingTermination(boolean daemon)

Method Detail

### resetTerminateEarly

    public void resetTerminateEarly()

### terminateEarly

    public boolean terminateEarly()

  Concurrency note: unblocks `waitForRestartSolverDecision()`

  Returns:
    true if successful

### isTerminateEarly

    public boolean isTerminateEarly()

### waitForRestartSolverDecision

    public boolean waitForRestartSolverDecision()

  If this returns true, then the problemFactChangeQueue is definitely not empty.

  Concurrency note: Blocks until `problemFactChangeQueue` is not empty or `terminatedEarly` is true.

  Returns:
    true if the solver needs to be restarted

### addProblemFactChange

    public boolean addProblemFactChange(ProblemFactChange problemFactChange)

  Concurrency note: unblocks `waitForRestartSolverDecision()`

  Parameters:
    `problemFactChange` - never null
  Returns:
    as specified by `Collection.add(E)`

### startProblemFactChangesProcessing

    public BlockingQueue<ProblemFactChange> startProblemFactChangesProcessing()

### endProblemFactChangesProcessing

    public void endProblemFactChangesProcessing()

### isEveryProblemFactChangeProcessed

    public boolean isEveryProblemFactChangeProcessed()

### 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(AbstractPhaseScope phaseScope)

  Description copied from interface: `Termination`
  Called by the `Phase` 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

    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(AbstractPhaseScope phaseScope)

  Description copied from interface: `Termination`
  See `Termination.calculateSolverTimeGradient(DefaultSolverScope)`.

  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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| OptaPlanner distribution 6.1.0.CR1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2006-2014 JBoss by Red Hat. All Rights Reserved.