Esempio n. 1
0
        public static void TestThatChildChanged(this ICrossoverManager crossoverManager)
        {
            var elements = new List <string>()
            {
                "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"
            };
            var generator = new AllElementsVectorChromosomePopulationGenerator <string>(elements, null, null);

            // Since there's a certain chance that this test will fail, I want to run it twice
            var passed = false;

            for (int i = 0; i < 2; i++)
            {
                var parentChromosomes = generator.GeneratePopulation(2);
                var child             = (VectorChromosome <string>)crossoverManager.Crossover(parentChromosomes.ElementAt(0),
                                                                                              parentChromosomes.ElementAt(1));

                try
                {
                    ((VectorChromosome <string>)parentChromosomes.ElementAt(0)).AssertAreNotTheSame(child);
                    ((VectorChromosome <string>)parentChromosomes.ElementAt(1)).AssertAreNotTheSame(child);
                    passed = true;
                }
                catch
                {
                    // Do nothing
                }
            }
            Assert.IsTrue(passed);
        }
 public NumberVectorTests()
 {
     mutationManager     = new IntUniformMutationManager(0, 100);
     evaluator           = new BasicEvaluator();
     populationGenerator = new IntVectorChromosomePopulationGenerator(VECTOR_SIZE, 0, 1, mutationManager, evaluator);
     crossoverManager    = new SinglePointCrossoverManager <int>(mutationManager, evaluator);
 }
Esempio n. 3
0
        public GeneticSearchEngineBuilder(int populationSize, int maxGenerations, ICrossoverManager crossoverManager,
                                          IPopulationGenerator populationGenerator)
        {
            this.populationSize      = populationSize;
            this.crossoverManager    = crossoverManager;
            this.populationGenerator = populationGenerator;

            stopManagers.Add(new StopAtGeneration(maxGenerations));
        }
Esempio n. 4
0
        public static void TestThatAllElementsInEachVector(this ICrossoverManager crossoverManager, int testRuns)
        {
            var elements = new List <string>()
            {
                "A", "B", "C", "D", "E", "F", "G", "H", "I", "J"
            };
            var generator = new AllElementsVectorChromosomePopulationGenerator <string>(elements, null, null);

            for (int i = 0; i < testRuns; i++)
            {
                var parentChromosomes = generator.GeneratePopulation(2);
                var child             = (VectorChromosome <string>)crossoverManager.Crossover(parentChromosomes.ElementAt(0), parentChromosomes.ElementAt(1));
                child.AssertContainSameElements(elements);
            }
        }
Esempio n. 5
0
 public ChildrenGenerator(ICrossoverManager crossoverManager, IMutationProbabilityManager mutationManager, ISelectionStrategy selectionStrategy)
 {
     this.crossoverManager  = crossoverManager;
     this.mutationManager   = mutationManager;
     this.selectionStrategy = selectionStrategy;
 }