Esempio n. 1
0
        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));
        }
Esempio n. 2
0
 /// <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));
        }
Esempio n. 6
0
        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;
            }));
        }