x
DAMAI KURNIA ADHI. Aplikasi Penjadwalan Mata Kuliah Menggunakan Algoritma Genetika (Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma). Dibimbing oleh Puspaningtyas Sanjoyo Adi, S.T., M.T.
Penjadwalan matakuliah merupakan pekerjaan rutin dalam kegiatan sistem akademik di Universitas. Dalam pelaksanaanya, seringkali jadwal yang telah dibuat tidak sesuai dengan yang diharapkan. Pada dasarnya dalam menentukan jadwal mata kuliah perlu diatur sedemikian rupa sehingga semua mahasiswa dapat mengikuti mata kuliah yang diambilnya tanpa bertabrakan dengan mata kuliah lain dan sesuai dengan jam dosen tersebut mengajar. Penyusunan Jadwal matakuliah perlu mempertimbangkan aturan – aturan tertentu. Apabila dalam penyusunan jadwal masih menggunakan cara manual, waktu yang dibutuhkan untuk menyelesaikan juga akan lebih banyak.
Penjadwalan matakuliah merupakan kombinasi dari hari, ruang, dan waktu terhadap kuliah dengan mempertimbangkan aturan tertentu dalam program studi. Algoritma Genetika digunakan sebagai pendekatan permasalahan yang ditemukan pada penjadwalan matakuliah. Dalam mencari solusi permasalahan, Algoritma Genetika menerapkan sistem sekelsi alam. Tujuan penelitian ini adalah merancang Algoritma Genetika dalam menyusun jadwal matakuliah dan mengukur tingkat keberhasilan pemetaan jadwal matakuliah menggunakan algoritma genetika.
Tahapan proses dalam Algoritma Genetika terdiri dari populasi awal, evaluasi fitness kromosom (jadwal kuliah), dan operator genetika yaitu crossover dan mutasi. Dari penelitian yang dilakukan, didapatkan hasil bahwa pembuatan jadwal matakuliah menggunakan Algoritma genetika dapat berjalan dengan baik dalam meminimalisir penggunaan ruang. Berkaitan dengan penerapan jumlah kromosom dalam Algoritma Genetika, semakin banyak jumlah kromosom dalam satu populasi maka penyelesaian pembuatan jadwal matakuliah jauh lebih cepat.
xi
ABSTRACT
DAMAI KURNIA ADHI. Application Of Scheduling Courses with Genetic Algorithm (Case Study : Primary School Teacher Education Study Program Sanata Dharma University). Mentored by Puspaningtyas Sanjoyo Adi, S.T., M.T.
Scheduling courses is routine work in the academic activities at the University. In the implementation, often schedules that have been made are not as expected. In determining the schedule of courses should be so arranged that all students can follow the courses he had taken without colliding with other course and in accordance with the teaching lecturer hours. Preparation of scheduling courses need to consider the certain rules. If in the preparation of the schedule is still using the manual method, the time it takes to complete will also be more.
Scheduling course is a combination of day, rooms, and time to lecture by considering certain rules in the study program. Genetic Algorithm is used as an approach to the problems found in the course scheduling. In searching for solutions to problems, Genetic Algorithm applying natural selection system. The purpose of this research is to design Genetic Algorithm to build scheduling courses and measure the success rate of the course schedule mapping using Genetic Algorithms.
Step of the process of Genetic Algorithm consists of initial population, fitness evaluation (class schedule), and genetic operators, are crossover and mutation. From the research conducted, showed that creating scheduling courses using Genetic Algorithm can work well in minimizing the use rooms. Related with the implementation of the number of chromosomes in a Genetic Algorithm, the more the number of chromosomes in the population of the completion of the course scheduling much faster.
i
APLIKASI PENJADWALAN MATA KULIAH MENGGUNAKAN ALGORITMA GENETIKA
(Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma)
SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
HALAMAN JUDUL
Disusun Oleh : Damai Kurnia Adhi
105314024
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
ii
APPLICATION OF SCHEDULING COURSES WITH GENETIC ALGORITHM
(Case Study : Primary School Teacher Education Study Program Sanata Dharma University)
A THESIS
Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Komputer Degree In Department of Informatics Engineering
By :
Damai Kurnia Adhi NIM : 105314024
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY
iii
iv
vi
HALAMAN PERSEMBAHAN
Karya tulis ini kupersembahkan untuk:
Ayah dan Ibuku tercinta yang selalu memberikan doa, kepercayaan dan dukungan
yang sangat berarti untukku.
Kedua adikku yang kukasihi yang selalu memberikan semangat motivasi untuk
terus berusaha mendapatkan hasil yang terbaik.
vii
HALAMAN MOTTO
“Berbahagialah orang yang membawa damai, karena mereka akan disebut anak-anak Allah” - Matius 5:9
"Barangsiapa setia dalam perkara-perkara kecil, ia setia juga dalam perkara-perkara besar. Dan barangsiapa tidak benar dalam perkara-perkara kecil, ia tidak benar juga dalam perkara-perkara
besar." - Lukas 16:10
“Karena itu, saudara-saudaraku yang kekasih, berdirilah teguh, jangah goyah, dan giatlah selalu dalam pekerjaan Tuhan! Sebab kamu tahu, bahwa dalam persekutuan dengan Tuhan jerih
payahmu tidak sia-sia” – 1 Korintus 15:58
“Dan segala sesuatu yang kamu lakukan dengan perkataan atau perbuatan, lakukanlah semuanya itu dalam nama Tuhan Yesus, sambil mengucap syukur oleh Dia kepada Allah, Bapa Kita” –
Kolose 3:17
"Karena aku senang dan rela di dalam kelemahan, di dalam siksaan, di dalam kesukaran, di dalam penganiayaan dan kesesakan oleh karena Kristus. Sebab jika aku lemah, maka aku kuat." -
2 Korintus 12:10
"Hendaklah kamu selalu rendah hati, lemah lembut, dan sabar. Tunjukkanlah kasihmu dalam hal saling membantu." - Efesus 4:2
viii
ix
x
ABSTRAKSI
DAMAI KURNIA ADHI. Aplikasi Penjadwalan Mata Kuliah Menggunakan Algoritma Genetika (Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma). Dibimbing oleh Puspaningtyas Sanjoyo Adi, S.T., M.T.
Penjadwalan matakuliah merupakan pekerjaan rutin dalam kegiatan sistem akademik di Universitas. Dalam pelaksanaanya, seringkali jadwal yang telah dibuat tidak sesuai dengan yang diharapkan. Pada dasarnya dalam menentukan jadwal mata kuliah perlu diatur sedemikian rupa sehingga semua mahasiswa dapat mengikuti mata kuliah yang diambilnya tanpa bertabrakan dengan mata kuliah lain dan sesuai dengan jam dosen tersebut mengajar. Penyusunan Jadwal matakuliah perlu mempertimbangkan aturan – aturan tertentu. Apabila dalam penyusunan jadwal masih menggunakan cara manual, waktu yang dibutuhkan untuk menyelesaikan juga akan lebih banyak.
Penjadwalan matakuliah merupakan kombinasi dari hari, ruang, dan waktu terhadap kuliah dengan mempertimbangkan aturan tertentu dalam program studi. Algoritma Genetika digunakan sebagai pendekatan permasalahan yang ditemukan pada penjadwalan matakuliah. Dalam mencari solusi permasalahan, Algoritma Genetika menerapkan sistem sekelsi alam. Tujuan penelitian ini adalah merancang Algoritma Genetika dalam menyusun jadwal matakuliah dan mengukur tingkat keberhasilan pemetaan jadwal matakuliah menggunakan algoritma genetika.
Tahapan proses dalam Algoritma Genetika terdiri dari populasi awal, evaluasi fitness kromosom (jadwal kuliah), dan operator genetika yaitu crossover dan mutasi. Dari penelitian yang dilakukan, didapatkan hasil bahwa pembuatan jadwal matakuliah menggunakan Algoritma genetika dapat berjalan dengan baik dalam meminimalisir penggunaan ruang. Berkaitan dengan penerapan jumlah kromosom dalam Algoritma Genetika, semakin banyak jumlah kromosom dalam satu populasi maka penyelesaian pembuatan jadwal matakuliah jauh lebih cepat.
xi
ABSTRACT
DAMAI KURNIA ADHI. Application Of Scheduling Courses with Genetic Algorithm (Case Study : Primary School Teacher Education Study Program Sanata Dharma University). Mentored by Puspaningtyas Sanjoyo Adi, S.T., M.T.
Scheduling courses is routine work in the academic activities at the University. In the implementation, often schedules that have been made are not as expected. In determining the schedule of courses should be so arranged that all students can follow the courses he had taken without colliding with other course and in accordance with the teaching lecturer hours. Preparation of scheduling courses need to consider the certain rules. If in the preparation of the schedule is still using the manual method, the time it takes to complete will also be more.
Scheduling course is a combination of day, rooms, and time to lecture by considering certain rules in the study program. Genetic Algorithm is used as an approach to the problems found in the course scheduling. In searching for solutions to problems, Genetic Algorithm applying natural selection system. The purpose of this research is to design Genetic Algorithm to build scheduling courses and measure the success rate of the course schedule mapping using Genetic Algorithms.
Step of the process of Genetic Algorithm consists of initial population, fitness evaluation (class schedule), and genetic operators, are crossover and mutation. From the research conducted, showed that creating scheduling courses using Genetic Algorithm can work well in minimizing the use rooms. Related with the implementation of the number of chromosomes in a Genetic Algorithm, the more the number of chromosomes in the population of the completion of the course scheduling much faster.
xii
KATA PENGATAR
Puji dan syukur kepada Tuhan Yang Maha Esa yang telah mengaruniakan
kasih karunia kepada hambaNya sehingga penulis dapat menyelesaikan tugas
akhir ini.
Dalam proses penulisan tugas akhir ini ada begitu banyak pihak yang telah
memberikan bantuan dan perhatian kepada saya sehingga tugas akhir ini dapat
terselesaikan. Oleh karena itu penulis mengucapkan terima kasih diantaranya
kepada :
1. Ibu P.H. Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
2. Ridowati Gunawan, S.Kom., M.T. selaku Kaprodi Teknik Informatika
Universitas Sanata Dharma.
3. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku dosen pembimbing
tugas akhir yang telah banyak memberikan bimbingan dan masukkan
dalam penyusunan tugas akhir ini.
4. Bapak Alb. Agung Hadhiatma, S.T., M.T. dan Bapak Eko Hari Parmadi,
S.Si., M.Kom. selaku panitia penguji yang telah memberikan kritik dan
saran untuk tugas akhir ini.
5. Ayah, Ibu, dan kedua Adikku tercinta yang sudah memberikan semangat,
cinta, dan kasih sayang, serta doa sehingga penulis dapat menyelesaikan
tugas akhir ini.
6. Seluruh staff dosen Teknik Informatika Universitas Sanata Dharma yang
xiii
studi.
7. Putri Emilia Yusuf yang sudah memberikan semangat dan doa kepada
penulis. Terima kasih atas kesabaran yang diberikan hingga penulis dapat
menyelesaikan tugas akhir ini.
8. Keluarga besar Mbah Marto Darsono yang telah memberikan semangat
serta doa hingga penulis dapat menyelesaikan tugas akhir ini. Terima kasih
khususnya kepada Mbah Marto Darsono yang secara terus-menerus
memberikan doa kepada cucu-cucunya hingga menjadi orang yang
berhasil.
9. Teman seperjuangan skripsi penjadwalan matakuliah PGSD, Antonius
Rianditya Putra, H. Roy Wiranata, dan Aweng yang telah membantu
penulis dalam memberikan saran dan kritik terhadap dokumen dan
program penulis.
10. Bapak Kartono, Kristopel, Agustinus Dwi, Tomi, Dita, Eko, Mas Yanuar,
dan Theo yang telah memberikan semangat, bantuan, ide, masukkan, dan
kritik yang membangun selama hingga penyelesaian skripsi ini.
11. Mas Arif dan Risko yang telah membantu meminjamkan perlengkapan
sidang tugas akhir penulis.
12. Seluruh Staff Sekretariat Fakultas Sains dan Teknologi yang banyak
membantu penulis dalam urusan administrasi akademik terutama
menjelang tugas akhir dan yudisium.
13. Teman-teman seperjuangan Jurusan Teknik Informatika angkatan 2010.
xiv
maupun tidak langsung, yang tidak dapat penulis sebutkan satu persatu.
Dengan rendah hati penulis menyadari bahwa tugas akhir ini masih jauh dari
sempurna, oleh karena itu kritik dan masukkan saran untuk perbaikkan tugas akhir
ini sangat penulis harapkan. Akhir kata semoga tugas akhir ini dapat bermanfaat
bagi semua pihak. Terima Kasih.
Yogyakarta, Desember 2014
Penulis,
xv
DAFTAR ISI
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN ... iii
HALAMAN PENGESAHAN ... iv
PERNYATAAN KEASLIAN KARYA ... v
HALAMAN PERSEMBAHAN ... vi
HALAMAN MOTTO ... vii
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH viii LEMBAR PERNYATAAN PERSETUJUAN PENYERAHAN PERANGKAT LUNAK ... ix
ABSTRAKSI ... x
ABSTRACT ... xi
KATA PENGATAR ... xii
DAFTAR ISI ... xv
DAFTAR GAMBAR ... xviii
DAFTAR TABEL ... xxi
BAB I ... 1
PENDAHULUAN ... 1
1.1. Latar Belakang Masalah ... 1
1.2. Rumusan Masalah ... 3
1.3. Tujuan ... 3
1.4. Batasan Masalah... 3
1.5. Metodologi Penelitian ... 4
1.6. Sistematika Penulisan ... 5
BAB II ... 7
LANDASAN TEORI ... 7
2.1. Penjadwalan Matakuliah ... 7
2.2. Algoritma Genetika ... 7
2.2.1. Alur Dasar Algoritma Genetika ... 8
2.2.2. Kromosom ... 9
xvi
2.2.2.2. Pengkodean Bilangan Bulat. ... 11
2.2.2.3. Pengkodean Struktur Data. ... 11
2.2.3. Operator Algoritma Genetika ... 12
2.2.3.1. Seleksi ... 12
2.2.3.2. Perkawinan Silang (Crossover) ... 13
2.2.3.3. Mutasi ... 15
BAB III ... 17
ANALISIS DAN PERANCANGAN ... 17
3.1. Latar Belakang Masalah ... 17
3.2. Analisis Permasalahan ... 18
3.2.1. Analisis Algoritma Genetika Pada Penjadwalan ... 19
3.2.1.1. Perancangan Populasi Awal Penjadwalan ... 20
3.2.1.2. Evaluasi Fitness Pada Penjadwalan ... 26
3.2.1.3. Proses Regenerasi Pada Penjadwalan ... 35
3.3. Perancangan Proses ... 40
3.3.1. Spesifikasi Kebutuhan Perangkat Keras dan Perangkat Lunak .... 40
3.3.2. Use Case... 41
3.3.3. Perancangan Basisdata ... 51
3.3.3.1. ER Diagram ... 51
3.3.4. UML ... 51
3.3.5. Diagram Kelas Analisis ... 62
BAB IV ... 63
IMPLEMENTASI DAN ANALISA HASIL ... 63
4.1. IMPLEMENTASI PROGRAM ... 63
4.1.1. Progress Bar ... 63
4.1.2. Form Utama (Home) ... 63
4.1.3. Form Matakuliah ... 64
4.1.3.1. Simpan Matakuliah ... 64
4.1.3.2. Ubah Matakuliah... 65
4.1.3.3. Hapus Matakuliah ... 67
4.1.3.4. Upload Data Matakuliah ... 69
xvii
4.1.4.1. Simpan Dosen ... 70
4.1.4.2. Ubah Dosen ... 72
4.1.4.3. Hapus Dosen ... 73
4.1.4.4. Upload Data Dosen ... 74
4.1.5. Form Ruang ... 76
4.1.5.1. Simpan Ruang ... 76
4.1.5.2. Ubah Ruang ... 78
4.1.5.3. Hapus Ruang ... 79
4.1.5.4. Upload Data Ruang ... 80
4.1.6. Form Kelas Kuliah... 82
4.1.7. Form Penjadwalan ... 84
4.1.7.1. Membuat Kelas Permintaan ... 85
4.1.7.2. Penjadwalan ... 88
4.2. PENGUJIAN PROGRAM ... 92
4.2.1. Pengujian Program Terhadap Nilai Fitness, Waktu, dan Panjang Kromosom ... 92
4.2.2. Pengujian Program Terhadap Penggunaan Ruang ... 103
BAB V ... 109
PENUTUP ... 109
5.1. KESIMPULAN ... 109
5.2. SARAN ... 109
DAFTAR PUSTAKA ... 111
xviii
DAFTAR GAMBAR
Gambar 1-1 Definisi Kromosom ... 10
Gambar 1-2 Contoh Pengkodean Biner ... 11
Gambar 1-3 Contoh Pengkodean Bulat ... 11
Gambar 1-4 Contoh One Point Crossover ... 14
Gambar 1-5 Contoh Two Point Crossover ... 14
Gambar 1-6 Contoh Uniform Crossover ... 15
Gambar 1-7 Contoh Mutasi ... 15
Gambar 3. 1 Flowchart Algoritma Genetika ... 20
Gambar 3. 2 Pemetaan Ruang dalam Kromosom ... 21
Gambar 3. 3 Ilustrasi Pemetaan Kromosom 1 ... 23
Gambar 3. 4 Pemetaan Kromosom 2 ... 24
Gambar 3. 5 Pemetaan Populasi ... 25
Gambar 3. 6 Algoritma prosesRandom() ... 26
Gambar 3. 7 Flowchart Evaluasi Fitness ... 27
Gambar 3. 8 Algoritma Method eksekusiAturan ... 29
Gambar 3. 9 Algoritma HC2 (cekDosen) ... 31
Gambar 3. 10 Algoritma HC3 (cekMatakuliah) ... 32
Gambar 3. 11 Algoritma HC4 (cekJumlahMatakuliah) ... 33
Gambar 3. 12 Algoritma HC5 (cekDosenMengajar) ... 35
Gambar 3. 13 Flowchart Roulette Wheel Selection ... 36
Gambar 3. 14 Flowchart Crossover ... 37
Gambar 3. 15 Ilustrasi Crossover ... 38
Gambar 3. 16 Ilustrasi Mutasi Replace Duplikat ... 39
Gambar 3. 17 Use Case Diagram ... 41
Gambar 3. 18 ER Diagram ... 51
Gambar 3. 19 UML Kelas Dosen ... 51
Gambar 3. 20 UML Kelas Kromosom ... 52
Gambar 3. 21 UML Kelas Populasi ... 53
Gambar 3. 22 UML Kelas Pelanggaran ... 54
Gambar 3. 23 UML Kelas Genetika ... 55
Gambar 3. 24 UML Kelas Dosen ... 56
Gambar 3. 25 UML Kelas KelasKuliah ... 57
Gambar 3. 26 UML Kelas Matakuliah ... 57
Gambar 3. 27 UML Kelas Ruang ... 58
Gambar 3. 28 UML Kelas TabelPermintaan ... 58
Gambar 3. 29 UML Kelas Koneksi ... 59
Gambar 3. 30 UML Kelas DosenKontrol ... 59
Gambar 3. 31 UML Kelas MatakuliahKontrol ... 60
Gambar 3. 32 UML KelasMatkulKontrol ... 61
xix
Gambar 3. 34 UML Kelas RuangKontrol ... 62
Gambar 3. 35 Diagram Kelas Analisis ... 62
Gambar 4. 1 Tampilan Progress Bar... 63
Gambar 4. 2 Tampilan Home ... 63
Gambar 4. 3 Tampilan Form Matakuliah ... 64
Gambar 4. 4 Tampilan Form Matakuliah (Isian) ... 65
Gambar 4. 5 Tampilan Pesan Berhasil (Insert Matakuliah) ... 65
Gambar 4. 6 Tampilan Form Matakuliah (Tabel) ... 65
Gambar 4. 7 Tampilan Form Matakuliah 2 ... 66
Gambar 4. 8 Tampilan Form Matakuliah (label Edit) ... 66
Gambar 4. 9 Tampilan Pesan Berhasil dirubah (Matakuliah) ... 66
Gambar 4. 10 Tampilan Form Matakuliah (Tabel Matakuliah) ... 67
Gambar 4. 11 Tampilan Form Matakuliah (Hapus Matakuliah) ... 67
Gambar 4. 12 Pesan Konfirmasi Hapus ... 68
Gambar 4. 13 Pesan Matakuliah Berhasil Dihapus ... 68
Gambar 4. 14 Tabel Matakuliah (Setelah dihapus) ... 68
Gambar 4. 15 Tabel Format Pengisian data Matakuliah (Excel) ... 69
Gambar 4. 16 Tampilan FileChooser (matakuliah) ... 69
Gambar 4. 17 Pesan Konfirmasi Upload Matakuliah ... 70
Gambar 4. 18 Tampilan Form Dosen ... 70
Gambar 4. 19 Tampilan Form Dosen (Label) ... 71
Gambar 4. 20 Pesan Konfirmasi (Dosen) ... 71
Gambar 4. 21 Tampilan Form Dosen (Tabel Dosen) ... 71
Gambar 4. 22 Tampilan Form Dosen ... 72
Gambar 4. 23 Tampilan Form Dosen (Label) 2 ... 72
Gambar 4. 24 Pesan Konfirmasi 2 ... 73
Gambar 4. 25 Tampilan Form Dosen (Tabel Dosen) 2... 73
Gambar 4. 26 Tampilan Form Dosen (Label) 3 ... 74
Gambar 4. 27 Konfirmasi Hapus Dosen ... 74
Gambar 4. 28 Pesan Berhasil Hapus Dosen ... 74
Gambar 4. 29 Format Excel Dosen ... 75
Gambar 4. 30 Tampilan JFileChooser Dosen ... 75
Gambar 4. 31 Pesan berhasil Upload ... 76
Gambar 4. 32 Tampilan Form Ruang ... 76
Gambar 4. 33 Tampilan Form Ruang (Label) ... 77
Gambar 4. 34 Pesan Berhasil Tambah Ruang ... 77
Gambar 4. 35 Tampilan Form Ruang (Label) 2 ... 77
Gambar 4. 36 Tampilan Form Ruang 2 ... 78
Gambar 4. 37 Tampilan Form Ruang (Label) ... 78
Gambar 4. 38 Pesan Berhasil dirubah (ruang) ... 79
Gambar 4. 39 Tabel Ruang 2... 79
Gambar 4. 40 Tampilan Form Ruang 3 ... 79
xx
xxi
DAFTAR TABEL
xxii
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Penjadwalan mata kuliah merupakan pekerjaan rutin dalam kegiatan
sistem akademik di Universitas. Dalam menyusun matakuliah terdapat berbagai
jenis komponen yang diperlukan, diantaranya Mata kuliah, Dosen mengajar,
ruang dan waktu. Penjadwalan mata kuliah dilakukan setiap semester. Dalam
pelaksanaanya, seringkali jadwal yang telah dibuat tidak sesuai dengan yang
diharapkan. Hal – hal yang mendukung bisa dikarenakan dosen yang melebihi
batas mengajar, kesibukan dosen terhadap kepentingannya, jadwal mahasiswa
yang bertabrakan, adanya dosen pengajar dari luar kampus, dan lain lain. Pada
dasarnya dalam menentukan jadwal mata kuliah perlu diatur sedemikian rupa
sehingga semua mahasiswa dapat mengikuti mata kuliah yang diambilnya tanpa
bertabrakan dengan mata kuliah lain dan sesuai dengan jam dosen tersebut
mengajar.
Penyusunan Jadwal matakuliah perlu mempertimbangkan aturan – aturan
tertentu. Aturan tersebut antara lain : tidak adanya dosen yang mengajar dua atau
lebih matakuliah di jam yang sama, satu ruang hanya dapat diisi oleh 1 matakuliah
di jam tertentu, penggunaan ruang lab hanya untuk kelas praktikum, dan lain lain.
Apabila dalam penyusunan jadwal masih menggunakan cara manual, waktu yang
dibutuhkan untuk menyelesaikan juga akan lebih banyak. Waktu penyusunan
matakuliah yang menyebabkan waktu penyusunan jadwal juga ikut
bertambah.
Dalam penyusunan jadwal matakuliah menggunakan sistem komputerisasi
dapat dilakukan dengan bantuan algoritma tertentu, salah satunya adalah
Algoritma Genetika. Untuk mendapatkan hasil yang optimal dalam menyusun
jadwal mata kuliah, diperlukan penambahan aturan-aturan yang lebih kompleks
(Constrains) (Winoto, D. S., dkk, 2012). Constrains didapat berdasarkan aturan
penjadwalan matakuliah yang berlaku pada Universitas. Semakin kompleks
constrainsnya, maka Jadwal matakuliah yang dihasilkan akan semakin optimal.
Algoritma Genetika cukup baik diimplementasikan sebagai algoritma untuk
membuat sistem penjadwalan (Setemen. K, 2010). Hal ini dibuktikan dengan
melakukan ujicoba sebanyak 3 kali dengan data pemetaan matakuliah yang
berbeda. Untuk setiap kali ujicoba, nilai fitness yang dihasilkan sama dengan nol.
Artinya tidak ada matakuliah yang terjadi bentrokan. Untuk ujicoba 1 (pemetaan
53 matakuliah), algoritma genetika dapat menghasilkan nilai fitness sama dengan
nol hanya dengan 209 Iterasi dari target maksimal 5000 Iterasi. Ujicoba 2
(pemetaan 88 matakuliah) dapat diselesaikan algoritma genetika dengan 2161
Iterasi dari target maksimal 5000 Iterasi. Sedangkan ujicoba 3 (pemetaan 141
matakuliah), algoritma genetika mampu memperoleh fitness dengan 6623 Iterasi ,
tetapi dengan target maksimal iterasi sebanyak 10000.
Pada tugas akhir ini bertujuan untuk menerapkan sistem penjadwalan mata
kuliah di Program Studi Guru Sekolah Dasar (PGSD) dengan menggunakan
Mata kuliah, Dosen mengajar, ruang dan waktu dapat diimplementasikan ke
dalam sebuah jadwal sehingga dapat memberikan solusi bagi Sekretariat Prodi
hingga akhirnya Jadwal tersebut dapat dicetak dan dapat digunakan. Yang akan
dikembangkan adalah optimasi waktu pemrosesan progam (Timing) dan
penambahan aturan – aturan (Constrains) yang sesuai dengan Prodi PGSD
Universitas Sanata Dharma.
1.2. Rumusan Masalah
Berdasarkan permasalahan penjadwalan mata kuliah di PGSD, maka
rumusan masalahnya adalah :
1. Bagaimana menyusun jadwal mata kuliah di PGSD dengan menggunakan
Algoritma Genetika?
2. Seberapa tingkat keberhasilan pemetaan jadwal mata kuliah dengan
menggunakan Algoritma Genetika?
1.3. Tujuan
1. Membuat aplikasi penjadwalan mata kuliah dengan menggunakan
Algoritma Genetika.
2. Mengukur tingkat keberhasilan pemetaan jadwal mata kuliah dengan
menggunakan Algoritma Genetika.
1.4. Batasan Masalah
matakuliah kelas teori Tahun Akademik 2013/2014 Semester Ganjil
Program Studi Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma.
2. Kelas kuliah yang masuk ke dalam penjadwalan adalah matakuliah yang
membutuhkan ruang untuk menjalankan proses belajar mengajar.
3. Informasi yang dihasilkan berupa jadwal mata kuliah untuk Program Studi
Guru Sekolah Dasar (PGSD).
4. Mahasiswa hanya dapat mengambil mata kuliah di semester yang
diajarkan.
5. Pengguna program dapat memasukkan input nama mata kuliah, dosen
mengajar dan ruangan yang ditentukan. Hari dan Waktu sudah tersedia di
dalam sistem.
6. Pemilihan induk dalam proses seleksi Kromosom adalah memilih dua
Kromosom dengan nilai fitness terbaik untuk dijadikan orang tua.
7. Metode crossover yang diterapkan di dalam sistem adalah One Point
Crossover.
8. Metode Mutasi yang diterapkan di dalam sistem adalah Mutasi Bebas.
9. Pembagian waktu dalam kuliah menerapkan sistem Timeslot, dimana 1
Timeslot berisi 3 Jam Pelajaran PGSD. Dalam sehari, satu ruang berisi 4
Timeslot (12 Jam Pelajaran).
1.5. Metodologi Penelitian
Metode yang digunakan dalam menyusun jadwal matakuliah PGSG adalah
dari berbagai tahap :
1. Analisis Kebutuhan
Pada tahap ini, akan dilakukan Identifikasi tentang kebutuhan system serta
pengumpulan data – data yang diperlukan dalam proses penjadwalan.
2. Perancangan Sistem
Pada tahap ini, akan dilakukan penerjemahan rancangan sistem ke dalam
perangkat lunak. Proses perancangan meliputi Perancangan Sistem, desain
Basis Data, user interface dan rancangan implementasi program.
3. Penulisan Progam
Pada tahap ini, akan dilakukan penerjemahan dari perancangan sistem ke
dalam bahasa pemrograman.
4. Pengujian
Pada tahap ini akan dilakukan pengujian program. Pengujian bertujuan
untuk menemukan kesalahan – kesalahan hingga program dapat sesuai
dengan yang diharapkan.
1.6. Sistematika Penulisan
BAB I : PENDAHULUAN
Bab ini berisi penjelasan tentang latar belakang masalah, rumusan
masalah, tujuan, batasan masalah, metodologi penelitian, dan sistematika
penulisan.
BAB II : LANDASAN TEORI
pembuatan sitem penjadwalan mata kuliah PGSD.
BAB III : ANALISA DAN PERANCANGAN SISTEM
Bab ini berisi tentang analisis dan perancangan sistem yang akan
dibangun, serta meliputi analisis data penjadwalan, aturan dalam proses
penjadwalan, dan penjelasan algoritma genetika dalam menyelesaikan
permasalahan mata kuliah.
BAB IV : IMPLEMENTASI DAN ANALISA HASIL
Bab ini berisi tentang implementasi dari perancangan pada Bab III.
Implementasi tersebut meliputi tampilan progam (input dan output) dan
analisa dari progam yang dibuat.
BAB V : KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dan saran dari sistem yang akan dibuat
BAB II
LANDASAN TEORI
2.1. Penjadwalan Matakuliah
Penjadwalan mata kuliah (lecture timetabling) adalah masalah
menempatkan waktu dan ruangan kepada sejumlah kuliah, tutorial, dan kegiatan
akademik sejenis, dengan memperhatikan sejumlah aturan yang berhubungan
dengan kapasitas dan lokasi dari ruangan yang tersedia, waktu bebas yang
diperlukan dan sejumlah aturan lain yang berkaitan dengan toleransi untuk dosen,
dan hubungan antara mata kuliah khusus (Ross, P., dkk, 1994).
Penjadwalan matakuliah merupakan permasalahan yang sangat penting
dan dihadapi oleh prodi di tiap semesternya. Dalam penyusunan jadwal, terdapat
dua batasan yang bersifat mutlak (hard constraint) dan batasan lunak (soft
constraint) (Oner,A., dkk, 2011).
2.2. Algoritma Genetika
Genetic Algorithms atau algoritma genetika adalah algoritma pencarian
yang didasarkan pada proses seleksi alam (proses evolusi). Proses evolusi berarti
individu (kromosom) yang secara terus menerus mengalami perubahan gen
sehingga dapat menyesuaikan lingkungan hidupnya. Hanya individu yang kuat
yang mampu bertahan (Setemen, K., 2010).
alamiah dengan melibatkan perubahan gen yang terjadi pada individu melalui
proses perkembangbiakan. Proses perkembangbiakan menjadi proses dasar yang
penting. “Tujuan yang akan dicapai dari perkembangbiakan adalah bagaimana
mendapatkan keturunan yang lebih baik” (Basuki, A., 2003). Untuk dapat
menemukan keturunan baru, dapat dilakukan dengan perkawinan silang
(crossover) dan mutasi (mutation). Perkawinan silang adalah proses pertukaran
gen dari dua individu yang mempunyai karakteristik yang berbeda sehingga
menghasilkan gen yang lebih baik dari induknya. Sedangkan Mutasi adalah proses
perubahan gen dari satu individu karena individu tersebut melakukan adaptasi
terhadap lingkungannya.
2.2.1. Alur Dasar Algoritma Genetika
Secara umum, alur dasar algoritma genetika dinyatakan sebagai berikut :
(Bambrick, L., 1997).
1. [Start], Generasi populasi pertama secara random sebanyak n individu.
2. [Fitness], Evaluasi nilai fitness f(x) dari setiap individu x didalam
populasi.
3. [New Population], Bentuk populasi baru dengan melakukan pengulangan
langkah – langkah dibawah ini sehingga didapatkan populasi baru.
a. [Selection], Pilih 2 individu sebagai induk dari sebuah populasi sesuai
dengan fitness (Semakin baik fitness, maka semakin besar peluang
untuk dipilih).
probabilitas crossover untuk membentuk sebuah keturunan baru.
c. [Mutation], Mutasi setiap keturunan yang baru sesuai dengan
probabilitas mutasi di setiap gen.
d. [Accepting], tempatkan keturunan yang baru sesuai dengan populasi
yang baru.
4. [Replace], Gunakan populasi yang baru dibentuk untuk menjalankan
algoritma.
5. [Test], Jika kondisi akhir dipenuhi maka berhenti dan tampilkan solusi dari
populasi.
6. [Loop], Lakukan lagi langkah 2.
2.2.2. Kromosom
Kromosom (individu) merupakan gabungan dari Gen yang membentuk
nilai tertentu. Individu bisa dikatakan sama dengan kromosom, yang merupakan
kumpulan gen. Gen ini bisa biner, float, dan kombinatorial. Beberapa definisi
penting yang terdapat dalam kromosom adalah sebagai berikut (Yulyantari, L.M.,
2011)
Genotype (Gen), sebuah nilai yang menyatakan satuan dasar yang
membentuk suatu arti tertentu dalam satu kesatuan gen yang dinamakan
kromosom. Dalam algoritma genetika, gen ini bisa berupa nilai biner,
float, integer maupun karakter, atau kombinatorial.
Allele, nilai dari gen.
Individu, menyatakan satu nilai atau keadaan yang menyatakan salah satu
solusi yang mungkin dari permasalahan yang diangkat
Populasi, merupakan sekumpulan individu (kromosom) yang akan
diproses bersama dalam satu siklus proses evolusi.
Generasi, menyatakan satu siklus proses evolusi atau satu iterasi di dalam
algoritma genetika.
Secara umum definisi Kromosom dapat diilustrasikan sebagai berikut :
Gambar 1-1 Definisi Kromosom
Untuk memetakan masalah ke dalam sebuah kromosom dapat dilakukan
2.2.2.1. Pengkodean Biner
Pengkodean biner merupakan pengkodean kromosom yang paling banyak
digunakan. Dalam hal ini, parameter dikodekan dalam bentuk 0 dan 1.
Keuntungan dari pengkodean ini adalah sederhana dan mudah dimanipulasi.
KROMOSOM KODE BINER
A 10110010100
B 11001001101
Gambar 1-2 Contoh Pengkodean Biner
2.2.2.2. Pengkodean Bilangan Bulat.
Pengkodean bilangan bulat adalah metode yang mengkodekan bilangan ke
dalam bentuk bilangan bulat. Pengkodean ini sangat baik digunakan untuk
masalah optimasi kombinatorial.
KROMOSOM KODE BULAT
A 50310020400
B 35001002406
Gambar 1-3 Contoh Pengkodean Bulat
2.2.2.3. Pengkodean Struktur Data.
Pengkodean Struktur Data adalah model pengkodean yang menggunakan
struktur data. Pengkodean ini digunakan untuk masalah yang lebih kompleks,
2.2.3. Operator Algoritma Genetika
2.2.3.1. Seleksi
Seleksi bertujuan untuk memberikan kesempatan individu dalam
reproduksi bagi anggota populasi yang lebih unggul. Langkah pertama yang
dilakukan dalam tahap seleksi adalah pencarian nilai fitness. Masing-masing
individu dalam seleksi akan menerima probabilitas reproduksi yang tergantung
pada nilai yang diperoleh dibandingkan dengan anggota individu lainnya. Nilai
fitness inilah nantinya akan digunakan dalam tahap seleksi berikutnya
(Kusumadewi, S., 2003)
Kemampuan algoritma genetika dalam menciptakan sebuah kromosom
yang lebih unggul terganting dari penekanan selektif terhadap kromosom dalam
populasi. Penekanan selektif diterapkan dengan dua cara. Cara pertama adalah
menciptakan lebih banyak kromosom anak dalam populasi dan memilih hanya
kromosom yang terbaik untuk generasi berikutnya. Metode ini menerapkan
seleksi orangtua secara acak namun metode ini akan terus menghasilkan
kromosom yang lebih baik.
Cara lain menerapkan penekanan selektif adalah memilih orangtua yang
lebih baik untuk proses regenerasi. Dengan metode ini hanya kromosom sebanyak
jumlah tertentu dalam satu populasi yang dipelihara untuk generasi berikutnya.
Walaupun penekanan selektif tidak diterapkan di level keturunan, metode ini juga
akan menghasilkan kromosom yang lebih baik karena penekanan selektif
a. Seleksi Roulete Wheel
Pada seleksi ini akan dipilih calon orang tua berdasarkan fitnessnya.
Semakin baik fitnessnya, maka semakin besar kemungkinan kromosom
dipilih untuk dijadikan orang tua. Probabilitas suatu individu terpilih untuk
crossover sebanding dengan fitnessnya.
b. Seleksi Rangking
Pada seleksi ini akan dilakukan sistem ranking (mengurutkan) dari
fitness terkecil hingga fitness terbesar. Bobot fitness semula akan dirubah
dengan nomor urut dari 1 hingga n kromosom dimana kromosom dengan
bobot fitness n merupakan kromosom dengan nilai fitness terbesar dalam
populasi.
2.2.3.2. Perkawinan Silang (Crossover)
Perkawinan silang merupakan operator yang berfungsi untuk membentuk
sebuah keturunan baru. Operator ini membutuhkan 2 kromosom sebagai induk
(parent) hingga menghasilkan anak (child). Perkawinan silang bertujuan untuk
menciptakan kromosom baru yang memiliki bagian baik kromosom lama dan
tidak menutup kemungkinan tercipta sebuah kromosom yang lebih baik. Ada
beberapa jenis perkawinan silang :
a. One Point Crossover
kromosom induk. Sehingga akan menghasilkan anak yang memiliki gen dari
kedua induk tersebut. Contoh :
Gambar 1-4 Contoh One Point Crossover
b. Two Point Crossover
Proses crossover ini dilakukan dengan memilih dua titik crossover.
Kromosom keturunan dibentuk dengan barisan gen awal dari induk pertama,
kemudian disalin dengan gen induk kedua, lalu selebihnya disalin dengan gen
induk pertama.
Gambar 1-5 Contoh Two Point Crossover
c. Uniform Crossover
Uniform Crossover menghasilkan kromosom keturunan dengan
Gambar 1-6 Contoh Uniform Crossover
2.2.3.3. Mutasi
Mutasi merupakan proses mengubah nilai dari satu atau beberapa gen
dalam satu kromosom. Perubahan gen dilakukan dengan berbagai cara :
mengubah gen 1 menjadi 0 dan sebaliknya, melakukan pertukaran gen pada suatu
posisi dengan gen pada posisi lain, mengubah gen dengan batasan tertentu, dan
sebagainya bergantung pada representasi individunya (Suyanto, 2010). Tujuan
dari mutasi adalah mempercepat perbedaan diantara semua kromosom dalam
populasi sehingga pencarian dapat dipetakan ke seluruh ruang. Selain itu mutasi
bertujuan untuk mengembalikan komponen penting yang hilang ketika proses
crossover.
Contoh :
Gambar 1-7 Contoh Mutasi
Ada beberapa jenis operator Mutasi :
Mutasi terarah sangat bergantung pada informasi gen. Informasi gen
berupa nilai pelanggaran gen (bagian dari nilai fitness). Hal ini berarti bahwa
adanya kemungkinan untuk gen yang berbeda akan di mutasi. Mutasi akan
dilakukan jika pelanggaran gen tersebut lebih besar dari gen yang lain dalam
satu kromosom.
b. Mutasi Biasa
Mutasi biasa tidak memperhitungkan informasi gen. Hal ini berarti setiap
BAB III
ANALISIS DAN PERANCANGAN
3.1. Latar Belakang Masalah
Sebagian besar proses penjadwalan kuliah di PGSD Universitas Sanata
Dharma masih menggunakan cara manual. Program penjadwalan yang ada untuk
penjadwalan tidak mampu dalam menyusun data matakuliah di PGSD yang
banyak. Jika digunakan, sistem tidak menghasilkan jadwal bahkan sering terjadi
crash dalam aplikasinya. Apabila masih menggunakan cara manual akan
berdampak pada pekerjaan lain selain penjadwalan matakuliah, misalnya waktu
yang dibutuhkan dalam menyusun jadwal (timing).
Dalam proses pembuatan jadwal kuliah akan menyangkut penempatan
matakuliah yang ditawarkan pada hari, ruang, dan jam tertentu. Permasalahan
yang dihadapi adalah bagaimana menyusun jadwal matakuliah dengan
mempertimbangkan hari, jam dan ruangan yang tepat sehingga tidak terjadi
bentrok antar kelas dan matakuliah yang ditawarkan. Selain itu, sistem juga
mempertimbangkan dosen yang mengajar sehingga tidak ada hari dan jam yang
sama untuk 1 dosen mengajar lebih dari 1 matakuliah. Dalam penyusunan jadwal
dapat dilakukan dengan cara manual namun dalam proses pengerjaannya akan
mengalami banyak hamabtan terutama dalam hal ketelitian dan permasalahan
waktu.
3.2. Analisis Permasalahan
Masalah yang akan dibahas melalui tulisan ini adalah bagaimana sebuah
Prodi dapat mengatur jadwal mata kuliah tanpa bentrok sehingga dapat digunakan
selama 1 semester. Masalah penjadwalan merupakan masalah yang klasik. Hingga
saat ini telah berkembang banyak metode yang dapat digunakan untuk
menyelesaikan masalah tersebut. Umumnya masalah ini sangat sulit untuk
diselesaikan karena suatu proses penjadwalan diperlukan hard constraint dan soft
constraint.
Hard Constraint disebut juga Hard Requirement, merupakan salah satu
kebutuhan dari suatu penjadwalan yang jika kebutuhan ini dilanggar, maka akan
mengakibatkan penjadwalan yang dibentuk tidak dapat digunakan. Hard
Constraint merupakan prioritas utama yang harus dipenuhi dalam menyusun
jadwal kuliah. Hard Requirement dapat dijabarkan sebagai berikut :
1. Satu ruang hanya dapat digunakan oleh satu matakuliah di hari dan jam
tertentu.
2. Satu dosen hanya dapat mengajar satu matakuliah di hari dan jam yang
sama.
3. Matakuliah untuk satu semester tertentu tidak boleh berada di jam yang
sama kecuali untuk matakuliah yang sama dan dosen berbeda.
4. Jumlah matakuliah di dalam satu semester yang sama tidak boleh lebih
dari 3 di hari yang sama.
Soft Constraint disebut juga Soft Requirement merupakan salah satu
persyaratan dalam penjadwalan jika syarat ini tidak dipenuhi, penjadwalan dapat
terus dilakukan. Soft requirements umumnya merupakan kebijakan – kebijakan
yang sudah diputuskan oleh prodi. Contoh soft constrains adalah :
1. Dosen luar dapat memilih jam mengajar yang diinginkan.
3.2.1. Analisis Algoritma Genetika Pada Penjadwalan
Untuk menyusun sebuah jadwal dengan menggunakan Algoritma
Genetika, hal yang harus dilakukan adalah merepresentasikan mata kuliah
kedalam bentuk yang dimengerti oleh Algoritma Genetika. Dalam Genetika
terdapat kata kunci Gen, Allele, Kromosom, dan Populasi. Jika diterapkan ke
dalam penjadwalan matakuliah maka :
Tabel 3. 1 Tabel Penerapan Algoritma Genetika dalam Penjadwalan
Kata Kunci Definisi
Gen Gen mewakili hari, jam, dan ruang tertentu untuk
kelas kuliah tersebut.
Allele Representasi dari Kelas Matakuliah.
Kromosom Kumpulan dari Gen. Dengan kata lain, Kromosom
adalah Jadwal matakuliah selama seminggu.
Populasi Kumpulan dari Jadwal matakuliah.
Proses yang dapat dilakukan adalah membangun populasi awal, evaluasi
genetika yang akan diterapkan pada penjadwalan matakuliah adalah :
Start
Populasi Awal
Evaluasi Fitness Mutasi
Crossover
Seleksi Kriteria Berhenti
Terpenuhi?
Hasil (jadwal)
Selesai
Gambar 3. 1 Flowchart Algoritma Genetika
3.2.1.1. Perancangan Populasi Awal Penjadwalan
Penjadwalan matakuliah terdiri dari komponen mata kuliah, dosen, hari,
jam, dan ruang. Yang akan dijadikan model kromosom adalah komponen mata
kuliah, hari, jam dan ruang. Pembentukan populasi awal penjadwalan matakuliah
adalah N kromosom, dengan N merupakan kandidat banyaknya matakuliah.
secara random untuk selanjutnya dilakukan proses evaluasi setiap kromosomnya.
Panjang 1 kromosom adalah N gen, dimana N merupakan hasil perkalian antara
jumlah hari, jumlah ruang, dan jumlah waktu.
Pemetaan kromosom akan menerapkan time slot pada jam matakuliah.
Setiap time slot terdiri dari 3 jam matakuliah. Berikut tabel penjelasan
pengelompokan jam :
Tabel 3. 2 Tabel Pengelompokan Jam
Pada Tabel 3.2 menjelaskan deskripsi singkat mengenai pengelompokan
waktu dalam 1 hari. Jika setiap ruang yang dipakai adalah 12 jam pelajaran, maka
pemetaan Ruang dalam kromosom adalah 4 untuk setiap Ruangnya. Jika
digambarkan pemetaan ruang yang dikaitkan dengan waktu akan menjadi sebagai
berikut :
Gambar 3. 2 Pemetaan Ruang dalam Kromosom
Gambar 3.2 Setiap 1 time slot waktu akan direpresentasikan dengan 1 Gen.
Gen merupakan kandidat Kelas kuliah tertentu. Pemetaan untuk menentukan
Ngen = (H * R * W) / 3
Keterangan :
Ngen = jumlah gen dalam 1 kromosom
H = jumlah hari dalam perkuliahan
R = jumlah ruang dalam perkuliahan
W = jumlah waktu dalam perkuliahan
Berdasarkan data yang diperoleh, Prodi PGSG Universitas Sanata Dharma
menerapkan jadwal dengan 156 Kelas kuliah, 5 hari, 14 ruang teori, dan 12 waktu
(jam) untuk perkuliahan semester Ganjil Tahun Akademik 2013/2014. Maka
jumlah gen yang terbentuk untuk 1 kromosom adalah :
Ngen = (5 * 14 * 12) / 3
= 280
Dalam perancangan sistem, Ngen merupakan representasi dari panjang 1
kromosom. Kromosom tersebut merupakan jadwal matakuliah di PGSD selama 1
minggu. Setiap Gen nya memiliki makna Hari, Ruang dan Jam tertentu.
Kelas kuliah merupakan komponen penting dalam penyusunan jadwal
matakuliah. Kombinasi Matakuliah dan Dosen akan membentuk sebuah Kelas
Kuliah. Kelas Kuliah akan berbeda setiap semesternya. Data Matakuliah
ditawarkan oleh PGSD terdapat pada Tabel 5.1, data dosen pengampu terdapat
Kuliah PGSD berdasarkan data Semester Ganjil Tahun Ajaran 2014/2015 terdapat
pada Tabel 5.4.
Tabel Kelas Kuliah terdiri dari kode kelas kuliah, kode matakuliah, kode
dosen pengampu dan kelas. Data tersebut akan diimplementasikan ke dalam
Algoritma Genetika. Dalam menyusun tabel kelas kuliah ke dalam kromosom,
masing-masing kelas kuliah akan ditempatkan secara random index Gen nya. Hal
ini berarti setiap kelas kuliah memiliki index (slot) Gen yang berbeda. Index Gen
yang tidak ditempati oleh kelas kuliah manapun akan dikodekan dengan 0, yang
berarti tidak ada kelas kuliah di hari, jam, dan ruang tersebut.
Pemetaan kromosom yang terbentuk dan digabungkan dengan kelas kuliah
dapat diilustrasikan sebagai berikut :
Gambar 3. 3 Ilustrasi Pemetaan Kromosom 1
Berikut pemetaan Kromosom secara keseluruhan dengan menggabungkan
Gambar 3. 4 Pemetaan Kromosom 2
Berikut sebagian penjelasan pemetaan Kromosom Gambar 3.4 :
Gen[0] Kelas Kuliah ke 2 (PDW 2106 – Logika, Semester 1,Kelas B,
Dosen Pengampu G. Ari Nugraha, S.J., M.A.) Hari Senin, Ruang 1, Time
Slot 1 (Jam 07.00-09-59).
Gen[67] Kelas Kuliah ke 17 (PDW 2122 - Bahasa dan Sastra Indonesia,
Semester 1, Kelas B, Dosen Pengampu Apri Damai SK, S.S., M.Pd.) Hari
Selasa, Ruang 3, Time Slot 4 (Jam 16.00-18.59).
Gen[234] Tidak ada kelas kuliah di hari Jumat, Ruang 3, Time Slot 3
Populasi merupakan kumpulan dari kromosom. Dengan kata lain, populasi
merupakan kumpulan dari jadwal matakuliah. Dalam perancangan program, 1
populasi terdiri dari 4 kromosom. Jika digambarkan maka rancangan populasi
yang dibangun untuk Iterasi 1 (populasi awal) adalah :
Gambar 3. 5 Pemetaan Populasi
Membangun populasi awal juga mempertimbangkan aturan soft constraint
yang berlaku. Pada saat membangun populasi awal, kelas kuliah permintaan akan
dimasukkan terlebih dahulu ke dalam sistem sesuai dengan Hari, Ruang, dan
Waktu yang sesuai dengan permintaan. kemudian kelas kuliah lainnya akan
dimasukkan secara random. Berikut algoritma ProsesRandom.
method prosesRandom()
1. Buat variabel r bertipe random.
2. Buat variabel hari bertipe int. Set nilai dengan 5. 3. Buat variabel waktu bertipe int. Set nilai dengan 12.
4. Buat variabel matkul bertipe int set dengan panjang kelas kuliah. 5. Buat Gen bernama data sepanjang (hari*ruang*waktu)/3.
7. Buat variabel N bertipe int set dengan matkul. 8. Untuk i = 0 hingga panjang data lakukan langkah 9.
9. Buat gen kosong baru set matakuliah sama dengan kosong dan hari ruang waktu sesuai dengan lokasi gen.
10. Untuk i = 0 hingga matkul lakukan langkah 11.
11. Set seluruh cek dengan false. Menandakan matakuliah belum berada di dalam kromosom.
12. Untuk i = 0 hingga panjang data permintaan lakukan langkah 13-15
13. Masukkan seluruh kelas kuliah ke Gen yang sesuai dengan permintaan Hari, Ruang, dan Waktu.
14. Set cek kelaskuliah permintaan dengan true. Menandakan matakuliah telah ada di dalam kromosom.
15. Kurangi N sebanyak matakuliah permintaan. 16. Buat variabel index bertipe int set dengan 0.
17. Ketika N tidak sama dengan 0. Lakukan langkah 18-22
18. Buat variabel tangkap bertipe int set dengan nilai acak panjang data.
19. Cek apakah cek ke index sama dengan true. Jika ya, maka penambahan nilai index dengan 1. Jika tidak, lakukan langkah 20-22.
20. Cek apakah slot gen posisi tangkap kosong. Jika ya, masukkan kelasMatakuliah ke dalam Gen.
21. Tambahkan nilai index dengan 1. 22. Kurangi nilai N dengan 1.
23. Kembalikan data sebagai nilai balik. 24. Selesai.
Gambar 3. 6 Algoritma prosesRandom()
3.2.1.2. Evaluasi Fitness Pada Penjadwalan
Setelah kromosom terbentuk, langkah selanjutnya adalah menentukan
kromosom tersebut baik atau tidak. Nilai fitness didapat dari banyaknya
pelanggaran Hard Constraint yang dilakukan pada 1 kromosom.
Diagram Flowchart evaluasi fitness adalah sebagai berikut :
Gambar 3. 7 Flowchart Evaluasi Fitness
Adapun aturan (constraint) dan bobot fitness yang diterapkan dalam Prodi
PGSG Universitas Sanata Dharma adalah sebagai berikut :
Tabel 3. 3 Tabel Aturan Penjadwalan Matakuliah
HC Aturan Nilai Fitness
1.
Satu ruang hanya dapat
digunakan oleh satu
matakuliah di hari dan jam tertentu.
2. Satu dosen hanya dapat mengajar satu matakuliah di jam yang sama.
Pelanggaran = 1 jika ada dua atau lebih matakuliah dosen tersebut berada di jam yang sama.
3. Matakuliah untuk satu
semester tertentu tidak boleh berada di jam yang sama
kecuali untuk matakuliah
yang sama dan dosen
berbeda.
Pelanggaran = 1 jika ada dua atau lebih matakuliah sama untuk dosen yang sama di jam yang sama.
4. Jumlah matakuliah di dalam
satu semester yang sama tidak boleh lebih dari 3 di hari yang sama.
Pelanggaran = 1, jika jumlah
matakuliah yang berada di hari yang sama berjumlah > 3.
5. Dosen mengajar dalam sehari tidak boleh lebih dari 3 matakuliah.
Pelanggaran = 1, jika terdapat lebih dari 3 matakuliah dalam sehari yang diampu dosen yang sama
Dalam penentuan nilai fitness, kromosom dikatakan optimal atau
merupakan sebuah solusi jika nilai fitnessnya sama dengan 0 (nol). Pada flowchart
akan memulai dengan mengeksekusi semua kromosom. Setiap kromosom akan
dieksekusi untuk mencari nilai fitness dengan menjalankan method
eksekusiAturan(). Method ini merupakan representasi dari kelima aturan Hard
Constraint pada Tabel 3.7.
Algoritma Method eksekusiAturan(Kromosom x)
2. Panggil method cekDosen dengan parameter x. Hasilnya disimpan ke dalam parent.
3. Panggil method cekMatakuliah dengan parameter parent. Hasilnya disimpan ke dalam parent.
4. Panggil method cekJumlahMatakuliah dengan parameter parent. Hasilnya disimpan ke dalam parent.
5. Panggil method cekDosenMengajar dengan parameter parent. Hasilnya disimpan ke dalam parent.
6. Kembalikan nilai parent; 7. Selesai.
Gambar 3. 8 Algoritma Method eksekusiAturan
Method eksekusiAturan merupakan method yang bertujuan untuk
mendapatkan nilai fitness total di setiap gen nya. Nilai fitness setiap gen akan
ditambahkan berdasarkan kelima aturan hard constrans (HC). Method
eksekusiAturan hanya mengecek HC 2 hingga HC 5 saja. HC 1 secara otomatis
sudah dapat dipenuhi oleh program karena setiap slot gen hanya dapat berisi 0
hingga 1 kelas matakuliah.
Pada method eksekusiAturan, kromosom akan dievaluasi tiap gennya. Ada
5 method yang merepresentasikan aturan penjadwalan matakuliah yang berlaku
dalam Prodi PGSD Universitas Sanata Dharma. Berikut penjelasan ke 5 method :
HC 2 : method cekDosen (parameter x bertipe kromosom)
1. Buat variabel posisi_jam bertipe array of int dengan panjangnya sesuai dengan jumlah_ruang kuliah.
3. Buat variabel jam bertipe int dengan nilai awal 1. 4. Buat variabel count bertipe int dengan nilai awal 0.
5. Untuk i sama dengan 0 hingga panjang posisi jam, lakukan langkah 6. 6. jika i sama dengan 0 maka set posisi_jam ke i sama dengan 0. Selain itu set
posisi_jam ke i bernilai posisi_jam ke [i-1] ditambah 4. 7. Ketika true, maka lakukan langkah 8.
8. Jika Gen ke count pada kromosom x harinya sama dengan hari yang ke 0 (senin), maka menambahkan nilai count dengan 1. Selain itu hentikan looping.
9. Untuk i = 1 hingga panjang hari, lakukan langkah 10-22. 10. Untuk b = 0 sampai kurang dari 4 lakukan langkah 11-19.
11. Untuk j = 0 sampai kurang dari jumlah ruang, lakukan langkah 12-17. 12. Untuk k = j +1 hingga jumlah ruang, lakukan langkah 13-17.
13. Buat variabel banding1 dan banding2 bertipe String. Dimana banding1 menyimpan idDosen dari gen ke posisi_jam ke j dan banding 2 menyimpan idDosen dari gen ke posisi_jam ke k.
14. Cek apakah banding1 sama dengan “-”. Jika ya maka program tidak melakukan apapun. jika tidak, lakukan langkah 15.
15. Cek apakah banding1 sama dengan banding2. Jika ya maka lakukan langkah 16-17.
16. Buat variabel fitness_awal bertipe int yang berisi nilai fitness dari data gen ke posisi_jam ke k.
17. Set nilai fitness gen ke posisi)jam ke k dengan fitness_awal +1; 18. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 19. 19. Set posisi_jam ke l sama dengan posisi_jam ke l +1.
20. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 21.
21. Cek apakah l sama dengan 0. Jika ya makan posisi_jam ke l = count. jika tidak maka posisi_jam ke l sama dengan posisi_jam ke l-1 ditambah 4. 22. Set count sama dengan count + count;
24. Selesai.
Gambar 3. 9 Algoritma HC2 (cekDosen)
HC 3 : method cekMatakuliah (parameter x bertipe kromosom)
1. Buat variabel array of int posisi_jam sepanjang jumlah_ruang.
2. Buat variabel hari bertipe array of String dengan isian adalah Hari kuliah (senin-jumat)
3. Buat variabel jam bertipe int set dengan nilai 1. 4. Buat variabel count bertipe int set dengan 0;
5. Untuk i sama dengan 0 hingga panjang posisi jam lakukan langkah 6
6. Cek apakah i sama dengan 0, Jika ya maka set posisi_jam ke i sama dengan 0.Jika tidak maka set posisi_jam ke i sama dengan posisi jam ke i-1 ditambah 4.
7. Ketika true, maka lakukan langkah 8.
8. Cek apakah Hari gen kromosom x ke count sama dengan hari ke 0 (hari senin). Jika ya maka count ditambah 1. Jika tidak maka berhenti looping. 9. Untuk i = 1 hingga panjang hari lakukan langkah 10-27
10. Untuk b = 0 hingga 4 lakukan langkah 11-24
11. Untuk j = 0 hingga jumlah_ruang, lakukan langkah 12-21 12. Untuk k = j +1 hingga jumlah_ruang, lakukan langkah 13-21
13. Buat variabel banding1 bertipe String set dengan idMk kromosom x gen ke posisi_jam ke j.
14. Buat variabel banding2 bertipe String set dengan idMk kromosom x gen ke posisi_jam ke k.
15. Buat variabel banding3 bertipe String set dengan semester kromosom x gen ke posisi_jam ke j.
16. Buat variabel banding4 bertipe String set dengan semester kromosom x gen ke posisi_jam ke k.
posisi_jam ke j.
18. Buat variabel banding8 bertipe String set dengan kelas kromosom x gen ke posisi_jam ke k.
19. Cek apakah banding1 sama dengan “-”. Jika ya, maka tidak menjalankan
apapun. Jika tidak, lakukan langkah 20-21.
20. Cek apakah banding3 sama dengan banding4, Jika ya cek juga apakah banding7 sama dengan banding8, jika ya maka buat variabel fitness_awal set dengan nilai fitness kromosom x gen ke posisi_jam ke k.
21. Set gen kromosom x data ke posisi_jam ke k dengan nilai_fitness +1. 22. Untuk l = 0 hingga panjang posisi_jam, lakukan langkah 22.
23. Cek apakah l sama dengan 0. Jika ya makan posisi_jam ke l = count. jika tidak maka posisi_jam ke l sama dengan posisi_jam ke l-1 ditambah 4. 24. Set count sama dengan count + count.
25. Untuk l = 0 hingga posisi_jam lakukan langkah 26.
26. Cek apakah l sama dengan 0, jika ya maka posisi_jam ke l sama dengan count. Jika tidak maka posisi_jam ke l sama dengan posisi jam ke l+1 ditambah 4.
27. Set count sama dengan count+count; 28. Kembalikan nilai x.
29. Selesai.
Gambar 3. 10 Algoritma HC3 (cekMatakuliah)
HC 4 : method cekJumlahMatakuliah(parameter x bertipe kromosom)
1. Buat variabel hari bertipe array of hari yang berisi hari senin - jumat. 2. Buat variabel jam bertipe int set dengan nilai 0.
3. Buat variabel count bertipe int set dengan nilai 0. 4. Buat variabel temp_count bertipe int set dengan nilai 0. 5. Buat variabel kel bertipe List<String> set dengan nilai null.
6. Membuat kelompok kelas dalam 1 semester kemudian masukkan kelompok
7. Ketika true maka lakukan langkah 8.
8. Cek apakah hari di Gen ke count sama dengan hari ke 0 (hari senin). Jika ya maka lakukan penambahan count dengan 1. Jika tidak, maka hentikan looping.
9. Set temp_count = count.
10. Untuk i = 0 hingga panjang hari, lakukan langkah 11-24
11. Untuk jam sama dengan jam hingga temp_count, Lakukan langkah 12-20. 12. Buat variabel banding2 bertipe String set dengan semester Data ke jam. 13. Buat variabel banding3 bertipe String set dengan kelas Data ke jam. 14. Untuk j = 0 hingga panjang kel, Lakukan langkah 15-20.
15. Buat variabel banding1 bertipe array String set dengan semester dan kelas yang didapat dari kel.
16. Cek apakah banding1 ke 0 sama dengan banding2 dan banding1 ke 1 sama dengan banding3. Jika ya, maka lakukan langkah 17-20
17. Buat variabel temp bertipe int set dengan banding1 ke2. 18. Set temp sama dengan temp+1.
19. Tambahkan nilai temp dan masukkan ke dalam kel sebagai penunjik banyaknya kelas dengan semester sama dalam 1 hari.
20. Cek apakah temp lebih besar dari 3. Jika ya maka pelanggaran ditambahkan di data ke jam.
21. Untuk j sama dengan 0 hingga panjang kel. Lakukan langkah 22-23. 22. Buat variabel temp. Pisahkan semester dan Kelas yang ada di kel ke j, 23. Set kel ke j dengan temp ke 0 dan temp ke 1 beserta angka 0 sebagai
penentu matakuliah semester yang berada dalam sehari. 24. Set temp_count sama dengan temp_count ditambah count. 25. Kembalikan nilai x.
26. Selesai
Gambar 3. 11 Algoritma HC4 (cekJumlahMatakuliah)
1. Buat variabel hari ebrtippe Array String dengan inputan Hari Senin hingga Jumat.
2. Buat variabel jam bertipe int set dengan 0. 3. Buat variabel count bertipe int set dengan 0. 4. Buat variabel temp_count bertipe int set dengan 0. 5. Buat variabel kel bertipe List<String> set dengan null.
6. Set kel dengan idDosen beserta angka 0 untuk semagai penyimpan dosen mengajar dalam sehari.
7. Lakukan looping untuk mencari rentang hari Senin pada kromosom dengan menambahkan count bernilai 1 setiap kali looping.
8. Set temp_count sama dengan count.
9. Untuk i = 0 hingga panjang hari, Lakukan langkah 10-20 10. Untuk jam = jam hingga temp_count lakukan langkah 11-18
11. Buat variabel banding2 bertipe String set dengan idDosen data ke jam. 12. Untuk j = 0 hingga panjang kel Lakukan langkah 13-18
13. Pisahkan kel ke j (idDosen dan jumlah dosen mengajar) dan masukkan ke dalam variabel banding1 bertipe Array String.
14. Cek apakah banding1 ke 0 sama dengan banding2. Jika ya maka lakukan langkah 15-18
15. buat variabel temp bertipe int. Simpan banding1 ke 1. 16. set temp sama dengan temp +1.
17. Masukkan temp ke dalam kel ke j. Menandakan bahwa idDosen ke j mengajar sebanyak tenp kali dalam seminggu.
18. Cek apakah temp lebih besar dari 3. Jika ya maka tambahkan nilai Pelanggaran ke dalam data ke jam.
19. Untuk j = 0 hingga panjang kel. Lakukan set jumlah dosen mengajar menjadi 0 tiap masing - masing idDosen.
20. Set temp_count sama dengan temp_Count ditambah count yang berfungsi untuk mengecek hari lainnya.
22. Selesai.
Gambar 3. 12 Algoritma HC5 (cekDosenMengajar)
3.2.1.3. Proses Regenerasi Pada Penjadwalan
Proses regenerasi adalah proses perubahan gen-gen generasi sekarang ke
gen generasi berikutnya. Proses Regenerasi meliputi Seleksi, Crossover, dan
Mutasi.
1. Seleksi
Seleksi merupakan proses penentuan dua kromosom yang akan
menjadi calon kandidat orang tua untuk membentuk kromosom baru. Pada
proses seleksi dilakukan model seleksi Roulette Wheel Selection dengan
mengacu pada nilai fitness tersebut. Semakin kecil nilai fitnessnya, maka
kromosom tersebut dipilih sebagai orang tua untuk populasi selanjutnya.
Dalam program akan menggunakan 4 kromosom dalam 1 populasi. Semakin
kecil jumlah fitness yang dimiliki kromosom tersebut, maka akan
berdampak pada pergeseran kromosom ke slot teratas. Semakin banyak nilai
fitness nya maka akan menduduki posisi terendah. Pada proses seleksi akan
menentukan 2 Kromosom terbaik untuk dijadikan orang tua. Berikut
Gambar 3. 13 Flowchart Roulette Wheel Selection
2. Perkawinan Silang (Crossover)
Crossover merupakan proses penggabungan dua kromosom yang
berasal dari dua orang tua terpilih. Hasil dari penggabungan ini akan
membentuk kromosom baru. Program aplikasi yang dibuat oleh penulis
menggunakan 4 Kromosom dalam 1 populasi dimana kromosom ke-1 dan
ke-2 adalah slot yang dikhususkan untuk kandidat orang tua terpilih. Seleksi
kromosom berdasarkan seleksi Roulette Wheel Selection. Sedangkan untuk
kromosom ke-3 dan ke-4 adalah slot kromosom yang akan digunakan untuk
digantikan dengan kromosom baru pada iterasi selanjutnya. Proses ini
terjadi karena seleksi alam. Untuk kasus Penjadwalan matakuliah prodi
PGSD, penulis akan menerapkan One Point Crossover. Berikut algoritma
crossover yang diterapkan pada Aplikasi penjadwalan :
Gambar 3. 14 Flowchart Crossover
Algoritma diatas menjelaskan bahwa setiap kromosom anak
(kromosom 2 dan 3) merupakan perpaduan gen kedua orang tuanya
(kromosom 0 dan 1). Pada One Point Crossover, Titik penenentu keturunan
kromosom. Pada kasus penjadwalam PGSD, nGen pada tiap kromosom
adalah 280. Sehingga point setiap kromosom adalah :
point = nGen / 2
= 280 / 2
= 140
Sehingga ilustrasi crossover adalah sebagai berikut :
Gambar 3. 15 Ilustrasi Crossover
Gambar diatas menjelaskan bahwa kromosom (parent) 2 dan 3
terjadi seleksi alam. Seleksi alam tersebut mengubah nilai allele (kelas mata
kuliah) dari nilai allele parent. Sehingga memungkinkan child memiliki
allele dari kedua induk.
3. Mutasi (Mutation)
Mutasi merupakan penukaran gen yang satu ke gen yang lain dalam
Mutasi biasa adalah mutasi yang tidak memperhatikan nilai fitness. Semua
gen memiliki probabilitas yang sama untuk dimutasi. Proses Mutasi
dilakukan atas berbagai pertimbangan diantaranya :
a. Terjadinya duplikasi Allele setelah melewati phase Crossover. Pada phase ini. Kromosom anak setelah di crossover akan
memungkinkan terjadinya duplikasi terhadap kelas kuliah yang sama.
Selain itu kromosom anak juga memungkinkan terjadi hilangnya allele
pada satu kromosom. Pada tahap ini, Mutasi berperan untuk
menghilangkan allele duplikat kemudian menggantinya dengan allele
yang hilang dalam satu kromosom. Proses mengganti allele yang
hilang dilakukan dengan cara random slot gen hingga mendapatkan
gen yang kosong.
b. Mempercepat kromosom untuk mencapai solusi.
Pada phase ini, mutasi berperan untuk membentuk kromosom
sehingga mencapai solusi. Langkah utama yang dilakukan adalah
memindahkan nilai Allele pada slot Gen tertentu ke slot Gen lain.
Proses perpindahan setiap Genetasi (iterasi) adalah 1 slot Gen pada
setiap kromosom anak.
3.3. Perancangan Proses
3.3.1. Spesifikasi Kebutuhan Perangkat Keras dan Perangkat Lunak
Untuk menjalankan aplikasi penjadwalan PGSD, Spesifikasi perangkat
keras dan perangkat lunak yang dibutuhkan adalah :
1. Perangkat Keras (Spesifikasi Minimum)
Processor : Intel Pentium IV, 1 Ghz
Memori : 512 MB
HDD : 16 GB
2. Perangkat Lunak : Windows XP atau diatasnya.
3.3.2. Use Case
SEKRETARIAT
Tambah Matakuliah
Rubah Matakuliah
Hapus Matakuliah
<<extend>> DATA
MATAKULIAH
<<extend>> <<extend>>
Tambah Ruang
Rubah Ruang
Hapus Ruang
DATA RUANG
<<extend>>
<<extend>>
<<extend>>
Tambah Dosen
Rubah Dosen
Hapus Dosen
DATA DOSEN
<<extend>>
<<extend>>
<<extend>>
BUAT KELAS KULIAH
<<depends on>>
<<depends on>>
BUAT KELAS PERMINTAAN
<<depends on>>
PENJADWALAN
<<depends on>>
Gambar 3. 17 Use Case Diagram
Narasi Use Case
Tabel 3. 4 Narasi Tambah Matakuliah
Nama use case Tambah MataKuliah
Aktor Sekretariat
Diskripsi Pengguna memasukkan data Matakuliah Prakondisi Mengaktifkan aplikasi
kerja 1. User memasukkan data matakuliah dan mengklik tombol simpan.
2. Sistem mengecek setiap data yang dimasukan. 3. Jika data lengkap, sistem
menyimpan data tersebut kedalam database
matakuliah.
Alternate 3. Jika tidak lengkap, sistem
akan menyampaikan pesan untuk melengkapi data.
Tabel 3. 5 Narasi Rubah Matakuliah
Nama use case Rubah MataKuliah
Aktor Sekretariat
Diskripsi Pengguna mengubah data Matakuliah Prakondisi Mengaktifkan aplikasi
Langkah kerja
Aksi aktor Reaksi sistem
1. User mengklik baris pada tabel matakuliah.
4. User mengganti data di dalam text field. 5. User Mengklik tombol
rubah.
2. Sistem menampilkan data matakuliah kedalam text field.
3. Sistem menampilkan tombol Rubah.
6. Sistem menyimpan data terbaru kedalam database.
Alternate 6. Jika text field kosong,
sistem akan menyampaikan pesan untuk melengkapi data.
Tabel 3. 6 Narasi Hapus Matakuliah