Class TwoPhaseHASCO<S extends ai.libs.jaicore.search.probleminputs.GraphSearchWithPathEvaluationsInput<N,​A,​java.lang.Double>,​N,​A>

    • Method Detail

      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • setHasco

        public void setHasco​(HASCO<S,​N,​A,​java.lang.Double> hasco)
      • nextWithException

        public org.api4.java.algorithm.events.IAlgorithmEvent nextWithException()
                                                                         throws java.lang.InterruptedException,
                                                                                org.api4.java.algorithm.exceptions.AlgorithmTimeoutedException,
                                                                                org.api4.java.algorithm.exceptions.AlgorithmException,
                                                                                org.api4.java.algorithm.exceptions.AlgorithmExecutionCanceledException
        Throws:
        java.lang.InterruptedException
        org.api4.java.algorithm.exceptions.AlgorithmTimeoutedException
        org.api4.java.algorithm.exceptions.AlgorithmException
        org.api4.java.algorithm.exceptions.AlgorithmExecutionCanceledException
      • shouldSearchTerminate

        protected boolean shouldSearchTerminate​(long timeRemaining)
      • getSelectionForPhase2

        public java.util.List<HASCOSolutionCandidate<java.lang.Double>> getSelectionForPhase2()
      • getExpectedTotalRemainingRuntimeForAGivenPool

        public int getExpectedTotalRemainingRuntimeForAGivenPool​(java.util.Collection<HASCOSolutionCandidate<java.lang.Double>> solutions,
                                                                 boolean assumeCurrentlyBestCandidateToBeSelected)
      • getPostprocessingTimeOfCurrentlyBest

        public int getPostprocessingTimeOfCurrentlyBest()
      • getMaximumPostprocessingTimeOfAnyPoolMember

        public int getMaximumPostprocessingTimeOfAnyPoolMember​(java.util.Collection<HASCOSolutionCandidate<java.lang.Double>> solutions)
      • getExpectedRuntimeForPhase2ForAGivenPool

        public int getExpectedRuntimeForPhase2ForAGivenPool​(java.util.Collection<HASCOSolutionCandidate<java.lang.Double>> solutions)
      • selectModel

        protected HASCOSolutionCandidate<java.lang.Double> selectModel()
                                                                throws java.lang.InterruptedException
        Throws:
        java.lang.InterruptedException
      • getHasco

        public HASCO<S,​N,​A,​java.lang.Double> getHasco()
      • getPhase1ResultQueue

        public java.util.Queue<HASCOSolutionCandidate<java.lang.Double>> getPhase1ResultQueue()
      • getSecondsSpentInPhase1

        public int getSecondsSpentInPhase1()
      • getSelectionScoresOfCandidates

        public java.util.Map<HASCOSolutionCandidate<java.lang.Double>,​java.lang.Double> getSelectionScoresOfCandidates()
      • getSelectedSolutionCandidate

        public HASCOSolutionCandidate<java.lang.Double> getSelectedSolutionCandidate()
        Returns:
        The solution candidate selected by TwoPhase HASCO
      • getNumberOfConsideredSolutions

        public int getNumberOfConsideredSolutions()
        Returns:
        The number of considered solutions in the selection phase.
      • setNumberOfConsideredSolutions

        public void setNumberOfConsideredSolutions​(int numberOfConsideredSolutions)
        Parameters:
        numberOfConsideredSolutions - The number of considered solutions in the selection phase.
      • getGraphSearchInput

        public org.api4.java.ai.graphsearch.problem.IPathSearchInput<N,​A> getGraphSearchInput()
      • getLoggerName

        public java.lang.String getLoggerName()
        Specified by:
        getLoggerName in interface org.api4.java.common.control.ILoggingCustomizable
        Overrides:
        getLoggerName in class ai.libs.jaicore.basic.algorithm.AOptimizer<TwoPhaseSoftwareConfigurationProblem,​HASCOSolutionCandidate<java.lang.Double>,​java.lang.Double>
      • setLoggerName

        public void setLoggerName​(java.lang.String name)
        Specified by:
        setLoggerName in interface org.api4.java.common.control.ILoggingCustomizable
        Overrides:
        setLoggerName in class ai.libs.jaicore.basic.algorithm.AOptimizer<TwoPhaseSoftwareConfigurationProblem,​HASCOSolutionCandidate<java.lang.Double>,​java.lang.Double>