예제 #1
0
        public void uygunlukvefitnesshesabı()
        {
            uygunlukdeger = new double[this.kaynaksayısı];
            fitnessdeger  = new double[this.kaynaksayısı];

            for (int i = 0; i < kaynaksayısı; i++)
            {
                uygunlukdeger[i] = Ackleyfunction.ACKLEYSFUNCTION(kaynak[i, 0], kaynak[i, 1]);
                fitnessdeger[i]  = fitnessHesapla(uygunlukdeger[i]);
            }
        }
예제 #2
0
 public void kasifkaynakara()
 {
     for (int i = 0; i < limitsayacı.Length; i++)
     {
         if (limitsayacı[i] > limit)
         {
             double[] yenikaynak         = kaynakolustur(kaynakboyutu, Ackleyfunction.aldeger, Ackleyfunction.ustdeger);
             double   yenikaynakuygunluk = Ackleyfunction.ACKLEYSFUNCTION(yenikaynak[0], yenikaynak[1]);
             double   yenikaynakFitness  = fitnessHesapla(yenikaynakuygunluk);
             if (yenikaynakFitness > bestfitness)
             {
                 kaynak[i, 0] = yenikaynak[0];
                 kaynak[i, 1] = yenikaynak[1];
             }
         }
     }
 }
예제 #3
0
        void tekilcozumdegerihesapla(int i)
        {
            double[] gecicicozum = new double[kaynakboyutu];
            double   geciciFitness;
            double   geciciUygunluk;

            for (int j = 0; j < kaynakboyutu; j++)
            {
                gecicicozum[j] = (kaynak[i, j] + (2 * rnd.NextDouble() - 1) * (kaynak[i, j] - ((i == kaynaksayısı - 1) ? kaynak[0, j] : kaynak[i + 1, j])));

                if (gecicicozum[j] > Ackleyfunction.ustdeger)
                {
                    gecicicozum[j] = Ackleyfunction.ustdeger;
                }
                else if (gecicicozum[j] < Ackleyfunction.aldeger)
                {
                    gecicicozum[j] = Ackleyfunction.aldeger;
                }

                kaynak[i, j] = gecicicozum[j];
            }



            geciciUygunluk = Ackleyfunction.ACKLEYSFUNCTION(kaynak[i, 0], kaynak[i, 1]);
            geciciFitness  = fitnessHesapla(geciciUygunluk);

            if (geciciFitness < fitnessdeger[i])
            {
                limitsayacı[i] += 1;
            }
            else
            {
                for (int j = 0; i < kaynakboyutu; i++)
                {
                    kaynak[i, j] = gecicicozum[j];
                }

                fitnessdeger[i]  = geciciFitness;
                uygunlukdeger[i] = geciciUygunluk;
                limitsayacı[i]   = 0;
            }
        }