예제 #1
0
 public void Actualizare()
 {
     SeteazaParintii();
     for (int i = 0; i < numarTotalCromozomi; i++)
     {
         Cromozom[] parintiTemp = ExtrageDoiParinti();
         Cromozom   temp        = new Cromozom(parintiTemp[0], parintiTemp[1]);
         temp.Mutatie();
         cromozomi[i] = temp;
     }
     numarGeneratie++;
 }
예제 #2
0
        public Populatie(int numarDeCromozomi, int numarDeCromozomiParinti)
        {
            numarTotalCromozomi   = numarDeCromozomi;
            numarCromozomiParinti = numarDeCromozomiParinti;

            cromozomi = new Cromozom[numarTotalCromozomi];
            parinti   = new Cromozom[numarCromozomiParinti];

            for (int i = 0; i < numarTotalCromozomi; i++)
            {
                cromozomi[i] = new Cromozom();
            }
            numarGeneratie = 1;
        }
예제 #3
0
 public void Ordonare()
 {
     for (int i = 0; i < numarTotalCromozomi - 1; i++)
     {
         for (int j = i + 1; j < numarTotalCromozomi; j++)
         {
             if (cromozomi[i].Adecvare() < cromozomi[j].Adecvare())
             {
                 Cromozom c = cromozomi[i];
                 cromozomi[i] = cromozomi[j];
                 cromozomi[j] = c;
             }
         }
     }
 }
예제 #4
0
        public Cromozom(Cromozom parinteA, Cromozom parinteB)
        {
            gene = new int[Populatie.numarGene];
            int punctTaietura = Program.rnd.Next(gene.Length);

            for (int i = 0; i < gene.Length; i++)
            {
                if (i < punctTaietura)
                {
                    gene[i] = parinteA.gene[i];
                }
                else
                {
                    gene[i] = parinteB.gene[i];
                }
            }
        }