public void Evolve_ManyGenerations_Fast() { var selection = new EliteSelection(); var crossover = new UniformCrossover(); var mutation = new UniformMutation(true); var chromosome = new AutoConfigChromosome(); var targetChromosome = new TspChromosome(10); var targetFitness = new TspFitness(10, 0, 100, 0, 100); var fitness = new AutoConfigFitness(targetFitness, targetChromosome); fitness.PopulationMinSize = 20; fitness.PopulationMaxSize = 20; fitness.Termination = new TimeEvolvingTermination(TimeSpan.FromSeconds(5)); var population = new Population(10, 10, chromosome); var ga = new GeneticAlgorithm(population, fitness, selection, crossover, mutation); ga.TaskExecutor = new SmartThreadPoolTaskExecutor() { MinThreads = 10, MaxThreads = 20 }; ga.Termination = new GenerationNumberTermination(2); ga.Start(); Assert.NotNull(ga.BestChromosome); }
public void GenerateGene_InvalidIndex_Exception() { var target = new AutoConfigChromosome(); var actual = Assert.Catch(() => target.GenerateGene(9)); Assert.AreEqual("Invalid AutoConfigChromosome gene index.", actual.Message); }
public void Evaluate_StartFailed_ZeroFitness() { var chromosome = new AutoConfigChromosome(); var targetChromosome = Substitute.For <IChromosome>(); targetChromosome.CreateNew().Returns(x => throw new Exception("TEST")); var targetFitness = new TspFitness(10, 0, 100, 0, 100); var target = new AutoConfigFitness(targetFitness, targetChromosome); var actual = target.Evaluate(chromosome); Assert.AreEqual(0, actual); }
public void Evaluate_StartOk_Fitness() { var chromosome = new AutoConfigChromosome(); var targetChromosome = new TspChromosome(10); var targetFitness = new TspFitness(10, 0, 100, 0, 100); var target = new AutoConfigFitness(targetFitness, targetChromosome); target.PopulationMinSize = 20; target.PopulationMaxSize = 20; target.Termination = new FitnessThresholdTermination(0.1f); var actual = target.Evaluate(chromosome); Assert.AreNotEqual(0, actual); }