Beispiel #1
0
        public Cromossomo cruza(Cromossomo parceiro)
        {
            Cromossomo filho = new Cromossomo {
                Genes = this.Genes.Substring(0, 10) + parceiro.Genes.Substring(10, 10)
            };

            return(filho);
        }
Beispiel #2
0
        public Cromossomo[] crossover()
        {
            Cromossomo[] novaPop = new Cromossomo[Populacao.Length];

            Cromossomo parceiroA;
            Cromossomo parceiroB;

            double somaFit    = 0;
            double bestFit    = 0;
            double averageFit = 0;

            foreach (var cromo in Populacao)
            {
                somaFit += cromo.Fitness;

                if (cromo.Fitness >= bestFit)
                {
                    bestFit = cromo.Fitness;
                }
            }
            averageFit = somaFit / Populacao.Length;

            AveragefitList.Add(averageFit);
            BestfitList.Add(bestFit);

            for (int i = 0; i < novaPop.Length; i += 2)
            {
                parceiroA = roleta(somaFit);
                parceiroB = roleta(somaFit);

                if (vaiCruzar)
                {
                    novaPop[i]     = parceiroA.cruza(parceiroB);
                    novaPop[i + 1] = parceiroB.cruza(parceiroA);
                }
                else
                {
                    novaPop[i]     = parceiroA;
                    novaPop[i + 1] = parceiroB;
                }
            }
            return(novaPop);
        }
Beispiel #3
0
        public string printaDados()
        {
            int        bestCount   = 0;
            double     somafit     = 0;
            Cromossomo melhorCromo = Populacao[0];

            foreach (var cromo in Populacao)
            {
                if (cromo.Fitness == 1)
                {
                    bestCount++;
                }
                somafit    += cromo.Fitness;
                melhorCromo = (cromo.Fitness > melhorCromo.Fitness) ? cromo : melhorCromo;
            }
            double[] par    = melhorCromo.decodificaGenes();
            string   result = "Melhor cromossomo: " + melhorCromo.Fitness + "\nMelhor resposta x: " + par[0] + " y: " + par[1] + "\nMédia da população: " + somafit / Populacao.Length + "\nNumero de casos ótimos: " + bestCount;

            return(result);
        }
Beispiel #4
0
        //CHECK
        public void criaPopInicial()
        {
            double somaFit = 0;//avaliar qual vai ser a logica pra isso, talvez não fique aqui

            double bestFit    = 0;
            double averageFit = 0;

            for (int i = 0; i < Populacao.Length; i++)
            {
                Populacao[i] = new Cromossomo();
                somaFit     += Populacao[i].Fitness;

                if (Populacao[i].Fitness >= bestFit)
                {
                    bestFit = Populacao[i].Fitness;
                }
            }
            averageFit = somaFit / Populacao.Length;

            AveragefitList.Add(averageFit);
            BestfitList.Add(bestFit);
            geracao++;
        }