コード例 #1
0
        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}");
            }
        }