private void Recombinare() { for (var i = 0; i < Config.MarimePopulatie / 2; i++) { var parinte1 = SelecteazaParinte(); var parinte2 = SelecteazaParinte(); var copil = Cromozom.Recombina(parinte1, parinte2); if (Config.BinaryToDecimal(copil.ListaGene[0]) >= Config.Domeniu.Count) { //copii.First.ListaGene[0] = Config.DecimalToBinary(Config.Domeniu.Count - 1); var modulo = Config.BinaryToDecimal(copil.ListaGene[0]) % (Config.Domeniu.Count - 1); var y = Config.DecimalToBinary(modulo); copil.ListaGene[0] = y; } // if (Config.BinaryToDecimal(copii.Second.ListaGene[0]) >= Config.Domeniu.Count) // { // //copii.Second.ListaGene[0] = Config.DecimalToBinary(Config.Domeniu.Count - 1); // var modulo = Config.BinaryToDecimal(copii.Second.ListaGene[0]) % (Config.Domeniu.Count - 1); // var y = Config.DecimalToBinary(modulo); // copii.Second.ListaGene[0] = y; // } //ListaPopulatie.Add(copii.First); ListaPopulatie.Add(copil); } }
public void InitPopulatie() { ListaPopulatie = new List <Cromozom>(Config.MarimePopulatie); for (var i = 0; i < Config.MarimePopulatie; i++) { var cromozom = new Cromozom(); cromozom.CreateRandom(); ListaPopulatie.Add(cromozom); } }
public static Cromozom Recombina(Cromozom parinte1, Cromozom parinte2) { var aux = new Cromozom(); var aux2 = new Cromozom(); aux.ListaGene.Add(new Gena()); aux2.ListaGene.Add(new Gena()); var medie = ((Config.BinaryToDecimal(parinte1.ListaGene[0]) + Config.BinaryToDecimal(parinte2.ListaGene[0])) / 2); Console.WriteLine("Mama+tata=" + Config.BinaryToDecimal(parinte1.ListaGene[0]) + Config.BinaryToDecimal(parinte2.ListaGene[0])); var genaCopil = Config.DecimalToBinary(medie); aux.ListaGene[0] = genaCopil; Console.WriteLine("Mama:" + Config.BinaryToDecimal(parinte1.ListaGene[0])); Console.WriteLine("Tata:" + Config.BinaryToDecimal(parinte1.ListaGene[0])); Console.WriteLine("A iesit copilul cu index:" + medie); // for (int i = 0; i <= 7; i++) // { // if (i <= 4) // { // aux.ListaGene[0].ValoareGena.Add(parinte1.ListaGene[0].ValoareGena[i]); // } // else // { // aux2.ListaGene[0].ValoareGena.Add(parinte2.ListaGene[0].ValoareGena[i]); // } // // } // // for (int i = 0; i <= 7; i++) // { // if (i > 4) // { // aux.ListaGene[0].ValoareGena.Add(parinte2.ListaGene[0].ValoareGena[i]); // } // else // { // aux2.ListaGene[0].ValoareGena.Add(parinte1.ListaGene[0].ValoareGena[i]); // } // // } //return new Pair<Cromozom, Cromozom>(aux,aux2); return(aux); }