public void StarCrossOver()
        {
            int       i = 0;
            Individuo Pai1;
            Individuo Pai2;
            Individuo filho             = new Individuo();
            double    S                 = 0.0;
            bool      newPopulationFull = false;

            this.GerarRank();
            foreach (var item in population)
            {
                S += item.getRank();
            }

            while (i < 2)
            {
                NewPopulation[i] = new Individuo(population.OrderByDescending(x => x.getFitness()).ElementAt(i));
                i++;
            }
            //for (int j = 0; j < 50; j++)
            //{
            //    NewPopulation[i] = new Individuo();
            //    FitnesCalc(NewPopulation[i]);
            //    i++;
            //}

            while (newPopulationFull == false)
            {
                Pai1 = SelectIndividuo(S);
                Pai2 = SelectIndividuo(S);

                if (crossOverRate <= Random.NextDouble())
                {
                    filho = CopiarGenes(Pai1, Pai2, filho);

                    if (Random.NextDouble() <= mutationRate)
                    {
                        filho = MutationGene(filho);
                    }
                    FitnesCalc(filho);
                    if (i < population.Length)
                    {
                        NewPopulation[i] = new Individuo(filho);
                        i++;
                    }
                    else
                    {
                        newPopulationFull = true;
                    }
                }
                Pai1.setLivreCruzamento();
                Pai2.setLivreCruzamento();
            }
        }
        /* Metodo que executa o cruzamento dos individuos da minha população*/
        public void StarCrossOver()
        {
            int       TradePosition;
            int       i = 0;
            Individuo Pai1;
            Individuo Pai2;
            Individuo filho             = new Individuo(0);
            double    S                 = 0.0;
            bool      newPopulationFull = false;

            foreach (var item in population)
            {
                S += item.getFitness();
            }
            while (newPopulationFull == false)
            {
                Pai1 = SelectRollet(S);
                Pai2 = SelectRollet(S);

                if (crossOverRate <= Random.NextDouble())
                {
                    TradePosition = Random.Next(0, Pai1.returnTamanhoIndividuo() - 1);

                    filho = CopiarGenes(Pai1, Pai2, filho, TradePosition);

                    if (mutationRate <= Random.NextDouble())
                    {
                        filho = MutationGene(filho);
                    }
                    FitnesCalc(filho);
                    if (i < population.Length)
                    {
                        filho.setID(i);
                        NewPopulation[i] = new Individuo(filho);
                        i++;
                    }
                    else
                    {
                        newPopulationFull = true;
                    }
                }
                Pai1.setLivreCruzamento();
                Pai2.setLivreCruzamento();
            }
        }