Esempio n. 1
0
 public Kromozom Fonksiyon(Kromozom kr1)
 {
     genDeger1 = rnd.Next(Convert.ToInt32(gx1), Convert.ToInt32(hx));
     genDeger2 = rnd.Next(Convert.ToInt32(gx2), Convert.ToInt32(hx));
     kr1.fx    = Math.Sin(genDeger1 + genDeger2) - (genDeger1 * 2) - 1.5 * genDeger1 + 2.5 * genDeger2 + 1;
     return(kr1);
 }
        public List <Kromozom> Caprazlama()
        {
            double   beta        = kr.YeniDegerUret();
            Kromozom yeniKrDeger = new Kromozom();

            for (int i = 0; i < Populasyon.Count(); i++)
            {
                yeniKrDeger.genDeger1 = beta * Convert.ToDouble(Populasyon[i].genDeger1) + ((1 - beta) * Convert.ToDouble(Populasyon[i].genDeger2));
                yeniKrDeger.genDeger2 = ((1 - beta) * Convert.ToDouble(Populasyon[i].genDeger1)) + beta * Convert.ToDouble(Populasyon[i].genDeger2);
                Populasyon.Add(yeniKrDeger);
                Populasyon.RemoveAt(i);
            }
            return(Populasyon);
        }
        public List <Kromozom> TurnuvaSecimi()
        {
            Kromozom secilenKromozom;
            Kromozom kr1       = new Kromozom();
            int      rastgele1 = rnd.Next(0, Populasyon.Count());
            int      rastgele2 = rnd.Next(0, Populasyon.Count());
            double   uygunluk1 = Populasyon[rastgele1].genDeger1;
            double   uygunluk2 = Populasyon[rastgele2].genDeger2;

            if (uygunluk1 > uygunluk2)
            {
                secilenKromozom = Populasyon[rastgele1];
                Populasyon.RemoveAt(rastgele1);
                Populasyon.Add(secilenKromozom);
                return(Populasyon);
            }
            else
            {
                secilenKromozom = Populasyon[rastgele2];
                Populasyon.RemoveAt(rastgele2);
                return(Populasyon);
            }
        }