Class ChildThreadPlumbingTermination<Solution_>

    • Field Detail

      • terminateChildren

        protected boolean terminateChildren
    • Constructor Detail

      • ChildThreadPlumbingTermination

        public ChildThreadPlumbingTermination()
    • Method Detail

      • terminateChildren

        public boolean terminateChildren()
        This method is thread-safe.
        Returns:
        true if termination hasn't been requested previously
      • isSolverTerminated

        public boolean isSolverTerminated​(SolverScope<Solution_> 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<Solution_> 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​(SolverScope<Solution_> 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 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.

        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.