Пример #1
0
        //Заполнение популяций особями
        //ВНИМАНИЕ!!! Отладочный метод, использующий объекты класса Plate, а не интерфейсы
        public void CreateStartingPopulation(int count = 50)
        {
            Plate perfectPlate = new Plate();

            Console.WriteLine("Эталон: ");

            for (int i = 0; i < 30; i++)
            {
                perfectPlate.AddSegment(new Segment(i, i, i, i + 1, i + 1, true));
                //Вывод сегментов эталонного варианта
                Console.WriteLine($"New segment ID: {i}, [{i},{i}];[{i + 1},{i + 1}], direction: {true}");
            }

            //Остановка для просмотра сформированного эталона
            Console.ReadKey();

            //Создание стартовой популяции
            for (int i = 0; i < count; i++)
            {
                Plate plate = new Plate(perfectPlate);
                plate.ShuffleSegments();
                firstGeneration.Add(plate);
            }

            secondGeneration        = new List <AbstractIndividual>(firstGeneration);
            currentGenerationNumber = 0;
        }
Пример #2
0
 public Plate(Plate copy)
 {
     _Segments = new List <Segment>();
     foreach (Segment segment in copy.Segments)
     {
         AddSegment(new Segment(segment));
     }
 }