3. UpdateKelasMatakuliahsolusi1,solusi2, metod yang berfungsi untuk
menukar kelas matakuliah melanggar dengan kelas matakuliah baru hasil random dari tetangganya.
4. BantuSimpanFungBiaya_JadwalSkrg, metod yang berfungsi untuk
menyimpan semua data pelanggaranfungsi biaya dari jadwal_sekarang yang akan dicari Jadwal barunya. Pada metod ini kode jadwal melanggar yang
sama cukup sekali diatasi.
Sebelum membuat metod pencarian jadwal baru, ada beberapa metod yang harus dibuat terlebih dahulu yaitu :
1. Random Timeslot dan ruang yang tidak digunakan dan harinya berbeda dari
yang melanggar Algoritma 3.6.
2. Random Kode kelas matakuliah yang harinya berbeda dari yang melanggar
Algoritma 3.7.
1. Mulai. 2. Buat metod dengan nama
tampung_TS_Ruang_yg_tidak_digunakanDanBerbedaHari dengan
parameter string cari, tipe pengembalian ListString. 3. Buat variable Objek baru untuk menyimpan kodetimeslot, kodeRuang,
kodeWaktu, kodeHari didalam list String java. ListString kodeTsRg = new ArrayListString;
4. Untuk i=0 sampai i sebanyak timeslot, lakukan langkah berikut: 1. Untuk j=0 sampai j sebanyak ruang, lakukan langkah berikut ini.
a. Simpan kodetimeslot, koderuang, kodewaktu, kodehari dalam “kodeTsRg”:
5. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut.
1. Untuk j=0 sampai j sebanyak “kodeTsRg”, lakukan langkah berikut.
a. Cek apakah kodetimeslot dan koderuang sudah digunakan, Ya, hapus dari “kodeTsRg”.
6. Untuk i=0 sampai i sebanyak kodeTsRg, lakukan langkah berikut: a. Cek jika hari sama dari parameter cari.
Ya, Hapus kodetimeslot dan koderuang dari “kodeTsRg”:
7. Kembalikan kodeTSRg. 8. Selesai.
3. Simpan Fungbiaya jadwal_sekarang tanpa duplikat jadwal.Algoritma 3.8.
1. Mulai. 2. Buat metod dengan nama
getRandomKelasMatakuliahSolusiBaruOptimal dengan parameter
string cari, tipe pengembalian static Jadwal. 3. Buat variable Objek baru menyimpan data solusi didalam List Jadwal java.
ListJadwal solusi = new ArrayList; 4. Untuk i=0 sampai i sebanyak
“jadwal_baru”, lakukan langkah berikut: - Jika berbeda hari dengan yang dicari.
Ya, Simpan data solusi tersebut kedalam “Jadwal”. 5. Untuk i=0 sampai i sebanyak
“permintaan”, lakukan langkah berikut: 1. Untuk j=0 sampai
j sebanyak “Jadwal”, lakukan langkah berikut: -
Jika ada KelasMatakuliah yang terdapat di “Jadwal” sudah ada di permintaan.
Ya, hapus dari “Jadwal”. 6. Random untuk mendapatkan kodeKelasMatakuliah yang baru dari Jadwal.
Random random = new Random; int next_num = random.nextIntSolusi.size;
sett atribut jadwal sesuai indek random “next_num”. Jadwal solusi=new Jadwal .
7. Kembalikan solusi.
3.2.4. Perhitungan Fungsi biaya Jumlah Pelanggaran dari Hard Constraints
dan Soft Constraints.
Sebuah jadwal dikatakan belum optimal jika masih terdapat pelanggaran. Pelanggaran didapati dari bobot constraints yang ditetapkan
Hard Constraints maupun Soft Constraints. Setiap terjadi pelanggaran 1. Mulai.
2. Buat metod dengan nama BantuSimpanFungBiaya_currentState, tipe