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]); } }
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]; } } } }
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; } }