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); }
public GeneticSearchEngineBuilder(int populationSize, int maxGenerations, ICrossoverManager crossoverManager, IPopulationGenerator populationGenerator) { this.populationSize = populationSize; this.crossoverManager = crossoverManager; this.populationGenerator = populationGenerator; stopManagers.Add(new StopAtGeneration(maxGenerations)); }
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); } }
public ChildrenGenerator(ICrossoverManager crossoverManager, IMutationProbabilityManager mutationManager, ISelectionStrategy selectionStrategy) { this.crossoverManager = crossoverManager; this.mutationManager = mutationManager; this.selectionStrategy = selectionStrategy; }