public static void Mutasyon(List <Eleman> canta) { RastgeleSayi sayi = new RastgeleSayi(); int indis = sayi.BetweenInteger(0, canta.Count - 1); canta[indis].AlindiMi = 1 - canta[indis].AlindiMi; }
static void Main(string[] args) { int N = 10; double Pc = 0.75, Pm = 0.1; VeriOkuma veri = new VeriOkuma(); int elemanlarcount = veri.elemanlarListesi().Count; RastgeleSayi sayi = new RastgeleSayi(); Knapsack knapsack = new Knapsack(N); int rastgele; for (int i = 0; i < N; i++) { for (int j = 0; j < elemanlarcount; j++) { int agirlik = knapsack.CantaAgirligi(knapsack.Cantalar[i]); if (agirlik <= veri.Kapasite) { rastgele = sayi.BetweenInteger(0, elemanlarcount - 1); int esyaIndisi = knapsack.RastgeleSecim(knapsack.Cantalar[i]); knapsack.CantayaElemanEkle(knapsack.Cantalar[i], veri.elemanlarListesi()[esyaIndisi]); } else { break; } } } RuletiCevir(N, veri.Kapasite, FitnesslariHesapla(N, elemanlarcount, knapsack.Cantalar, veri.Kapasite), Pc, Pm, knapsack.Cantalar); Console.ReadKey(); }
public static void Caprazlama(List <List <Eleman> > cantalar, int canta1, int canta2) { RastgeleSayi rastgele = new RastgeleSayi(); List <Eleman> canta = new List <Eleman>(); int rastgeleSayi = rastgele.BetweenInteger(0, cantalar[0].Count - 1); for (int i = 0; i < rastgeleSayi; i++) { canta.Add(cantalar[canta1][i]); } for (int i = rastgeleSayi; i < cantalar[i].Count; i++) { canta.Add(cantalar[canta2][i]); } cantalar[canta1] = canta; }