Class UnimprovedTimeMillisSpentTermination

    • Constructor Detail

      • UnimprovedTimeMillisSpentTermination

        public UnimprovedTimeMillisSpentTermination​(long unimprovedTimeMillisSpentLimit)
      • UnimprovedTimeMillisSpentTermination

        protected UnimprovedTimeMillisSpentTermination​(long unimprovedTimeMillisSpentLimit,
                                                       Clock clock)
    • Method Detail

      • getUnimprovedTimeMillisSpentLimit

        public long getUnimprovedTimeMillisSpentLimit()
      • 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.
      • isTerminated

        protected boolean isTerminated​(long bestSolutionTimeMillis)
      • 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.
      • calculateTimeGradient

        protected double calculateTimeGradient​(long bestSolutionTimeMillis)