コード例 #1
0
ファイル: TSPTest.cs プロジェクト: ExCodeCowboy/AI.Core
        public void TestGenericHive()
        {
            Debug.WriteLine("Loading cities data for SBC Traveling Salesman Problem analysis");
            CitiesData citiesData = new CitiesData(20);
            Debug.WriteLine(citiesData.ToString());
            Debug.WriteLine("Number of cities = " + citiesData.cities.Length);
            Debug.WriteLine("Number of possible paths = " +
              citiesData.NumberOfPossiblePaths().ToString("#,###"));
            Debug.WriteLine("Best possible solution (shortest path) length = " +
              citiesData.ShortestPathLength().ToString("F4"));


            var problemDef = new CitiesProblemDef(citiesData);

            int totalNumberBees = 100;
            int numberInactive = 20;
            int numberScout = 30;
            int maxNumberVisits = 100;
            int maxNumberCycles = 8000;

            GenericHive<Char[]>.random = new Random(0);
            CitiesProblemDef._random = GenericHive<Char[]>.random;

            var hive = new GenericHive<Char[]>(totalNumberBees,
                                 numberInactive,
                                 numberScout,
                                 maxNumberVisits,
                                 maxNumberCycles,
                                 problemDef.GenerateRandomMemoryMatrix,
                                 problemDef.GenerateNeighborMemoryMatrix,
                                 problemDef.MeasureOfQuality);

            Debug.WriteLine("\nInitial random hive");
            Debug.WriteLine(hive);
            Debug.WriteLine(new string(hive.BestSolution));

            bool doProgressBar = true;
            hive.Solve(doProgressBar);
            
            Debug.WriteLine("\nFinal hive");
            Debug.WriteLine(new string(hive.BestSolution));
            Debug.WriteLine(hive);
            Debug.WriteLine("End Simulated Bee Colony demo");

            Assert.AreEqual(citiesData.cities,hive.BestSolution);
        }
コード例 #2
0
ファイル: TSPTest.cs プロジェクト: ExCodeCowboy/AI.Core
        public void TextTestGeneric()
        {
            var targetString = "THISISATESTSTRINGTHATISFAIRLYLONGTHISISATESTSTRING";
            
            Func<string> genRandom = () => RandomString(targetString.Length);
            Func<string, string> genNeighboor = (s) =>
            {
                var pos = random.Next(s.Length);
                var sArr = s.ToCharArray();
                sArr[pos] = RandomString(1)[0];
                return new string(sArr);
            };

            Func<string, double> evalString = s =>
            {
                return ComputeDistance(s, targetString);
            };

            int totalNumberBees = 100;
            int numberInactive = 20;
            int numberScout = 30;
            int maxNumberVisits = 100;
            int maxNumberCycles = 2000;

            var hive = new GenericHive<string>(totalNumberBees,
                numberInactive,
                numberScout,
                maxNumberVisits,
                maxNumberCycles,
                genRandom,
                genNeighboor,
                evalString);

            Debug.WriteLine("\nInitial random hive");
            Debug.WriteLine(hive);

            bool doProgressBar = true;
            hive.Solve(doProgressBar);

            Debug.WriteLine("\nFinal hive");
            Debug.WriteLine(hive);
            Debug.WriteLine("End Simulated Bee Colony demo");

            Assert.AreEqual(targetString,hive.BestSolution);

        }