public EvolutionEligibility?GetEvolutionEligibility(FitnessResultState state)
        {
            if (state.PopulationPercentile > 99)
            {
                return(EvolutionEligibility.Clone);
            }

            if (state.PopulationPercentile > 98)
            {
                return(EvolutionEligibility.BreedPercentile);
            }

            if (state.PopulationPercentile > 90)
            {
                return(EvolutionEligibility.Mutate);
            }

            if (state.PopulationPercentile > 50)
            {
                return(EvolutionEligibility.BreedRandom);
            }

            return(EvolutionEligibility.None);
        }
 public Chromosome(TCandidate candidate, FitnessResultState fitness, EvolutionEligibility evolutionEligibility)
 {
     this.Candidate            = candidate;
     this.Fitness              = fitness;
     this.EvolutionEligibility = evolutionEligibility;
 }