Penjadwalan kelas mata kuliah menggunakan Algoritma Simulated Annealing (SA) : studi kasus Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma Yogyakarta.

(1)

ABSTRAK

Pembuatan jadwal kelas matakuliah di PGSD Universitas Sanata Dharma saat ini masih menggunakan cara manual. Data-data yang dibutuhkan untuk membuat jadwal kelas matakuliah adalah data dosen, matakuliah, ruang, hari, dan waktu. Dari data ini PGSD membuat jadwal kelas matakuliah secara manual. Cara ini dapat dilakukan tetapi akan membutuhkan waktu yang lama. Dari latar belakang tersebut, maka dibuat sebuah aplikasi penjadwalan kelas matakuliah menggunakan algoritma Simulated Annealing. Semua data-data yang dibutuhkan dimasukkan kedalam aplikasi dan aplikasi akan memproses pembuatan jadwal kelas matakuliah.

Permasalahan yang ingin diselesaikan disini adalah seberapa efektif algoritma Simulated Annealing dalam membuat jadwal kelas matakuliah. Efektif dilihat dari lama proses waktu, banyak ruang yang digunakan, dan tingkat presentasi hasil akhir. Adapun metode penelitian yang digunakan adalah studi kasus di PGSD dan menggunakan data jadwal yang telah dibuat pada semester ganjil 2014/2015. Uji coba dilakukan dengan mengurangi jumlah ruang. Hasil akhir yang diperoleh adalah sebuat jadwal kelas matakuliah dalam satu semester tanpa terjadi pelanggaran hard constraint maupun soft constraint yang diterapkan serta seluruh jadwal permintaan terpenuhi. Setelah dilakukan uji coba dengan mengurangi jumlah ruang diperoleh kesimpulan bahwa penjadwalan kelas matakuliah menggunakan algoritma SA ini mampu secara efektif waktu membuat jadwal kelas matakuliah dalam rasio maksimal 87% dan efesien penggunaan ruang dalam rasio maksimal 98%.


(2)

ABSTRACT

Making the class schedule of the subject in the Pendidikan Guru Sekolah Dasar of Sanata Dharma University is still using manual ways. The data needs in order to make the class schedule of the subject is based on the lecturer data, the subject, the space, the day, and the time. The Pendidikan Guru Sekolah Dasar side makes the class schedule of the subjects from this data manually. This way can be done however it needs a longer time to fix it. Based on the background of the research, the researcher tries to make an application of the class schedule of the subject using the Simulated Annealing algorithm. All the necessary data put into the application and then the application will process the making of class schedule of the subject.

The problem that will be done in this research is how the Simulated Annealing algorithm effectively uses in making the class schedule of the subjects. The effectiveness is shown by the time process, the plenty space used, and the results of the level of present age. Therefore, the research method used in this research is a case study in the Pendidikan Guru Sekolah Dasar and it is using by the data of the schedule that has been created on the odd semester 2014/2015. The trial is done by decreasing the number of space.

The result is a class schedule of the subject in one semester without any infraction happen of the hard constraint as well as the soft constraint, which applied along the whole request schedule is complete. After the trialling is done by decreasing the number of space, the researcher concludes that the scheduling class of the subject using SA algorithm is able to make the class schedule of the subject effectively used in maximum ratio of 87% and efficiently used in maximum ratio of 98%.


(3)

PENJADWALAN KELAS MATA KULIAH MENGGUNAKAN ALGORITMA SIMULATED ANNEALING (SA)

Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma Yogyakarta.

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer

Program Studi teknik Informatika

Disusun oleh Aweng 105314066

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA YOGYAKARTA


(4)

i

CLASS SCHEDULING COURSES USING SIMULATED ANNEALING ALGORITHM

Case Study at Primary School Teacher Education Study Program

Sanata Dharma University

THESIS

Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Komputer Degree

In Informatics Engineering

By : Aweng 105314066

INFORMATION ENGINEERING STUDY PROGRAM FACULTY OF SCIENCE AND TECHNOLOGY DEPARTMENT OF INFORMATICS ENGINEERING

SANATA DHARMA UNIVERSITY YOGYAKARTA


(5)

ii


(6)

iii


(7)

iv

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa dalam skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, 14 Januari 2015 Penulis,


(8)

v

HALAMAN PERSEMBAHAN

Karya ini saya persembahkan kepada :

Tuhan Yesus Kristus, terimakasih atas semua penyertaanmu dalam hidupku sampai saat ini.

Bapak, Ibu, Abang-abangku, Adik-adikku, dan Keluarga Besar dari Kakek dan Nenekku semuanya.


(9)

vi

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Aweng

Nim : 105314066

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah yang berjudul :

PENJADWALAN KELAS MATA KULIAH MENGGUNAKAN ALGORITMA SIMULATED ANNEALING (SA)

Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma Yogyakarta.

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data mendistribusikan secara terbatas, dan mempublikasikan di Internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini saya buat dengan semestinya. Dibuat di Yogyakarta,

Pada tanggal : 14 Januari 2015 Yang menyatakan,


(10)

vii

LEMBAR PERNYATAAN PENGGUNAAN SOURCE CODE PROGRAM TUGAS AKHIR

Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Aweng

Nim : 105314066

Demi pengembangan sistem informasi Universitas Sanata Dharma, saya memberikan kepada Biro Administrasi dan Perencanaan Sistem Informasi (BAPSI) berupa source code program hasil karya ilmiah yang berjudul :

PENJADWALAN KELAS MATA KULIAH MENGGUNAKAN ALGORITMA SIMULATED ANNEALING (SA)

Studi Kasus : Program Studi Pendidikan Guru Sekolah Dasar (PGSD) Universitas Sanata Dharma Yogyakarta.

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada BAPSI hak untuk menggunakan dan mengembangkan untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai penulis. Dengan ketentuan tidak mempergunakan source code program hasil karya ilmiah ini untuk kepentingan diluar Universitas Sanata Dharma.

Demikian pernyataan ini saya buat dengan semestinya. Dibuat di Yogyakarta,

Pada tanggal : 14 Januari 2015 Yang menyatakan,


(11)

viii

ABSTRAK

Pembuatan jadwal kelas matakuliah di PGSD Universitas Sanata Dharma saat ini masih menggunakan cara manual. Data-data yang dibutuhkan untuk membuat jadwal kelas matakuliah adalah data dosen, matakuliah, ruang, hari, dan waktu. Dari data ini PGSD membuat jadwal kelas matakuliah secara manual. Cara ini dapat dilakukan tetapi akan membutuhkan waktu yang lama. Dari latar belakang tersebut, maka dibuat sebuah aplikasi penjadwalan kelas matakuliah menggunakan algoritma Simulated Annealing. Semua data-data yang dibutuhkan dimasukkan kedalam aplikasi dan aplikasi akan memproses pembuatan jadwal kelas matakuliah.

Permasalahan yang ingin diselesaikan disini adalah seberapa efektif algoritma Simulated Annealing dalam membuat jadwal kelas matakuliah. Efektif dilihat dari lama proses waktu, banyak ruang yang digunakan, dan tingkat presentasi hasil akhir. Adapun metode penelitian yang digunakan adalah studi kasus di PGSD dan menggunakan data jadwal yang telah dibuat pada semester ganjil 2014/2015. Uji coba dilakukan dengan mengurangi jumlah ruang.

Hasil akhir yang diperoleh adalah sebuat jadwal kelas matakuliah dalam satu semester tanpa terjadi pelanggaran hard constraint maupun soft constraint yang diterapkan serta seluruh jadwal permintaan terpenuhi. Setelah dilakukan uji coba dengan mengurangi jumlah ruang diperoleh kesimpulan bahwa penjadwalan kelas matakuliah menggunakan algoritma SA ini mampu secara efektif waktu membuat jadwal kelas matakuliah dalam rasio maksimal 87% dan efesien penggunaan ruang dalam rasio maksimal 98%.


(12)

ix

ABSTRACT

Making the class schedule of the subject in the Pendidikan Guru Sekolah

Dasar of Sanata Dharma University is still using manual ways. The data needs in

order to make the class schedule of the subject is based on the lecturer data, the subject, the space, the day, and the time. The Pendidikan Guru Sekolah Dasar side makes the class schedule of the subjects from this data manually. This way can be done however it needs a longer time to fix it. Based on the background of the research, the researcher tries to make an application of the class schedule of the subject using the Simulated Annealing algorithm. All the necessary data put into the application and then the application will process the making of class schedule of the subject.

The problem that will be done in this research is how the Simulated Annealing algorithm effectively uses in making the class schedule of the subjects. The effectiveness is shown by the time process, the plenty space used, and the results of the level of present age. Therefore, the research method used in this research is a case study in the Pendidikan Guru Sekolah Dasar and it is using by the data of the schedule that has been created on the odd semester 2014/2015. The trial is done by decreasing the number of space.

The result is a class schedule of the subject in one semester without any infraction happen of the hard constraint as well as the soft constraint, which applied along the whole request schedule is complete. After the trialling is done by decreasing the number of space, the researcher concludes that the scheduling class of the subject using SA algorithm is able to make the class schedule of the subject effectively used in maximum ratio of 87% and efficiently used in maximum ratio of 98%.


(13)

x

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, sehingga penulis dapat mmenyelesaikan tugas akhir sebagai salah satu mata kuliah wajib dan merupakan syarat akademik pada jurusan Teknik Informatika Universitas Sanata Dharma Yogyakarta.

Pada kesempatan ini, penulis ingin mengucapkan terimakasih kepada pihak-pihak yang telah membantu penulis baik selama penelitian maupun selama pengerjaan tugas akhir ini. Ucapan terimakasih penulis sampaikan diantaranya kepada :

1. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T., sebagai dosen pembimbing Tugas Akhir.

2. Dosen-Dosen Teknik Informatika, terimakasih telah memberi ilmu pengetahuan dan pengalaman.

3. Sekretariat PGSD Sanata Dharma, terimakasih telah memberi data untuk penelitian dan menjadi tempat penelitian ini.

4. Orang tua, Paulus Aban dan Margareta Awi atas dukungan moral, spiritual dan finansial dalam penyusunan skripsi.

5. Seluruh teman-teman Teknik Informatika, terutama H.Roy Wiranta, Damai Kurnia A., Antonius R.P., Kristopel. Atas masukkan dan dukungannya.

6. Edy C., Andrianus, Sasly, Sesco, Titus, Hengky C, Ahiun, Leo, Ana, dan Uci Wijayanti. Atas dukungannya.


(14)

xi

8. Semua pihak yang tidak yang tidak dapat disebutkan satu per satu yang telah membantu dalam penulisan skripsi ini.

Akhirnya penulis berharap semoga skripsi ini dapat berguna bagi pembaca.

Yogyakarta, 14 Januari 2015 Penulis,


(15)

xii

DAFTAR ISI

HALAMAN PERSETUJUAN ... ii

PERNYATAAN KEASLIAN KARYA ... iv

HALAMAN PERSEMBAHAN ...v

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ... vi

LEMBAR PERNYATAAN PENGGUNAAN SOURCE CODE PROGRAM TUGAS AKHIR ... vii

ABSTRAK ... viii

KATA PENGANTAR ... x

DAFTAR ISI ... xii

DAFTAR GAMBAR ... xv

DAFTAR TABEL... xviii

BAB I ... 1

PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Batasan Masalah ... 3

1.4. Tujuan Penelitian ... 3

1.5. Metodologi Penelitian ... 3

1.6. Sistematika Penulisan ... 4

BAB II ... 6

LANDASAN TEORI ... 6

2.1. Penjadwalan ... 6

2.2. Simulated Annealing (SA) ... 6

2.3. Algoritma Simulated Annealing. ... 7

2.4. Komponen Simulated Annealing. ... 9

2.4.1. Jadwal Pendingin. ... 9

2.4.1.1. Temperatur Awal. ... 10

2.4.1.2. Temperatur Akhir... 11


(16)

xiii

2.4.1.4. Jumlah Iterasi pada Setiap Temperatur. ... 13

2.4.2. Fungsi Biaya. ... 13

2.4.3. Struktur Ketetanggaan. ... 15

2.4.4. Ruang solusi. ... 16

BAB III ... 17

ANALISIS DAN PERANCANGAN SISTEM ... 17

3.1 Analisis Sistem ... 17

3.1.1. Analisis Masalah. ... 17

3.1.2. Aturan Penjadwalan ... 18

3.2 Pemodelan Simulated Annealing untuk Penjadwalan Kelas Matakuliah. ... 19

3.2.1. Menetapkan Jadwal Awal (Initial state). ... 19

3.2.2. Menetapkan Temperatur Awal, Nilai Reduksi Suhu, dan Jumlah Iterasi. .... 32

3.2.3. Proses pencarian jadwal baru ( Solusi Baru ). ... 36

3.2.4. Perhitungan Fungsi biaya (Jumlah Pelanggaran) dari Hard Constraints dan Soft Constraints.... 42

3.3 Perangkat Keras dan Perangkat Lunak ... 49

3.4 Perancangan Sistem ... 49

3.5 Perancangan Basis Data. ... 75

3.6 Perancangan Menu Antar Muka ... 95

BAB IV ... 106

IMPLEMENTASI DAN ANALISA HASIL ... 106

4.1. Implementasi. ... 106

4.1.1. Implementasi Kelas. ... 106

4.1.1.1. Implementasi Kelas Model. ... 106

4.1.1.2. Implementasi Kelas View. ... 107

4.1.1.3. Implementasi Kelas Kontrol. ... 108

4.1.2. Implementasi Algoritma Simulated Annealing (SA). ... 109

4.1.3. Implementasi User Interface. ... 114

4.1.4.1. Kelola DataBase... 114

4.1.4.2. Buat Jadwal Kuliah. ... 149

4.1.4.3. Lihat Jadwal Kuliah. ... 174

4.1.4.4. Menu Bantuan. ... 178


(17)

xiv

4.2.1. Hasil Pengujian Terhadap Penggunaan Ruang. ... 180

4.2.2. Rangkuman dari Pengujian Terhadap penggunaan Ruang. ... 183

4.2.3. Sampel Jadwal ... 185

4.3. Analisa. ... 185

BAB V ... 188

PENUTUP ... 188

5.1. Kesimpulan. ... 188

5.2. Saran. ... 188

DAFTAR PUSTAKA ... 189


(18)

xv

DAFTAR GAMBAR

Gambar 3. 1 Pemodelan Vektor untuk membuat jadwal awal ... 21

Gambar 3. 3 Diagram Use Case... 50

Gambar 3. 4 Tampilan Halaman Utama ... 95

Gambar 3. 5 Tampilan Pengelolaan Matakuliah ... 96

Gambar 3. 6 Tampilan Pengelolaan Dosen ... 97

Gambar 3. 7 Tampilan Pengelolaan Ruang ... 97

Gambar 3. 8 Tampilan Pengelolaan Waktu dan Hari ... 98

Gambar 3. 9 Tampilan Proses tahap 1 ... 99

Gambar 3. 10 Tampilan Proses tahap 2,4,6,8 ... 100

Gambar 3. 11 Tampilan tambah matakuliah ... 100

Gambar 3. 12 Tampilan konfirmasi pembagian kelas... 101

Gambar 3. 13 Tampilan Proses Tahap 3,5,7,9 ... 102

Gambar 3. 14 Tampilan memilih Dosen pegampu ... 102

Gambar 3. 15 Tampilan Proses tahap 10 ... 103

Gambar 3. 16 Tampilan Proses tahap 11 ... 104

Gambar 3. 17 Tampilan Lihat Jadwal Kuliah ... 104

Gambar 4. 1 Halaman Awal/Beranda ... 114

Gambar 4. 2 menambah matakuliah ... 115

Gambar 4. 3 pemberitahuan berhasil. ... 116

Gambar 4. 4 list matakuliah ... 117

Gambar 4. 5 update matakuliah ... 117

Gambar 4. 6 pemberitahuan ter-update ... 118

Gambar 4. 7 list matakuliah ... 119

Gambar 4. 8 hapus matakuliah ... 119

Gambar 4. 9 pemberitahuan terhapus ... 120

Gambar 4. 10 list matakuliah ... 121

Gambar 4. 11 import excel matakuliah ... 122

Gambar 4. 12 pemberitahuan berhasil di import. ... 125

Gambar 4. 13 format excel matakuliah ... 125

Gambar 4. 14 menambah dosen ... 126

Gambar 4. 15 pemberitahuan berhasil ditambah ... 127

Gambar 4. 16 list dosen ... 127

Gambar 4. 17 update dosen ... 128

Gambar 4. 18 pemberitahuan dosen ter-update ... 129

Gambar 4. 19 list dosen ... 129

Gambar 4. 20 hapus dosen ... 130

Gambar 4. 21 pemberitahuan terhapus ... 130

Gambar 4. 22 list dosen ... 131

Gambar 4. 23 import excel dosen. ... 133

Gambar 4. 24 pemberitahuan berhasil di import. ... 135


(19)

xvi

Gambar 4. 26 menambah ruang ... 136

Gambar 4. 27 pemberitahuan berhasil ditambah ... 137

Gambar 4. 28 list ruang ... 138

Gambar 4. 29 update ruang ... 138

Gambar 4. 30 pemberitahuan ter-update ... 139

Gambar 4. 31 list ruang ... 140

Gambar 4. 32 hapus ruang... 140

Gambar 4. 33 pemberitahuan terhapus ... 141

Gambar 4. 34 list ruang ... 141

Gambar 4. 35 import excel ruang ... 143

Gambar 4. 36 pemberitahuan berhasildi import ... 145

Gambar 4. 37 format excel ruang ... 146

Gambar 4. 38 waktu dan hari ... 147

Gambar 4. 39 Proses Tahap 1 ... 149

Gambar 4. 40 Proses Tahap 2 ... 150

Gambar 4. 41 penambahan matakuliah ... 151

Gambar 4. 42 konfirmasi matakuliah ... 152

Gambar 4. 43 pembagian kelas ... 152

Gambar 4. 44 konfirmasi pembagian kelas ... 154

Gambar 4. 45 Proses Tahap 3 ... 154

Gambar 4. 46 Memilih Dosen Pegampu ... 157

Gambar 4. 47 Proses Tahap 4 ... 157

Gambar 4. 48 Penambahan Matakuliah ... 158

Gambar 4. 49 Konfirmasi matakuliah ... 158

Gambar 4. 50 Pembagian Kelas ... 158

Gambar 4. 51 Konfirmasi pembagian kelas ... 159

Gambar 4. 52 Proses Tahap 5 ... 159

Gambar 4. 53 Memilih Dosen Pegampu ... 160

Gambar 4. 54 Proses Tahap 6 ... 160

Gambar 4. 55 Penambahan Matakuliah ... 161

Gambar 4. 56 Konfirmasi matakuliah ... 161

Gambar 4. 57 Pembagian Kelas ... 162

Gambar 4. 58 Konfirmasi pembagian kelas ... 162

Gambar 4. 59 Proses tahap 7 ... 163

Gambar 4. 60 Memilih Dosen Pegampu ... 163

Gambar 4. 61 Proses tahap 8 ... 164

Gambar 4. 62 Penambahan Matakuliah ... 164

Gambar 4. 63 Konfirmasi matakuliah ... 165

Gambar 4. 64 Pembagian Kelas ... 165

Gambar 4. 65 Konfirmasi pembagian kelas ... 165

Gambar 4. 66 proses tahap 9 ... 166

Gambar 4. 67 Memilih Dosen Pegampu ... 166

Gambar 4. 68 Proses tahap 10 ... 167


(20)

xvii

Gambar 4. 70 Memilih kelas matakuliah ... 169

Gambar 4. 71 Memilih waktu permintaan ... 169

Gambar 4. 72 Memilih Ruang ... 169

Gambar 4. 73 penambahan jadwal permintaan ... 170

Gambar 4. 74 Konfirmasi jadwal permintaan ... 170

Gambar 4. 75 Proses Tahap 11 ... 171

Gambar 4. 76 pemberitahuan pembuatan telah selesai ... 174

Gambar 4. 77 Jadwal Kuliah ... 174

Gambar 4. 78 menu bantuan ... 178

Gambar 4. 79 Grafik Rangkuman Pengujian rata-rata waktu ... 183


(21)

xviii

DAFTAR TABEL

Tabel 3. 1 Penjelasan model koordinat yang akan terbentuk. ... 22

Tabel 3. 2 Tabel Jadwal Awal. ... 23

Tabel 4. 1 Implementasi Kelas Model ... 106

Tabel 4. 2 Implementasi kelas View ... 107

Tabel 4. 3 Implementasi Kelas Kontrol ... 108

Tabel 4. 4 Hasil pengujian dengan 13 ruang ... 181

Tabel 4. 5 Hasil Rangkuman dari rata-rata waktu penyelesaian ... 183

Tabel 4. 6 Hasil Rangkuman dari presentasi hasil ... 184

Tabel 4. 7 Pengujian menggunakan 12 ruang ... 190

Tabel 4. 8 Pengujian menggunakan 11 ruang ... 191

Tabel 4. 9 Pengujian menggunakan 10 ruang ... 191

Tabel 4. 10 Pengujian menggunakan 9 ruang ... 192

Tabel 4. 11 Pengujian menggunakan 8 ruang ... 192

Tabel 4. 12 Pengujian menggunakan 8 ruang dengan ditambah 10 permintaan ... 193

Tabel 4. 13 Pengujian menggunakan 8 ruang dengan ditambah matakuliah ... 193

Tabel 5. 1 Hari dan Waktu. ... 194

Tabel 5. 2 Timeslot ... 194

Tabel 5. 3 Ruang Teori ... 195

Tabel 5. 4 Dosen... 196

Tabel 5. 5 Matakuliah ... 197

Tabel 5. 6 Kelas Matakuliah ... 202


(22)

1

BAB I

PENDAHULUAN

1.1. Latar Belakang

Penjadwalan kelas mata kuliah merupakan salah satu permasalahan yang penting dalam suatu lembaga pendidikan. Karena penjadwalan merupakan suatu sistem penempatan hari, waktu dan ruang kelas dalam proses suatu kegiatan belajar mengajar. PGSD menyusun jadwal kelas mata kuliah masih menggunakan cara manual. Cara manual dapat saja dilakukan, meskipun mendapatkan hasil sesuai dengan yang diinginkan, cara ini membutuhkan waktu yang lama dan ketelitian maksimal. Begitu juga, jika terjadi perubahan jadwal karena hal tertentu, tentu akan membutuhkan waktu yang lama untuk menyusun ulang penjadwalan tersebut. Proses penjadwalan kuliah ini terdiri dari beberapa komponen yaitu matakuliah yang ditawarkan, dosen, hari, waktu dan ruang. Hasil yang diharapkan adalah jadwal kelas mata kuliah yang sesuai, sehingga tidak terjadi bentrok baik antara jadwal perkuliahan tertentu maupun jadwal bagi dosen pengajar matakuliah.

Dalam penelitian pembuatan penjadwalan kelas mata kuliah ini digunakan algoritma Simulated Annealing (SA). Menurut [Mariana, M.,dkk, 2013], penghapusan rumus exponen yaitu exp ((δ/t) ≤ rand [0,1]


(23)

2

optimal. Menurut [Sad H, Sugeng, 2012], penggunaan metode SA untuk optimasi penjadwalan sangat baik, yaitu dengan parameter hasil uji coba pengontrol jadwal temperatur (T) = 5000 dan produksi jadwal (α) = 0.9, SA dapat mengoptimalkan batasan-batasan penjadwalan sampai dengan 100% baik itu soft constraint maupun hard constraint dan membutuhkan waktu yang relatif lebih singkat rata-rata 00:25:00 menit serta tingkat kesalahan 0% sebanyak 5 kali percobaan berturut-turut sehingga dalam penyusunan jadwal lebih efektif.

Pembuatan penjadwalan kelas mata kuliah memiliki aturan-aturan tersendiri untuk memenuhi keinginan dari pihak kampus. Aturan-aturan tersebut antara lain ; tidak terjadi tabrakan waktu, ruang, dosen, kelas, permintaan jadwal dosen, dan batas kuota sistem kredit semester (sks) dosen mengajar. Oleh karena itu, dengan adanya penambahan aturan-aturan ini dapat lebih memaksimalkan lagi dalam proses pembuatan penjadwalan kelas mata kuliah ini.

1.2. Rumusan Masalah

1. Bagaimana menerapkan algoritma Simulated Annealing untuk menyelesaikan masalah penjadwalan kelas mata kuliah ?

2. Seberapa efektif algoritma Simulated Annealing untuk pembuatan jadwal kelas mata kuliah?


(24)

3

1.3. Batasan Masalah

1. Studi kasus di program studi PGSD Universitas Sanata Dharma. 2. Informasi penjadwalan kelas mata kuliah yang dihasilkan hanya 1

semester (genap/ganjil) untuk Program Studi PGSD.

1.4. Tujuan Penelitian

1. Membuat Aplikasi Penjadwalan Kelas Mata Kuliah. 2. Menghasilkan Penjadwalan Kelas Mata Kuliah.

3. Meningkatkan kecepatan waktu proses pembuatan penjadwalan kelas mata kuliah.

1.5. Metodologi Penelitian

Metode yang digunakan dalam menyusun jadwal mata kuliah PGSD adalah metode Sistem Development Life Cycle (Paradigma

Waterfall). Metode ini terdiri dari berbagai tahap :

1. Analisis Kebutuhan

Pada tahap ini, akan dilakukan Identifikasi tentang kebutuhan sistem serta pengumpulan data–data yang diperlukan dalam proses penjadwalan.

2. Perancangan Sistem

Pada tahap ini, akan dilakukan penerjemahan rancangan sistem kedalam perangkat lunak. Proses perancangan meliputi Perancangan


(25)

Sistem, desain Basis Data, user interface dan rancangan implementasi program.

3. Implementasi/Penulisan Program

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, batasan masalah, tujuan, metodologi penelitian, dan sistematika penulisan.

BAB II : LANDASAN TEORI

Bab ini berisi tentang teori Algortima Simulated Annealing yang menjadi dasar dalam pembuatan sistem penjadwalan kelas mata kuliah di PGSD.

BAB III : ANALISA DAN PERANCANGAN SISTEM

Bab ini berisi tentang analisis dan perancangan sistem yang akan di buat, serta meliputi analisis data penjadwalan, aturan dalam


(26)

proses penjadwalan, dan penjelasan algoritma Simulated

Annealing dalam menyelesaikan penjadwalan kelas mata kuliah.

BAB IV : IMPLEMENTASI DAN ANALISA HASIL

Bab ini berisi tentang implementasi dari perancangan pada Bab III. Implementasi tersebut meliputi tampilan program (input dan output) dan analisa dari progam tersebut.

BAB V : KESIMPULAN DAN SARAN

Bab ini berisi tentang kesimpulan dan saran dari sistem yang telah di buat berdasarkan pada bab-bab sebelumnya.


(27)

6

BAB II

LANDASAN TEORI

2.1. Penjadwalan

Penjadwalan memiliki beberapa definisi, berikut beberapa definisi yang dikemukakan para ahli, diantaranya:

Menurut [Setiawan, Ebta., 2012], Penjadwalan memiliki kata dasar jadwal, yang artinya pembagian waktu berdasarkan pengaturan urutan kerja; daftar atau tabel kegiatan atau rencana kegiatan dengan pembagian waktu pelaksanaan yang terperinci. Sedangkan untuk penjadwalan memiliki arti proses, cara, perbuatan menjadwalkan atau memasukkan di jadwal

Penjadwalan adalah pengambilan suatu keputusan dalam penyesuaian aktivitas dan sumber daya untuk menyelesaikan sekumpulan pekerjaan agar mempunyai kualitas yang diinginkan. Keputusan yang dibuat di dalam penjadwalan adalah pengurutan pengerjaan, waktu mulai dan waktu selesai, serta urutan operasi suatu pekerjaan.

2.2. Simulated Annealing (SA)

Menurut [Mariana, M.,dkk, 2013], Simulated Annealing (SA) adalah teknik optimalisasi numerik dengan prinsip thermo-dynamic. Kinerja SA sangat bergantung pada solusi awal, lingkungan pencarian dan proses pendinginan. Algoritma SA diperkenalkan oleh Metropolis et al


(28)

pada tahun 1953, dan aplikasi algoritma SA mulai dikembangkan dalam masalah optimalisasi pada tahun 1983 oleh Kirkpatrick et al.

Dalam sistem termodinamika, SA menggunakan persamaan Boltzman. Persamaan ini merepresentasikan probabilitas suatu new state yang lebih buruk dari current state yang masih mungkin terpilih sebagai

next state. SA dikembangkan berdasarkan ide dari mekanisme perilaku

pendinginan dan proses kristalisasi (annealing) material panas.

Algoritma SA melakukan peningkatan iteratif untuk memperbaiki solusi yang dihasilkan teknik-teknik penjadwalan heuristic, dalam hal ini adalah sebuah solusi awal yang dibuat dengan teknik heuristic ataupun random diiterasi secara berulang dengan metode annealing dengan menggunakan perturbasi local hingga tidak ada peningkatan lagi atau hingga jumlah iterasi yang diinginkan sudah dicapai.

Algoritma SA menerima solusi baru jika biaya baru lebih rendah dari pada biaya solusi saat ini di setiap iterasi. Dengan kriteria tersebut, SA memungkinkan terhindar dari jebakan minimum lokal, hali ini menjadi salah satu kelebihan SA dibandingkan dengan metode penjadwalan lain.

2.3. Algoritma Simulated Annealing.

Menurut [Suyanto, 2010], struktur algoritma Simulated Annealing adalah sebagai berikut :


(29)

Keterangan :

1. Evaluasi initial state. Jika state ini adalah goal state, maka kembalikan state ini sebagai solusi dari keluar dari program. Jika bukan, lanjutkan dengan initial state sebagai current state. 2. Inisialisasi BEST-SO-FAR dengan current state.

3. Inisialisasi T sesuai dengan annealing schedule.

4. Ulangi sampai solusi tidak ditemukan atau tidak ada lagi aturan produksi yang bisa diaplikasikan ke current state.

a. Pilih sebuah aturan produksi yang belum pernah diaplikasikan ke current state dan aplikasikan aturan produksi tersebut untuk menghasilkan new state.

b. Evaluasi new state. Hitung : E= f(new state)-f(current state)

Jika new state adalah goal, maka kembalikan state ini sebagai solusi dan keluar dari program.

Jika new state ini bukan goal tetapi lebih baik dari pada

current state (∆E<0), maka set current state ke new state. Juga BEST-SO-FAR ke new state.

Jika new state tidak lebih baik daripada current state (∆E≥0), maka set current state ke new state dengan

probabilitas p(∆E)= exp(-∆E/T) > r. langkah ini biasanya diimplementasikan dengan membangkitkan sebuah bilangan acak r dalam interval [0,1]. Jika r kurang dari p, maka set current state ke new state. Jika r lebih besar daripada p, maka jangan mengerjakan apapun.

c. Jika diperlukan, revisi nilai T berdasarkan annealing

schedule.


(30)

1. BEST-SO-FAR, adalah state terbaik/solusi terbaik. 2. T, adalah temperatur awal/suhu awal.

3. Pilih aturan produksi yang belum diaplikasikan ke current state untuk menghasilkan new state, yaitu sebuah metod pencarian new state, dari

current state dengan menggunakan struktur ketetanggaan untuk

menghasilkan new state.

4. ∆E= f(new state)-f(current state)

- ∆E = delta evaluation/delta energy ( menyatakan fungsi biaya ). - f(new state) = fungsi biaya dari new state.

- f(current state) = fungsi biaya dari current state. 5. p(∆E)= exp(-∆E/T) > r

- exp = fungsi exponen.

- r = bilangan acak antara 0 dan 1.

6. Revisi nilai T, yaitu penurunan suhu awal dengan rumus (2.1).

2.4. Komponen Simulated Annealing.

Menurut [Suyanto, 2010], SA memiliki empat komponen yang harus dirancang secara hati-hati, yaitu: jadwal pendingin, fungsi biaya, struktur ketetanggaan, dan ruang solusi.

2.4.1. Jadwal Pendingin.

Jadwal pendinginan merupakan komponen yang sangat kritis. Komponen (nilai-nilai parameter) ini terdiri dari: temperatur awal,


(31)

temperatur akhir, penurunan temperatur, dan jumlah iterasi pada setiap temperatur.

2.4.1.1. Temperatur Awal.

Temperatur/suhu awal adalah nilai parameter yang harus diterapkan untuk mengoptimal proses simulated annealing. Pada dasarnya temperatur/suhu awal seharusnya cukup panas atau tinggi agar SA dapat memilih hampir semua state tetangga. Penentuan temperatur awal ini harus dilakukan secara hati-hati dan disesuaikan dengan masalah yang dihadapi.

Jika temperatur awal terlalu dingin atau rendah, solusi akhir yang dihasilkan kemungkinan akan sama (atau sangat dekat) dengan solusi awal. Sebaliknya, jika temperatur awal terlalu panas atau tinggi, pencarian dapat bergerak ke setiap state tetangga.

Dalam kasus ini, SA akan sama saja dengan pencarian acak (random search) pada awal iterasi. Sedangkan pada iterasi berikutnya, pencarian akan mengarah pada simulated annealing ketika temperatur sudah cukup dingin.

Dalam menentukan temperatur awal secara tepat hingga saat ini belum ada satupun metode yang secara akurat dapat menentukan temperatur awal untuk semua masalah. Tetapi, beberapa pakar mengusulkan beragam cara berbeda, diantaranya adalah:

Jika mengetahui jarak maksimmum (perbedaan fungsi biaya) antara satu tetangga dengan tetangga yang lain, maka dapat


(32)

menggunakan informasi tersebut untuk menghitung temperatur awal. Mulai dengan temperatur awal yang tinggi dan mendinginkannya secara cepat sehingga 60% new state (solusi baru) yang lebih buruk dapat terpilih [Morton,dkk, 1993]. Cara ini dapat menghasilkan temperatur awal yang sebenarnya dan selanjutnya temperatur tersebut dapat didinginkan secara lebih lambat.

Cara yang sama juga diusulkan oleh [Rayward-Smith, dkk, 1996] dimana sistem dipanaskan secara cepat hingga solusi yang lebih buruk dapat terpilih secara proporsional (dalam posisi tertentu yang diinginkan) dan kemudian pendinginan yang pelan dapat diimulai. Hal ini sama dengan apa yang terjadi pada physical annealing, dimana materi dipanaskan hingga mencair dan kemudian pendinginan dimulai secara perlahan.

2.4.1.2. Temperatur Akhir.

Temperatur bisa saja dibuat terus menurun hingga mencapai 0. Tetapi, hal ini bisa membuat SA berjalan sangat lama, terutama ketika SA menggunakan geometric cooling schedule. Secara praktis, tidak perlu membiarkan temperatur mencapai 0 karena ketika temperatur mendekati 0, peluang untuk memilih new state yang lebih buruk hampir sama saja dengan ketika temperatur sudah sama dengan 0.

Oleh karena itu, kriteria berhenti (stopping criteria) dapat berupa temperatur yang sudah rendah (dalam batas tertentu) atau ketika sistem


(33)

sudah membeku “frozen” pada temperatur saat ini (tidak ada lagi satu

state-pun yang bisa dipilih).

2.4.1.3. Penurunan Temperatur.

Setelah menentukan temperatur awal dan akhir, selanjutnya harus menentukan bagaimana cara yang baik dalam proses penurunan temperatur selama proses SA sampai kriteria berhenti tercapai. Cara penurunan temperatur merupakan satu hal yang sangat penting dan kritis dalam SA.

Secara teori, seharusnya membuat cukup iterasi pada setiap temperatur sedemikian hingga sistem menjadi stabil pada temperatur tersebut. Tetapi, teori juga menyatakan bahwa jumlah iterasi pada setiap temperatur untuk mencapai stabilitas mungkin bersifat eksponensial terhadap ukuran masalah. Karena hal ini tidak mungkin di implementasikan, maka membutuhkan kompromi. Terdapat dua cara yang dapat gunakan, yaitu: 1) dengan melakukan sejumlah besar iterasi pada sedikit temperatur dan sejumlah kecil iterasi pada banyak temperatur atau 2) menggunakan porsi yang seimbangdiantara keduanya. Satu cara untuk menurunkan temperatur adalah metode linear sederhana (simple linear method). Cara lainnya adalah penurunan geometris dengan rumus

T = ∗ T (2.1)


(34)

Menurut [Suyanto, 2010], pengalaman menunjukan bahwa yang sebaiknya digunakan adalah antara 0,8 dan 0,99. Biasanya hasil yang baik diperoleh ketika mendekati 0,99. Tetapi, tentu saja semakin besar semakin lama pula proses penurunan temperatur untuk mencapai kriteria berhenti.

2.4.1.4. Jumlah Iterasi pada Setiap Temperatur.

Komponen terakhir dalam jadwal pendingin (annealing schedule) adalah jumlah iterasi pada setiap temperatur. Bisa menggunakan jumlah iterasi yang konstan atau dinamis.

Lundy mengusulkan penggunaan hanya satu iterasi secara konstan pada setiap temperatur. Penurunan temperatur dilakukan secara sangat pelan [Downsland,K.A, 1995] menggunakan rumus

T =1+βTT (2.2)

Dimana adalah satu bilangan kecil yang sesuai.

Alternatif lainnya adalah dengan mengubah-ubah jumlah iterasi sesuai dengan perkembangan proses annealing. Pada temperatur yang rendah, sebaiknya digunakan sejumlah iterasi sehingga semua optimum local dapat dieksplorasi. Tetapi, pada temperatur yang lebih tinggi, sebaiknya digunakan sedikit iterasi.

2.4.2. Fungsi Biaya.

Untuk suatu masalah yang diberikan, terdapat beberapa cara mengukur kualitas solusi. Umumnya kualitas solusi diukur


(35)

menggunakan fungsi biaya. Bagaimana menentukan fungsi biaya yang baik?

Pertama, tentu saja perlu memastikan bahwa fungsi tersebut merepresentasikan masalah yang hadapi, SA dirancang untuk masalah minimasi, sehingga semakin kecil fungsi biaya dari suatu state berarti semakin baik kualitas state tersebut. Untuk masalah maksimasi, harus menggunakan fungsi biaya yang sesuai.

Kedua, fungsi biaya sebaiknya memiliki kompleksitas komputasi yang serendah mungkin karena fungsi tersebut umumnya harus dihitung pada setiap iterasi. Untuk menekan kompleksitas penghitungan fungsi biaya, bisa menggunakan satu dari dua cara berikut:

Delta Evaluation: fungsi biaya dihitung hanya ketika terdapat

perbedaan antara state saat ini (current state) dengan state tetangga (neighbourhood states).

Partial Evaluation: menggunakan fungsi biaya estimasi sehingga

keluarannya hanya berupa nilai-nilai perkiraan (bukan nilai sebenarnya), tetapi nilai estimasi tersebut memberikan indikasi yang memadai untuk menentukan kualitas solusi.

Ketiga, fungsi biaya sebaiknya dirancang sedemikian rupa sehingga fungsi tersebut dapat memandu proses pencarian. Hindari fungsi biaya yang menghasilkan nilai sama pada banyak state. Jika semua state memiliki biaya yang sama, kemana arah pencarian yang sebaiknya dilakukan?


(36)

Banyak fungsi biaya yang bisa menentukan validitas suatu solusi menggunakan batasan-batasan tertentu. Terdapat dua jenis batasan yang sering digunakan, yaitu;

Hard Constraints: batasan yang tidak boleh dilanggar. Misalnya,

pada masalah penjadwalan kuliah, suatu jadwal yang valid adalah jadwal yang tidak terdapat bentrok dosen, tidak bentrok ruang kelas, tidak bentrok rombongan mahasiswa.

Soft Constraints: batasan yang sebaiknya tidak dilanggar, tetapi

jika batasan ini dilanggar, solusinya masih dianggap valid. Misalnya, pada masalah penjadwalan kuliah, suatu jadwal masih dianggap valid meskipun terdapat seorang dosen yang diberikan jadwal empat pertemuan kuliah dalam sehari tanpa bentrok. Hal ini masih valid meskipun sebaiknya dihindari.

Untuk membangun fungsi biaya, bisa memberikan pembobotan (weighting) pada hard constraints dan soft constraints.

2.4.3. Struktur Ketetanggaan.

Ketika melakukan proses pencarian, bagaimana berpindah dari satu state ke state lain sampai ditemukan solusi? Untuk hal ini perlu mendefinisikan suatu struktur ketetanggaan (neighbourhood). Dengan cara ini, bisa menentukan state mana saja yang bisa dijangkau dari state saat ini. Untuk masalah penjadwalan kuliah, fungsi ketetanggaan dapat berupa penukaran jadwal pertemuan kuliah seorang dosen dari suatu slot waktu ke slot waktu yang lain.


(37)

Hasil penelitian menunjukan bahwa struktur ketetanggaan sebaiknya simetris. Artinya, jika bisa bergerak dari state i ke state j maka juga bisa bergerak dari state j ke state i. Selain itu juga perlu memperhatikan bahwa setiap state harus dapat dicapai dari setiap state yang lain.

2.4.4. Ruang solusi.

Jika ruang solusi (biasanya disebut juga ruang pencarian) sangat sempit, maka proses pencarian akan lebih mudah karena tidak banyak state yang harus dieksplorasi. Semakin kecil ruang solusi, semakin sedikit pula jumlah iterasi yang diperlukan untuk konvergen pada solusi optimal.

Untuk mempersempit ruang solusi, bisa membatasi pencarian pada solusi yang valid saja. Selain itu struktur ketetanggaan juga dibuat sekecil mungkin. Hali ini bisa mempercepat pencarian, tetapi mungkin bisa mengakibatkan terbatasnya peningkatan kualitas solusi secara signifikan.


(38)

17

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Dalam penelitian ini akan membahas mengenai cara kerja dari algoritma Simulated Annealing (SA) untuk menanggani proses penjadwalan kelas mata kuliah di PGSD Universitas Sanata Dharma Yogyakarta. Data yang akan ditangani meliputi data dosen, data mata kuliah dengan bobot sks-nya, data ruang kelas, data waktu, dan hari. Sistem ini akan diimplementasikan menggunakan sebuah aplikasi dengan bahasa pemrograman Java dan Mysql sebagai database penyimpanannya.

3.1.1. Analisis Masalah.

Kegiatan belajar mengajar di PGSD dilaksanakan pada hari senin sampai jumat (5 hari), untuk setiap harinya dimulai dari pukul 07.00 sampai dengan pukul 19.00. 1 sks mata kuliah teori mendapatkan 1 jam pertemuan. Terkecuali mata kuliah praktikum 1 sks mendapat 2 jam pertemuan, untuk sks selanjutnya tetap akan mendapatkan 1 jam. Proses penyusunan penjadwalan mata kuliah di PGSD diawali dengan pemaketan mata kuliah pada tiap semester. Kemudian masing-masing kelas mata kuliah ditugaskan kepada dosen yang kompeten mengajar pada mata kuliah tersebut. Selanjutnya, kelas mata kuliah dijadwalkan pada hari, waktu, dan ruang kelas yang tersedia dengan mempertimbangkan kesedian waktu dan kuota


(39)

dosen mengajar. Selanjutnya, dosen luar akan diprioritaskan untuk mendapatkan waktu dan hari mengajar yang diinginkan.

Hasil akhir yang diinginkan adalah jadwal kelas mata kuliah selama satu semester (ganjil/genap) yang tersusun secara baik berdasarkan waktu, hari, dan ruang kelasnya.

3.1.2. Aturan Penjadwalan

Untuk mendapatkan sebuah jadwal mata kuliah yang optimal dibutuhkan batasan-batasan atau aturan dalam membuat penjadwalan. Jika semua aturan yang ditentukan dapat terpenuhi maka penjadwalan mata kuliah tersebut dapat dikatakan optimal. Berikut ini adalah batasan-batasan (hard constraints dan soft constraints ) yang akan diterapkan dalam membuat penjadwalan di PGSD:

A. Batasan yang tidak boleh dilanggar (Hard Constraints).

1. Tidak terjadi bentrok ruang kelas, karena tidak mungkin 1 ruang kelas digunakan 2 kelas mata kuliah pada waktu bersamaan.

2. Tidak terjadi bentrok Dosen. Karena tidak mungkin ada dua mata kuliah yang berbeda diselenggarakan bersamaan oleh satu dosen. 3. Tidak terjadi bentrok rombongan belajar, dalam tingkat semester yang

sama.


(40)

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


(41)

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 titik/koordinat pertemuan antara X dan Y akan ditandai/diisikan dengan satu kode kelas matakuliah yang diambil secara random. Berikut ini pemodelan X dan Y:


(42)

Y adalah Kode TimeSlot, X adalah kode Ruang.

Gambar 3. 1 Pemodelan Vektor untuk membuat jadwal awal

Keterangan :

 Pada titik/koordinat pertemuan akan di isikan kode Kelas Matakuliah yang akan diambil secara acak.


(43)

Setiap titik/koordinat 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 koordinat/titik 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”.


(44)

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


(45)

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 solusi/state terbaik. private static List<Jadwal> 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 List<Pelanggaran> fungsiBiaya_jadwal_Awal = new ArrayList<>(); private static List<Pelanggaran> fungsiBiaya_jadwal_sekarang = new ArrayList<>(); private static List<Pelanggaran> fungsiBiaya_jadwal_baru = new ArrayList<>(); private static List<Pelanggaran> fungsiBiaya_jadwal_terbaik = new ArrayList<>(); private static List<Jadwal > permintaan = new ArrayList<>();


(46)

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”.


(47)

1. Mulai.

2. Buat metod dengan nama MenetapkanJadwalAwal, type pengembalian static void.

3. Buat variable Objek baru untuk menyimpan kodetimeslot” dan “kodeRuang” didalam list Object java.

List<Object> bantuSimpantimeslotRuang= new ArrayList<Object>(); 4. Buat variable Objek baru untuk menyimpan Permintaan dalam list.

List<Jadwal> jadwal_permintaan=

KontrolPermintaan.getKoneksi().getAllPermintaan();

5. Buat variable Objek baru untuk menyimpan timeslot didalam list. List<TimeSlot> timeslot=

KontrolTimeSlot.getKoneksi().getAllTimeSlot();

6. Buat variable Objek baru untuk menyimpan ruang didalam list.

List<Ruang> ruang = KontrolRuang.getKoneksi().getAllRuangTeori(); 7. Buat matrik 2 dimensi untuk menyimpan timeslot dan ruang sementara.

String[][] matrikJadwal = new String[timeslot.size()][ruang.size()]; 8. Untuk i=0 sampai i sebanyak “timeslot”, lakukan,

1. Untuk j=0 sampai j sebanyak “ruang” , lakukan

- Set matrikJadwal[i][j]= kodetimeslot, koderuang, kodewaktu dan kodehari.

- Simpan matrikJadwal[i][j] kedalam “bantuSimpantimeslotRuang”.


(48)

Keterangan :

9. Cek, jika jadwal permintaan tidak kosong maka, lakukan langkah berikut:

- Untuk i=0 sampai i sebanyak jadwal_permintaan, lakukan - Buat variable Objek baru untuk menyimpan atribut solusi.

Jadwal solusi=new Jadwal();

- Set semua atribut solusi dan simpan kedalam Larik jadwalAwal, solusiBaru, dan permintaann.

1. Untuk j=0 sampai j sebanyak “bantuSimpantimeslotRuang”, lakukan

- Cek apakah kodetimeslot dan koderuang pada

“jadwal_permintaan” = kodetimeslot dan koderuang pada “bantuSimpantimeslotRuang”.

- Jika ya, maka dihapus dari “bantuSimpantimeslotRuang”. 10.Random kelasmatakuliah.

List<Object> BantukodeKM = RandomKelasMatakuliah();

11.Cek, apakah jumlah BantukodeKM <= bantuSimpantimeslotRuang. 1. Ya, Untuk i=0 sampai i sebanyak “BantukodeKM”, lakukan - Ambil kodeKelasMatakuliah dari “bantukm” ke i

- Ambil kodeTimeslot dan koderuang dari “bantutimeslot” ke i. - Simpan dalam Larik jadwalAwal dan jadwalBaru.


(49)

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. List<Jadwal>jadwal_permintaan=KontrolPermintaan.getKoneksi().getAllPer mintaan(), fungsinya mengambil semua jadwal permintaan ke database menggunakan perintah sql kemudian dimasukan kedalam list.

10.List<TimeSlot>timeslot=KontrolTimeSlot.getKoneksi().getAllTimeSlot(), fungsinya mengambil semua timeslot ke database menggunakan perintah sql kemudian dimasukan kedalam list.

11.List<Ruang>ruang=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).


(50)

1. Mulai.

2. Buat metod dengan nama RandomKelasMatakuliah, type pengembalian static List<KelasMatakuliah>.

3. Buat variable Objek baru bantu untuk menyimpan kodekelasMatakuliah didalam list object java.

List<Object> simpanKodeKM = new ArrayList<Object>(); 4. Buat variable Objek baru untuk menyimpan sementara

kodekelasMatakuliah didalam list object java untuk menghindari terjadi duplikat.

List<Object> randomkm = new ArrayList<Object>();

5. Buat variable Objek baru untuk menyimpan KelasMatakuliah didalam list.

List<KelasMatakuliah> 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.add(km);


(51)

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.nextInt(randomkm.size()); 2. Ambil kodekelasmatakuliah pada index tersebut. - Buat objek baru dari kelasmatakuliah,

KelasMatakuliah km = new KelasMatakuliah(); - Set abtribut matakuliah sesuai index hasil random.

“km.setKodeKM(randomKm.get(next_num).getKodeKM());” 3. Simpan kedalam “simpanKodeKM”.

simpanKodeKM.add(km);

4. Hapus kodekelasmatakuliah tersebut dari “randomkm”. randomKm.remove(randomkm.get(next_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.


(52)

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). 1. Mulai

2. Buat metod dengan nama inisialisasiJadwalSkrg_dari_JadwalAwal, dengan tipe pengembalian static void.

3. Untuk i=0, sampai i sebanyak jadwal_awal. Jadwal solusi=new Jadwal.

Sett atribut Jadwal dari solusi_awal ke i jadwal_sekarang.add(solusi)

4. Untuk i=0, sampai i sebanyak fungsiBiaya_jadwal_awal Sett atribut Jadwal dari fungsiBiaya_jadwal_awal ke i fungsiBiaya_ jadwal_sekarang.add(solusi)


(53)

3.2.2.Menetapkan Temperatur Awal, Nilai Reduksi Suhu, dan Jumlah

Iterasi.

Sebelum ketahap proses pencarian solusi baru, 3 komponen ini harus ditetapkan terlebih dahulu. Disini akan ditetapkan seperti berikut:

1. Temperatur awal, T= 5000. 2. Nilai factor reduksi suhu, �= 0,99. 3. Jumlah iterasi, L= 3.

Semua nilai ini dinyatakan dalam angka. Angka-angka tersebut ditentukan sendiri menyesuaikan masalah yang dihadapi. Fungsi dari ke tiga komponen tersebut:

1. Temperatur awal. 1. Mulai

2. Buat metod dengan nama inisialisasiJadwalTerbaik_dari_JadwalSkrg, dengan tipe pengembalian static void.

3. Untuk i=0, sampai i sebanyak jadwal_sekarang. Jadwal solusi=new Jadwal.

Sett atribut solusi dari jadwal_awal ke i jadwal_sekarang.add(solusi)

4. Untuk i=0, sampai i sebanyak fungsiBiaya_ jadwal_sekarang Sett atribut Jadwal dari fungsiBiaya_ jadwal_sekarang ke i fungsiBiaya_terbaik.add(solusi)


(54)

Yaitu menentukan lamanya proses pembuatan solusi baru, karena semakin tinggi angka yang ditentukan dan kecil nilai reduksi suhu yang digunakan untuk menurunkan, maka semakin lama penurunan suhunya. Penetapan nilai temperatur awal disesuaikan dengan masalah yang dihadapi, telah dikatakan pada dasar teori Bab 2 yaitu 2.4.1.1 “Dalam menentukan temperatur awal secara tepat hingga saat ini belum ada satupun metode yang secara akurat dapat menentukan temperatur awal untuk semua masalah”. Jadi nilai ini bisa diubah tergantung pada saat pengujian algoritma terhadap masalah. Titik akhir penurunan suhu adalah mencapai suhu/angka 0.

2. Nilai factor reduksi suhu.

Yaitu nilai tetap yang akan digunakan untuk menurunkan temperatur awal. Nilai ini ditetapkan berdasarkan dari dasar teori pada Bab 2 yaitu 2.4.1.3 “Pengalaman menunjukan bahwa yang sebaiknya digunakan adalah antara 0,8 dan 0,99. Biasanya hasil yang baik diperoleh ketika mendekati 0,99”. Jadi penulis memilih menggunakan 0.99 menurunkan secara pelan.

3. Jumlah iterasi.

Yaitu nilai konstan yang akan digunakan untuk lama proses pencarian solusi baru sebelum terjadi 1 kali proses penurunan suhu. Dalam satu kali iterasi akan terjadi 2 peristiwa penting, yaitu fungsi

pencarian solusi baru menggunakan struktur ketetanggaan dan


(55)

Setelah sejumlah iterasi ( 3 iterasi ) selesai maka akan dilakukan penurunan suhu, mengunakan rumus (2.1) yaitu � = � ∗ � (penurunan nilai temperatur awal tadi). Pada dasar teori Bab 2 yaitu 2.4.1.4 dikatakan “Pada temperatur yang rendah, sebaiknya digunakan sejumlah iterasi sehingga semua optimum local dapat dieksplorasi. Tetapi, pada temperatur yang lebih tinggi, sebaiknya digunakan sedikit iterasi”. Jadi penentuan nilai jumlah iterasi ini juga dapat disesuaikan dengan masalah yang dihadapi dengan merubah saat pengujian.

Untuk lebih jelasnya peran ketiga komponen tersebut, berikut proses algoritma SA untuk menyelesaikan pengoptimalan penjadwalan.


(56)

Mulai

Jadwal

Awal={(S1,Ts1,11,kodekm),…(Sn,Ts20,Xav,kodekm)}

T=5000,a=0.9,L=3

1. Inisialisasi jadwal_sekarang=jadwal_awal jadwal_sekarang={(S1,Ts1,11,kodekm),…(Sn,Ts20,Xav,kodekm)}

fungsiBiaya_jadwal_sekarang=fungsibiaya_jadwal_awal 2. Inisialisasi jadwal_terbaikr=jadwal_sekarang Jadwal_terbaik={(S1,Ts1,11,kodekm),…(Sn,Ts20,Xav,kodekm)}

fungsiBiaya_terbaik=fungsiBiaya_jadwal_sekarang

T>0

Int i=0 i<L

1. Pencarian jadwal baru dari jadwal sekarang dengan struktur ketetanggaan berdasarkan hari pada timeslot

2. hitung fungsiBiaya_jadwal_baru

Delta evaluation (∆E) = fungsiBiaya_jadwal_baru-fungsiBiaya_jadwal_sekarang

fungsiBiaya_jadwal_baru= 0

Update T=T*a

∆E < 0

ganti jadwal_sekarang dengan jadwal_baru

r[0,1]< exp(-∆E/T) fungsiBiaya_jadwal_baru < fungsiBiaya_Terbaik Ya Ya Tidak Tidak Ya Tidak ganti jadwal_terbaik dengan

jadwal_baru Ya i++ Ya Ya Tidak Selesai Tidak

Simpan jadwal_terbaik ke database ganti jadwal_terbaik dengan

jadwal_baru


(57)

Gambar 3. 2 FlowChart Algoritma SA

3.2.3.Proses pencarian jadwal baru ( Solusi Baru ).

Struktur ketetanggaan yang akan digunakan dalam proses pencarian jadwal baru ini adalah berdasarkan hari pada timeslot terjadwal, Jadi, jika jadwal yang melanggar hari senin, maka akan akan dicari jadwal dari tetangganya yaitu hari selasa, rabu, kamis, dan jumat. Setelah itu akan dikumpulkan jadwal-jadwal tetangganya tersebut dan kemudian akan

di-random untuk mendapatkan kelas matakuliah kemudian ditukar posisi

dengan yang melanggar.

Disaat perhitungan fungsi biaya/jumlah pelanggaran telah disimpan kode “Jadwal” yang melanggar. Kode ini akan digunakan untuk mencari

timeslot jadwal hari yang tidak bertetangga dengannya, setelah didapatkan

maka akan melakukan proses penukaran “kelasMatakuliah”. Dalam pencarian solusi baru ada 2 cara yang digunakan, yaitu

1. Jika terdapat timeslot yang belum digunakan dan harinya berbeda dari jadwal yang melanggar tersebut, maka timeslot tersebut digunakan kemudian di ambil secara random (penukaran timeslot). 2. Jika semua timeslot yang harinya berbeda dari jadwal yang

melanggar sudah digunakan, maka akan dilakukan penukaran secara

random kelas matakuliah terhadap jadwal hari yang berbeda


(58)

Berikut ini metod pencarian jadwal baru (Solusi Baru’) : 1. ProsesPencarianJadwalbaru (Algoritma 3.5).

1. Mulai

2. Buat metod ProsesPencarianJadwalBaru, tipe pegembalian static void. 3. Buat variable List<Pelanggaran> fB_jadwal_sekarang =

BantuSimpanFungBiaya_JadwalSkrg();.

4. Untuk i=0 sampai i sebanyak “fB_ jadwal_sekarang”, lakukan langkah 4 sampai 8.

5. Buat variable String HariYangMelanggar =

fB_jadwal_sekarang.get(i).getKodeSolusi().getKodeTimeSlot().getKod eHari().getKodeHari();

6. Buat variable List<String>TsRg_Free=

tampung_TS_Ruang_yg_tidak_digunakanDanBerbedaHari

(HariYangMelanggar);

7. Jika ”TsRg_Free” tidak kosong dan fungsi biaya current_state > 10 dan size ”TsRg_Free” >2 atau Jika ”TsRg_Free” tidak kosong size ”

TsRg_Free” >10.

Ambil secara random timeslot dan ruang. Random random=new Random();

int next_num = random.nextInt(TsRg_Free.size()); Ambil “kode ts”,“kode ruang”,”kodewaktu”,”kodehari”. - Set atribut Jadwal.


(59)

Keterangan :

1. Jadwal solusi=new Jadwal() ,Jadwal solusi1=new Jadwal(),Jadwal solusi2=new Jadwal (), membuat objek baru solusi, solusi1, dan solusi2 untuk mengeset semua atribut Jadwal. Sebelum mengeset atrribut tersebut harus diset terlebih dahulu timeslot, matkuliah, dosen, kelasatakuliah, hari,waktu, timeslot, dan ruang.

2. UpdateTimeSlotRuang(solusi), metod yang berfungsi untuk menukarkan

timeslot yang melanggar dengan timeslot baru hasil random yang tidak digunakan.

Jadwal solusi = new Jadwal (); - UpdateTimeSlotRuang(solusi);

8. Jika “TsRg_Free” kosong atau size ”TsRg_Free” <=2.//Cara 2

Set atrribut solusi1 dari “fB_jadwal_sekarang” yang melanggar. Jadwal solusi1=new Jadwal ();

- ambil secara random kelasmatakuliah baru beda hari.

Jadwal sol= getRandomKelasMatakuliahSolusiBaruOptimal

(HariYangMelanggar);

- Set atribut solusi2. “Jadwal solusi2=new Jadwal ()”;

- Tukarkan kelasmatakuliah dari kedua solusi1 dan solusi2 tersebut

UpdateKelasMatakuliah(solusi1, solusi2);


(60)

3. UpdateKelasMatakuliah(solusi1,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 pelanggaran/fungsi 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).


(61)

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 List<String>.

3. Buat variable Objek baru untuk menyimpan kodetimeslot, kodeRuang, kodeWaktu, kodeHari didalam list String java.

List<String> kodeTsRg = new ArrayList<String>();

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.


(62)

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. List<Jadwal> 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.nextInt(Solusi.size()); sett atribut jadwal sesuai indek random “next_num”. Jadwal solusi=new Jadwal ().


(63)

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 pengembalian static List<Pelanggaran>.

3. Buat variable baru untuk menyimpan data pelanggaran List<Pelanggaran> pelanggaran = new ArrayList<>();

4. Untuk i=0 sampai i sebanyak “fungsiBiaya_jadwal_sekarang”, lakukan langkah berikut:

Set semua attribute pelanggaran ke i. Pelanggaran p=new Pelanggaran(); pelanggaran.add(p);

5. Untuk i=0 sampai i sebanyak “pelanggaran”, lakukan langkah berikut:  Untuk j=i+1 sampai j sebanyak “pelanggaran”, l

- Jika kode jadwal ke 1 dan ke j sama. Maka hapus dari tampungan pelanggaran. 5. Kembalikan pelanggaran.


(64)

maka akan diberi nilai dengan bobot 1. Berikut adalah analisa menghitung jumlah pelanggaran dari constraints yang ditetapkan.

A. Batasan yang tidak boleh dilanggar (Hard Constraints).

1. Metod menghitung terjadi bentrok ruang kelas (Algoritma 3.9).

2. Metod menghitung terjadi bentrok dosen (Algoritma 3.10). 1. Mulai

2. Buat metod Bentrok_Ruang_KelasMatakuliah_JdwlBaru, tipe pengembalian static int.

3. Buat variable pelanggaran =0.

4. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut. Buat variable cek=1;

1. Untuk j=i+1 sampai j sebanyak “jadwal_baru”, lakukan langkah berikut.

- Cek apakah ada timeslot pada jadwal_baru ke j = timeslot pada jadwal_baru ke i dan ruang pada jadwal_baru ke j = ruang pada jadwal_baru ke i.

Ya, cek=cek+1;  Jika cek=2,

pelanggaran = pelanggaran + 1; ya, Set attribut pelanggaran ke j. Pelanggaran p = new Pelanggaran(); fungsiBiaya_ jadwal_baru.add(p); 5. Selesai.


(65)

3. Metod menghitung terjadi bentrok rombongan belajar (Algoritma 3.11). 1. Mulai

2. Buat metod Bentrok_Dosen_ JdwlBaru, tipe pengembalian static int. 3. Buat variable pelanggaran =0.

4. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut. Buat variable cek=1;

5. Untuk j=i+1 sampai j sebanyak “jadwal_baru”, lakukan langkah berikut. - Cek apakah ada timeslot pada jadwal_baru ke j = timeslot pada

jadwal_baru ke i, dan dosen pada jadwal_baru ke j=dosen pada jadwal_baru ke i.

ya, cek=cek+1; a. Jika cek=2,

- Pelanggaran p = new Pelanggaran(); - Ya, Set attribut pelanggaran ke j.

1. Untuk k=0,sampai k sebanyak permintaan, lakukan berikut:  Jika kode jadwal ke j sama dengan permintaan ke k.

Set atrribut pelanggaran ke i. - pelanggaran = pelanggaran + 1; - fungsiBiaya_ jadwal_baru.add(p); 6. Selesai.


(66)

1. Mulai

2. Buat metod Bentrok_Rombongan_Belajar_ JdwlBaru, tipe pengembalian static int.

3. Buat variable pelanggaran =0.

4. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut. Buat variable cek=1;

5. Untuk j=i+1 sampai j sebanyak “jadwal_baru”, lakukan langkah berikut. 1. Cek apakah ada timeslot pada jadwal_baru ke j = timeslot pada

jadwal_baru ke i, dan semester pada jadwal_baru ke j = semester pada jadwal_baru ke i, dan kelas pada jadwal_baru ke j = kelas pada jadwal_baru ke i.

ya, cek=cek+1; a. Jika cek=2,

- Pelanggaran p = new Pelanggaran(); - Ya, Set attribut pelanggaran ke j.

1. Untuk k=0,sampai k sebanyak permintaan, lakukan berikut:  Jika kode jadwal ke j sama dengan permintaan ke k.

Set atrribut pelanggaran ke i. - pelanggaran = pelanggaran + 1; - fungsiBiaya_ jadwal_baru.add(p);


(67)

4. Dosen luar mendapatkan prioritas dibandingkan dengan dosen tetap dalam waktu dan hari mengajar. Jadi dosen luar bisa menentukan hari dan jam mengajar.

Pada hard constraint ini, tindakan ini dilakukan sebelum proses pembuatan jadwal, jadi langsung memilih penempatan jadwal. Proses akan ada pada proses permintaan jadwal ( jadwal permintaan ).

5. Dosen tidak boleh mengajar lebih dari 20 sks, ini juga dilakukan diawal, yaitu pada proses pengisian dosen pegampu. Akan dihitung jumlah sks yang sudah diampu. Jika sudah 20 sks maka tidak dipilih lagi.

6. Dalam 1 hari, dosen mengajar tidak melebihi dari 3 kali pertemuan

(Algoritma 3.12).

1. Mulai

2. Buat metod Bentrok_Dosen_mengajar_dlm_1hari_dijadwal_lbh_dr_3_ JdwlBaru, tipe pengembalian static int.

3. Buat variable pelanggran=0.

4. Buat variable objek baru untuk menyimpan sementara kode jadwal dalam list. List<String> simpan3 = new ArrayList<>();

5. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut. Buat variable cek=1;


(68)

B. Batasan yang sebaiknya tidak dilanggar (Soft Constraints).

1. Dalam 1 hari, mahasiswa tidak boleh dijadwalkan lebih dari 3 kali perkuliahan (Algoritma 3.13).

6. Untuk j=i+1 sampai j sebanyak “jadwal_baru”, lakukan langkah berikut. 1. Cek apakah ada hari pada jadwal_baru ke j = hari pada jadwal_baru

ke i, dan kelas pada jadwal_baru ke j = kelas pada jadwal_baru ke i, dan semester pada jadwal_baru ke j = semester pada jadwal_baru ke i.

ya, simpan kode jadwal ke j dan index j kedalam simpan3 dan cek=cek+1;

a. Jika cek=4,

- Pelanggaran p = new Pelanggaran(); - ya, Set attribut pelanggaran ke j.

1. Untuk k=0,sampai k sebanyak permintaan, lakukan berikut:  Jika kode jadwal ke j sama dengan permintaan.

a. Untuk L=0 sampai L sebanyak simpan3,

- Jika kode jadwal k tidak = kode jadwal simpan3. Set atrribut pelanggaran ke L.

- pelanggaran = pelanggaran + 1; - fungsiBiaya_ jadwal_baru.add(p);


(69)

Metod untuk menghitung fungsiBiaya jadwal awal sama dengan fungsiBiaya jadwal_baru, Perbedaan hanya terletak di pengecekan pada jadwal_baru dan jadwal_Awal dan penyimpanan pelanggaran. Jika jadwal_baru pelanggaran disimpan pada fungsiBiaya_jadwal_baru dan jadwal_awal pada fungsiBiaya_jadwal_awal.

1. Mulai

2. Buat metod Bentrok_Rombongan_1hari_dijadwal_lbh_dr_3_JdwlBaru, tipe pengembalian static int.

3. Buat variable pelanggran=0.

4. Buat variable objek baru menyimpan sementara kode jadwal dalam list. List<String> simpan3 = new ArrayList<>();

5. Untuk i=0 sampai i sebanyak “jadwal_baru”, lakukan langkah berikut. Buat variable cek=1;

6. Untuk j=i+1 sampai j sebanyak “jadwal_baru, lakukan langkah berikut. 1. Cek apakah ada hari pada jadwal_baru ke j = hari pada jadwal_baru

ke i, dan dosen pada jadwal_baru ke j = dosen pada jadwal_baru ke i.

ya, simpan kode jadwal ke j dan index j kedalam simpan3 dan cek=cek+1;

a. Jika cek=4,

- Pelanggaran p = new Pelanggaran(); - ya, Set attribut pelanggaran ke j.

1. Untuk k=0,sampai k sebanyak permintaan, lakukan berikut:  Jika kode jadwal ke j sama dengan permintaan.

a. Untuk L=0 sampai L sebanyak simpan3,

- Jika kode jadwal k tidak = kode jadwal simpan3. Set atrribut pelanggaran ke L.

- pelanggaran = pelanggaran + 1; - fungsiBiaya_jadwal_baru.add(p); 7. Selesai.


(70)

3.3 Perangkat Keras dan Perangkat Lunak

Perangkat Keras dan Perangkat Lunak yang digunakan agar sistem ni dapat berjalan adalah :

1. Perangkat Keras (Spesifikasi Minimum)

1) Processor : Intel (R) Core (TM) i3, 2.20 GHz. 2) Memori RAM : 2 GB

3) Hardisk : 320 GB

2. Perangkat Lunak

Perangkat lunak atau sistem operasi yang harus tersedia dalam sebuah computer untuk mendukung kerja sistem ini adalah Minimal Sistem Operasi Window Xp. Jika menggunakan sistem operasi yang diatasnya tidak menjadi permasalahan selama tidak dibawah Window Xp.

3.4 Perancangan Sistem

Tahap-tahap yang terdapat dalam perancangan dalam sistem ini adalah sebagai berikut :


(71)

3.4.1 Diagram Use Case

Pengguna

Lihat Mata Kuliah Edit Mata Kuliah

Hapus Mata Kuliah

Lihat Kelas Lihat Dosen Edit Dosen

Hapus Dosen

Buat Jadwal Kuliah Lihat Jadwal Kuliah

Menu Bantuan

«extends»

«extends»

«extends»

«extends» «extends» «extends»

«extends» Tambah Matakuliah

Tambah Dosen

Tambah Ruang

Edit Ruang

Hapus Ruang

Lihat Waktu dan Hari


(72)

3.4.2 Narasi Use Case

Nama use case Tambah Mata Kuliah

Aktor Pengguna

Diskripsi Pengguna memasukkan data matakuliah

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memasukkan data matakuliah dan mengklik tombol simpan.

2. Sistem mengecek setiap data yang dimasukan.

3. Jika lengkap, sistem menyimpan kedalam database matakuliah.

Alternate

3. Jika tidak lengkap, sistem akan memberitahu untuk melengkapi.

Nama use case Edit Mata Kuliah

Aktor Pengguna

Diskripsi Pengguna mengedit data matakuliah

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memilih matakuliah yang ingin diedit.

2. Sistem menampilkan data matakuliah tersebut. 3. Mengedit matakuliah.

4. Jika lengkap, sistem menyimpan kedalam database matakuliah.

Alternate

4. Jika tidak lengkap, sistem akan memberitahu untuk melengkapi.

Nama use case Hapus Mata Kuliah

Aktor Pengguna

Diskripsi Pengguna menghapus data matakuliah

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memilih data matakuliah yang ingin dihapus dan mengklik tombol hapus.

2. Sistem menghapus data matakuliah tersebut dari database matakuliah.


(73)

Nama use case Lihat Mata Kuliah

Aktor Pengguna

Diskripsi Pengguna melihat data matakuliah

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memilih tombol melihat data matakuliah.

2. Sistem menampilkan data matakuliah.

Alternate

Nama use case Tambah Dosen

Aktor Pengguna

Diskripsi Pengguna memasukkan data Dosen

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memasukkan data Dosen dan mengklik tombol simpan.

2. Sistem mengecek setiap data yang dimasukan.

3. Jika lengkap, sistem menyimpan kedalam database Dosen.

Alternate

3. Jika tidak lengkap, sistem akan memberitahu untuk melengkapi.

Nama use case Edit Dosen

Aktor Pengguna

Diskripsi Pengguna mengedit data Dosen

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Memilih Dosen yang ingin diedit.

2. Sistem menampilkan data Dosen tersebut.

3. Mengedit Dosen.

4. Jika lengkap, sistem menyimpan kedalam database Dosen.

Alternate

4. Jika tidak lengkap, sistem akan memberitahu untuk melengkapi.


(74)

Nama use case Hapus Dosen

Aktor Pengguna

Diskripsi Pengguna menghapus data Dosen

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih data Dosen yang ingin dihapus dan mengklik tombol hapus.

2. Sistem menghapus data dosen tersebut dari database Dosen.

Alternate

Nama use case Lihat Dosen

Aktor Pengguna

Diskripsi Pengguna melihat data Dosen

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih tombol melihat data Dosen.

2. Sistem menampilkan data Dosen.

Alternate

Nama use case Tambah Ruang

Aktor Pengguna

Diskripsi Pengguna memasukkan data Ruang

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memasukkan data Ruang dan

mengklik tombol simpan.

2. Sistem mengecek setiap data yang dimasukan. 3. Jika lengkap, sistem

menyimpan kedalam database Ruang.

Alternate 3. Jika tidak lengkap, sistem

akan memberitahu untuk melengkapi.


(75)

Nama use case Edit Ruang

Aktor Pengguna

Diskripsi Pengguna mengedit data Ruang

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih Ruang yang ingin diedit.

3. Mengedit Ruang.

2. Sistem menampilkan data ruang tersebut.

4. Jika lengkap, sistem menyimpan kedalam database Ruang.

Alternate 4. Jika tidak lengkap, sistem

akan memberitahu untuk melengkapi.

Nama use case Hapus Ruang

Aktor Pengguna

Diskripsi Pengguna menghapus data Ruang

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih data Ruang yang ingin dihapus dan mengklik tombol hapus.

2. Sistem menghapus data ruang tersebut dari database Ruang.

Alternate

Nama use case Lihat Ruang

Aktor Pengguna

Diskripsi Pengguna melihat data Ruang

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih tombol melihat data Ruang.

2. Sistem menampilkan data Ruang.

Alternate

Nama use case Lihat Waktu dan Hari

Aktor Pengguna

Diskripsi Pengguna melihat data Waktu dan Hari

Prakondisi Mengaktifkan aplikasi

Langkah kerja Aksi aktor Reaksi sistem

1. Memilih tombol melihat data Waktu dan Hari.

2. Sistem menampilkan data Waktu dan Hari.


(76)

Nama use case Buat jadwal Kuliah

Aktor Pengguna

Diskripsi Pengguna membuat jadwal perkuliahan 1 semester

Prakondisi Mengaktifkan aplikasi

Langkah kerja

Aksi aktor Reaksi sistem

1. Mengklik tombol buat jadwal.

2. Sistem menampilkan halaman untuk memilih semester dan tahun ajaran. 3. Memilih semester

(Gasal/Genap) dan tahun ajaran, klik tombol selanjutnya.

4. Sistem menampilkan halaman data matakuliah semester 1 jika gasal,2 jika genap.

5. Memilih matakuliah yang digunakan pada semester 1 atau 2 dan membagi kedalam berapa kelas.

6. Sistem menampilkan data matakuliah yang telah dibagi kedalam beberapa kelas dan meminta untuk mengisi dosen pegampu. 7. Mengisi dosen pegampu

untuk kelas matakuliah semester 1 atau 2.

8. Sistem menyimpan data tersebut ke database kelasmatakuliah dan selanjutnya menampilkan data matakuliah semester 3 atau 4.

9. Memilih matakuliah yang digunakan pada semester 3 atau 4 dan membagi kedalam berapa kelas.

10. Sistem menampilkan data matakuliah yang telah dibagi kedalam beberapa kelas dan meminta untuk mengisi dosen pegampu. 11. Mengisi dosen pegampu

untuk kelas matakuliah semester 3 atau 4.

12. Sistem menyimpan data tersebut ke database kelasmatakuliah dan selanjutnya menampilkan data matakuliah semester 5 atau 6.

13. Memilih matakuliah yang digunakan pada semester 5 atau 6 dan membagi kedalam berapa kelas.

14. Sistem menampilkan data matakuliah yang telah dibagi kedalam beberapa kelas dan meminta untuk mengisi dosen pegampu. 15. Mengisi dosen pegampu

untuk kelas matakuliah semester 5 atau 6.

16. Sistem menyimpan data tersebut ke database kelasmatakuliah dan selanjutnya menampilkan data matakuliah semester 7 atau 8.


(1)

261

16.

Semester 7 Kelas A.

JAM

PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

Fils afat Ilm u Peng (S) Dr. C. Teguh Dalyono, M.S.

R - 1 PGSD 1 IX 15.00 - 15.50 idem

X 16.00 - 16.50

XI 17.00 - 17.50

PPL di SD

RABU

SELASA

JUMAT

WAKTU

KAMIS

SENIN


(2)

262

17.

Semester 7 Kelas B.

JAM PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

IX 15.00 - 15.50

X 16.00 - 16.50

Fils afat Ilm u Peng (T) Dr. C. Teguh Dalyono, M.S.

R - 1 PGSD 1

XI 17.00 - 17.50 idem

X 18.00 - 19.50

KAMIS SELASA

WAKTU


(3)

263

18.

Semester 7 Kelas C.

JAM PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

IX 15.00 - 15.50

X 16.00 - 16.50

Fils afat Ilm u Peng (V) Dr. C. Teguh Dalyono, M.S.

R - 1 PGSD 1

XI 17.00 - 17.50 idem

XII 18.00 - 18.50

KAMIS

SENIN RAB U

WAKTU


(4)

264

19.

Semester 7 Kelas D.

JAM

PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

Fils afat Ilm u Peng (U) Dr. C. Teguh Dalyono, M.S.

R - 1 PGSD 1 IX 15.00 - 15.50 idem

X 16.00 - 16.50

XI 17.00 - 17.50

XII 18.00 - 18.50

WAKTU


(5)

265

20.

Semester 7 Kelas E.

JAM

PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

Fils afat Ilm u Peng (Q) Drs . P. Wahana, M.Hum .

R - 1 PGSD 1

IX 15.00 - 15.50 idem

X 16.00 - 16.50

XI 17.00 - 17.50

XII 18.00 - 18.50

SELASA

RABU

WAKTU


(6)

266

21.

Semester 7 Kelas F.

JAM

PUKUL

I 07.00 - 07.50

II 08.00 - 08.50

III 09.00 - 09.50

IV 10.00 - 10.50

V 11.00 - 11.50

VI 12.00 - 12.50

VII 13.00 - 13.50

VIII 14.00 - 14.50

IX 15.00 - 15.50

X 16.00 - 16.50

Filsafat Ilmu Peng (R) Drs. P. Wahana, M.Hum.

R - 1 PGSD 1

XI 17.00 - 17.50 idem

XII 18.00 - 18.50

WAKTU