private void InitializeEngine() { var mutationManager = new IntUniformMutationManager(0, 100); var evaluator = new BasicEvaluator(); var populationGenerator = new IntVectorChromosomePopulationGenerator(VECTOR_SIZE, 0, 1, mutationManager, evaluator); var crossoverManager = new SinglePointCrossoverManager <int>(mutationManager, evaluator); var engineBuilder = new GeneticSearchEngineBuilder(POPULATION_SIZE, GENERATION, crossoverManager, populationGenerator) .SetMutationProbability(MutationInputBox.GetValue).SetElitePercentage(ElitismInputBox.GetValue); searchRunner1.SetEngineBuilder(engineBuilder); }
public void SinglePointCrossoverManagerTest() { var crossoverManager = new SinglePointCrossoverManager <int>(A.Fake <IMutationManager <int> >(), A.Fake <IEvaluator>()); for (int i = 0; i < TEST_RUNS; i++) { var chromosome1 = (VectorChromosome <int>)smallPopulationGenerator1.GeneratePopulation(1).First(); var chromosome2 = (VectorChromosome <int>)smallPopulationGenerator2.GeneratePopulation(1).First(); var newChromosome = (VectorChromosome <int>)crossoverManager.Crossover(chromosome1, chromosome2); var crossoverPoints = Utils.K_CrossoverGetCrossoverPointsAndAssertThatGenomesAreRight(newChromosome, chromosome2, chromosome1); Assert.AreEqual(1, crossoverPoints.Count, $"Found wrong number of crossoverPoints. 1: {chromosome1}; 2 {chromosome2}; newChromosome {newChromosome}"); } }