public Poblacion cruceP(Poblacion p) { Poblacion H = new Poblacion(p.TamPob ()); List<Individuo> ind; for(int i = 0; i < p.TamPob (); i+=2) { ind = new List<Individuo>(2); if (RNG.RandomNumber () < pCruce) { ind = cruceI (p.getIndi (i), p.getIndi (i + 1)); } else { ind.Add (p.getIndi (i)); ind.Add (p.getIndi (i + 1)); } mutacion (ind); H.addIndis (ind); } return H; }
public Poblacion doSel(Poblacion pA, Poblacion pB) { List<Individuo> _ind; Poblacion _pob = new Poblacion (pA.TamPob ()); for (int i = 0; i < pA.TamPob (); i += 2) { _ind = new List<Individuo> (2); if (pA.getIndi (i).getFit () < pB.getIndi (i).getFit ()) { _ind.Add (pA.getIndi (i)); } else { _ind.Add (pB.getIndi (i)); } if (pA.getIndi (i+1).getFit () < pB.getIndi (i+1).getFit ()) { _ind.Add (pA.getIndi (i+1)); } else { _ind.Add (pB.getIndi (i+1)); } _pob.addIndis (_ind); } return _pob; }
public Poblacion cruceP(Poblacion p) { Poblacion H = new Poblacion(p.TamPob ()); //Console.WriteLine ("Cruce ------>>>> TAMAÑO DE LA POBLACION!!! --> " + p.TamPob() ); List<Individuo> ind; for(int i = 0; i < p.TamPob (); i+=2) { ind = new List<Individuo> (2); if (RNG.RandomNumber () < pCruce) { ind = cruceI (p.getIndi (i), p.getIndi (i + 1)); } else { ind.Add (p.getIndi (i)); ind.Add (p.getIndi (i + 1)); } //Console.WriteLine ("---->> " + ind.Count); mutacion (ind); H.addIndis (ind); //Console.WriteLine (i + " ---->>>>> " + p.TamPob() + " -----> " + H.TamPob()); //Console.WriteLine ("CruceFinal ------>>>> TAMAÑO DE LA POBLACION!!! --> " + H.TamPob() ); } return H; }