Esempio n. 1
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);
        }
Esempio n. 2
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);
        }
Esempio n. 3
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);
        }