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