Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 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);
        }