Пример #1
0
 public Individuo(Individuo x)
 {
     this.individuo = new int[50];
     ID             = x.getID();
     fitness        = x.getFitness();
     for (int i = 0; i < individuo.Length; i++)
     {
         individuo[i] = x.getGeneAt(i);
     }
 }
        public Individuo(Individuo x)
        {
            this.individuo = new int[50];
            ID = x.getID();
            fitness = x.getFitness();
            for (int i = 0; i < individuo.Length; i++)
            {
                individuo[i] = x.getGeneAt(i);
            }

        }
        /* Metodo que imprimir os individuos do meu algoritmo*/
        public void imprimirMelhorindividuo()
        {
            string linhaLista = "";

            population.OrderBy(x => x.getFitness());
            Individuo aux = population[0];

            for (int i = 0; i < aux.returnTamanhoIndividuo(); i++)
            {
                int gene = aux.getGeneAt(i);
                linhaLista = String.Concat(linhaLista, Aminoacidos[gene]);
            }
            linhaLista = String.Concat(linhaLista, "-- " + aux.getFitness().ToString());
            Form activeForm = Application.OpenForms["TelaInicial"];

            ((ListBox)activeForm.Controls["listaMelhorIndividuo"]).Items.Add(linhaLista);
        }
        /* Metodo que copia os genes que serão transmitidos para os individuos filhos do cruzamento*/
        public Individuo CopiarGenes(Individuo pai1, Individuo pai2, Individuo filho, int tradePosition)
        {
            int x = 0;

            while (x < pai1.returnTamanhoIndividuo())
            {
                if (x <= tradePosition)
                {
                    filho.setGeneAt(pai1.getGeneAt(x), x);
                }
                else
                {
                    filho.setGeneAt(pai2.getGeneAt(x), x);
                }
                x++;
            }
            return(filho);
        }
        // metodo utilizada para o calculo do fitness de cada individuo.
        public void FitnesCalc(Individuo x)
        {
            double posiçõesCorretas = 0.0;
            double resultado        = 0.0;

            for (int i = 0; i < gabarito.Length; i++)
            {
                if (gabarito[i] == x.getGeneAt(i))
                {
                    posiçõesCorretas++;
                }
            }
            if (posiçõesCorretas == 0)
            {
                resultado = 0.0;
            }
            else
            {
                resultado = (posiçõesCorretas - 1.0) / (gabarito.Length - 1);
            }
            x.setFitness(resultado);
        }
 // metodo utilizada para o calculo do fitness de cada individuo.
 public void FitnesCalc(Individuo x)
 {
     double posiçõesCorretas = 0.0;
     double resultado = 0.0;
     for (int i = 0; i < gabarito.Length; i++)
     {
         if (gabarito[i] == x.getGeneAt(i))
             posiçõesCorretas++;
     }
     if (posiçõesCorretas == 0)
         resultado = 0.0;
     else
         resultado = (posiçõesCorretas - 1.0) / (gabarito.Length - 1);
     x.setFitness(resultado);
 }
 /* Metodo que copia os genes que serão transmitidos para os individuos filhos do cruzamento*/
 public Individuo CopiarGenes(Individuo pai1, Individuo pai2, Individuo filho, int tradePosition)
 {
     int x = 0;
     while (x < pai1.returnTamanhoIndividuo())
     {
         if (x <= tradePosition)
         {
             filho.setGeneAt(pai1.getGeneAt(x), x);
         }
         else
         {
             filho.setGeneAt(pai2.getGeneAt(x), x);
         }
         x++;
     }
     return filho;
 }