Example #1
0
        private static void Run20Tests(Tuple <HexagonalTileSearchProblem, ManualResetEvent, int, int> Param)
        {
            HexagonalTileSearchProblem problem   = Param.Item1;
            ManualResetEvent           doneEvent = Param.Item2;
            int ConfigurationNumber = Param.Item3;
            int TestSequenceNumber  = Param.Item4;
            int RegenPaths          = 5;

            SearchResults[] results = new SearchResults[Algos.Count()];
            for (int i = 0; i < 20; i++, TestSequenceNumber++)
            {
                RegenPaths = 5;
                Log.Status(string.Format("Test({0}) - Generating Problem {1}...", ConfigurationNumber, TestSequenceNumber));
                problem.Reset();
                SearchResults sr = Algos[0].Search(problem);
                while (sr.Solved != true)
                {
                    if (RegenPaths == 0)
                    {
                        Log.Status(string.Format("Test({0}) - Problem {1} Not Solvable, regenerating...", ConfigurationNumber, TestSequenceNumber));
                        problem.Reset();
                        RegenPaths = 5;
                    }
                    else
                    {
                        Log.Status(string.Format("Test({0}) - Reselecting Start/Goal...", ConfigurationNumber, TestSequenceNumber));
                        problem.SelectRandomStartAndGoal();
                    }

                    sr = Algos[0].Search(problem);
                    RegenPaths--;
                }

                Log.Status(string.Format("Test({0} : {1}) - Applying Search Algorithms...", ConfigurationNumber, TestSequenceNumber));
                int a = 0;
                foreach (ISearchAlgorithm al in Algos)
                {
                    results[a] = al.Search(problem);
                    CompleteTests++;
                    Log.Success(string.Format("# {0:000.000}% #", (CompleteTests * 1.0) / TotalTests * 100));
                    a++;
                }
                WriteResultsToCSV(TestSequenceNumber, problem, results);
            }


            doneEvent.Set();
        }