static void nQueensSimulatedAnnealingSearch() { System.Console.WriteLine("\nNQueensDemo Simulated Annealing -->"); try { IProblem <NQueensBoard, QueenAction> problem = NQueensFunctions.createCompleteStateFormulationProblem( boardSize, NQueensBoard.Config.QUEENS_IN_FIRST_ROW); SimulatedAnnealingSearch <NQueensBoard, QueenAction> search = new SimulatedAnnealingSearch <NQueensBoard, QueenAction>( NQueensFunctions.createAttackingPairsHeuristicFunction(), new Scheduler(20, 0.045, 100)); SearchAgent <NQueensBoard, QueenAction> agent = new SearchAgent <NQueensBoard, QueenAction>(problem, search); System.Console.WriteLine(); printActions(agent.getActions()); System.Console.WriteLine("Search Outcome=" + search.getOutcome()); System.Console.WriteLine("Final State=\n" + search.getLastSearchState()); printInstrumentation(agent.getInstrumentation()); } catch (Exception e) { throw e; } }
private void btnSimulatedAnnealing_Click(object sender, System.EventArgs e) { this.textBox1.Text = "EightPuzzleDemo Simulated Annealing Search -->" + System.Environment.NewLine; Problem problem = new Problem(random1, new EightPuzzleSuccessorFunction(), new EightPuzzleGoalTest(), new ManhattanHeuristicFunction()); Search search = new SimulatedAnnealingSearch(); SearchAgent agent = new SearchAgent(problem, search); printActions(agent.getActions()); printInstrumentation(agent.getInstrumentation()); }
public void testForGivenNegativeDeltaEProbabilityOfAcceptanceDecreasesWithDecreasingTemperature() { // this isn't very nice. the object's state is uninitialized but is ok // for this test. SimulatedAnnealingSearch search = new SimulatedAnnealingSearch(null); int deltaE = -1; double higherTemperature = 30.0; double lowerTemperature = 29.5; Assert.assertTrue(search.probabilityOfAcceptance(lowerTemperature, deltaE) < search.probabilityOfAcceptance(higherTemperature, deltaE)); }
private void btnSimulatedAnnealing_Click(object sender, System.EventArgs e) { this.textBox1.Text = "NQueensDemo Simulated Annealing -->" + System.Environment.NewLine; Problem problem = new Problem(new NQueensBoard(8), new NQueensSuccessorFunction(), new NQueensGoalTest(), new QueensToBePlacedHeuristic()); Search search = new SimulatedAnnealingSearch(); SearchAgent agent = new SearchAgent(problem, search); printActions(agent.getActions()); printInstrumentation(agent.getInstrumentation()); }
public void testForGivenNegativeDeltaEProbabilityOfAcceptanceDecreasesWithDecreasingTemperature() { // this isn't very nice. the object's state is uninitialized but is ok // for this test. SimulatedAnnealingSearch <string, IAction> search = new SimulatedAnnealingSearch <string, IAction>(null); int deltaE = -1; double higherTemperature = 30.0; double lowerTemperature = 29.5; Assert.IsTrue(search.probabilityOfAcceptance(lowerTemperature, deltaE) < search.probabilityOfAcceptance(higherTemperature, deltaE)); }
static void eightPuzzleSimulatedAnnealingDemo() { System.Console.WriteLine("\nEightPuzzleDemo Simulated Annealing Search -->"); try { IProblem <EightPuzzleBoard, IAction> problem = new BidirectionalEightPuzzleProblem(random1); SimulatedAnnealingSearch <EightPuzzleBoard, IAction> search = new SimulatedAnnealingSearch <EightPuzzleBoard, IAction>( EightPuzzleFunctions.createManhattanHeuristicFunction()); SearchAgent <EightPuzzleBoard, IAction> agent = new SearchAgent <EightPuzzleBoard, IAction>(problem, search); printActions(agent.getActions()); System.Console.WriteLine("Search Outcome=" + search.getOutcome()); System.Console.WriteLine("Final State=\n" + search.getLastSearchState()); printInstrumentation(agent.getInstrumentation()); } catch (Exception e) { throw e; } }
public aima.core.search.framework.Search GetSearch(Object owner, IContextLookup globalVars, HeuristicFunction objHeuristicFunction) { aima.core.search.framework.Search toReturn; QueueSearch objQueueSearch; switch (QueueSearchType) { case QueueSearchType.TreeSearch: objQueueSearch = new TreeSearch(); break; default: objQueueSearch = new GraphSearch(); break; } switch (AlgorithmType) { case SearchAlgorithmType.KnownInformed: switch (KnownInformedAlgorithm) { case KnownInformedSearch.GreedyBestFirst: toReturn = new GreedyBestFirstSearch(objQueueSearch, objHeuristicFunction); break; case KnownInformedSearch.RecursiveGreedyBestFirst: toReturn = new RecursiveBestFirstSearch(new GreedyBestFirstEvaluationFunction(objHeuristicFunction)); break; case KnownInformedSearch.RecursiveAStar: toReturn = new RecursiveBestFirstSearch(new AStarEvaluationFunction(objHeuristicFunction)); break; case KnownInformedSearch.HillClimbing: toReturn = new HillClimbingSearch(objHeuristicFunction); break; case KnownInformedSearch.SimulatedAnnealing: toReturn = new SimulatedAnnealingSearch(objHeuristicFunction); break; default: toReturn = new AStarSearch(objQueueSearch, objHeuristicFunction); break; } break; case SearchAlgorithmType.KnownUninformed: switch (KnownUninformedAlgorithm) { case KnownUninformedSearch.DepthFirst: toReturn = new DepthFirstSearch(objQueueSearch); break; case KnownUninformedSearch.DepthLimited: toReturn = new DepthLimitedSearch(DepthLimit); break; case KnownUninformedSearch.IterativeDeepening: toReturn = new IterativeDeepeningSearch(); break; case KnownUninformedSearch.UniformCost: toReturn = new UniformCostSearch(objQueueSearch); break; case KnownUninformedSearch.Bidirectional: toReturn = new BidirectionalSearch(); break; default: toReturn = new BreadthFirstSearch(objQueueSearch); break; } break; default: toReturn = CustomSearchAlgorithm.EvaluateTyped(owner, globalVars); break; } return(toReturn); }
private void btnJocks_Click(object sender, System.EventArgs e) { this.textBox1.Text = ""; JocksNerdsState initialState = new JocksNerdsState(); try { Problem problem = new Problem(initialState, new JocksNerdsSuccessorFunction(), new JocksNerdsGoalTest()); //Search search = new BreadthFirstSearch(new TreeSearch()); //Search search = new BreadthFirstSearch(new GraphSearch()); //this one never ends because it tries to traverse a tree of effectively infinite depth //Search search = new DepthFirstSearch(new TreeSearch()); //Search search = new DepthFirstSearch(new GraphSearch()); //Search search = new DepthLimitedSearch(12); //Search search = new IterativeDeepeningSearch(); //Search search = new AStarSearch(new GraphSearch()); //Search search = new GreedyBestFirstSearch(new GraphSearch()); //Search search = new HillClimbingSearch(); Search search = new SimulatedAnnealingSearch(); ArrayList solution = search.search(problem); if (solution.Count == 0) { //empty list means failure //System.out.println("\nNo Solution\n"); this.textBox1.Text = System.Environment.NewLine + "No Solution"; } for (int i = 0; i < solution.Count; i++) { this.textBox1.Text += solution[i].ToString() + System.Environment.NewLine; } //Printing metrics Metrics searchMetrics = search.getMetrics(); //ArrayList iter = (ArrayList)searchMetrics.keySet(); ICollection col = searchMetrics.keySet(); IEnumerator iter = col.GetEnumerator(); //iter.GetEnumerator(); //Array r = new Array(); //iter.MoveNext(); //iter. while (iter.MoveNext()) { string key = iter.Current.ToString(); string val = searchMetrics.get(key); this.textBox1.Text += System.Environment.NewLine + key + ": " + val; //iter.MoveNext(); } } catch (Exception ex) { //e.printStackTrace(); this.textBox1.Text += ex.Message; } }