Exemple #1
0
        /// <summary>
        /// Creates and returns the corresponding heuristic for the search engine.
        /// </summary>
        /// <param name="problem">Planning problem.</param>
        /// <returns>Corresponding heuristic for the search engine.</returns>
        private Planner.Heuristics.IHeuristic GetHeuristic(Planner.IProblem problem)
        {
            switch (Heuristic)
            {
            case Heuristic.BlindHeuristic:
                return(new Planner.Heuristics.BlindHeuristic());

            case Heuristic.StripsHeuristic:
                return(new Planner.Heuristics.StripsHeuristic(problem));

            case Heuristic.PerfectRelaxationHeuristic:
                return(new Planner.Heuristics.PerfectRelaxationHeuristic(problem));

            case Heuristic.AdditiveRelaxationHeuristic:
                return(new Planner.Heuristics.AdditiveRelaxationHeuristic(problem));

            case Heuristic.MaxRelaxationHeuristic:
                return(new Planner.Heuristics.MaxRelaxationHeuristic(problem));

            case Heuristic.FFHeuristic:
                return(new Planner.Heuristics.FFHeuristic(problem));

            case Heuristic.PDBHeuristic:
                return(new Planner.Heuristics.PDBHeuristic(problem));

            default:
                throw new System.NotImplementedException("Unknown heuristic type!");
            }
        }
Exemple #2
0
        /// <summary>
        /// Creates and returns the corresponding heuristic search engine.
        /// </summary>
        /// <returns>Corresponding heuristic search engine.</returns>
        protected override Planner.Search.IHeuristicSearch GetHeuristicSearch()
        {
            Planner.IProblem problem = GetProblem();
            Planner.Heuristics.IHeuristic heuristic = GetHeuristic(problem);
            Planner.Heaps.IHeap           heap      = GetHeap();
            System.TimeSpan timeLimit   = System.TimeSpan.FromMinutes(TimeLimit);
            long            memoryLimit = MemoryLimit;

            switch (Algorithm)
            {
            case Algorithm.AStarSearch:
                return(new Planner.Search.AStarSearch(problem, heuristic, heap, false, timeLimit, memoryLimit));

            case Algorithm.BeamSearch:
                return(new Planner.Search.BeamSearch(problem, heuristic, heap, 2, false, timeLimit, memoryLimit));

            case Algorithm.HillClimbingSearch:
                return(new Planner.Search.HillClimbingSearch(problem, heuristic, false, timeLimit, memoryLimit));

            default:
                throw new System.NotImplementedException("Unknown search algorithm type!");
            }
        }