示例#1
0
        public void SetCurrentPopulation_EngineRunning_ThrowException()
        {
            Utils.RunTimedTest(() =>
            {
                using (var engine =
                           new TestGeneticSearchEngineBuilder(2, int.MaxValue, new TestPopulationManager(new double[] { 2, 2 })).Build())
                {
                    Task.Run(() => engine.Run());
                    while (!engine.IsRunning)
                    {
                        ;
                    }

                    engine.SetCurrentPopulation(new double[] { 3, 3 }.ToChromosomes("Converted"));

                    if (engine.IsRunning)
                    {
                        Assert.Fail("Should have thrown an exception.");
                    }
                    else
                    {
                        Assert.Fail("For some reason, the engine is no longer running.");
                    }
                }
            });
        }
示例#2
0
        public void ConvertPopulation_PopulationConverted()
        {
            var newPopulationEvaluation = new double[] { 2, 2, 2 };
            var populationManager       = new TestPopulationManager(new double[] { 1, 1, 1 });
            var engine = new TestGeneticSearchEngineBuilder(3, 10, populationManager).Build();

            engine.Next();

            var newPopulation = engine.SetCurrentPopulation(newPopulationEvaluation.ToChromosomes("Converted"));

            newPopulation.Population.GetChromosomes().AssertHasEvaluation(newPopulationEvaluation);

            newPopulation = engine.GetCurrentPopulation();
            newPopulation.Population.GetChromosomes().AssertHasEvaluation(newPopulationEvaluation);
        }
示例#3
0
        public void SetCurrentPopulation_WrongNumberOfChromosomes_ThrowException()
        {
            Utils.RunTimedTest(() =>
            {
                using (var engine = new TestGeneticSearchEngineBuilder(2, int.MaxValue, new TestPopulationManager(new double[] { 2, 2 })).Build())
                {
                    Task.Run(() => engine.Run());
                    while (!engine.IsRunning)
                    {
                        ;
                    }

                    engine.SetCurrentPopulation(new double[] { 3, 3, 3 }.ToChromosomes("Converted"));

                    Assert.Fail("Should have thrown an exception by now");
                }
            });
        }