public void TC_Transitions() { var problem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); ISuccessor successor = problem.GetSuccessors(problem.InitialState).First(); Assert.IsFalse(successor.IsComplexTransition()); Assert.IsTrue(successor.GetSuccessorState().Equals(successor.GetTransitionResult())); var successorResults = successor.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, successorResults.Count); Assert.IsTrue(successorResults.First().Equals(successor.GetTransitionResult())); IPredecessor predecessor = problem.GetPredecessors(problem.GoalConditions).First(); Assert.IsFalse(predecessor.IsComplexTransition()); Assert.IsTrue(predecessor.GetPredecessorConditions().Equals(predecessor.GetTransitionResult())); var predecessorResults = predecessor.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, predecessorResults.Count); Assert.IsTrue(predecessorResults.First().Equals(predecessor.GetTransitionResult())); IPredecessor predecessor2 = problem.GetPredecessors(problem.GoalConditions.GetCorrespondingRelativeStates(problem).First()).First(); Assert.IsTrue(predecessor2.IsComplexTransition()); Assert.IsTrue(CollectionsEquality.Equals(predecessor2.GetPredecessorRelativeStates(), predecessor2.GetComplexTransitionResults())); var predecessorResults2 = predecessor2.GetComplexTransitionResults().ToList(); Assert.AreEqual(1, predecessorResults2.Count); Assert.IsTrue(predecessorResults2.First().Equals(predecessor2.GetTransitionResult())); }
public void TC_IStateOrConditions() { var problem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var heuristic = new FFHeuristic(problem); IStateOrConditions state = problem.InitialState; IStateOrConditions state2 = new Planner.SAS.State(1, 1, 1, 1, 0, 4, 4); Assert.IsTrue(CollectionsEquality.Equals(problem.GetSuccessors((IState)state), state.DetermineTransitions(problem))); Assert.IsFalse(state.DetermineGoalNode(problem)); Assert.IsTrue(state2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IState)state), state.DetermineHeuristicValue(heuristic)); IStateOrConditions conditions = problem.GoalConditions; IStateOrConditions conditions2 = new Planner.SAS.Conditions(new Planner.SAS.Assignment(5, 4), new Planner.SAS.Assignment(6, 4)); Assert.IsTrue(CollectionsEquality.Equals(problem.GetPredecessors((IConditions)conditions), conditions.DetermineTransitions(problem))); Assert.IsFalse(conditions.DetermineGoalNode(problem)); Assert.IsTrue(conditions2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IConditions)conditions), conditions.DetermineHeuristicValue(heuristic)); IStateOrConditions relativeState = problem.GoalConditions.GetCorrespondingRelativeStates(problem).First(); IStateOrConditions relativeState2 = new Planner.SAS.RelativeState(-1, -1, -1, -1, -1, 4, 4); Assert.IsTrue(CollectionsEquality.Equals(problem.GetPredecessors((IRelativeState)relativeState), relativeState.DetermineTransitions(problem))); Assert.IsFalse(relativeState.DetermineGoalNode(problem)); Assert.IsTrue(relativeState2.DetermineGoalNode(problem)); Assert.AreEqual(heuristic.GetValue((IRelativeState)relativeState), relativeState.DetermineHeuristicValue(heuristic)); }
public void TC_SearchResults() { var problem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_SearchResults.sas"))); var heuristic = new PDBHeuristic(problem); var problem2 = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_SearchResults2.sas"))); var heuristic2 = new PDBHeuristic(problem2); var heap = new RegularBinaryHeap(); var search1 = new AStarSearch(problem, heuristic, heap); var solution1 = search1.Start(); Assert.AreEqual(ResultStatus.SolutionFound, solution1); Assert.IsNotNull(search1.GetSolutionPlan()); var search2 = new AStarSearch(problem2, heuristic2, heap); var solution2 = search2.Start(); Assert.AreEqual(ResultStatus.NoSolutionFound, solution2); Assert.IsNull(search2.GetSolutionPlan()); var search3 = new AStarSearch(problem, heuristic, heap, false, new TimeSpan(0), 5000); var solution3 = search3.Start(); Assert.AreEqual(ResultStatus.TimeLimitExceeded, solution3); Assert.IsNull(search3.GetSolutionPlan()); var search4 = new AStarSearch(problem, heuristic, heap, false, new TimeSpan(0, 1, 0), 0); var solution4 = search4.Start(); Assert.AreEqual(ResultStatus.MemoryLimitExceeded, solution4); Assert.IsNull(search4.GetSolutionPlan()); }
public void TC_PDBHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var heuristic = new PDBHeuristic(sasProblem); Assert.AreEqual(8, heuristic.GetValue(sasProblem.GetInitialState())); Assert.AreEqual("PDB Heuristic", heuristic.GetName()); Assert.AreEqual(1, heuristic.GetCallsCount()); }
public void TC_StripsHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var heuristic = new StripsHeuristic(sasProblem); Assert.AreEqual(4, heuristic.GetValue(sasProblem.GetInitialState())); Assert.AreEqual(4, heuristic.GetValue(new Planner.SAS.State(0, 0, 0, 0, 0, 0, 0))); Assert.AreEqual(3, heuristic.GetValue(new Planner.SAS.State(1, 0, 0, 0, 0, 0, 0))); Assert.AreEqual(2, heuristic.GetValue(new Planner.SAS.State(0, 1, 1, 0, 0, 0, 0))); Assert.AreEqual(0, heuristic.GetValue(new Planner.SAS.State(1, 1, 1, 1, 0, 0, 0))); Assert.AreEqual(4, heuristic.GetValue(sasProblem.GetGoalConditions())); Assert.AreEqual(0, heuristic.GetValue(new Planner.SAS.Conditions(new Planner.SAS.Assignment(0, 0)))); Assert.AreEqual(2, heuristic.GetValue(new Planner.SAS.Conditions(new Planner.SAS.Assignment(1, 1), new Planner.SAS.Assignment(2, 1)))); Assert.AreEqual(1, heuristic.GetValue(new Planner.SAS.ConditionsClause(new Planner.SAS.Conditions(new Planner.SAS.Assignment(0, 1), new Planner.SAS.Assignment(1, 1)), new Planner.SAS.Conditions(new Planner.SAS.Assignment(2, 1))))); Assert.AreEqual(int.MaxValue, heuristic.GetValue(new Planner.SAS.ConditionsContradiction())); Assert.AreEqual(4, heuristic.GetValue(sasProblem.GetGoalConditions().GetCorrespondingRelativeStates(sasProblem).First())); Assert.AreEqual("STRIPS Heuristic", heuristic.GetName()); Assert.AreEqual(11, heuristic.GetCallsCount()); var data = new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl")); Planner.PDDL.IdManager idManager = new Planner.PDDL.IdManager(data); Planner.PDDL.PrimitivesFactory factory = new Planner.PDDL.PrimitivesFactory(idManager); Planner.PDDL.GroundingManager groundingManager = new Planner.PDDL.GroundingManager(data, idManager); Planner.PDDL.EvaluationManager evaluationManager = new Planner.PDDL.EvaluationManager(groundingManager, pddlProblem.RigidRelations); var atPred = factory.CreatePredicate("at", "ball1", "roomb"); var atPred2 = factory.CreatePredicate("at", "ball2", "roomb"); var heuristic2 = new StripsHeuristic(pddlProblem); Assert.AreEqual(2, heuristic2.GetValue(pddlProblem.GetInitialState())); Assert.AreEqual(1, heuristic2.GetValue(new Planner.PDDL.State(new HashSet <Planner.PDDL.IAtom> { atPred }, null, null, idManager))); Assert.AreEqual(0, heuristic2.GetValue(new Planner.PDDL.State(new HashSet <Planner.PDDL.IAtom> { atPred, atPred2 }, null, null, idManager))); Assert.AreEqual(2, heuristic2.GetValue(pddlProblem.GetGoalConditions())); Assert.AreEqual(1, heuristic2.GetValue(new Planner.PDDL.Conditions(new Planner.PDDL.PredicateExpression(atPred, idManager), evaluationManager))); Assert.AreEqual(1, heuristic2.GetValue(new Planner.PDDL.ConditionsCNF(new HashSet <Planner.PDDL.IConjunctCNF> { new Planner.PDDL.PredicateLiteralCNF(new Planner.PDDL.PredicateExpression(atPred, idManager), false) }, evaluationManager, null))); Assert.AreEqual(2, heuristic2.GetValue(pddlProblem.GetGoalConditions().GetCorrespondingRelativeStates(pddlProblem).First())); Assert.AreEqual("STRIPS Heuristic", heuristic2.GetName()); Assert.AreEqual(7, heuristic2.GetCallsCount()); }
public void TC_HeuristicStatistics() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var heuristic = new StripsHeuristic(sasProblem); Assert.AreEqual(4, heuristic.GetValue(new Planner.SAS.State(0, 0, 0, 0, 0, 0, 0))); Assert.AreEqual(3, heuristic.GetValue(new Planner.SAS.State(1, 0, 0, 0, 0, 0, 0))); Assert.AreEqual(2, heuristic.GetValue(new Planner.SAS.State(0, 1, 1, 0, 0, 0, 0))); Assert.AreEqual(0, heuristic.GetValue(new Planner.SAS.State(1, 1, 1, 1, 0, 0, 0))); Assert.AreEqual(0, heuristic.Statistics.BestHeuristicValue); Assert.AreEqual(4, heuristic.Statistics.HeuristicCallsCount); Assert.AreEqual(9, heuristic.Statistics.SumOfHeuristicValues); Assert.AreEqual(2.25, heuristic.Statistics.AverageHeuristicValue); }
public void TC_BlindHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var heuristic = new BlindHeuristic(); Assert.AreEqual(0, heuristic.GetValue(sasProblem.GetInitialState())); Assert.AreEqual(0, heuristic.GetValue(sasProblem.GetGoalConditions())); Assert.AreEqual(0, heuristic.GetValue(sasProblem.GetGoalConditions().GetCorrespondingRelativeStates(sasProblem).First())); Assert.AreEqual(0, heuristic.GetValue(pddlProblem.GetInitialState())); Assert.AreEqual(0, heuristic.GetValue(pddlProblem.GetGoalConditions())); Assert.AreEqual(0, heuristic.GetValue(pddlProblem.GetGoalConditions().GetCorrespondingRelativeStates(pddlProblem).First())); Assert.AreEqual("Blind Heuristic", heuristic.GetName()); Assert.AreEqual(6, heuristic.GetCallsCount()); }
public void TC_WeightedSumHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var heuristic = new WeightedSumHeuristic(true, Tuple.Create((IHeuristic) new AdditiveRelaxationHeuristic(sasProblem), 3.0), Tuple.Create((IHeuristic) new MaxRelaxationHeuristic(sasProblem), 7.0)); Assert.IsTrue(heuristic.GetValue(sasProblem.GetInitialState()) > 0); Assert.IsTrue(heuristic.GetValue(sasProblem.GetGoalConditions()) > 0); Assert.IsTrue(heuristic.GetValue(sasProblem.GetGoalConditions().GetCorrespondingRelativeStates(sasProblem).First()) > 0); Assert.IsTrue(heuristic.GetName().Contains("Weighted Sum Heuristic of")); Assert.AreEqual(3, heuristic.GetCallsCount()); var heuristic2 = new WeightedSumHeuristic(true, Tuple.Create((IHeuristic) new AdditiveRelaxationHeuristic(pddlProblem), 3.0), Tuple.Create((IHeuristic) new MaxRelaxationHeuristic(pddlProblem), 7.0)); Assert.IsTrue(heuristic2.GetValue(pddlProblem.GetInitialState()) > 0); Assert.IsTrue(heuristic2.GetValue(pddlProblem.GetGoalConditions()) > 0); Assert.IsTrue(heuristic2.GetValue(pddlProblem.GetGoalConditions().GetCorrespondingRelativeStates(pddlProblem).First()) > 0); Assert.IsTrue(heuristic.GetName().Contains("Weighted Sum Heuristic of")); Assert.AreEqual(3, heuristic2.GetCallsCount()); }
public void TC_SumHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var heuristic = new SumHeuristic(new AdditiveRelaxationHeuristic(sasProblem), new MaxRelaxationHeuristic(sasProblem)); Assert.AreEqual(14, heuristic.GetValue(sasProblem.GetInitialState())); Assert.AreEqual(14, heuristic.GetValue(sasProblem.GetGoalConditions())); Assert.AreEqual(14, heuristic.GetValue(sasProblem.GetGoalConditions().GetCorrespondingRelativeStates(sasProblem).First())); Assert.AreEqual("Sum Heuristic of (Additive Relaxation Heuristic, Max Relaxation Heuristic)", heuristic.GetName()); Assert.AreEqual(3, heuristic.GetCallsCount()); var heuristic2 = new SumHeuristic(new AdditiveRelaxationHeuristic(pddlProblem), new MaxRelaxationHeuristic(pddlProblem)); Assert.AreEqual(7, heuristic2.GetValue(pddlProblem.GetInitialState())); Assert.AreEqual(7, heuristic2.GetValue(pddlProblem.GetGoalConditions())); Assert.AreEqual(7, heuristic2.GetValue(pddlProblem.GetGoalConditions().GetCorrespondingRelativeStates(pddlProblem).First())); Assert.AreEqual("Sum Heuristic of (Additive Relaxation Heuristic, Max Relaxation Heuristic)", heuristic2.GetName()); Assert.AreEqual(3, heuristic2.GetCallsCount()); }
public void TC_WeightedHeuristic() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var heuristic = new WeightedHeuristic(new StripsHeuristic(sasProblem), 3); Assert.AreEqual(12, heuristic.GetValue(sasProblem.GetInitialState())); Assert.AreEqual(12, heuristic.GetValue(new Planner.SAS.State(0, 0, 0, 0, 0, 0, 0))); Assert.AreEqual(6, heuristic.GetValue(new Planner.SAS.State(0, 1, 1, 0, 0, 0, 0))); Assert.AreEqual(0, heuristic.GetValue(new Planner.SAS.State(1, 1, 1, 1, 0, 0, 0))); Assert.AreEqual(12, heuristic.GetValue(sasProblem.GetGoalConditions())); Assert.AreEqual(12, heuristic.GetValue(sasProblem.GetGoalConditions().GetCorrespondingRelativeStates(sasProblem).First())); Assert.AreEqual("Weighted STRIPS Heuristic (weight = 3)", heuristic.GetName()); Assert.AreEqual(6, heuristic.GetCallsCount()); var heuristic2 = new WeightedHeuristic(new StripsHeuristic(pddlProblem), 9); Assert.AreEqual(18, heuristic2.GetValue(pddlProblem.GetInitialState())); Assert.AreEqual(18, heuristic2.GetValue(pddlProblem.GetGoalConditions())); Assert.AreEqual(18, heuristic2.GetValue(pddlProblem.GetGoalConditions().GetCorrespondingRelativeStates(pddlProblem).First())); Assert.AreEqual("Weighted STRIPS Heuristic (weight = 9)", heuristic2.GetName()); Assert.AreEqual(3, heuristic2.GetCallsCount()); }
public void TC_MultiHeuristicAStarSearch() { var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var sasSearch = new MultiHeuristicAStarSearch(sasProblem, new BlindHeuristic()); sasSearch.Start(); var sasSolution = sasSearch.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search", sasSolution.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, sasSolution.ResultStatus); Assert.IsTrue(sasSolution.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(11, sasSolution.SolutionCost); Assert.IsNotNull(sasSolution.SolutionPlan); Assert.AreEqual(11, sasSolution.SolutionPlan.GetCost()); var sasSearch2 = new MultiHeuristicAStarSearch(sasProblem, new BlindHeuristic()); sasSearch2.Start(SearchType.BackwardWithConditions); var sasSolution2 = sasSearch2.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search (Backward)", sasSolution2.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution2.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution2.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, sasSolution2.ResultStatus); Assert.IsTrue(sasSolution2.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(11, sasSolution2.SolutionCost); Assert.IsNotNull(sasSolution2.SolutionPlan); Assert.AreEqual(11, sasSolution2.SolutionPlan.GetCost()); var sasSearch3 = new MultiHeuristicAStarSearch(sasProblem, new BlindHeuristic()); sasSearch3.Start(SearchType.BackwardWithStates); var sasSolution3 = sasSearch3.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search (Backward)", sasSolution3.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution3.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution3.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, sasSolution3.ResultStatus); Assert.IsTrue(sasSolution3.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(11, sasSolution3.SolutionCost); Assert.IsNotNull(sasSolution3.SolutionPlan); Assert.AreEqual(11, sasSolution3.SolutionPlan.GetCost()); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var pddlSearch = new MultiHeuristicAStarSearch(pddlProblem, new BlindHeuristic()); pddlSearch.Start(); var pddlSolution = pddlSearch.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search", pddlSolution.Algorithm); Assert.AreEqual("gripper", pddlSolution.DomainName); Assert.AreEqual("problem-1", pddlSolution.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, pddlSolution.ResultStatus); Assert.IsTrue(pddlSolution.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(5, pddlSolution.SolutionCost); Assert.IsNotNull(pddlSolution.SolutionPlan); Assert.AreEqual(5, pddlSolution.SolutionPlan.GetCost()); var pddlSearch2 = new MultiHeuristicAStarSearch(pddlProblem, new BlindHeuristic()); pddlSearch2.Start(SearchType.BackwardWithConditions); var pddlSolution2 = pddlSearch2.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search (Backward)", pddlSolution2.Algorithm); Assert.AreEqual("gripper", pddlSolution2.DomainName); Assert.AreEqual("problem-1", pddlSolution2.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution2.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, pddlSolution2.ResultStatus); Assert.IsTrue(pddlSolution2.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(5, pddlSolution2.SolutionCost); Assert.IsNotNull(pddlSolution2.SolutionPlan); Assert.AreEqual(5, pddlSolution2.SolutionPlan.GetCost()); var pddlSearch3 = new MultiHeuristicAStarSearch(pddlProblem, new BlindHeuristic()); pddlSearch3.Start(SearchType.BackwardWithStates); var pddlSolution3 = pddlSearch3.GetSearchResults(); Assert.AreEqual("Multi-Heuristic A* Search (Backward)", pddlSolution3.Algorithm); Assert.AreEqual("gripper", pddlSolution3.DomainName); Assert.AreEqual("problem-1", pddlSolution3.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution3.Heuristic); Assert.AreEqual(ResultStatus.SolutionFound, pddlSolution3.ResultStatus); Assert.IsTrue(pddlSolution3.SearchTime.TotalMilliseconds > 0); Assert.AreEqual(5, pddlSolution3.SolutionCost); Assert.IsNotNull(pddlSolution3.SolutionPlan); Assert.AreEqual(5, pddlSolution3.SolutionPlan.GetCost()); }
public void TC_HillClimbingSearch() { // The search path is basically random, no point to test the solution here var sasProblem = new Planner.SAS.Problem(new SASInputData(GetFilePath("TC_Gripper.sas"))); var sasSearch = new HillClimbingSearch(sasProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); sasSearch.Start(); var sasSolution = sasSearch.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search", sasSolution.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution.Heuristic); Assert.IsTrue(sasSolution.SearchTime.TotalMilliseconds >= 0); var sasSearch2 = new HillClimbingSearch(sasProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); sasSearch2.Start(SearchType.BackwardWithConditions); var sasSolution2 = sasSearch2.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search (Backward)", sasSolution2.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution2.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution2.Heuristic); Assert.IsTrue(sasSolution2.SearchTime.TotalMilliseconds >= 0); var sasSearch3 = new HillClimbingSearch(sasProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); sasSearch3.Start(SearchType.BackwardWithStates); var sasSolution3 = sasSearch3.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search (Backward)", sasSolution3.Algorithm); Assert.AreEqual("TC_Gripper", sasSolution3.ProblemName); Assert.AreEqual("Blind Heuristic", sasSolution3.Heuristic); Assert.IsTrue(sasSolution3.SearchTime.TotalMilliseconds >= 0); var pddlProblem = new Planner.PDDL.Problem(new PDDLInputData(GetFilePath("TC_Gripper_D.pddl"), GetFilePath("TC_Gripper_P.pddl"))); var pddlSearch = new HillClimbingSearch(pddlProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); pddlSearch.Start(); var pddlSolution = pddlSearch.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search", pddlSolution.Algorithm); Assert.AreEqual("gripper", pddlSolution.DomainName); Assert.AreEqual("problem-1", pddlSolution.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution.Heuristic); Assert.IsTrue(pddlSolution.SearchTime.TotalMilliseconds >= 0); var pddlSearch2 = new HillClimbingSearch(pddlProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); pddlSearch2.Start(SearchType.BackwardWithConditions); var pddlSolution2 = pddlSearch2.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search (Backward)", pddlSolution2.Algorithm); Assert.AreEqual("gripper", pddlSolution2.DomainName); Assert.AreEqual("problem-1", pddlSolution2.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution2.Heuristic); Assert.IsTrue(pddlSolution2.SearchTime.TotalMilliseconds >= 0); var pddlSearch3 = new HillClimbingSearch(pddlProblem, new BlindHeuristic(), false, new TimeSpan(0, 0, 1), 50000); pddlSearch3.Start(SearchType.BackwardWithStates); var pddlSolution3 = pddlSearch3.GetSearchResults(); Assert.AreEqual("Hill-Climbing Search (Backward)", pddlSolution3.Algorithm); Assert.AreEqual("gripper", pddlSolution3.DomainName); Assert.AreEqual("problem-1", pddlSolution3.ProblemName); Assert.AreEqual("Blind Heuristic", pddlSolution3.Heuristic); Assert.IsTrue(pddlSolution3.SearchTime.TotalMilliseconds >= 0); }