public static Cromosoma mutacionDeAlelo(Cromosoma mutante) { int[] alelosMutados = new int[4]; Random rand = new Random(); int aleloAMutar = rand.Next(4); //Console.WriteLine("Posicion a Mutar:" + aleloAMutar); int noRepetir = mutante.alelos.ElementAt(aleloAMutar); for (int i = 0; i < alelosMutados.Length; i++) { if (i == aleloAMutar) { do { alelosMutados[i] = rand.Next(11); }while(alelosMutados[i] == noRepetir); } else { alelosMutados[i] = mutante.alelos[i]; } } Cromosoma CromoMutado = new Cromosoma(alelosMutados); return(CromoMutado); }
public static Cromosoma cruzaDeDosPuntos(Cromosoma primero, Cromosoma segundo, int puntoUno, int puntoDos) { int[] alelosHijo = new int[4]; for (int i = 0; i < alelosHijo.Length; i++) { if (i < puntoUno) { alelosHijo[i] = primero.alelos.ElementAt(i); } else { if (i < puntoDos) { alelosHijo[i] = segundo.alelos.ElementAt(i); } else { alelosHijo[i] = primero.alelos.ElementAt(i); } } } Cromosoma hijo = new Cromosoma(alelosHijo); return(hijo); }
public static Cromosoma versus(Cromosoma primero, Cromosoma segundo, int peleaNumero, Boolean datos) { if (datos) { torneo(primero, segundo, peleaNumero); } if (primero.aptitud > segundo.aptitud) { return(primero); } else { return(segundo); } }
public static Cromosoma mejorDeUnaGeneracion(List <Cromosoma> Generacion) { Cromosoma elMejor = null; double laMejorApti = 0; foreach (Cromosoma cromo in Generacion) { if (cromo.aptitud > laMejorApti) { laMejorApti = cromo.aptitud; elMejor = cromo; } } return(elMejor); }
public static void torneo(Cromosoma local, Cromosoma visitante, int peleaNumero) { Console.WriteLine("-------" + peleaNumero + "-------"); Console.WriteLine("Local: "); imprimirVectorDeInversion(local); Console.WriteLine("Visitante: "); imprimirVectorDeInversion(visitante); Console.WriteLine("Ganador: "); if (local.aptitud > visitante.aptitud) { imprimirVectorDeInversion(local); } else { imprimirVectorDeInversion(visitante); } Console.WriteLine(); }
public static void imprimirVectorDeInversion(Cromosoma cromo) { for (int i = 0; i < cromo.alelos.Length; i++) { if (i == 0) { Console.Write("[" + cromo.alelos.ElementAt(i) + ", "); } else { if (!(i == (cromo.alelos.Length - 1))) { Console.Write(cromo.alelos.ElementAt(i) + ", "); } else { Console.WriteLine(cromo.alelos.ElementAt(i) + "]\tAptitud: " + cromo.aptitud); } } } }
public static Cromosoma generadorDeCromosomas() { Cromosoma cromo = new Cromosoma(generadorDeAlelos()); return(cromo); }