public override ITermination CreateTermination() { var terminations = new TimeEvolvingTermination(TimeSpan.FromSeconds(this.settings.MaxOptimizationTimeSeconds)); var fitnessStagnationTermination = new FitnessStagnationTermination(this.settings.MaxOptimizationStagnatingGenerations); return(new OrTermination(terminations, fitnessStagnationTermination)); }
/// <summary> /// Initializes a new instance of the <see cref="AutoConfigFitness"/> class. /// </summary> /// <param name="targetFitness">The target fitness.</param> /// <param name="targetChromosome">The target chromosome.</param> public AutoConfigFitness(IFitness targetFitness, IChromosome targetChromosome) { m_targetFitness = targetFitness; m_targetChromosome = targetChromosome; PopulationMinSize = 100; PopulationMaxSize = 100; Termination = new TimeEvolvingTermination(TimeSpan.FromSeconds(30)); TaskExecutor = new LinearTaskExecutor(); }
public ITermination TimeEvolving() { var target = new TimeEvolvingTermination(TimeSpan.FromMilliseconds(1)); var ga = Substitute.For <IGeneticAlgorithm>(); target.HasReached(ga); return(target); }
public void HasReached_TimeLowerThanMaxTime_False() { var ga = Substitute.For <IGeneticAlgorithm>(); ga.TimeEvolving.Returns(TimeSpan.FromSeconds(0.1), TimeSpan.FromSeconds(00.9)); var target = new TimeEvolvingTermination(TimeSpan.FromSeconds(1)); Assert.IsFalse(target.HasReached(ga)); Assert.IsFalse(target.HasReached(ga)); }
public void HasReached_TimeLowerThanMaxTime_False() { var repository = new MockRepository(); var ga = repository.StrictMock <IGeneticAlgorithm> (); using (repository.Ordered()) { ga.Expect(g => g.TimeEvolving).Return(TimeSpan.FromSeconds(0.1)); ga.Expect(g => g.TimeEvolving).Return(TimeSpan.FromSeconds(0.9)); } repository.ReplayAll(); var target = new TimeEvolvingTermination(TimeSpan.FromSeconds(1)); Assert.IsFalse(target.HasReached(ga)); Assert.IsFalse(target.HasReached(ga)); }
public Task <Timetable> RunAsync() { var adamChromosome = CreateAdamChromosome(); var population = new Population(50, 100, adamChromosome); var fitness = new FuncFitness(TimetablerFitnessFunction); var selection = new EliteSelection(); var crossover = new UniformCrossover(0.5f); var mutation = new FlipBitMutation(); var termination = new TimeEvolvingTermination(TimeSpan.FromSeconds(20)); var geneticAlgorithm = new GeneticAlgorithm( population, fitness, selection, crossover, mutation) { Termination = termination }; geneticAlgorithm.GenerationRan += (sender, e) => { var bestChromosome = geneticAlgorithm.BestChromosome as FloatingPointChromosome; GeneticSolution = ChromosomeToTimetable(bestChromosome); }; GeneticAlgorithm = geneticAlgorithm; return(Task.Factory.StartNew(() => { geneticAlgorithm.Start(); return GeneticSolution; })); }