Menetapkan Jadwal Awal Initial state.

5. Dosen luar mendapatkan prioritas dibandingkan dengan dosen tetap dalam waktu dan hari mengajar. Jadi dosen luar bisa menentukan hari dan jam mengajar. 6. Setiap dosen tidak boleh mengajar melebihi 20 sks. B. Batasan yang sebaiknya tidak dilanggar, tapi jika terlanggar masih dianggap valid Soft Contraints. 1. Dalam 1 hari, rombongan belajar tidak boleh dijadwalkan lebih dari 3 untuk menghindari mahasiswa kuliah 4 pertemuan dalam 1 hari.

3.2 Pemodelan Simulated Annealing untuk Penjadwalan Kelas Matakuliah.

Dalam algoritma SA ada beberapa komponen penting yang harus diperhatikan untuk proses pembuatan jadwal kelas matakuliah.

3.2.1. Menetapkan Jadwal Awal Initial state.

Dalam menetapkan jadwal awal akan digunakan pemodelan vector yaitu Y adalah “timeslot” dan X adalah “Ruang”, dan koordinat yang dihasilkan X dan Y adalah kelas matakuliah. Berikut ini pemodelannya : A. Model Data Di PGSD terdapat 5 hari perkuliahan senin-jumat, waktu perkuliahan dibagi 4 sesi dalam 1 hari, dan terdapat 13 ruang kelas teori. Maka, dapat langsung diambil kesimpulan berapa jumlah kelas matakuliah yang dapat ditangani dengan data tersebut, yaitu 5 hari 4 waktu 13 ruang = 260 kelas matakuliah. Jika melebihi 260, maka ada kelas matakuliah yang tidak terjadwal. 1. Data Hari dan Waktu dapat dilihat dilampiran pada table 5.1 halaman 193. 2. Data TimeSlot dapat dilihat dilampiran pada table 5.2 halaman 194. 3. Data Ruang dapat dilihat dilampiran pada table 5.3 halaman 194. 4. Data Dosen dapat dilihat dilampiran pada table 5.4 halaman 195. 5. Data Matakuliah dapat dilihat dilampiran pada table 5.5 halaman 196. 6. Data KelasMatakuliah dapat dilihat dilampiran pada table 5.6 halaman 197. Berikut ini pemodelan struktur data vector untuk membuat jadwal awal, Y adalah kode timeslot dan X adalah kode ruang. Pada titikkoordinat pertemuan antara X dan Y akan ditandaidiisikan dengan satu kode kelas matakuliah yang diambil secara random. Berikut ini pemodelan X dan Y: Y adalah Kode TimeSlot, X adalah kode Ruang. Gambar 3. 1 Pemodelan Vektor untuk membuat jadwal awal Keterangan :  Pada titikkoordinat pertemuan akan di isikan kode Kelas Matakuliah yang akan diambil secara acak. Setiap titikkoordinat pertemuan X dan Y akan berisi kode kelas matakuliah yang akan diambil secara acak. Berikut ini table penjelasannya : Hasil Koordinat = {11,ts1,kodeKM, 11,ts1,kodeKM,…,Xav,ts20,KodeKM} Koordinat Tabel X Y Kode KM 11 ts1 12 ts1 13 ts1 21 ts1 22 ts1 23 ts1 24 ts1 L.Sbk ts1 L.Lis ts1 300 ts1 401 ts1 … … … Xav ts20 Tabel 3. 1 Penjelasan model koordinat yang akan terbentuk. Keterangan :  Kode KM adalah kode kelas matakuliah, Kode KM akan di acak untuk menempati setiap koordinattitik pertemuan. Setelah didapatkan kode kelas matakuliah, maka akan diambil dari setiap titik koordinat yang dihasilkan X dan Y. Maka akan dihasilkan jadwal awal terdiri dari satu “time slot” , satu “ruang” dan satu “kelas matakuliah”. Kumpulan jadwal awal akan disimpan kedalam larik arraylist dengan setiap hasil koordinat akan diberi satu kode jadwal yang unik. Berikut ini struktur kumpulan jadwal awal yang tersimpan : Jadi, Jadwal Awal ={ S1,Ts1,11,kodeKM , S2,Ts1,12, kodeKM ,…, Sn, Ts20,Xav, kodeKM }. Jadwal Awal Kode Jadwal Kode TimeSlot Kode Ruang Kode KM S1 Ts1 11 S2 Ts1 12 … … … … Sn Ts20 Xav Tabel 3. 2 Tabel Jadwal Awal. Sebelum menetapkan Algoritma jadwal awal, harus terlebih dahulu buat atribut untuk menampung JadwalAwal, Jadwal_sekarang, Jadwal_baru, jadwal_yg_terbaik, fungsi biaya jadwal awal, fungsi biaya Jadwal_sekarang, fungsi biaya Jadwal_baru, dan Permintaan kedalam larik seperti berikut. Keterangan : 1. jadwal_Awal, untuk menyimpan hasil dari random awal initial state tanpa terjadi duplikat kelas matakuliah dalam random. 2. Jadwal_sekarang dan jadwal_baru untuk menyimpan hasil sementara untuk proses pengoptimalan dari annealing schedule. 3. Jadwal_terbaik, untuk menyimpan hasil solusistate terbaik. private static ListJadwal jadwal_awal = new ArrayList; private static List Jadwal jadwal_sekarang = new ArrayList; private static List Jadwal jadwal_baru = new ArrayList; private static List Jadwal jadwal_terbaik = new ArrayList; private static ListPelanggaran fungsiBiaya_jadwal_Awal = new ArrayList; private static ListPelanggaran fungsiBiaya_jadwal_sekarang = new ArrayList; private static ListPelanggaran fungsiBiaya_jadwal_baru = new ArrayList; private static ListPelanggaran fungsiBiaya_jadwal_terbaik = new ArrayList; private static ListJadwal permintaan = new ArrayList; 4. fungsiBiaya_jadwal_Awal, fungsiBiaya_jadwal_skrg, fungsiBiaya_jadwal baru, fungsiBiaya_terbaik, untuk menyimpan dan menghitung pelanggaran jadwal. 5. Permintaan, yaitu untuk menyimpan jadwal permintaan. Berikut ini adalah Algoritma Metod menetapkan jadwal awal secara random tanpa duplikat kelas matakuliah, “TimeSlot” terhadap “Ruang” untuk mendapatkan “Kelas Matakuliah”.

1. Algoritma Menetapkan Jadwal Awal Algoritma 3.1