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; }