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;
            }
        }
Exemplo n.º 2
0
        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));
	}
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 6
0
 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;
     }
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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;
            }
        }