public void setRandomValue() { do { if (domainRuangan.Count > 1) { this.currentRuangan = this.ruanganManagement.getRandomRuangan(); } this.currentMulai = myRandom.GetRandomNumber(this.domainMulai); this.currentHari = myRandom.GetRandomNumber(this.domainHari); } while (!this.isCurrentValid()); }
public Kelas(Kelas kelas) { this.ruanganManagement = kelas.ruanganManagement; this.nama = kelas.nama; this.durasi = kelas.durasi; this.currentRuangan = kelas.currentRuangan; this.currentMulai = kelas.currentMulai; this.currentHari = kelas.currentHari; this.domainRuangan = kelas.domainRuangan; this.domainMulai = kelas.domainMulai; this.domainHari = kelas.domainHari; }
public Ruangan(Ruangan R) { nama = R.nama; jam_buka = R.jam_buka; jam_tutup = R.jam_tutup; hari_buka = new List <int>(); if (hari_buka != null) { for (int i = 0; i < R.hari_buka.Count; i++) { hari_buka.Add(R.hari_buka[i]); } } waktu_available = R.waktu_available; waktu_terpakai = R.waktu_terpakai; }
public void mutation() { int chromosomeLength = P.getIndividu(0).getDNA().getArrayKelas().Count - 1; //Ambil random point int randomPoint = myRandom.GetRandomNumber(0, chromosomeLength); // ambil random Mutation Point int randomMutation = myRandom.GetRandomNumber(0, 2); int temp; switch (randomMutation) { case 0: temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari(); while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari() == temp) { P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue(); } break; case 1: temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai(); while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai() == temp) { P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue(); } break; case 2: Ruangan tempR = new Ruangan(P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan()); while (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan() == tempR) { P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRandomValue(); } break; default: break; } //print hasil mutasi Console.WriteLine("hasil mutasi :"); P.getIndividu(0).print(); Console.WriteLine("--------------"); }
public void crossover() //crossover 2 individu paling atas; { int chromosomeLength = P.getIndividu(0).getDNA().getArrayKelas().Count - 1; //Ambil random point int randomPoint = myRandom.GetRandomNumber(0, chromosomeLength); //2 point crossover di point tersebut. int randomCrossOver = myRandom.GetRandomNumber(0, 2); int temp; switch (randomCrossOver) { case 0: temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari(); if (P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getHari() != P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getHari()) { P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setHari(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getHari()); P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setHari(temp); } break; case 1: temp = P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getMulai(); P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setMulai(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getMulai()); P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setMulai(temp); break; case 2: Ruangan tempR = new Ruangan(P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].getRuangan()); P.getIndividu(0).getDNA().getArrayKelas()[randomPoint].setRuangan(P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].getRuangan()); P.getIndividu(1).getDNA().getArrayKelas()[randomPoint].setRuangan(tempR); break; default: break; } //print konflik hasil crossover Console.WriteLine("Hasil Crossover :"); P.getIndividu(0).print(); P.getIndividu(1).print(); Console.WriteLine("--------------------"); }
/////////// Contoh cara make: // // List<int> hari_k1 = new List<int>(); // hari_k1.Add(1); // hari_k1.Add(2); // hari_k1.Add(3); // hari_k1.Add(4); // hari_k1.Add(5); // List<string> constrain_ruangan= new List<string>(); // constrain_ruangan.Add("7602"); // constrain_ruangan.Add("7610"); // Kelas k1 = new Kelas("IF2110", constrain_ruangan, 7, 12, 4, hari_k1, rm); public Kelas(string nama, List <string> ruangan, int mulai, int selesai, int durasi, List <int> hari, RuanganManagement ruanganManagement) { this.ruanganManagement = ruanganManagement; this.domainRuangan = new List <Ruangan>(); if (ruangan[0].Equals("-")) { this.domainRuangan = ruanganManagement.getAllRuangan(); } else { this.currentRuangan = ruanganManagement.getRuangan(ruangan[0]); foreach (string r in ruangan) { foreach (Ruangan x in ruanganManagement.getAllRuangan()) { if (r.Equals(x.getName())) { this.domainRuangan.Add(x); } } } } this.nama = nama; this.durasi = durasi; this.domainHari = hari; this.domainMulai = new List <int>(); for (int i = mulai; i <= selesai - durasi; i++) { this.domainMulai.Add(i); } this.setRandomValue(); }
public void setRuangan(Ruangan R) { currentRuangan = R; }
public void addRuangan(Ruangan ruangan) { this.ruangans.Add(ruangan); }