public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2) { if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); } else { Random rnd = new Random(); int padre = 0; Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false); for (int i = 0; i < cr2.Longitud; i++) { padre = rnd.Next(2); // Si padre=0 -> Toma el gen de cr1; padre=1-> Toma el de cr2 if (padre == 0) { nuevoCromosoma[i] = cr1[i]; } else { nuevoCromosoma[i] = cr2[i]; } } return(nuevoCromosoma); } }
public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2) { if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); } else { Random rnd = new Random(); int punto = rnd.Next(cr1.Longitud); Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false); for (int i = 0; i < punto; i++) { nuevoCromosoma[i] = cr1[i]; } for (int i = punto; i < cr1.Longitud; i++) { nuevoCromosoma[i] = cr2[i]; } return(nuevoCromosoma); } }
public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2) { if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); } else { Random rnd = new Random(); int padre = 0; Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false); for(int i=0;i<cr2.Longitud;i++) { padre = rnd.Next(2); // Si padre=0 -> Toma el gen de cr1; padre=1-> Toma el de cr2 if (padre == 0) { nuevoCromosoma[i] = cr1[i]; } else { nuevoCromosoma[i] = cr2[i]; } } return nuevoCromosoma; } }
/// <summary> /// Devuelve una copia del objeto que lo llama. /// </summary> /// <returns></returns> public Cromosoma Copia() { Cromosoma nuevoCromosoma = new Cromosoma(datos.Length, false); nuevoCromosoma.datos = datos; return(nuevoCromosoma); }
public double Evalua(Cromosoma cr) { double res = 0; for(int i=0;i<cr.Longitud;i++) { res += cr.datos[i]; } return res; }
public double Evalua(Cromosoma cr) { double res = 0; for (int i = 0; i < cr.Longitud; i++) { res += cr.datos[i]; } return(res); }
public override Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2) { if (cr1.Longitud != cr2.Longitud) { throw new Exception("Intenta recombinar cromosomas de distinta longitud"); } else { Random rnd = new Random(); int punto = rnd.Next(cr1.Longitud); Cromosoma nuevoCromosoma = new Cromosoma(cr1.Longitud, false); for (int i = 0; i < punto; i++) { nuevoCromosoma[i] = cr1[i]; } for (int i = punto; i < cr1.Longitud; i++) { nuevoCromosoma[i] = cr2[i]; } return nuevoCromosoma; } }
public Individuo(int tam, IProblema pr) { cromosoma = new Cromosoma(tam, true); fitness = pr.Evalua(cromosoma); }
public Individuo(Cromosoma cr, IProblema pr) { cromosoma = cr.Copia(); fitness = pr.Evalua(cromosoma); }
/// <summary> /// Devuelve una copia del objeto que lo llama. /// </summary> /// <returns></returns> public Cromosoma Copia() { Cromosoma nuevoCromosoma = new Cromosoma(datos.Length,false); nuevoCromosoma.datos = datos; return nuevoCromosoma; }
public abstract Cromosoma Recombinar(Cromosoma cr1, Cromosoma cr2);