Metod RandomKelasMataKuliah tanpa terjadi duplikat Algoritma 3.

7. Jadwal solusi=new Jadwal , solusi digunakan untuk mengeset semua atribut Jadwal untuk disimpan kedalam jadwalAwal,jadwalBaru, dan permintaan. 8. BantukodeKM, fungsinya untuk menyimpan satu data kelas matakuliah matakuliah hasil random. 9. ListJadwaljadwal_permintaan=KontrolPermintaan.getKoneksi.getAllPer mintaan, fungsinya mengambil semua jadwal permintaan ke database menggunakan perintah sql kemudian dimasukan kedalam list. 10. ListTimeSlottimeslot=KontrolTimeSlot.getKoneksi.getAllTimeSlot, fungsinya mengambil semua timeslot ke database menggunakan perintah sql kemudian dimasukan kedalam list. 11. ListRuangruang=KontrolRuang.getKoneksi.getAllRuangTeori, fungsinya mengambil semua ruang ke database menggunakan perintah sql kemudian dimasukan kedalam list. Sebelum membuat random jadwal awal, terlebih dahulu membuat metod random kelas matakuliah tanpa duplikat serta pengecekan dengan jadwal permintaan. 2. Metod RandomKelasMataKuliah tanpa terjadi duplikat Algoritma 3.2. 1. Mulai. 2. Buat metod dengan nama RandomKelasMatakuliah, type pengembalian static ListKelasMatakuliah. 3. Buat variable Objek baru bantu untuk menyimpan kodekelasMatakuliah didalam list object java. ListObject simpanKodeKM = new ArrayListObject; 4. Buat variable Objek baru untuk menyimpan sementara kodekelasMatakuliah didalam list object java untuk menghindari terjadi duplikat. ListObject randomkm = new ArrayListObject; 5. Buat variable Objek baru untuk menyimpan KelasMatakuliah didalam list. ListKelasMatakuliah kelasMatKul = KontrolKelasMataKuliah.getKoneksi.getAllKelasMataKuliah_Teori; Buat Object baru random. Random random = new Random; 6. Untuk i=0 sampai i sebanyak kelasMatKul, - Buat objek baru dari kelasmatakuliah, “KelasMatakuliah km = new KelasMatakuliah;” - Set abtribut matakuliah dan simpan kedalam “randomkm”. randomkm.addkm; 7. Untuk i=randomkm.size-1, sampai 0, lakukan langkah berikut: Dalam SA jika jadwal awal sudah merupakan jadwal yang optimal tidak ada terjadi pelanggaran maka yang digunakan adalah jadwal awal tersebut, tanpa harus melakukan proses pengoptimalan lagi pencarian jadwal baru. Jika tidak 1. Random kelasmatakuliah berdasarkan indexnya. int next_num = random.nextIntrandomkm.size; 2. Ambil kodekelasmatakuliah pada index tersebut. - Buat objek baru dari kelasmatakuliah, KelasMatakuliah km = new KelasMatakuliah; - Set abtribut matakuliah sesuai index hasil random. “km.setKodeKMrandomKm.getnext_num.getKodeKM;” 3. Simpan kedalam “simpanKodeKM”. simpanKodeKM.addkm; 4. Hapus kodekelasmatakuliah tersebut dari “randomkm”. randomKm.removerandomkm.getnext_num; 8. Cek, jika jadwal permintaan tidak kosong maka, lakukan langkah berikut: - Untuk i=0 sampai i sebanyak jadwal_permintaan, lakukan 1. Untuk j=0 sampai j sebanyak simpanKodeKM, lakukan - Cek apakah kodekelasMatakuliah pada “jadwal_permintaan” = kodekelasmatakuliah pada “simpanKodeKM”. - Jika ya, maka dihapus dari “simpanKodeKM”. 9. Kembalikan simpanKodeKM. 10. Selesai. maka buat inisialisasi jadwal_sekarang dari jadwal_awal, jadwal_terbaik dari jadwal_sekarang. Begitu juga simpan fungsi biaya jadwal_sekarang dari fungsi biaya jadwal awal dan fungsiBiaya_terbaik dari jadwal_sekarang. Menghitung fungsiBiaya_jadwal_awal menggunakan Algoritma 3.9 sampai Algoritma 3.13. 1. Buat inisialisasi jadwal_sekarang dari jadwal_awal Algoritma 3.3.

2. Buat inisialisasi JadwalTerbaik dari jadwal_sekarang Algoritma 3.4.