private void InitializeEngine() { var engineBuidler = new GeneticSearchEngineBuilder(POPULATION_SIZE, GENERATIONS, new CrossoverManager(), new PopulationGenerator()).SetCustomChromosomeEvaluator(new ChromosomeEvaluator()) .SetEnvironment(new MyEnvironment()).SetMutationProbability(0.01); searchRunner1.SetEngineBuilder(engineBuidler); }
public void RequestedChromosomesIsRightWithElite(double elite) { var searchEngine = new GeneticSearchEngineBuilder(POPULATION_SIZE, 50, crossoverManager, populationGenerator) .SetElitePercentage(elite) .SetSelectionStrategy(new AssertRequestedChromosomesIsRightSelectionWrapper()).Build(); searchEngine.Next(); }
public void SetEngineBuilder(GeneticSearchEngineBuilder engineBuilder) { this.engineBuilder = engineBuilder; lock (shouldPauseLock) shouldPause = true; Thread.Sleep(200); // Give some time for the search to stop InitializeEngine(); SetButtonsState(EngineState.Puased); }
public void BasicTest(RunType runType) { var searchEngine = new GeneticSearchEngineBuilder(POPULATION_SIZE, 50, crossoverManager, populationGenerator) .SetSelectionStrategy(new AssertRequestedChromosomesIsRightSelectionWrapper()).Build(); var result = searchEngine.Run(runType); Assert.AreEqual(VECTOR_SIZE, result.BestChromosome.Evaluate()); Assert.AreEqual(50, result.Generations, "Wrong number of generations"); }
public void MutationTest(RunType runType) { var searchEngine = new GeneticSearchEngineBuilder(POPULATION_SIZE, 50, crossoverManager, populationGenerator) .SetSelectionStrategy(new AssertRequestedChromosomesIsRightSelectionWrapper()) .SetMutationProbability(0.1).IncludeAllHistory().Build(); var result = searchEngine.Run(runType); Assert.IsTrue(VECTOR_SIZE < result.BestChromosome.Evaluate(), $"best result ({result.BestChromosome.Evaluate()}) should have been greater than {VECTOR_SIZE}. Chromosome is {result.BestChromosome}"); }
public void Banchmark() { var crossoverManager = A.Fake <ICrossoverManager>(); A.CallTo(() => crossoverManager.Crossover(A <IChromosome> ._, A <IChromosome> ._)) .ReturnsLazily(delegate(IChromosome c1, IChromosome c2) { Thread.Sleep(SLEEP_TIME); return(c1); }); var engine = new GeneticSearchEngineBuilder(POPULATION_SIZE, MAX_GENERATIONS, crossoverManager, new SlowPopulationGenerator(SLEEP_TIME)).Build(); var result = engine.Run(); Console.WriteLine("Total time: " + result.SearchTime); }
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 NagitiveEvaluation_ThrowException() { try { var chromosme = A.Fake <IChromosome>(); A.CallTo(() => chromosme.Evaluate()).Returns(-1); var populationGenerator = A.Fake <IPopulationGenerator>(); A.CallTo(() => populationGenerator.GeneratePopulation(A <int> ._)) .Returns(new[] { chromosme }); var engine = new GeneticSearchEngineBuilder(1, 2, A.Fake <ICrossoverManager>(), populationGenerator) .Build(); engine.Run(); Assert.Fail("Should have thrown an exception by now"); } catch (AggregateException e) { Assert.AreEqual(typeof(NegativeEvaluationException), e.InnerExceptions.First().GetType()); } }
public void BedPopulationRenewalPercantage_ThrowException(double percantage) { var chromosme = A.Fake <IChromosome>(); A.CallTo(() => chromosme.Evaluate()).Returns(1); var populationGenerator = A.Fake <IPopulationGenerator>(); A.CallTo(() => populationGenerator.GeneratePopulation(A <int> ._)) .Returns(new[] { chromosme }); var populationRenewalManager = A.Fake <IPopulationRenwalManager>(); A.CallTo(() => populationRenewalManager.ShouldRenew(A <Population> ._, A <IEnvironment> ._, A <int> ._)) .Returns(percantage); var engine = new GeneticSearchEngineBuilder(1, 2, A.Fake <ICrossoverManager>(), populationGenerator) .AddPopulationRenwalManager(populationRenewalManager) .Build(); engine.Run(); Assert.Fail("Should have thrown an exception by now"); }
static void Main(string[] args) { Console.WriteLine("Started!"); IMutationManager <string> mutationManager = new ExchangeMutationManager <string>(); IEvaluator evaluator = new DistanceEvaluator(locations); ICrossoverManager crossoverManager = new OrderCrossover <string>(mutationManager, evaluator); IPopulationGenerator populationGenerator = new AllElementsVectorChromosomePopulationGenerator <string>(cities, mutationManager, evaluator); GeneticSearchEngine engine = new GeneticSearchEngineBuilder(POPULATION_SIZE, GENERATIONS, crossoverManager, populationGenerator) .SetMutationProbability(0.1).SetElitePercentage(0.02).Build(); engine.OnNewGeneration += (Population p, IEnvironment e) => PrintBestChromosome(p); GeneticSearchResult result = engine.Run(); Console.WriteLine("Finished!"); Console.WriteLine(result.BestChromosome + ": " + distanceCalclator.GetDistance(result.BestChromosome)); Console.ReadLine(); }