Example #1
0
        internal static void RunGeneticAlgorithm(int fromSavedGeneration)
        {
            int        generationCount;
            Population myPop;

            if (fromSavedGeneration == 0)
            {
                RoboCodeMatchHandler.ClearResultsFolder();
                generationCount = 0;
                myPop           = new Population(PopulationSize, true, generationCount);
            }
            else
            {
                generationCount = fromSavedGeneration;
                Console.WriteLine("Generation: " + generationCount);
                var individualGenes = PopulationFileHandler.ReadFile(fromSavedGeneration);
                Console.WriteLine("IndivGenesLength: " + individualGenes.Length);
                var individuals = new Individual[individualGenes.Length];
                for (var i = 0; i < individualGenes.Length; i++)
                {
                    individuals[i] = new Individual(generationCount, i);
                }
                myPop = new Population(individuals);
            }

            while (true)        //No need for an exit condition in this Genetic Algorithm
            {
                myPop = EvolvePopulation(myPop, generationCount);

                var fittestBot = myPop.GetFittest();
                Console.WriteLine();
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("Generation: ");
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write(generationCount);
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write(", \t Fittest score: ");
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write(fittestBot.GetFitness());
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write(", \t Fittest Bot ID: ");
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write(fittestBot.RobotId + "\n");

                generationCount++;
            }
        }
Example #2
0
        internal FileCreator(int generation, Population population)
        {
            _dllDirectoryPath = Path.Combine(RootFolderName, DllFolderName);
            _directoryPath    = Path.Combine(RootFolderName, GetRobotFolderName(generation));

            Directory.CreateDirectory(_directoryPath);
            Directory.CreateDirectory(_dllDirectoryPath);
            Directory.CreateDirectory(Path.Combine(RootFolderName, PopulationsFolderName));

            PopulationFileHandler.CreateFile(generation, population);

            var tasks = new Task[population.Size()];

            for (var i = 0; i < population.Size(); i++)
            {
                //Console.WriteLine($"Starting bot {i}");
                var individual = i;
                tasks[individual] = Task.Factory.StartNew(() => CreateFiles(generation, individual, population.GetIndividual(individual)));
            }

            Task.WaitAll(tasks);             // wait for all tasks to finish
            Console.WriteLine($"Finished generation {generation:D4}");
        }