private void kontrolEt(int i, int j, Kromozom k1, Kromozom k2, int rastgelesayi, Kromozom kromozom)
 {
     if (i == 0)
     {
         if (rastgelesayi == j)
         {
             kromozom.genEkle(k2.genler[rastgelesayi]);
         }
         else
         {
             kromozom.genEkle(k1.genler[j]);
         }
     }
     else
     {
         if (rastgelesayi == j)
         {
             kromozom.genEkle(k1.genler[rastgelesayi]);
         }
         else
         {
             kromozom.genEkle(k2.genler[j]);
         }
     }
 }
Example #2
0
        void populasyon_sirala(List <Kromozom> list)
        {
            List <SiralamaUzaklıkHesapla> uzaklikNesnesi = new List <SiralamaUzaklıkHesapla>();

            for (int i = 0; i < list.Count; i++)
            {
                SiralamaUzaklıkHesapla a = new SiralamaUzaklıkHesapla(Math.Abs((double)(list[i].UygulukDegeri - fonksiyon.MinimumDegeri)), list[i].UygulukDegeri);
                uzaklikNesnesi.Add(a);
            }
            for (int i = 0; i < uzaklikNesnesi.Count; i++)
            {
                for (int j = 0; j < uzaklikNesnesi.Count; j++)
                {
                    if (uzaklikNesnesi[i].uzaklik < uzaklikNesnesi[j].uzaklik)
                    {
                        SiralamaUzaklıkHesapla temp = uzaklikNesnesi[i];
                        uzaklikNesnesi[i] = uzaklikNesnesi[j];
                        uzaklikNesnesi[j] = temp;
                    }
                }
            }
            for (int i = 0; i < list.Count; i++)
            {
                for (int j = i; j < list.Count; j++)
                {
                    if (uzaklikNesnesi[i].uygunluk == list[j].UygulukDegeri)
                    {
                        Kromozom temp = list[j];
                        list[j] = list[i];
                        list[i] = temp;
                    }
                }
            }
        }
        private void BirbirineKopyala(int i, Kromozom k1, Kromozom k2, int rastgelesayi)
        {
            Kromozom kromozom = new Kromozom();

            for (int j = 0; j < k1.genler.Count; j++)
            {
                kontrolEt(i, j, k1, k2, rastgelesayi, kromozom);
            }

            adaylar.Add(kromozom);
        }
        public List <Kromozom> Caprazla(Kromozom k1, Kromozom k2)
        {
            adaylar.Clear();
            int rastgelesayi = rnd.Next(0, k1.genler.Count);

            for (int i = 0; i < 2; i++)
            {
                BirbirineKopyala(i, k1, k2, rastgelesayi);
            }

            return(adaylar);
        }
Example #5
0
        public void iterasyon()
        {
            random_secimler();

            populasyon_sirala(populasyon.KromozomList);
            iterasyonSayısı++;



            bireySec      = BireySecimi.birey_secimi_yontem_sec(bireySecimi);
            caprazlamaSec = Caprazlama.caprazlama_secimi_yontem_sec(caprazlamaCesiti);

            listeKopyala();
            birey1 = bireySec.birey_sec(yedekPopulasyon);
            yedekPopulasyon.Remove(yedekPopulasyon[Form1.index]);
            birey2 = bireySec.birey_sec(yedekPopulasyon);

            caprazlamakromozomList = caprazlamaSec.caprazlama_yap(birey1, birey2, caprazlamaOrani);

            mutasyonOrani *= 100;

            int a = rnd.Next(0, 101);

            if (a >= 0 && a < mutasyonOrani)
            {
                mutasyon = Mutasyon.mutasyon_yontem_sec(mutasyonSecimi);
                caprazlamakromozomList = mutasyon.mutasyon_yap(caprazlamakromozomList, mutasyonKatsayisi, fonksiyon.Altsinir, fonksiyon.Ustsinir);
                mutasyonsayisi++;
            }

            foreach (var item in caprazlamakromozomList)
            {
                item.UygulukDegeri = fonksiyon.hesapla(item.GenListesi);
            }

            populasyon_sirala(caprazlamakromozomList);
            secilenCocukKromozom = caprazlamakromozomList[0];


            populasyon_sirala(populasyon.KromozomList);
            populasyon.KromozomList.Remove(populasyon.KromozomList[populasyon.KromozomList.Count - 1]);



            populasyon.kromozomEkle(secilenCocukKromozom);
            populasyon_sirala(populasyon.KromozomList);


            enIyiUygunluklar.Add(populasyon.KromozomList[0].UygulukDegeri);
        }
Example #6
0
        public Kromozom kromozom_sec(String method, List <Kromozom> kromozomlar)
        {
            Kromozom kromozom = null;

            switch (method)
            {
            case "Random":
                kromozom = Random(kromozomlar);
                break;

            case "Turnuva":
                kromozom = Turnuva(kromozomlar);
                break;
            }
            return(kromozom);
        }
Example #7
0
        private void CreatePopulation()
        {
            int sayac = 0;

            while (sayac < populationSizeBox.Value)
            {
                double[] dizi = new double[30];
                for (int j = 0; j < dizi.Length; j++)
                {
                    dizi[j] = RandomUret();
                }
                Kromozom birey = new Kromozom(dizi);
                populationList.Add(birey);
                sayac++;
            }
        }
        public int CompareTo(object obj)
        {
            Kromozom kr = (Kromozom)obj;

            if (this.fitness < kr.fitness)
            {
                return(1);
            }
            else if (this.fitness == kr.fitness)
            {
                return(0);
            }
            else
            {
                return(-1);
            }
        }
Example #9
0
        private void CrossOver()
        {
            temporaryList.AddRange(populationList); //liste2 for crossover
            populationList.Clear();
            populationList.AddRange(EliteList);

            while (temporaryList.Count != 0)
            {
                Kromozom parent1 = temporaryList[carkifelek(temporaryList)];
                temporaryList.Remove(parent1);
                Kromozom parent2 = temporaryList[carkifelek(temporaryList)];
                temporaryList.Remove(parent2);

                if (rnd.NextDouble() < Convert.ToDouble(crossOverBox.Value))
                {
                    double[] childGen  = new double[30];
                    double[] childGen2 = new double[30];
                    for (int i = 0; i < 30; i++)
                    {
                        if (i < 15)
                        {
                            childGen[i]  = parent1.genList[i];
                            childGen2[i] = parent2.genList[i];
                        }
                        else
                        {
                            childGen[i]  = parent2.genList[i];
                            childGen2[i] = parent1.genList[i];
                        }
                        childGen[i]  = Mutation(childGen[i]);
                        childGen2[i] = Mutation(childGen2[i]);
                    }

                    Kromozom child  = new Kromozom(childGen);
                    Kromozom child2 = new Kromozom(childGen2);
                    populationList.Add(child);
                    populationList.Add(child2);
                }
                else
                {
                    populationList.Add(parent1);
                    populationList.Add(parent2);
                }
            }
        }
Example #10
0
        public Kromozom TeknoktaMutasyonla(Kromozom kromozom, double x_min, double xmax)
        {
            //Tek nokta mutasyonlayıcı
            int i = new Random().Next(0, 30);

            kromozom.genler[i].deger = kromozom.genler[i].deger - 1;
            if (kromozom.genler[i].deger > xmax)
            {
                kromozom.genler[i].deger = xmax;
            }
            if (kromozom.genler[i].deger < x_min)
            {
                kromozom.genler[i].deger = x_min;
            }


            return(kromozom);
        }
Example #11
0
        public void ilk_populasyon_olustur()
        {
            fonksiyon = Fonksiyonlar.fonksiyon_olustur(fonksiyonSecimi);

            for (int i = 0; i < populasyonBuyuklugu; i++)
            {
                kromozom = new Kromozom();
                for (int j = 0; j < fonksiyon.GenSayisi; j++)
                {
                    kromozom.genEkle(new Gen((rnd.NextDouble() * (fonksiyon.Ustsinir - fonksiyon.Altsinir) + fonksiyon.Altsinir)));
                }
                kromozom.UygulukDegeri = fonksiyon.hesapla(kromozom.GenListesi);
                populasyon.kromozomEkle(kromozom);
            }
            populasyon_sirala(populasyon.KromozomList);
            sonlanma_durumu();
            bireyListele(dgwiterasyon);
            enIyiUygunluklar.Add(populasyon.KromozomList[0].UygulukDegeri);
        }
Example #12
0
        //Cift  nokta mutasyonlayıcı
        public Kromozom IkıNoktaMutasyonla(Kromozom kromozom, double x_min, double xmax)
        {
            for (int x = 0; x < 2; x++)
            {
                int i = new Random().Next(0, 30);

                kromozom.genler[i].deger = kromozom.genler[i].deger - 2;
                if (kromozom.genler[i].deger > xmax)
                {
                    kromozom.genler[i].deger = xmax;
                }
                if (kromozom.genler[i].deger < x_min)
                {
                    kromozom.genler[i].deger = x_min;
                }
            }


            return(kromozom);
        }
        public override List <Kromozom> caprazlama_yap(Kromozom birey1, Kromozom birey2, double caprazlamaOrani)
        {
            cocukBireyler.Clear();
            int rastgelesayi = rnd.Next(0, birey1.GenListesi.Count);

            for (int i = 0; i < 2; i++)
            {
                Kromozom kromozom = new Kromozom();
                for (int j = 0; j < birey1.GenListesi.Count; j++)
                {
                    if (i == 0)
                    {
                        if (rastgelesayi == j)
                        {
                            kromozom.genEkle(birey2.GenListesi[rastgelesayi]);
                        }
                        else
                        {
                            kromozom.genEkle(birey1.GenListesi[j]);
                        }
                    }
                    else
                    {
                        if (rastgelesayi == j)
                        {
                            kromozom.genEkle(birey1.GenListesi[rastgelesayi]);
                        }
                        else
                        {
                            kromozom.genEkle(birey2.GenListesi[j]);
                        }
                    }
                }

                cocukBireyler.Add(kromozom);
            }

            return(cocukBireyler);
        }
Example #14
0
 public void kromozomEkle(Kromozom kromozom)
 {
     KromozomList.Add(kromozom);
 }
Example #15
0
 abstract public List <Kromozom> caprazlama_yap(Kromozom birey1, Kromozom birey2, double caprazlamaOrani);