• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2017

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

Copied!
287
0
0

Teks penuh

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

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

(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

(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

(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

(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

(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

(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

(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

(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

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

(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)

(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

(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

(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

(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

(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

(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

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

(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

(42)
[image:42.595.99.502.148.582.2]

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

(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

… … …

[image:43.595.99.502.207.621.2]

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

(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

… … … …

[image:44.595.97.497.186.603.2]

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<>();

(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

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

(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

(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)
[image:57.595.94.513.224.715.2]

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

(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

(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,

(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_bar

Gambar

Gambar 3. 1 Pemodelan Vektor untuk membuat jadwal awal
Tabel 3. 1  Penjelasan model koordinat yang akan terbentuk.
Tabel 3. 2 Tabel Jadwal Awal.
Gambar 3. 2 FlowChart Algoritma SA
+7

Referensi

Dokumen terkait

Hasil penelitian menunjukkan pemberian perlakuan makanan enteral formula B lebih optimal dalam meningkatkan kadar hemoglobin, kadar albumin, dan kadar zat besi yang akan

Oleh karena itu penelitian ini bertujuan untuk mendapatkan nilai kebisingan lalu lintas kendaraan yang terjadi pada ruas jalan tol Ir.. Sutami Makassar dan

Berdasarkan data dari tabel 2 di atas dapat diketahui bahwa jumlah perempuan yang terlibat dalam tindak pidana peredaran narkotika yang terjadi di Kabupaten

Penelitian ini bertujuan untuk mengetahui kadar unsur dan senyawa kimia limbah cangkang kerang Totok (Geloina sp.) hasil tangkapan masyarakat desa Bulupayung Cilacap di

Penelitian di lapangan dilaksanakan setelah mendapat izin dan persetujuan dari Direktur Pascasarjana Universitas Pendidikan Indonesia dan persetujuan dari kedua

2. Meningkatkan keterampilan mengganti pembalut pada anak tunagrahita yang sebelumnya belum mampu secara mandiri mengganti pembalut, dan tidak maksimal dalam menjaga

Grafik ini merupakan sifat profil aliran yang melewati ambang berdasarkan tiga karakteristik aliran; loncat, peralihan, dan tenggelam yang didapat dengan cara mengatur

Hal ini menunjukkan bahwa variabel Program imbalan berdasarkan keterampilan (X5) secara parsial mempunyai pengaruh yang sangat bermakna terhadap Kinerja (Y).. Hal