commit to user BAB III
METODE PENELITIAN
Penelitian ini sebelumnya diawali oleh pengumpulan litelatur dan pengumpulan data. Pengumpulan literatur merupakan pengumpulan bahan-bahan seperti jurnal, buku, papper, penelitian, makalah dan informasi lainnya yang membahas tentang penjadwalan mata kuliah di universitas, algoritma genetika dan algoritma Palgunadi. Pengumpulan data dilakukan dengan mengumpukan data-data yang dibutuhkan untuk melakukan penelitian dan akan berperan sebagai data yang nantinya diolah untuk diimplementasi. Data-data yang dibutuhkan antara lain data mata kuliah, dosen, kelas, mahasiswa, ruangan, jadwal, waktu kuliah, dan batasan- batasan penjadwalan. Setelah semua bahan litelatur dan data telah didapatkan penelitian ini dimulai dengan melakukan beberapa tahap yaitu:
3.1 Pemodelan Data
Memodelkan data yang telah didapatkan menjadi model data yang terstruktur agar lebih mudah dipahami serta mengurangi data-data yang tidak perlu untuk digunakan. Pada tahap ini akan dibuat variabel-variabel dan skema objek penjadwalan secara umum. Variable-variabel penjadwalan ini secara garis besar dapat didefinisikan sebagai berikut:
Dosen, merupakan set dari dosen D = {d1, d2, …, dn}
Kelas, merupakan set dari kelas K = {k1, k2, …, kn}. Kelas terdiri dari sejumlah mahasiswa. Telah ditentukan bahwa mahasiswa telah dikelompokan dalam kelas, sehingga kelas bersifat disjoint berarti tidak ada mahasiswa yang sama dalam beberapa kelas.
Mata kuliah, merupakan set dari mata kuliah M = {m1, m2, m3, …, mn}.
Timeslots, merupakan set dari timeslots T = {t1, t2, …, tn}. Timeslots merupakan interval waktu dimana perkuliahan akan dilakukan.
Timeslots memiliki waktu mulai dan waktu akhir. Elemen dari set timeslots memiliki bentuk <hari><jam> seperti senin1, senin2, …, jumat10.
commit to user
Ruangan, merupakan set dari ruangan R = {r1, r2, …, rn}.
Kegiatan Perkuliahan, merupakan set dari kegiatan perkuliahan (event) E = {e1, e2, …, en}. Kegiatan perkuliahan memiliki atribut:
Mata kuliah yang diajarkan, M_E = {m}
Dosen yang mengajar di mata kuliah, set dari D_E = {d1, d2, …, dn}
Kelas yang diajar di mata kuliah, set dari K_E = {k1, k2, …, kn}
Total durasi timeslot dala sebuah perkuliahan, Dur_E = {dur }
Ruangan – Timeslots, set dari ruangan-timeslots dengan alasan untuk mempersimpel proses pencarian. RxT = {rxt1, rxt2, …, rxtn}, memiliki atribut
Ruangan, R_RxT = {r}
Waktu timeslot, T_RxT = {t}
Jadwal, set dari jadwal, Merupakan gabungan dari ruangan – timeslot dengan event. J = {r1t1e1, r1t2e1, r2t1e2, …, rntnen}
Dari variabel tersebut dapat dipetakan kedalam skema sederhana seperti Gambar 3.1.
Event
Kelas Ruangan
Timeslot
Dosen Ruangan – Timeslots
Matakuliah
Durasi
Jadwal
Gambar 3.1. Skema penjadwalan 3.2 Implementasi
3.2.1 Perancangan Algoritma Palgunadi
Pada dasarnya algoritma Palgunadi dirancang dalam masalah penjadwalan klasik dengan hanya menggunakan batasan kaku. Karena pada kasus ini terdapat dua jenis batasan yaitu batasan kaku dan batasan lunak maka perlu dilakukan penyesuaian algoritma Palgunadi agar dapat bekerja pada dua jenis batasan tersebut. Penyesuaian ini membuat proses algoritma Palgunadi dibagi menjadi dua
commit to user
tahap. Tahap pertama adalah pengalokasian jadwal dengan pengecekan batasan kaku dan batasan lunak. Tahap kedua dilakukan jika matriks ANS memiliki nilai (terdapat mata kuliah yang tidak terjadwal), maka mata kuliah pada matriks ANS akan dijadwalkan dengan pengecekan batasan kaku saja. Jika matriks ANS masih memiliki nilai maka penjadwalan dinyatakan gagal. Diagram alur untuk algoritma Palgunadi terdapat pada gambar 3.2.
commit to user
INPUT DATA
JIKA EVENT TEORI?
PILIH RxT TEORI SECARA URUT
PILIH RxT PRAKTEK SECARA URUT INISIALISASI
MATRIKS
UNTUK SETIAP EVENT
CHECK PELANGGARAN
CONSTRAINTS
MELANGGAR URUTKAN EVENT
BERDASARKAN PRIORITAS MAKUL WAJIB - PILIHAN
URUTKAN RxT BERDASARKAN
WAKTU
IYA TIDAK
MASUKAN KE JADWAL
TIDAK
MASIH ADA EVENT BLM TERJADWAL?
BUAT JADWAL TIDAK
IYA
MASIH ADA SISA
RtX IYA
IYA
IYA
EVENT DIJADWALKAN
DENGAN PENGECEKAN HARD
CONSTRAINT SAJA TIDAK
TERJADWAL?
IYA
GAGAL TIDAK
END START
Gambar 3.2. Diagram alur Algoritma Palgunadi
commit to user 3.2.2 Perancangan Algoritma Genetika Biasa
Tahap-tahap yang dilakukan adalah:
3.2.2.1 Pengkodeam kromosom
Mengacu kepada skema yang telah dibuat sebelumnya, pada algoritma genetika ini kromosom direpresentasikan dengan menggunakan enkoding nilai.
Terdapat sebuah vector berupa list dari setiap Event yang memiliki nilai id posisi Ruangan-Tiemeslots jam pertamanya. Selain itu terdapat sebuah vector berupa list dari setiap Ruangan-Timeslots yang memiliki nilai berupa list id Event yang dialokasikan di Ruangan-Timeslots tersebut. Representasi kromosom dapat dilihat pada Gambar 3.4 dan contoh bentuk kromosom yang telah diprint sebagai array dapat dilihat pada Gambar 3.5.
Event-1 Event-2 Event-3 --- Event-13 --- Event-n
R1T1
R1T2
R16T5
R2T8
RnTn
R1T1 R1T2 R1T3 ---- R2T7 R2T8 R2T9 ---- R16T5 R16T6 --- RnTn
e1
e2
e13 e13
e1
e1
e2
e3
Gambar 3.4. Representasi Kromosom
commit to user
Gambar 3.5 Contoh Kromosom 3.2.2.2 Inisialisasi Kromosom
Inisialisasi kromosom pada tahap ini dilakukan dengan menggenerate nilai RxT random untuk setiap event pada kromosom, lalu membentuk struktur tambahan setiap RxT diberi nilai event.
3.2.2.3 Penentuan fungsi evaluasi
Setelah sejumlah populasi telah dibentuk, setiap populasi akan dievaluasi untuk mengetahui nilai fitnessnya. Evaluasi ditentukan berdasarkan batasan kaku(hard constraints) dan batasan lunak (soft constraints) yang telah dijelaskan sebelumnya. Setiap batasan kaku memiliki nilai poin 2 dan setiap batasan lunak memiliki nilai poin 1, sehingga untuk evaluasi fitnes dapat dirumuskan sebagai:
𝑓𝑖𝑡𝑛𝑒𝑠𝑠 = ∑ 𝐵𝑘 + ∑ 𝐵𝑙 𝐵𝑘𝑚𝑎𝑥 + 𝐵𝑙𝑚𝑎𝑥
Keterangan:
Bk = Nilai batasan kaku Bl = Nilai batasan lunak
Bkmax = Nilai batasan kaku maksimal Blmax = Nilai batasan lunak maksimal 3.2.2.4 Seleksi
Seleksi dilakukan untuk memilih beberapa pasang kromosom yang dijadikan induk atau sebagai orang tua untuk sejumlah n anak berikutnya yang akan menggantikan individu dalam populasi pada setiap generasi. Pemilihan pasangan kromosom dilakukan dengan menggunakan seleksi tournament. Pada
commit to user
metode seleksi dengan turnamen ini akan ditetapkan dua buah individu yang dipilh secara acak (random) dari suatu populasi. Individu yang terbaik dalam kelompok ini akan diseleksi sebagai induk pertama, demikian juga untuk pemilihan induk kedua.
3.2.2.5 Crossover
Setelah dua kromosom induk selesai dipilih, langkah berikutnya adalah melakukan rekombinasi yaitu penyilangan (crossover) terhadap pasangan kromosom. Penyilangan akan menukar informasi genetik antara dua kromosom induk yang terpilih dari proses seleksi untuk membentuk sebuah kromosom anak.
Crossover dilakukan dengan menggunakan crossover satu titik. Dimana dicari titik potong sebuah kromosom, potongan kromosom pertama berasal dari induk 1, dan sisa kromosom diambil dari induk 2.
3.2.2.6 Mutasi
Anak hasil crossover sebelum dilepaskan ke populasi memiliki kemungkinan untuk terjadinya mutasi. Pada proses mutasi ini dilakukan perubahan nilai pada beberapa gen untuk menggenerate nilai RxT barunya.
3.2.2.7 Pergantian kromosom
Pada tahap ini kromosom anak hasil crossover dan mutasi akan menggantikan posisi kromosom yang lama untuk membentuk sebuah populasi baru dengan ukuran yang sama. Pada prosedur pergantian ini diterapkan konsep elitism yang memastikan kromosom dengan fitness tertinggi tidak tersingkirkan dalam populasi.
Diagram alur algoritma genetika ini dapat dilihat pada Gambar 3.3.
commit to user
DATA INPUT
PEMBUATAN KROMOSOM INISIALISASI
EVALUASI
SELEKSI
FITNESS == 0 ?
MUTASI
REPLACE DENGAN
ELITISM FITNESS == 0 ?
EVALUASI
AMBIL KROMOSOM DENGAN BEST
FITNESS
MEMBUAT JADWAL TIDAK
IYA
TIDAK
IYA CROSSOVER
START
END
Gambar 3.3. Diagram alur algoritma genetika
3.2.3 Perancangan Algoritma Kombinasi
Pada kombinasi ini konsep yang ingin diterapkan adalah pengeleminasian batasan kaku pada setiap proses heuristik algoritma genetika dengan menggunakan algoritma palgunadi. Perbedaan kombinasi ini dengan algoritma genetika biasa terletak pada proses inisialisasi, crossover, dan mutasi. Proses ini memastikan
commit to user
kromosom yang dibentuk pada setiap proses inisialisasi, crossover, mutasi tidak melanggar batasan kaku, sehingga yang dilakukan oleh algoritma genetika adalah meminimalkan pelanggaran batasan lunaknya.
3.2.3.1 Inisialisasi Kromosom
Inisialisasi kromosom pada tahap ini dilakukan dengan menggunakan prinsip algoritma Palgunadi namun constraint yang dicek hanya berupa batasan kaku dan RxT dipilih secara random. Untuk setiap Event diberikan sebuah nilai yang berupa kode RxT, lalu pada struktur tambahan setiap RxT sejumlah n durasi dari Event ditempatkan Eventnya. Proses inisialisasi dijelaskan pada diagram alur Gambar 3.4.
commit to user
INPUT DATA
JIKA EVENT TEORI?
PILIH RxT TEORI PILIH RxT PRAKTEK
INISIALISASI MATRIKS
UNTUK SETIAP EVENT
CHECK PELANGGARAN HARD CONSTRAINTS
MELANGGAR URUTKAN EVENT
BERDASARKAN PRIORITAS MAKUL WAJIB - PILIHAN
ACAK RxT
IYA TIDAK
MASUKAN KE KROMOSOM
TIDAK
MASIH ADA EVENT BLM TERJADWAL?
BUAT KROMOSOM TIDAK
IYA
MASIH ADA SISA
RtX IYA
IYA
IYA
TIDAK
GAGAL, BUAT ULANG KROMOSOM
END START
Gambar 3.4. Diagram Alur Proses Inisialisasi Kromosom
commit to user 3.2.3.2 Crossover
Crossover dilakukan dengan menggunakan crossover satu titik. Dimana dicari titik potong sebuah kromosom, potongan kromosom pertama berasal dari induk 1, dan sisa kromosom diambil dari induk 2 dengan dilakukan sebuah fungsi untuk mengecek pelanggaran batasan kaku. Jika terdapat pelanggaran batasan kaku, maka dilakukan perbaikan bertahap. Perbaikan ini terdiri dari dua tahap yaitu repair 1(R1), dan repair 2(R2). R1 mengganti nilai gen yang melanggar batasan kaku dengan nilai baru yang tidak melanggar. R2 menukar nilai gen yang melanggar batasan kaku dengan nilai pada gen lain sehingga tidak melanggar.
Jika sebuah kromosom induk 2 melanggar hard constraint maka tahap selanjutnya yang dilakukan adalah R1 jika R1 tidak dapat memperbaiki kromosom, maka dilakukan tahap R2. Jika kedua tahap R1 dan R2 tidak bisa memperbaiki kromosom, maka kromosom anak dibuang. Proses crossover dijelaskan pada diagram alur Gambar 3.5.
commit to user
PILIH TITIK POTONG KROMOSOM
KOPI GEN DARI ORTU 1
AMBIL GEN BERIKUTNYA DARI
ORTU 2 MELANGGAR HC
KOPI GEN DARI ORTU 2 KE ANAK GENERATE GEN
URUT DARI RtX
MELANGGAR HC
MASIH ADA PILIHAN RxT
PILIH RANDOM GEN DARI ANAK
SWAP RxT nya
DENGAN GEN BARU MELANGGAR HC
PROSES CROSSOVER DIBATALKAN LAKUKAN SWAP
GEN
ANAK MASIH KEKURANGAN GEN?
MASUKAN GEN KE ANAK IYA
TIDAK
TIDAK
IYA IYA
TIDAK
TIDAK
IYA
TIDAK
PROSSES CROSS OVER SELESAI IYA
START
END
Gambar 3.5 Diagram Alur Proses Crossover Algoritma Kombinasi 3.2.3.3 Mutasi
Anak hasil crossover sebelum dilepaskan ke populasi memiliki kemungkinan untuk terjadinya mutasi. Pada proses mutasi ini pergantian nilai pada setiap gen dilakukan dengan sebuah proses pengecekan pelanggaran batasan kaku jika melanggar maka akan dicari nilai baru yang tidak melanggar hard consrtraint, proses ini dilakukan hingga didapat kromosom yang tidak melanggar batasan kaku. Proses mutasi dijelaskan pada diagram alur Gambar 3.6.
commit to user
JIKA EVENT TEORI?
PILIH RxT TEORI PILIH RxT PRAKTEK
UNTUK SETIAP EVENT
CHECK PELANGGARAN HARD CONSTRAINTS
MELANGGAR AMBIL SECARA RANDOM
TITIK MUTASI
ACAK RxT
IYA TIDAK
MASUKAN KE GEN-X TIDAK
BUAT KROMOSOM MASIH ADA SISA
RtX IYA
IYA
IYA
TIDAK
GAGAL, CARI TITIK LAIN
END START
GEN PADA TITIK MUTASI DI HAPUS, GEN-X
Gambar 3.6 Diagram Alur Proses Mutasi Algoritma Kombinasi
commit to user 3.3 Pengujian
Pada tahap ini dilakukan pengujian terhadap kombinasi algoritma genetika dengan algoritma Palgunadi. Sebagai perbandingan dari algoritma yang diusulkan tersebut, dilakukan pula pengujian terhadap algoritma Palgunadi dan algoritma genetika biasa. Pengujian dilakukan dengan menggunakan data jadwal jurusan informatika dan fisika semester genap periode februari-juli 2013 Universitas Sebelas Maret dengan total 9 kelas mahasiswa, 59 mata kuliah, 107 perkuliahan, 17 ruangan, 5 hari kuliah, dan 10 jam kuliah. Inputan berupa list event (Lapiran B), list ruangan (Lampiran C), dengan 5 hari kuliah dan 10 jam kuliah.
Algoritma yang diuji adalah algoritma Palgunadi, algoritma genetika dan kombinasi algoritma genetika dengan algoritma Palgunadi. Parameter yang diuji adalah:
Total waktu proses
Jumlah pelanggaran pada batasan kaku
Jumlah pelanggaran pada batasan lunak
Khusus untuk algoritma genetika dan hibdridasi algoritma genetika terdapat beberapa setting pengujian yaitu:
Populasi maksimum: 10 populasi dan 20 populasi
Kromosom yang diganti pada setiap generasi: 5(10 populasi) dan10(20 populasi)
Kromosom elitism: 5
Kemungkinan terjadi crossover: 0,7
Kemungkinan terjadi mutasi: 0,3
Setting kemungkinan terjadi crossover 0,7 dan kemungkinan terjadi mutasi 0,3 diambil dari hasil percobaan kombinasi setting crossover (70, 80, 90) dengan kemungkinan mutasi (10, 20, 30) yang memiliki fitness terbaik (Lampiran A).
Pengujian dilakukan dengan menggunakan Laptop ASUS K43U dengan processor AMD E-450 (2 CPUs) ~1.6 GHz, dan RAM tersedia 1.6 GB.