public void SetResult(GeneticSearchResult result)
        {
            generationLabel.Text  = result.Generations.ToString();
            searchTimeLabel.Text  = result.SearchTime.ToString();
            environmentLabel.Text = result.Environment?.ToString();

            var displayChromosomesCollection = new BindingList <DisplayChromosome>();

            foreach (var population in result.Population)
            {
                displayChromosomesCollection.Add(new DisplayChromosome(population.Chromosome, population.Evaluation));
            }
            chromosomesView.DataSource = displayChromosomesCollection;
            chromosomesView.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

            if (result.Environment == null)
            {
                environmentPanel.Hide();
            }
            else
            {
                environmentPanel.Show();
            }

            Refresh();
        }
Esempio n. 2
0
        public static void AssertAreTheSame(GeneticSearchResult result1, GeneticSearchResult result2)
        {
            Assert.AreEqual(result1.Generations, result2.Generations, "Different number of generations");
            Assert.AreEqual(result1.IsCompleted, result2.IsCompleted, "Different 'IsComplate' value");
            Assert.AreEqual(result1.SearchTime, result2.SearchTime, "Different searchTime");
            result1.Population.AssertIsSame(result2.Population);

            for (int i = 0; i < result1.History.Count; i++)
            {
                result1.History[i].AssertIsSame(result2.History[i]);
            }
        }
        public static GeneticSearchResult Run(this GeneticSearchEngine engine, RunType runType)
        {
            if (runType == RunType.Run)
            {
                return(engine.Run());
            }

            GeneticSearchResult result = null;

            while (result == null || !result.IsCompleted)
            {
                result = engine.Next();
            }

            return(result);
        }
        public void NextGetsRightGenerationsTest()
        {
            var population        = new[] { new double[] { 1, 1, 1 }, new double[] { 2, 2, 2 }, new double[] { 2, 3, 2 } };
            var populationManager = new TestPopulationManager(population);
            var searchEngine      =
                new TestGeneticSearchEngineBuilder(population[0].Length, population.Length, populationManager)
                .IncludeAllHistory().Build();

            var actualPopulation       = new List <IChromosome[]>();
            GeneticSearchResult result = null;

            while (result == null || !result.IsCompleted)
            {
                result = searchEngine.Next();
                actualPopulation.Add(result.Population.GetChromosomes());
            }

            Assert.AreEqual(3, result.Generations, "We should have ran for 3 generations");
            actualPopulation.AssertHasEvaluation(population);
        }
        public void SearchTimeWithNextTest()
        {
            var generations       = 50;
            var populationManager = new TestPopulationManager(new double[] { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, millisecondsPerGeneration: 10);
            var engine            = new TestGeneticSearchEngineBuilder(10, generations, populationManager).Build();

            var stopwatch = new Stopwatch();

            stopwatch.Start();
            GeneticSearchResult result = null;

            while (result == null || !result.IsCompleted)
            {
                result = engine.Next();
            }

            stopwatch.Stop();

            Assert.IsTrue(stopwatch.Elapsed.TotalMilliseconds * 0.90 < stopwatch.Elapsed.TotalMilliseconds, $"time is too short. {nameof(stopwatch.Elapsed)} = {stopwatch.Elapsed}; {nameof(result.SearchTime)} = {result.SearchTime.TotalMilliseconds}");
            Assert.IsTrue(stopwatch.Elapsed.TotalMilliseconds * 1.1 > stopwatch.Elapsed.TotalMilliseconds, $"time is too long. {nameof(stopwatch.Elapsed)} = {stopwatch.Elapsed}; {nameof(result.SearchTime)} = {result.SearchTime.TotalMilliseconds}");
        }
Esempio n. 6
0
        static void Main(string[] args)
        {
            Console.WriteLine("Started!");

            IMutationManager <string> mutationManager = new ExchangeMutationManager <string>();
            IEvaluator           evaluator            = new DistanceEvaluator(locations);
            ICrossoverManager    crossoverManager     = new OrderCrossover <string>(mutationManager, evaluator);
            IPopulationGenerator populationGenerator  =
                new AllElementsVectorChromosomePopulationGenerator <string>(cities, mutationManager, evaluator);

            GeneticSearchEngine engine =
                new GeneticSearchEngineBuilder(POPULATION_SIZE, GENERATIONS, crossoverManager, populationGenerator)
                .SetMutationProbability(0.1).SetElitePercentage(0.02).Build();

            engine.OnNewGeneration += (Population p, IEnvironment e) => PrintBestChromosome(p);

            GeneticSearchResult result = engine.Run();

            Console.WriteLine("Finished!");
            Console.WriteLine(result.BestChromosome + ": " + distanceCalclator.GetDistance(result.BestChromosome));

            Console.ReadLine();
        }