Hasil dan Pembahasan T1 672005078 Full Text

13 menemukan nilai konflik = 0. Apabila belum memenuhi maka proses dilanjutkan sampai memenuhi salah satu syarat tersebut.

5. Hasil dan Pembahasan

Pada Gambar 8 merupakan tampilan untuk home dari sistem penjadwalan dengan algoritma tabu search. Gambar 8 Tampilan Halaman Home Admin dapat memulai proses pembuatan jadwal pada menu penjadwalan di form Home. Tampilan halaman penjadwalan dapat dilihat seperti pada Gambar 9. Gambar 9 Tampilan Halaman Nilai Siswa Tampilan form penjadwalan berisi mata pelajaran yang dapat dihapus atau ditambah sesuai dengan kurikulum yang berlaku.tampilan form ini juga sama dengan form kurikulum, kelas dan tutor. Gambar tambah pelajaran dapat dilihat pada Gambar 10. 14 Gambar 10 Tambah Pelajaran Pada Form edit rule terdapat fasilitas untuk mengubah aturan atau rule dalam mata pelajaran tertentu. User dapat memilih salah satu mata pelajaran tertentu untuk mengatur penempatan dalam jadwal. Untuk lebih jelasnya dapat dilihat pada Gambar 11. Gambar 11 Tampilan Edit Rule Pada Gambar 12 merupakan Form jadwal mata pelajaran yang telah diproses. Pada form jadwal ini terdapat fasilitas reset, proses, cetak dan simpan. Reset untuk mengembalikan jadwal sebelumnya, proses untuk memproses lagi jadwal, cetak untuk mencetak atau print jadwal dan simpan untuk menyimpan jadwal dalam format excel. 15 Gambar 12 Penjadwalan dengan Algoritma Tabu Search Jadwal yang sudah jadi biasanya masih terdapat bentrok atau adanya batasan waktu tertentu sehingga mata pelajaran tidak muncul pada jadwal tersebut. Pada Gambar 13 merupakan tampilan jadwal dengan adanya bentrok, sehingga akan muncul tanda “??” dalam jadwal tersebut. Gambar 13 Adanya bentrok dalam penjadwalan Proses Algoritma Proses algoritma tabu search pada aplikasi penjadwalan terdapat beberapa langkah, antara lain : a. Menghitung jumlah jam pelajaran dan membuat rule yang mendeklarasikan tabu rule pada tiap kelasnya. Dapat dilihat pada Kode Program 1. Kode Program 1 Menghitung Jumlah Pelajaran dan Membuat Rule 1 Set colpelajarans = New Collection 2 n = Haris.Count 3 For i = 1 To n 4 Set objhari = Harisi 5 m = objhari.Waktus.Count 6 For j = 1 To m 16 7 Set objwaktu = objhari.Waktusj 8 = objwaktu.Kurikulums.Count 9 For k = 1 To o 10 Set objkurikulum = objwaktu.Kurikulumsk 11 p = objkurikulum.Kelass.Count 12 For l = 1 To p 13 Set objkelas = objkurikulum.Kelassl 14 If i = 1 And j = 1 Then 15 Set objpelajarans = New Pelajarans 16 objpelajarans.KodeKelas = objkelas.KodeKelas 17 objpelajarans.KodeKurikulum = objkurikulum.KodeKurikulum 18 objpelajarans.Refresh 19 colpelajarans.Addobjpelajarans, objkelas.KodeKelas 20 End If 21 If objkelas.Jenis = PELAJARAN Then 22 Set objpelajarans = colpelajaransobjkelas.KodeKelas 23 a = objpelajarans.FindItemobjkelas.kodepelajaran 24 If a 0 Then 25 Set objpelajaran = objpelajarans.Itema 26 objpelajaran.JumlahJamMaksimal = objpelajaran.JumlahJamMaksimal + 1 27 objpelajaran.JumlahJamTerpakai = 0 28 Else 29 MsgBox Pelajarantidakada, vbCritical 30 End If 31 End If 32 Next l 33 Next k 34 Next j 35 Next i Pada kode program yang pertama sampai dengan 19 merupakan deklarasi awal yang mengatur hari, waktu, kelas dan kurikulum. Selanjutnya pada kode program nomor 26 dan 27, fungsi ini yang menghitung keseluruhan deklarasi awal yang dibuat. Pesan adanya error dalam penghitungan atau tidak ditemukannya pelajaran dapat dilihat pada kode program nomor 29. b. Proses kedua akan mencari jadwal pada tiap-tiap jam. Pada proses ini akan ditempatkan mata pelajaran dalam tiap jamnya. Perintah untuk mencari jadwal tiap-tiap jam dapat dilihat pada Kode Program 2. Kode Program 2 Mencari Jadwal Tiap-tiap Jam 1 n = Haris.Count 2 For i = 1 To n 3 Set objhari = Harisi 4 m = objhari.Waktus.Count 5 For j = 1 To m 6 Set objwaktu = objhari.Waktusj 7 o = objwaktu.Kurikulums.Count 8 For k = 1 To o 9 Set objkurikulum = objwaktu.Kurikulumsk 10 p = objkurikulum.Kelass.Count 11 For l = 1 To p 12 Set objkelas = objkurikulum.Kelassl 13 If objkelas.Jenis = PELAJARAN Then 14 Set objpelajarans = colpelajaransobjkelas.KodeKelas 17 Pada kode program pertama dideklarasikan suatu variabel dengan nama n sebagai penghitungan hari dalam setaip minggunya. Untuk deklarasi selanjutnya adalah variabel m sebagai penempatan hari dan juga waktu yang kemudian akan masuk dalam kurikulum. c. Mencari pelajaran yang tidak ada dalam tabu rule. Pada proses ini dilakukan pencarian jadwal yang dideklarasikan sebagai pelajaran yang tidak ada dalam tabu rule atau yang tidak memiliki rule tertentu. Proses pencarian jadwal bisa dilihat pada Kode Program 3. Kode Program 3 Mencari Jadwal yang Tidak Ada Dalam Tabu rule 1 JumlahJam = 1 2 Set colpelajaran = objpelajarans.CariPelajaranobjhari.NamaHari, objwaktu.jammulai, objwaktu.jamselesai, JumlahJam 3 b = colpelajaran.Count 4 If b 0 Then 5 a = 0 d. Mencoba pelajaran yang sama jika sehari belum lebih dari 2 jam pelajaran. Proses ini bisa dilihat pada Kode Program 4. Kode Program 4 Mencoba Pelajaran yang Sama 1 If j 1 Then 2 For c = j - 1 To 1 Step -1 3 Set objkodekelaslast = objhari.Waktusc.Kurikulumsk.Kelassl 4 If objkodekelaslast.Jenis = PELAJARAN Then 5 d = objpelajarans.CariPelajaranIndexcolpelajaran, objkodekelaslast.KodePelajaran 6 If d 0 Then 7 Set objpelajaran = colpelajarand 8 e = objpelajaran.CariJumlahJamobjhari.NamaHari 9 If e 2 Then 10 a = d 11 End If 12 End If 13 Exit For 14 End If 15 Next c 16 End If Pada kode program satu dan dua merupakan deklarasi awal dan akan dimasukkan dalam kode program tiga. Kemudian pada kode program delapan deklarasi jam pelajaran dan kode program sembilan menjelaskan jika pelajaran masih kurang dari dua jam sehari maka akan kembali diproses hingga pelajaran tidak lebih dari dua jam dalam sehari. e. Mencari pelajaran secara acak dengan mencoba 100x. Pencarian pelajaran ini dilakukan jika jadwal sudah jadi dan terdapat adanya bentrok, maka pihak penyusun jadwal bisa memproses ulang jadwal kembali. Proses ini bisa dilihat pada Kode Program 5. 18 Kode Program 5 Mencari Pelajaran Secara Acak 1 Dim jumlahcoba As Long 2 valid = True 3 jumlahcoba = 0 4 If a = 0 Then 5 again: 6 a = 1 + Rnd b - 1 7 Set objpelajaran = colpelajarana 8 e = objpelajaran.CariJumlahJamobjhari.NamaHari 9 If e = 2 Then 10 jumlahcoba = jumlahcoba + 1 11 If jumlahcoba 100 Then 12 GoTo again 13 Else 14 valid = False 15 End If 16 End If 17 End If 18 If valid Then 19 Set objpelajaran = colpelajarana 20 objkelas.View1 = objpelajaran.KodePelajaran 21 objkelas.View2 = objpelajaran.NamaPelajaran 22 objkelas.KodePelajaran = objpelajaran.KodePelajaran 23 objkelas.NamaPelajaran = objpelajaran.NamaPelajaran 24 objpelajaran.JumlahJamTerpakai = objpelajaran.JumlahJamTerpakai + JumlahJam Pada kode program nomor enam merupakan kode untuk random mata pelajaran, dilanjutkan kode program delapan sampai sepuluh untuk mencoba hari dan jumlah jam. Kode program 11 merupakan perintah untuk mencoba memproses jadwal hingga 100 kali.

6. Pengujian Sistem