Interface Termination<Solution_>

    • Method Detail

      • isSolverTerminated

        boolean isSolverTerminated​(SolverScope<Solution_> solverScope)
        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

        boolean isPhaseTerminated​(AbstractPhaseScope<Solution_> phaseScope)
        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

        double calculateSolverTimeGradient​(SolverScope<Solution_> solverScope)
        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.
      • calculatePhaseTimeGradient

        double calculatePhaseTimeGradient​(AbstractPhaseScope<Solution_> phaseScope)
        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.