Пример #1
0
        /// <summary>
        /// Tworzy nową generację z określoną ilością obiektów oraz kontrolerem ewolucyjnym.
        /// </summary>
        /// <param name="evolutionController">Kontroler ewolucyjny.</param>
        /// <param name="size">Ilość obiektów.</param>
        public Generation(IEvolutionController evolutionController, uint size)
        {
            Objects = new IDna[size];
            this.evolutionController = evolutionController ?? throw new ArgumentNullException("evolutionController nie może być null.");

            for (int i = 0; i < size; i++)
            {
                Objects[i]            = evolutionController.GetRandomDna();
                Objects[i].Generation = this;
                Objects[i].Id         = i;
            }
        }
Пример #2
0
        /// <summary>
        /// Oblicza fitness dla pojedynczych obiektów oraz wybiera najlepszego i przypisuje go do Best.
        /// </summary>
        public void Evaluate()
        {
            // Oblicznie fitnessów i wybieranie najlepszego.
            Best = evolutionController.GetRandomDna();
            foreach (IDna dna in Objects)
            {
                dna.CalculateFitness();
                if (dna.Fitness > Best.Fitness)
                {
                    Best = dna;
                }
            }

            // Sumowanie fitnessu wszystkich obiektów.
            foreach (IDna dna in Objects)
            {
                FitnessSum += dna.Fitness;
            }

            WasEvaluated = true;
        }