Ejemplo n.º 1
0
 void mutacija(Jedinka jedinka, double prag)
 {
     //TODO 4: Implementirati operaciju mutacije
     for (int i = 0; i < jedinka.chromosome.Length; i++)
     {
         double a = rand.NextDouble();
         if (a <= prag)
         {
             jedinka.chromosome[i] = 1 - jedinka.chromosome[i];
         }
     }
     jedinka.x = jedinka.bin2double(jedinka.chromosome);
 }
Ejemplo n.º 2
0
 private void btnKodiranje_Click(object sender, EventArgs e)
 {
     try
     {
         //TODO 1: Dopuniti metodu
         jedinkaPanel1.Refresh();
         double dekodiranoX = jedinka.bin2double(jedinka.chromosome);
         tbDekodiranoX.Text      = "" + dekodiranoX.ToString("#0.000");
         kodiranjePanel1.jedinka = jedinka;
         kodiranjePanel1.Refresh();
         statusBar.Text = "";
     }
     catch (Exception ex) {
         statusBar.Text = "Greška!";
     }
 }
Ejemplo n.º 3
0
        void mutacija(Jedinka jedinka, double prag)
        {
            //za svaki gen u hromozomu jednike se generise slucajni broj koji odlucuje da li se taj bit invertuje
            for (int i = 0; i < Jedinka.MAXSTRING; ++i)
            {
                double slucajanBroj = rand.NextDouble();
                if (slucajanBroj < prag)
                {
                    jedinka.chromosome[i] = 1 - jedinka.chromosome[i];
                }
            }

            jedinka.x = jedinka.bin2double(jedinka.chromosome);
            //TODO 11: Ne zaboraviti promeniti double vrednost i druge promenljive
            jedinka.x2 = jedinka.bin2double2(jedinka.chromosome);
        }
Ejemplo n.º 4
0
 void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag)
 {
     //TODO 3: Implementirati operaciju ukrstanja
     for (int i = 0; i < jedinka1.chromosome.Length; i++)
     {
         double a = rand.NextDouble();
         if (a <= prag)
         {
             int k = jedinka1.chromosome[i];
             jedinka1.chromosome[i] = jedinka2.chromosome[i];
             jedinka2.chromosome[i] = k;
         }
     }
     jedinka1.x = jedinka1.bin2double(jedinka1.chromosome);
     jedinka2.x = jedinka2.bin2double(jedinka2.chromosome);
 }
Ejemplo n.º 5
0
 void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag)
 {
     //TODO 3: Implementirati operaciju ukrstanja
     for (int i = 0; i < Jedinka.MAXSTRING; i++)
     {
         double t = rand.NextDouble();
         if (t < prag)
         {
             int tmp = jedinka1.chromosome[i];
             jedinka1.chromosome[i] = jedinka2.chromosome[i];
             jedinka2.chromosome[i] = tmp;
         }
     }
     jedinka1.x = jedinka1.bin2double(jedinka1.chromosome);
     jedinka2.x = jedinka2.bin2double(jedinka2.chromosome);
 }
Ejemplo n.º 6
0
 void mutacija(Jedinka jedinka, double prag)
 {
     //TODO 4: Implementirati operaciju mutacije
     for (int i = 0; i < Jedinka.MAXSTRING; i++)
     {
         double t = rand.NextDouble();
         if (t < prag)
         {
             if (jedinka.chromosome[i] == 0)
             {
                 jedinka.chromosome[i] = 1;
             }
             else
             {
                 jedinka.chromosome[i] = 0;
             }
         }
     }
     jedinka.x = jedinka.bin2double(jedinka.chromosome);
 }
Ejemplo n.º 7
0
 private void btnKodiranje_Click(object sender, EventArgs e)
 {
     try
     {
         //TODO 1: Dopuniti metodu
         double minX = Convert.ToDouble(tbMinX.Text);
         double maxX = Convert.ToDouble(tbMaxX.Text);
         double x    = Convert.ToDouble(tbX.Text);
         jedinkaPanel1.jedinka = new Jedinka(x, minX, maxX);
         jedinkaPanel1.Refresh();
         double dekodiranoX = jedinka.bin2double(jedinkaPanel1.jedinka.chromosome);
         tbDekodiranoX.Text      = "" + dekodiranoX.ToString("#0.000");
         kodiranjePanel1.jedinka = jedinka;
         kodiranjePanel1.Refresh();
         statusBar.Text = "";
     }
     catch (Exception ex) {
         statusBar.Text = "Greška!";
     }
 }
Ejemplo n.º 8
0
        void ukrstanje(Jedinka jedinka1, Jedinka jedinka2, double prag)
        {
            //za svaki gen se generise slucajan broj koji odlucuje da li ce se zameniti geni u dve jedinke
            for (int i = 0; i < Jedinka.MAXSTRING; ++i)
            {
                double slucajanBroj = rand.NextDouble();
                if (slucajanBroj < prag)
                {
                    int temp = jedinka1.chromosome[i];
                    jedinka1.chromosome[i] = jedinka2.chromosome[i];
                    jedinka2.chromosome[i] = temp;
                }
            }

            //Jedinka sadrzi i normalnu predstavu broja, mi smo menjali kodiranu predstavu, pa nju treba uskladiti
            jedinka1.x = jedinka1.bin2double(jedinka1.chromosome);
            jedinka2.x = jedinka2.bin2double(jedinka2.chromosome);

            //TODO 9: Ne zaboraviti promeniti double vrednost i druge promenljive
            jedinka1.x2 = jedinka1.bin2double2(jedinka1.chromosome);
            jedinka2.x2 = jedinka2.bin2double2(jedinka2.chromosome);
        }
Ejemplo n.º 9
0
        void ukrstanje2(Jedinka jedinka1, Jedinka jedinka2)
        {
            //jedinka1 treba da bude N roditelj 1 - M roditelj 2 - N roditelj 1
            //jedinka2 treba da bude N roditelj 2 - M roditelj 1 - N roditelj 2

            int N = rand.Next(0, Jedinka.MAXSTRING / 2); //slucajno se generise N
            int M = Jedinka.MAXSTRING - 2 * N;

            //menja se centralnih M hromozoma
            for (int i = N; i < N + M; ++i)
            {
                int temp = jedinka1.chromosome[i];
                jedinka1.chromosome[i] = jedinka2.chromosome[i];
                jedinka2.chromosome[i] = temp;
            }

            //Jedinka sadrzi i normalnu predstavu broja, mi smo menjali kodiranu predstavu, pa nju treba uskladiti
            jedinka1.x = jedinka1.bin2double(jedinka1.chromosome);
            jedinka2.x = jedinka2.bin2double(jedinka2.chromosome);
            //TODO 10: Ne zaboraviti promeniti double vrednost i druge promenljive
            jedinka1.x2 = jedinka1.bin2double2(jedinka1.chromosome);
            jedinka2.x2 = jedinka2.bin2double2(jedinka2.chromosome);
        }
Ejemplo n.º 10
0
 void mutacija(Jedinka jedinka, double prag)
 {
     //TODO 4: Implementirati operaciju mutacije
     jedinka.x = jedinka.bin2double(jedinka.chromosome);
 }