Beispiel #1
0
 private void GenerirajPocetnuGeneraciju()
 {
     for (int i = 0; i < velicinaPopulacije; i++)
     {
         Kromosom kromosom = new Kromosom(donjaGranicaVrijednosti, gornjaGranicaVrijednosti, brojZnamenkiPreciznostiRjesenja, brojVrijednostiUKromosomu);
         kromosomi.Add(kromosom);
     }
 }
Beispiel #2
0
        private double FunkcijaKorisnik(Kromosom kromosom)
        {
            double[] vrijednosti = kromosom.vrijednosti;
            double   x1          = vrijednosti[0];
            double   x2          = vrijednosti[1];

            return(x1 * x1 + x2 * x2);
        }
Beispiel #3
0
        double F(Kromosom kromosom)
        {
            switch (oznakaFunkcije)
            {
            case 1:
                return(Funkcija1(kromosom.vrijednosti));

            case 2:
                return(Funkcija2(kromosom.vrijednosti));

            case 3:
                return(Funkcija3(kromosom.vrijednosti));

            case 4:
                return(Funkcija4(kromosom.vrijednosti));

            case 0:
                return(FunkcijaKorisnik(kromosom));

            default:
                return(0);
            }
        }
Beispiel #4
0
        private void ObaviKrizanje(Kromosom dijete, Kromosom roditelj1, Kromosom roditelj2)
        {
            int duljinaVrijednosti = (int)Math.Ceiling(Math.Log(((double)(gornjaGranicaVrijednosti - donjaGranicaVrijednosti) * Math.Pow(10.0, brojZnamenkiPreciznostiRjesenja) + 1)));

            int[] binarniPrikazDjeteta = new int[duljinaVrijednosti * brojVrijednostiUKromosomu];

            for (int i = 0; i < duljinaVrijednosti * brojVrijednostiUKromosomu; i++)
            {
                int v1 = roditelj1.binarniPrikaz[i];
                int v2 = roditelj2.binarniPrikaz[i];

                //binarniPrikazDjeteta[i] = v1 + v2 - v1 * v2;
                if (v1 == v2)
                {
                    binarniPrikazDjeteta[i] = v1;
                }
                else
                {
                    binarniPrikazDjeteta[i] = random.Next(0, 2);
                }
            }

            dijete.PostaviBinarniPrikazIOsvjezi(binarniPrikazDjeteta);
        }