private void CalculateFitness()
        {
            _fitnessSum = 0;
            Dna <T> best = Population[0];

            Population.ForEach(p =>
            {
                _fitnessSum += p.CalculateFitness(Population.IndexOf(p));
                best         = best.Fitness < p.Fitness ? p : best;
            });

            BestFitness = best.Fitness;
            best.Genes.CopyTo(BestGenes, 0);
        }