Ejemplo n.º 1
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);
        }