//Operador de AG: cruza, tipo: 1 punto //Cruza a este individuo con otro, intercalando apartir del punto de cruza una parte del cromosoma //Regresa dos individuos, uno más parecido el padre y otro mas parecido a la madre public Individuo[] CruzaPor1Punto(Individuo individuo, int puntoDeCruza) { Gene genePadre = this.cromosoma.getGene(); Gene geneMadre = individuo.cromosoma.getGene(); Individuo[] hijos = new Individuo[2]; string hijo1 = genePadre.GetBinario().Substring(0, puntoDeCruza) + geneMadre.GetBinario().Substring(puntoDeCruza); string hijo2 = geneMadre.GetBinario().Substring(0, puntoDeCruza) + genePadre.GetBinario().Substring(puntoDeCruza); hijos[0] = new Individuo(hijo1, valorMinimo, valorMaximo, particiones); hijos[1] = new Individuo(hijo2, valorMinimo, valorMaximo, particiones); return(hijos); }
//Representacion del cromosoma con formato: [CodigoGray]:[CodigoBinario]:[RepresentacionReal] public override string ToString() { string s = "Cromosoma:\n"; s += "[" + gene.GetGrey() + "] : [" + gene.GetBinario() + "] : [" + GetValorReal() + "]\n"; return(s); }