Example #1
0
 public void OptimizeStep(Delegates.Crossover crossover, Delegates.Mutator mutator)
 {
     //Console.WriteLine($"Поколение №{population.currentGenerationNumber}");
     //К этому моменту начальная случайно сгенерированная популяция уже создана, далее выполняется отбор
     int[] selectedIndexes = RouletteSelection();
     population.PerformCrossingover(crossover, selectedIndexes); //Кроссинговер
     population.PerformMutation(mutator);                        //Мутация
     population.SwitchGenerations();                             //Поменять поколения в популяции местами
     //Console.WriteLine("Лучший в поколении №" + currentGenerationNumber + "\n" + population.GetBestIndividual());
     currentGenerationNumber++;
 }
Example #2
0
        public void PerformMutation(Delegates.Mutator mutator)
        {
            AbstractIndividual bestOne = GetBestIndividual();

            foreach (AbstractIndividual individual in CurrentGeneration)
            {
                if (individual != bestOne)
                {
                    individual.Mutate(mutator);
                }
            }
        }
Example #3
0
 public void Optimize(Delegates.Crossover crossover, Delegates.Mutator mutator, int maxPopulationNumber)
 {
     //К этому моменту начальная случайно сгенерированная популяция уже создана, далее выполняется отбор
     for (int i = 0; i < maxPopulationNumber; i++)
     {
         int[] selectedIndexes = RouletteSelection();
         population.PerformCrossingover(crossover, selectedIndexes); //Кроссинговер
         population.PerformMutation(mutator);                        //Мутация
         population.SwitchGenerations();                             //Поменять поколения в популяции местами
         currentGenerationNumber++;
     }
     Console.ReadLine();
     //Выполнять определённое количество раз
 }
Example #4
0
 public void Mutate(Delegates.Mutator mutator)
 {
     mutator(_Segments);
 }