Lampiran A Konfigurasi IIS untuk PSP Untuk menggunakan PSP pada IIS7, IIS7 harus memiliki ISAPI Filters atau CGI. Selain itu, beberapa konfigurasi IIS7 yang perlu diatur adalah sebagai berikut: 1. Tambahkan index.prolog sebagai dokumen default. Cara: c. Jalankan IIS Management Console. d. Buka (Local Computer), Web Sites, lalu klik pada “Default Web Site”. e. Klik ganda ikon “Default Document” pada panel utama, lalu tambahkan “index.prolog” atau “Default.prolog” pada kotak teks “File name(s):” yang tersedia.
2. Definisikan pemetaan untuk file dengan ekstensi “.prolog”ke perangkat lunak SWIProlog. Cara: a. Klik ganda ikon “Handler Mappings” pada panel utama.
b. Klik link “Add Script Map...” pada panel “actions”. c. Pada kotak dialog yang muncul, isikan sebagai berikut: -
Request path = *.prolog
-
Executable =
-q –s -g run_page -t halt Contoh: "C:\Program Files\pl\bin\plcon.exe" -q –s C:\PSP\webserver.pl -g run_page -t halt
-
Name = PSP
d. Klik OK. 3. Uji coba hasil instalasi dengan file uji coba yang diberikan PSP.
Untuk IIS6, informasi instalasi dapat dilihat pada http://www.benjaminjohnston.com.au/.
A-1
Lampiran B Skenario Use Case B.1 Skenario Alternatif Use Case Manipulasi Resource Skenario alternatif use case Manipulasi Resource dapat dilihat pada Tabel B-1. Tabel B-1 Skenario Alternatif Use Case Manipulasi Resource
Aksi Aktor
Reaksi Sistem Skenario Alternatif (S-01-02) 1. Pengguna memilih menu Menambah resource 2. Menampilkan form yang berisi kotak teks sebagai masukan dari pengguna 3. Pengguna mengisi form menambahkan resource 4. Melakukan validasi masukan pengguna 5. Menampilkan pesan bahwa masukan pengguna telah terdapat pada sistem Skenario Alternatif (S-01-03) 1. Pengguna memilih menu Mengubah resource 2. Menampilkan semua fakta resource yang terdapat pada basis data deduktif 3. Pengguna memilih fakta resource untuk diubah 4. Pengguna melakukan perubahan untuk fakta resource yang dipilih 5. Melakukan validasi masukan pengguna 6. Menerima masukan pengguna 7. Mengubah fakta resource pada basis data deduktif 8. DDBMS melakukan update fakta resource yang dipilih 9. DDBMS mengembalikan pesan status pengubahan 10. Menampilkan pesan status pengubahan (berhasil atau gagal) Skenario Alternatif (S-01-04) 1. Pengguna memilih menu Mengubah resource 2. Menampilkan semua fakta resource yang terdapat pada basis data deduktif 3. Pengguna memilih fakta resource untuk diubah 4. Pengguna melakukan perubahan untuk fakta resource yang dipilih 5. Melakukan validasi masukan pengguna 6. Menampilkan pesan bahwa masukan
B-1
B-2 Aksi Aktor
Reaksi Sistem pengguna telah terdapat pada sistem
Skenario Alternatif (S-01-05) 1. Pengguna memilih menu Menghapus resource 2. Menampilkan semua fakta resource yang terdapat pada basis data deduktif 3. Pengguna memilih fakta resource untuk dihapus 4. Menghapus fakta resource pada basis data deduktif 5. DDBMS menghapus fakta resource 6. DDBMS mengembalikan status penghapusan 7. Menampilkan pesan status penghapusan (berhasil atau gagal) Skenario Alternatif (S-01-06) 1. Pengguna memilih menu Menghapus resource 2. Menampilkan semua fakta resource yang terdapat pada basis data deduktif 3. Pengguna memilih fakta resource untuk dihapus 4. Menampilkan pesan bahwa fakta resource tidak dapat dihapus
B.2 Skenario Alternatif Use Case Manipulasi Batasan Skenario alternatif use case Manipulasi Batasan dapat dilihat pada Tabel B-2. Tabel B-2 Skenario Alternatif Use Case Manipulasi Batasan
Aksi Aktor
Reaksi Sistem Skenario Alternatif (S-02-02) 1. Pengguna memilih menu Menambah batasan 2. Menampilkan form yang berisi kotak teks sebagai masukan dari pengguna 3. Pengguna mengisi form menambahkan batasan. 4. Melakukan validasi masukan pengguna 5. Menampilkan pesan bahwa masukan pengguna telah terdapat pada basis data deduktif Skenario Alternatif (S-02-03) 1. Pengguna memilih menu Mengubah batasan 2. Menampilkan semua fakta batasan yang terdapat pada basis data deduktif 3. Pengguna memilih fakta batasan untuk diubah
B-3 Aksi Aktor 4. Penggguna melakukan perubahan untuk fakta batasan yang dipilih
Reaksi Sistem
5. 6. 7.
Melakukan validasi masukan pengguna Menerima masukan pengguna Mengubah fakta batasan pada basis data deduktif
8. DDBMS melakukan update pada fakta batasan yang dipilih 9. DDBMS mengembalikan status pengubahan fakta batasan 10. Menampilkan pesan status pengubahan (berhasil atau gagal) Skenario Alternatif (S-02-04) 1. Pengguna memilih menu Mengubah batasan 2. Menampilkan semua fakta batasan yang terdapat pada basis data deduktif 3. Pengguna memilih fakta batasan untuk diubah 4. Penggguna melakukan perubahan untuk fakta batasan yang dipilih 5. Melakukan validasi masukan pengguna 6. Menampilkan pesan bahwa masukan pengguna telah terdapat pada basis data deduktif Skenario Alternatif (S-02-05) 1. Pengguna memilih menu Menghapus batasan 2. Menampilkan semua fakta batasan yang terdapat pada basis data deduktif 3. Pengguna memilih fakta batasan untuk dihapus 4. Menghapus fakta batasan pada basis data deduktif 5. DDBMS menghapus fakta batasan yang dipilih 6. DDBMS mengembalikan status penghapusan 7. Menampilkan pesan status penghapusan (berhasil atau gagal) Skenario Alternatif (S-02-06) 1. Pengguna memilih menu Menghapus batasan 2. Menampilkan semua fakta batasan yang terdapat pada basis data deduktif 3. Pengguna memilih fakta batasan untuk dihapus 4. Menampilkan pesan bahwa fakta batasan tidak dapat dihapus
B-4
B.3 Skenario Alternatif Use Case Penjadwalan Skenario alternatif use case Penjadwalan dapat dilihat pada Tabel B-3. Tabel B-3 Skenario Alternatif Use Case Penjadwalan
Aksi Aktor
Reaksi Sistem Skenario Alternatif (S-03-02) 1. Pengguna memilih menu Penjadwalan resource 2. Pengguna menjadwalkan resource sesuai dengan fakta resource dan fakta batasan yang ada 3. Menampilkan status proses penjadwalan 4. Pasangan slot jadwal untuk resource tidak ditemukan 5. Melakukan backtrack 6. Menampilkan pesan status penjadwalan (berhasil atau gagal)
B.4 Skenario Alternatif Use Case Mengatur Ulang Jadwal Solusi Skenario alternatif use case Mengatur Ulang Jadwal Solusi dapat dilihat pada Tabel B4. Tabel B-4 Skenario Alternatif Use Case Mengatur Ulang Jadwal Solusi
Aksi Aktor
Reaksi Sistem Skenario Alternatif (S-04-02) 1. Pengguna memilih menu Pengaturan ulang jadwal solusi 2. Menampilkan pesan tidak ada jadwal untuk diatur ulang Skenario Alternatif (S-04-03) 1. Pengguna memilih menu Pengaturan ulang jadwal solusi 2. Menampilkan seluruh fakta jadwal solusi yang terdapat pada basis data deduktif 3. Pengguna memilih fakta jadwal solusi untuk diatur ulang 4. Pengguna memilih menu Tampilkan jadwal solusi lain untuk fakta jadwal yang dipilih 5. Menampilkan pesan tidak ada solusi lain yang dapat dipilih
B-5 B.5 Skenario Alternatif Use Case Menampilkan Jadwal Solusi Skenario alternatif use case Menampilkan Jadwal Solusi dapat dilihat pada Tabel B-5. Tabel B-5 Skenario Alternatif Use Case Menampilkan Jadwal Solusi
Aksi Aktor
Reaksi Sistem
Skenario Alternatif (S-05-02) 1. Pengguna memilih menu Tampilkan jadwal solusi 2. Menampilkan pesan tidak ada jadwal untuk ditampilkan
Lampiran C Diagram Sequence C.1 Diagram Sequence Manipulasi Resource Langkah aksi yang dilakukan pada Gambar IV-4 dapat dilihat pada Tabel C-1. Tabel C-1 Aksi Diagram Sequence Manipulasi Resource
No.
Aksi
1.
Pengguna memilih menu manipulasi resource.
2.
Antarmuka memanggil fungsi connect_to_db untuk melakukan koneksi ke DDBMS.
3.
Kelas koneksiDB kemudian memanggil fungsi connect.
4.
Kelas koneksiDB mendapatkan handle_connection dari DDBMS.
5.
Kelas koneksiDB memanggil fungsi select_db untuk memilih basis data yang digunakan.
6.
Kemudian kelas kontrolDB melakukan pengecekan apakah resource telah ada pada DDBMS.
7.
Lalu, kelas kontrolDB membangun query untuk dikirim ke DDBMS.
8.
Setelah query dibangun, kontrolDB mengirimkan query tersebut ke DDBMS. DDBMS mengeksekusi query yang diterima.
9.
Kelas kontrolDB menerima hasil query.
10.
Hasil query diproses oleh kontrolDB, dan diberikan ke antarmuka
11.
Antarmuka menampilkan hasil query ke pengguna.
12.
Antarmuka memanggil fungsi close_connection untuk mengakhiri koneksi ke DDBMS.
13.
Kelas koneksiDB menutup koneksi ke DDBMS dengan fungsi disconnect.
C.2 Diagram Sequence Manipulasi Batasan Langkah aksi yang dilakukan pada Gambar IV-5 dapat dilihat pada Tabel C-2. Tabel C-2 Aksi Diagram Sequence Manipulasi Batasan
No.
Aksi
1.
Pengguna memilih menu manipulasi batasan.
2.
Antarmuka memanggil fungsi connect_to_db untuk melakukan koneksi ke DDBMS.
3.
Kelas koneksiDB kemudian memanggil fungsi connect.
4.
Kelas koneksiDB mendapatkan handle_connection dari DDBMS.
5.
Kelas koneksiDB memanggil fungsi select_db untuk memilih DDBMS yang
C-1
C-2 No.
Aksi digunakan.
6.
Kemudian kelas kontrolDB melakukan pengecekan apakah batasan telah ada pada DDBMS.
7.
Lalu, kelas kontrolDB membangun query untuk dikirim ke DDBMS.
8.
Setelah query dibangun, kontrolDB mengirimkan query tersebut ke DDBMS. DDBMS mengeksekusi query yang diterima.
9.
Kelas kontrolDB menerima hasil query.
10.
Hasil query diproses oleh kontrolDB, dan diberikan ke antarmuka
11.
Antarmuka menampilkan hasil query ke pengguna.
12.
Antarmuka memanggil fungsi close_connection untuk mengakhiri koneksi ke DDBMS
13.
Kelas koneksiDB menutup koneksi ke DDBMS dengan fungsi disconnect.
C.3 Diagram Sequence Proses Penjadwalan Resource Langkah aksi yang dilakukan pada Gambar IV-6 dapat dilihat pada Tabel C-3. Tabel C-3 Aksi Diagram Sequence Proses Penjadwalan Resource
No.
Aksi
1.
Pengguna memilih menu menjadwalkan resource.
2.
Antarmuka memanggil fungsi connect_to_db untuk melakukan koneksi ke DDBMS.
3.
Kelas koneksiDB kemudian memanggil fungsi connect.
4.
Kelas koneksiDB mendapatkan handle_connection dari DDBMS.
5.
Kelas koneksiDB memanggil fungsi select_db untuk memilih DDBMS yang digunakan.
6.
Kelas kontrolDB memanggil fungsi get_resource() untuk mendapatkan semua resource yang terdapat dalam DDBMS. DDBMS memproses resource untuk dikirimkan ke kontrolDB.
7.
kontrolDB menerima resource dari DDBMS.
8.
Selanjutnya
kontrolDB
membuat
file-file
fakta
dengan
memanggil
fungsi
create_file_facts(). 9.
kontrolDB memanggil fungsi create_file_rule_priority() untuk membuat file batasan prioritas.
10.
Kemudian, kontrolDB memanggil apply_batasan_prioritas() untuk menerapkan batasan prioritas pada resource yang telah didapatkan. DDBMS melakukan pembobotan resource dengan menggunakan batasan prioritas yang telah disimpan.
C-3 No.
Aksi
11.
kontrolDB menerima resource dengan bobot batasan prioritas dari DDBMS.
12.
Kelas kontrolDB menentukan prioritas setiap resource berdasarkan bobot yang dimilikinya.
Loop: 13.
Kelas kontrolDB mengambil fakta resource dengan prioritas tertinggi terlebih dahulu.
14.
kontrolDB memanggil fungsi create_file_ruleI_ruleII() untuk membuat file batasan tipe I dan tipe II.
15.
Selanjutnya, kelas kontrolDB memanggil fungsi apply_batasan_tipeI_tipeII() untuk menerapkan semua batasan tipe I dan tipe II pada resource yang telah dipilih. DDBMS mencari semua pasangan slot jadwal yang memenuhi batasan tipe I. Selanjutnya, setiap resource yang memenuhi batasan tipe I, diberikan bobot dengan cara menerapkan batasan tipe II.
16.
kontrolDB menerima pasangan slot jadwal dengan bobot tipe II.
17.
KontrolDB memanggil prosedur simpan_resource() untuk menyimpan semua pasangan slot jadwal. DDBMS melakukan penyimpanan semua pasangan slot jadwal.
18.
KontrolDB mengambil solusi jadwal yang memiliki bobot terbesar.
19.
KontrolDB melakukan pengecekan apakah memerlukan backtrack atau tidak.
20.
KontrolDB melakukan update terhadap pasangan slot jadwal yang dipilih. DDBMS melakukan update status pasangan slot jadwal yang dipilih.
21.
KontrolDB memanggil fungsi simpan_jadwal. DDBMS menyimpan fakta jadwal.
Akhir Loop 22.
kontrolDB menerima status basis data dar iDDBMS.
23.
kontrolDB memproses status yang diterimanya dan meneruskannya ke antarmuka.
24.
Antarmuka menampilkan status penjadwalan kepada pengguna.
25.
Antarmuka memanggil fungsi close_connection untuk mengakhiri koneksi ke DDBMS
26.
Kelas koneksiDB menutup koneksi ke DDBMS dengan fungsi disconnect.
C.4 Diagram Sequence Pengaturan Ulang Jadwal Solusi Langkah aksi yang dilakukan pada Gambar IV-7 dapat dilihat pada Tabel C-4. Tabel C-4 Aksi Diagram Sequence Mengatur Ulang Jadwal Solusi
No.
Aksi
1.
Pengguna memilih menu pengaturan ulang jadwal solusi.
2.
Antarmuka menampilkan fakta jadwal hasil proses penjadwalan.
3.
Pengguna memilih fakta jadwal untuk diatur ulang.
C-4 No.
Aksi
4.
Fakta jadwal yang dipilih dikirimkan ke kelas kontrolDB.
5.
Kemudian,
kelas
kontrolDB
memanggil
fungsi
ambil_solusi_lain()
untuk
mendapatkan semua solusi jadwal lain yang dapat digunakan. DDBMS mencari solusi lain untuk fakta jadwal yang dipilih. 6.
kontrolDB menerima solusi-solusi lain dari DDBMS.
7.
Kelas kontrolDB memproses solusi-solusi ini dan mengirimkannya ke antarmuka.
8.
Lalu, antarmuka menampilkan solusi-solusi ini kepada pengguna.
9.
Pengguna melakukan pengaturan ulang terhadap fakta jadwal dengan memilih solusi lain yang sesuai dan dapat digunakan.
10.
Fakta jadwal resource yang telah diatur ulang dikirimkan ke kontrolDB oleh antarmuka.
11.
KontrolDB memproses fakta jadwal resource tersebut dan mengirimkannya ke DDBMS. DDBMS melakukan update untuk solusi yang sebelumnya digunakan dan solusi yang baru dipilih.
14.
kontrolDB menerima status pengaturan dari DDBMS.
15.
Lalu, status pengaturan ulang diproses dan dikirimkan ke antarmuka.
16.
Antarmuka menampilkan status pengaturan ulang yang dilakukan.
C.5 Diagram Sequence Menampilkan Jadwal Solusi Langkah aksi yang dilakukan pada Gambar IV-8 dapat dilihat pada Tabel C-5. Tabel C-5 Aksi Diagram Sequence Menampilkan Jadwal Solusi
No.
Aksi
1.
Pengguna memilih menu menampilkan jadwal solusi.
2.
Antarmuka memanggil fungsi connect_to_db untuk melakukan koneksi ke DDBMS.
3.
Kelas koneksiDB kemudian memanggil fungsi connect.
4.
Kelas koneksiDB mendapatkan handle_connection dari DDBMS.
5.
Kelas koneksiDB memanggil fungsi select_db untuk memilih DDBMS yang digunakan.
6.
Kelas kontrolDB memanggil fungsi ambil_jadwal_solusi () untuk mendapatkan semua jadwal solusi yang terdapat dalam DDBMS.
7.
DDBMS mengirimkan jadwal solusi.
8.
Jadwal solusi diproses oleh kontrolDB dan dikirimkan ke antarmuka.
9.
Antarmuka menampilkan jadwal solusi kepada pemgguna.
10.
Antarmuka memanggil fungsi close_connection untuk mengakhiri koneksi ke DDBMS.
C-5 No.
Aksi
11.
Kelas koneksiDB menutup koneksi ke DDBMS dengan fungsi disconnect.
Lampiran D Rancangan Antarmuka Perangkat Lunak Rancangan antarmuka perangkat lunak terbagi menjadi lima bagian utama yaitu rancangan antarmuka manipulasi resource, manipulasi batasan, menjadwalkan resource, pengaturan ulang jadwal solusi, dan menampilkan jadwal solusi.
D.1 Rancangan Antarmuka Manipulasi Resource Rancangan antarmuka manipulasi resource dapat dilihat pada Gambar D-1 dan keterangan mengenai antarmuka dapat dilihat pada Tabel D-1. Textbox1
Tombol1
Label1
Textbox2
Label2 Link1
Tombol2
Link3 Link2
Gambar D-1 Rancangan Antarmuka Manipulasi Resource
Tabel D-1 Keterangan Antarmuka Manipulasi Resource
Id
Jenis
Keterangan
Label1
Label
Berisi sintaks untuk mendefinisikan resource baru.
Label2
Label
Berisi sintaks untuk menambah resource.
Link1
Link
Link untuk melakukan pengubahan terhadap resource yang ada.
Link2
Link
Link untuk melakukan penghapusan terhadap resource yang ada.
Link3
Link
Link untuk melakukan penghapusan terhadap definisi resource
D-1
D-2 Id
Jenis
Keterangan beserta fakta mengenai resource tersebut.
Textbox1
Textbox
Kotak masukan untuk mendefinisikan resource baru.
Textbox2
Textbox
Kotak masukan untuk menambah resource.
Tombol1
Tombol
Tombol untuk melakukan pendefinisian resource baru.
Tombol2
Tombol
Tombol untuk melakukan penambahan resource.
D.2 Rancangan Antarmuka Manipulasi Batasan Rancangan antarmuka manipulasi resource dapat dilihat pada Gambar D-2 dan keterangan mengenai antarmuka dapat dilihat pada Tabel D-2. Textarea1
Tombol1
ComboBox1
Link1
Label1
Link2
Link3 Link4 Link5
Gambar D-2 Rancangan Antarmuka Manipulasi Batasan
Tabel D-2 Keterangan Antarmuka Manipulasi Batasan
Id
Jenis
Keterangan
ComboBox1
ComboBox Berisi pilihan tipe batasan untuk definisi batasan. Tipe ini terbagi menjadi 3, yaitu: - Prioritas - Tipe I - Tipe II
Label1
Label
Berisi sintaks pendefinisian batasan dan contoh.
D-3 Id
Jenis
Keterangan
Link1
Link
Link untuk melakukan pengubahan terhadap batasan yang ada.
Link2
Link
Link untuk melakukan penghapusan terhadap batasan yang ada.
Link3
Link
Link untuk melakukan pendefinisian batasan prioritas yang digunakan dalam goal untuk memberikan prioritas pada resource.
Link4
Link
Link untuk melakukan pendefinisian batasan penjadwalan yang digunakan dalam goal untuk mencari slot jadwal yang tersedia untuk resource tertentu.
Link5
Link
Link untuk melakukan pendefinisian batasan penjadwalan yanng digunakan dalam goal untuk mengecek setiap slot jadwal apakah memenuhi semua batasan yang ada atau tidak.
Textarea1
Textarea
Kotak masukan untuk mendefinisikan batasan.
Tombol1
Tombol
Tombol untuk mendefinisikan batasan.
D.3 Rancangan Antarmuka Menjadwalkan Resource Rancangan antarmuka manipulasi resource dapat dilihat pada Gambar D-3 dan keterangan mengenai antarmuka dapat dilihat pada Tabel D-3.
Tombol1
Tombol2
Gambar D-3 Rancangan Antarmuka Menjadwalkan Resource
D-4 Tabel D-3 Keterangan Antarmuka Menjadwalkan Resource
Id
Jenis
Keterangan
Tombol1
Tombol Tombol untuk memulai penjadwalan berdasarkan resource dan batasan yang ada.
Tombol2
Tombol Tombol untuk menghapus penjadwalan yang sebelumnya pernah disimpan.
D.4 Rancangan Antarmuka Pengaturan Ulang Jadwal Solusi Rancangan antarmuka pengaturan ulang jadwal solusi dapat dilihat pada Gambar D-4 dan keterangan mengenai antarmuka dapat dilihat pada Tabel D-4.
ComboBox1
Tombol1
Tombol2
Gambar D-4 Rancangan Antarmuka Pengaturan Ulang Jadwal Solusi
Tabel D-4 Keterangan Antarmuka Pengaturan Ulang Jadwal Solusi
Id
Jenis
Keterangan
ComboBox1
ComboBox Berisi pilihan resource yang sudah dijadwalkan.
Tombol1
Tombol
Tombol untuk mencari slot jadwal lain yang dapat digunakan untuk resource yang dipilih.
Tombol2
Tombol
Tombol untuk melakukan pengecekan semua slot jadwal yang disimpan.
D-5 D.5 Rancangan Antarmuka Menampilkan Jadwal Solusi Rancangan antarmuka manipulasi resource dapat dilihat pada Gambar D-5 dan keterangan mengenai antarmuka dapat dilihat pada Tabel D-5.
Tombol1
Tabel1
Gambar D-5 Rancangan Antarmuka Menampilkan Jadwal Solusi
Tabel D-5 Keterangan Antarmuka Menampilkan Jadwal Solusi
Id
Jenis
Keterangan
Tombol1
Tombol
Tombol untuk menampilkan jadwal solusi yang dihasilkan oleh proses penjadwalan.
Tabel1
Tabel
Tabel waktu jadwal hasil. Tabel waktu tidak dikeluarkan apabila jadwal tidak terdapat pada basis data deduktif.
Lampiran E Data Pengujian Data yang digunakan pada pengujian terbagi menjadi dua bagian, yaitu fakta resource dan batasan.
E.1 Fakta Resource Data fakta resource penjadwalan mata kuliah untuk pengujian perangkat lunak terbagi menjadi beberapa bagian yaitu fakta mata kuliah, kelas mata kuliah, dosen, waktu, dan ruangan. 1. Fakta Mata Kuliah Data fakta mata kuliah dapat dilihat pada Tabel E-1. Fakta mata kuliah dalam notasi fakta pada basis data deduktif adalah mata_kuliah(Kode_mk, Nama, SKS, Jml_kelas, Sifat).
dengan nilai parameter input adalah data mata kuliah.
Contoh: -
mata_kuliah(‘IF1282’, ‘Dasar Pemrograman’, 2, 1, ‘wajib’).
- mata_kuliah(‘IF4061’, ‘Analisis & Perancangan Orientasi Objek’, 3, 1, ‘pilihan).
Tabel E-1 Data Pengujian: Fakta Mata Kuliah
Kode MK
Nama
SKS Jml. Kelas
Sifat
IF1282
Dasar Pemrograman
2
1
wajib
IF2081
Algoritma & Pemrograman IB
3
2
wajib
IF2101
Interaksi Manusia Komputer
2
2
wajib
IF2152
Probabilitas & Statistika
3
2
wajib
IF2153
Matematika Diskrit
3
2
wajib
IF2182
Algoritma & Struktur Data
4
2
wajib
IF2191
Organisasi & Arsitektur Komputer I
3
2
wajib
IF3111
Basis Data
3
2
wajib
IF3131
Inteligensia Buatan
3
2
wajib
IF3171
Sistem Informasi
3
2
wajib
IF3191
Sistem Operasi
4
2
wajib
IF4061
Analisis & Perancangan Orientasi Objek
3
1
pilihan
IF4062
Rekayasa Interaksi
2
1
pilihan
IF4072
Sistem Informasi Enterprise
3
1
pilihan
IF40K1
Kerja Praktek
2
1
wajib
E-1
E-2 Kode MK
Nama
SKS Jml. Kelas
Sifat
IF40Z1
Tugas Akhir I
3
1
wajib
IF40Z2
Tugas Akhir II
3
1
wajib
IF5001
Topik Khusus
2
1
pilihan
IF5011
Basis Data Non Relasional
3
1
pilihan
IF5031
Sistem Berbasis Pengetahuan
3
1
pilihan
IF5032
Pembelajaran Mesin
3
1
pilihan
IF5041
Interpretasi & Pengolahan Citra
3
1
pilihan
IF5051
Pemodelan & Simulasi
3
1
pilihan
IF5052
Algoritma Kombinatorial
3
1
pilihan
IF5054
Kriptografi
3
1
pilihan
IF5055
Sistem Temu Balik Informasi
3
1
pilihan
IF5091
Sistem Terdistribusi
3
1
pilihan
IF5092
Pemrograman Sistem
3
1
pilihan
2. Fakta Kelas Mata Kuliah Data kelas mata kuliah dapat dilihat pada Tabel E-2. Fakta kelas mata kuliah dalam notasi fakta pada basis data deduktif adalah kelas_mk(Kode_mk, No_kelas, SKS, Tingkat, NIP_dosen, Jml_peserta).
dengan nilai parameter input adalah data kelas mata kuliah.
Contoh: - kelas_mk(‘IF1282’, ‘01’, 2, 1, ‘999023508’, 5). - kelas_mk(‘IF4061’, ‘01’, 3, 4, ‘132164562’, 50). Tabel E-2 Data Pengujian: Fakta Kelas Mata Kuliah
Kode MK
No Kelas
SKS
Tingkat
NIP Dosen
Jml. Peserta
IF1282
01
2
1
999023508
5
IF2081
01
3
2
130676866
60
IF2081
02
3
2
130676866
60
IF2101
01
2
2
132084094
60
IF2101
02
2
2
132084094
60
IF2152
01
3
2
131860377
60
IF2152
02
3
2
131414805
60
IF2153
01
3
2
131414805
60
IF2153
02
3
2
132084796
60
IF2182
01
4
2
131789702
70
IF2182
02
4
2
132142232
70
IF2191
01
3
2
130680559
60
E-3 Kode MK
No Kelas
SKS
Tingkat
NIP Dosen
Jml. Peserta
IF2191
02
3
2
130680559
60
IF3111
01
3
3
132164563
50
IF3111
02
3
3
132164563
60
IF3131
01
3
3
999023503
60
IF3131
02
3
3
131855631
60
IF3171
01
3
3
130680557
60
IF3171
02
3
3
130680557
60
IF3191
01
4
3
999023504
60
IF3191
02
4
3
999023502
60
IF4061
01
3
4
132164562
50
IF4062
01
2
4
130675823
50
IF4072
01
3
4
131855631
50
IF40K1
01
2
4
999023508
150
IF40Z1
01
3
4
130676866
150
IF40Z2
01
3
4
132208711
150
IF5001
01
2
4
132127666
50
IF5011
01
3
4
132164563
50
IF5031
01
3
4
999023508
50
IF5032
01
3
4
132084094
50
IF5041
01
3
4
130796173
50
IF5051
01
3
4
131860377
50
IF5052
01
3
4
131414805
50
IF5054
01
3
4
132084796
50
IF5055
01
3
4
132045672
50
IF5091
01
3
4
131803257
50
IF5092
01
3
4
132142232
50
3. Fakta Dosen Data fakta dosen dapat dilihat pada Tabel E-3. Fakta dosen dalam notasi fakta pada basis data deduktif adalah dosen(NIP_dosen, Nama, Prodi). dengan nilai parameter input adalah data dosen. Contoh: - dosen(‘999023508’, ‘Masayu Leylia Khodra S.T. M.T.’, ‘IF’). - dosen(‘132164562’, ‘Yani Widyani S.T. M.T.’, ‘IF’).
E-4 Tabel E-3 Data Pengujian: Fakta Dosen
NIP Dosen
Nama
Prodi
130357665
Dr. Ir. Oerip Santoso M.Sc.
IF
130675823
Dr. Ir. Husni S. Sastramihardja M.T.
IF
130676866
Dra. Christine Suryadi M.T.
IF
130679341
Dr. Ing. Farid Wazdi
IF
130679667
Dr. Ir. Munawar Ahmad ZA
IF
130680557
Ir. Mary Handoko Wijoyo M.Sc.
IF
130680559
Ir. Santika Wachyudin P. M.T.
IF
130796173
Dr. Ing. Ir. Iping Supriana
IF
130796176
Dr. Ir. M.M. Inggriani
IF
130890930
Dr. Ing. Ir. Benhard Sitohang
IF
130938170
Dr. Ing. M. Sukrisno Mardiyanto
IF
131414805
Dra. Harlili S. M.Sc.
IF
131471329
Ir. Hira Laksmiwati S. M.Sc.
IF
131660129
Ir. Agustinah Saptajuwita K. M.Sc.
IF
131789702
Adi Mulyanto S.T. M.T.
IF
131803257
Ir. Afwarman Manaf M.Sc. Ph.D.
IF
131855631
Ir. Windy Gambetta
IF
131860377
Drs. Judhi Santoso M.Sc.
IF
131863699
Ir. Sri Purwanti Mulyaningtyas M.Sc.
IF
131933281
Ir. Kridanto Surendro M.Sc. Ph.D.
IF
132045672
Dr. Ir. Rila Mandala M.Eng.
IF
132084094
Ir. Dwi Hendratmo W. M.Sc. Ph.D.
IF
132084796
Ir. Rinaldi M.T.
IF
132127666
Ir. G.A. Putri Saptawati M.Com
IF
132142232
Riza Satria Perdana S.T. M.T.
IF
132164562
Yani Widyani S.T. M.T.
IF
132164563
Tricya E. Widagdo S.T. M.Sc.
IF
132206652
Bayu Hendradjaya S.T. M.T.
IF
132208711
Henny Yusnita Zubir B.Sc. M.T.
IF
132215078
Saiful Akbar S.T. M.T.
IF
999023502
Bugi Wibowo S.T. M.T.
IF
999023503
Nur Ulfa Maulidevi S.T. M.Sc.
IF
999023504
Achmad Imam S.T. M.Sc. Ph.D.
IF
E-5 999023505
Wikan Danar Sunindyo S.T.
IF
999023506
Reza Ferrydiansyah S.T.
IF
999023507
Ayu Purwarianti S.T. M.T.
IF
999023508
Masayu Leylia Khodra S.T. M.T.
IF
4. Fakta Waktu Data fakta waktu dapat dilihat pada Tabel E-4. Fakta waktu dalam notasi fakta pada basis data deduktif adalah waktu(Kode_waktu, Hari, Jam). dengan nilai parameter input adalah data waktu. Contoh: - waktu(‘11’, ‘Senin’, ‘07_08’). - waktu(‘35’, ‘Rabu’, ‘11_12’). Tabel E-4 Data Pengujian: Fakta Waktu
Kode waktu
Hari
Jam
Kode waktu
Hari
Jam
11
Senin
07_08
21
Selasa
07_08
12
Senin
08_09
22
Selasa
08_09
13
Senin
09_10
23
Selasa
09_10
14
Senin
10_11
24
Selasa
10_11
15
Senin
11_12
25
Selasa
11_12
16
Senin
12_13
26
Selasa
12_13
17
Senin
13_14
27
Selasa
13_14
18
Senin
14_15
28
Selasa
14_15
19
Senin
15_16
29
Selasa
15_16
110
Senin
16_17
210
Selasa
16_17
Kode waktu
Hari
Jam
Kode waktu
Hari
Jam
31
Rabu
07_08
41
Kamis
07_08
32
Rabu
08_09
42
Kamis
08_09
33
Rabu
09_10
43
Kamis
09_10
34
Rabu
10_11
44
Kamis
10_11
35
Rabu
11_12
45
Kamis
11_12
36
Rabu
12_13
46
Kamis
12_13
37
Rabu
13_14
47
Kamis
13_14
38
Rabu
14_15
48
Kamis
14_15
39
Rabu
15_16
49
Kamis
15_16
310
Rabu
16_17
410
Kamis
16_17
E-6 Kode waktu
Hari
Jam
51
Jumat
07_08
52
Jumat
08_09
53
Jumat
09_10
54
Jumat
10_11
55
Jumat
11_12
56
Jumat
12_13
57
Jumat
13_14
58
Jumat
14_15
59
Jumat
15_16
510
Jumat
16_17
5. Fakta Ruangan Data fakta ruangan dapat dilihat pada Tabel E-5. Fakta ruangan dalam notasi fakta pada basis data deduktif adalah ruang(Kode_ruang, Kapasitas, Letak). dengan nilai parameter input adalah data ruangan. Contoh: - ruangan(‘7601’, 122, 1). - ruangan(‘7611’, 30, 2). Tabel E-5 Data Pengujian: Fakta Ruangan
Kode ruang
Kapasitas
Letak
7601
122
1
7602
150
3
7603
50
3
7604
60
3
7605
20
3
7606
76
3
7607
50
3
7608
45
3
7609
60
3
7610
65
3
7611
30
2
Labdas1
59
4
Labdas2
32
4
Labdas3
18
4
Labdas4
52
3
E-7
6. Fakta Jadwal Fakta jadwal merupakan fakta elementer yang dihasilkan dari proses penjadwalan. Fakta jadwal ini dapat ditambah oleh pengguna atau aplikasi. Fakta jadwal dalam notasi fakta pada basis data deduktif adalah jadwal(Id, Kode_ruang).
Kode_mk,
Kelas_mk,
Kode_waktu,
dengan nilai parameter input adalah data jadwal.
Contoh: - jadwal(2, ‘IF1282’, ‘01’, ‘11’, ‘7606’). - jadwal(10, ‘IF3111’, ‘02’, ‘31’, ‘7602’).
E.2 Batasan Data batasan prioritas penjadwalan mata kuliah untuk pengujian perangkat lunak dapat dilihat pada Tabel E-6. Tabel E-6 Data Pengujian: Batasan Prioritas
No. Definisi Batasan 1.
2.
Definisi Aturan
Mata kuliah dengan jumlah perkiraan peserta lebih banyak Dapat
dilihat
dijadwalkan terlebih dahulu.
Algoritma E-1
Mata kuliah dengan SKS besar dijadwalkan terlebih dahulu.
Dapat
dilihat
pada
pada
Algoritma E-2
prioritas_mk(Kode_mk, Kelas_mk, Bobot_lama, Bobot_baru) Å kelas_mk(Kode_mk, Kelas_mk, _, _, _, Jml_peserta) ∧ Bobot_baru is Bobot_lama + Jml_peserta.
Algoritma E-1 Aturan prioritas_mk prioritas_mk2(Kode_mk, Kelas_mk, Bobot_lama, Bobot_baru) Å kelas_mk(Kode_mk, Kelas_mk, SKS, _, _, Jml_peserta) ∧ Bobot_baru is Bobot_lama + SKS * 70.
Algoritma E-2 Aturan prioritas_mk2
Data batasan penjadwalan mata kuliah tipe I dan tipe II untuk pengujian perangkat lunak dapat dilihat pada Tabel E-7. Tabel E-7 Data Pengujian: Batasan Tipe I dan Tipe II
No. 1.
Kelompok Batasan
Definisi Batasan (Tipe)
Batasan Mata Kuliah
a. Mata kuliah wajib satu tingkat dalam setiap prodi tidak tabrakan (Tipe I). b. Pelaksanaan perkuliahan dibagi berdasarkan segmen waktu sebagai berikut: (Tipe I) i. Pada Semester 1, segmen pagi dialokasikan untuk mata
E-8 No.
Kelompok Batasan
Definisi Batasan (Tipe) kuliah tingkat 1 dan 3, sedangkan segmen siang untuk mata kuliah tingkat 2 dan 4. ii. Pada Semester 2, segmen pagi dialokasikan untuk mata kuliah tingkat 2 dan 4, sedangkan segmen siang untuk mata kuliah tingkat 1 dan 3. c. Mata kuliah wajib dalam dua tingkat berurutan dalam setiap prodi tidak tabrakan (Tipe I). d. Mata kuliah satu tingkat dalam suatu program studi tidak dapat dijadwalkan lebih dari 4 jam berurutan dalam satu hari.(Tipe I). e. Mata kuliah yang lebih besar sama dengan 3 sks tidak dapat dijadwalkan dalam satu hari atau dua hari berurutan. (Tipe I). f. Mata kuliah non-TPB yang diselenggarakan dalam lebih dari satu kelas (kelas paralel) dilaksanakan pada slot waktu yang sama (Tipe II). g. Mata kuliah TPB yang diselenggarakan dalam lebih dari satu kelas (kelas paralel) dilaksanakan dalam beberapa slot waktu sesuai dengan kelompok berdasarkan pada fakultas / sekolah (Tipe I). h. Suatu mata kuliah dalam satu tingkat pada setiap prodi tidak tabrakan (Tipe II). i. Semua mata kuliah dalam dua tingkat berurutan pada setiap prodi tidak tabrakan (Tipe II).
2.
Batasan Dosen
a. Dosen hanya mengajar paling banyak satu mata kuliah dalam satu slot waktu (Tipe I). b. Dosen hanya mengajar maksimum 4 sks dalam satu hari (Tipe I). c. Untuk dosen yang memiliki jabatan struktural (Rektor, Wakil Rektor, Dekan, Wakil Dekan, Ketua SPM, dan SPI) harus disediakan slot waktu yang sama di mana mereka tidak diberi tugas mengajar (Tipe I). d. Setiap dosen hanya mengajar paling banyak 4 hari dalam seminggu (Tipe II). e. Dosen dengan kendala fisik diberi ruang kuliah yang
E-9 No.
Kelompok Batasan
Definisi Batasan (Tipe) sesuai (Tipe II).
3.
Batasan Ruangan
a. Satu ruang hanya dipakai untuk paling banyak satu mata kuliah dalam satu slot waktu (Tipe I). b. Ruang kuliah diisi sesuai dengan kapasitasnya (Tipe I). c. Dalam satu slot waktu, minimal ada 10% ruang yang bebas (Tipe II)
Aturan hasil konversi batasan yang berhasil diimplementasikan dapat dilihat pada Tabel E-8.
Tabel E-8 Data Pengujian: Aturan Hasil Konversi Batasan Tipe I dan Tipe II
No.
Kelompok Batasan Definisi Aturan (Tipe)
1.
Batasan Mata Kuliah a. Mata kuliah wajib satu tingkat dalam setiap prodi tidak tabrakan (Tipe I). Implementasi dalam bentuk aturan: slot_together(Kode_mk, Kode_waktu) :atom_codes(Kode_mk, L), nth0(2, L, Tk1), digit_value(Tk1, Tingkat1), jadwal(_, Kode_mk2, _, Kode_waktu2, _), mata_kuliah(Kode_mk, _, _, _, 'wajib'), mata_kuliah(Kode_mk2, _, _, _, 'wajib'), atom_codes(Kode_mk2, Tingkat2),
L2),
Tingkat1
=:=
nth0(2,
L2,
Tingkat2,
Tk2),
digit_value(Tk2,
Kode_mk
\=
Kode_mk2,
Kode_waktu = Kode_waktu2. rules1(Kode_mk, Kode_waktu) :avail_waktu(Kode_waktu), not(slot_together(Kode_mk, Kode_waktu)).
Aturan avail_waktu digunakan untuk mendapatkan slot-slot waktu yang tersedia, sedangkan aturan slot_together adalah aturan untuk mendapatkan slot waktu mata kuliah wajib yang setingkat yang bertabtrakan dengan mata kuliah yang akan dijadwalkan. Rules1 dibangun dengan mencari semua slot waktu yang tidak bertabrakan (tidak slot_together).
b. Pelaksanaan perkuliahan dibagi berdasarkan segmen waktu sebagai berikut: (Tipe I)
E-10 No.
Kelompok Batasan Definisi Aturan (Tipe) i. Pada Semester 1, segmen pagi dialokasikan untuk mata kuliah tingkat 1 dan 3, sedangkan segmen siang untuk mata kuliah tingkat 2 dan 4. ii. Pada Semester 2, segmen pagi dialokasikan untuk mata kuliah tingkat 2 dan 4, sedangkan segmen siang untuk mata kuliah tingkat 1 dan 3.
Implementasi dalam bentuk aturan: slot_avail_pagi(Kode_waktu) :- avail_waktu(Kode_waktu), atom_codes(Kode_waktu, L), nth(1, L, _, J), number_codes(Jam, J), Jam >= 1, Jam =< 5. % Aturan ini menghasilkan fakta turunan segmen pagi. slot_avail_siang(Kode_waktu) :- avail_waktu(Kode_waktu), atom_codes(Kode_waktu, L), nth(1, L, _, J), number_codes(Jam, J), Jam >= 6, Jam =< 10. % Aturan ini menghasilkan fakta turunan segmen siang. rules2(Semester, Tingkat, Kode_waktu) :(Semester = 1, Tingkat = 1; Semester = 1, Tingkat = 3), slot_avail_pagi(Kode_waktu); (Semester
=
1,
Tingkat
=
2;
Semester
=
1,
Tingkat
=
4),
Semester
=
2,
Tingkat
=
3),
Semester
=
2,
Tingkat
=
4),
slot_avail_siang(Kode_waktu); (Semester
=
2,
Tingkat
=
1;
slot_avail_siang(Kode_waktu); (Semester
=
2,
Tingkat
=
2;
slot_avail_pagi(Kode_waktu).
c. Mata kuliah wajib dalam dua tingkat berurutan dalam setiap prodi tidak tabrakan (Tipe I). Implementasi dalam bentuk aturan: slot_together2(Kode_mk, Kode_waktu) :- atom_codes(Kode_mk, L), nth0(2, L, Tk1), digit_value(Tk1, Tingkat1), jadwal(_, Kode_mk2, _, Kode_waktu2, _), mata_kuliah(Kode_mk, _, _, _, 'wajib'), mata_kuliah(Kode_mk2, _, _, _, 'wajib'), atom_codes(Kode_mk2, L2), nth0(2, L2, Tk2), digit_value(Tk2, Tingkat2), (Tingkat1 < Tingkat2), Tingkat1 =:= Tingkat2 - 1, Kode_mk \= Kode_mk2, Kode_waktu = Kode_waktu2. slot_together2(Kode_mk, Kode_waktu) :- atom_codes(Kode_mk, L),
E-11 No.
Kelompok Batasan Definisi Aturan (Tipe) nth0(2, L, Tk1), digit_value(Tk1, Tingkat1), jadwal(_, Kode_mk2, _, Kode_waktu2, _), mata_kuliah(Kode_mk, _, _, _, 'wajib'), mata_kuliah(Kode_mk2, _, _, _, 'wajib'), atom_codes(Kode_mk2, L2), nth0(2, L2, Tk2), digit_value(Tk2, Tingkat2), (Tingkat1 > Tingkat2), Tingkat2 =:= Tingkat1 - 1, Kode_mk \= Kode_mk2, Kode_waktu = Kode_waktu2. rules3(Kode_mk, Kode_waktu) :- avail_waktu(Kode_waktu), not(slot_together2(Kode_mk, Kode_waktu)).
Aturan avail_waktu digunakan untuk mendapatkan slot-slot waktu yang tersedia, dan aturan slot_together2 adalah aturan untuk mendapatkan slot waktu mata kuliah wajib yang berada pada dua tingkat yang berurutan yang bertabtrakan dengan mata kuliah yang akan dijadwalkan. Rules3 dibangun dengan mencari semua slot waktu yang tidak bertabrakan (tidak slot_together2). d. Mata kuliah satu tingkat dalam suatu program studi tidak dapat dijadwalkan lebih dari 4 jam berurutan dalam satu hari.(Tipe I). Tidak diimplementasikan.
e. Mata kuliah yang lebih besar sama dengan 3 sks tidak dapat dijadwalkan dalam satu hari atau dua hari berurutan. (Tipe I). Implementasi dalam bentuk aturan: % Aturan consecutive_slot menghasilkan fakta apakah Kode_waktu1 berbeda satu jam dengan Kode_waktu2 consecutive_slot(Kode_waktu1, Kode_waktu2) :atom_codes(Kode_waktu1, L1), nth0(0, L1, H1), digit_value(H1, Hari1), nth(1, L1, _, J1), number_codes(Jam1, J1), atom_codes(Kode_waktu2, L2), nth0(0, L2, H2), digit_value(H2, Hari2), nth(1, L2, _, J2), number_codes(Jam2, J2), Hari1 = Hari2, (Jam1 < Jam2), Jam1 =:= Jam2 - 1. % Aturan interval_slot menghasilkan fakta apakah Kode_waktu1 berselang minimal satu hari dengan Kode_waktu2 interval_slot(Kode_waktu1, Kode_waktu2) :atom_codes(Kode_waktu1, L1), nth0(0, L1, H1), digit_value(H1, Hari1), atom_codes(Kode_waktu2, L2), nth0(0, L2, H2), digit_value(H2,
E-12 No.
Kelompok Batasan Definisi Aturan (Tipe) Hari2), (Hari2 >= Hari1+2); atom_codes(Kode_waktu2, L1), nth0(0, L1, H1), digit_value(H1, Hari1), atom_codes(Kode_waktu1, L2), nth0(0, L2, H2), digit_value(H2, Hari2), (Hari2 >= Hari1+2). % Aturan avail_consecutive_slots menghasilkan fakta mengenai Kode waktu apa saja yang berurutan dengan Kode_waktu1 dan dapat menempati ruangan yang sama, Kode_ruang. avail_consecutive_slots(Kode_waktu1, Kode_waktu2, Kode_ruang) :avail_waktu(Kode_waktu1), avail_waktu(Kode_waktu2), Kode_waktu1 \= Kode_waktu2, consecutive_slot(Kode_waktu1, Kode_waktu2), avail_ruang(Kode_ruang). % Aturan avail_interval_slots menghasilkan fakta mengenai Kode waktu apa saja yang berselang minimal satu hari dengan Kode_waktu1 dan ruangan apa saja yang dapat ditempati pada slot waktu tersebut. avail_interval_slots(Kode_waktu1, Kode_waktu2, Kode_ruang1, Kode_ruang2) :- avail_waktu(Kode_waktu1), avail_waktu(Kode_waktu2), Kode_waktu1 \= Kode_waktu2, interval_slot(Kode_waktu1, Kode_waktu2), avail_ruang(Kode_ruang1), avail_ruang(Kode_ruang2). % Aturan rules5 menghasilkan fakta mengenai Kode waktu dan Kode ruang yang memenuhi batasan mata kuliah yang lebih besar sama dengan 3 sks tidak dapat dijadwalkan dalam satu hari atau dua hari berurutan. Aturan rules5 menghasilkan fakta Kode waktu untuk sks 1 dan 2 yang berurutan dan menghasilkan Kode waktu untuk sks ke 3 yang berselang satu hari dengan kode waktu sks 1. Kode waktu untuk sks ke 4 berurutan dengan kode waktu sks ke 3. rules5(_Prioritas, _Kode_mk, _Kelas_mk, SKS_no, Kode_waktu, Kode_ruang) :(SKS_no = 1), avail_slot(Kode_waktu, Kode_ruang). rules5(Prioritas, Kode_mk, Kelas_mk, SKS_no, Kode_waktu, Kode_ruang) :- SKS_no > 1, Mod_SKS is SKS_no mod 2, (Mod_SKS =:= 0), Prioritas_pre is Prioritas,
E-13 No.
Kelompok Batasan Definisi Aturan (Tipe) jadwal(Prioritas_pre, Kode_mk, Kelas_mk, Kode_waktu1, Kode_ruang), avail_consecutive_slots(Kode_waktu1, Kode_waktu, Kode_ruang). rules5(Prioritas, Kode_mk, Kelas_mk, SKS_no, Kode_waktu, Kode_ruang) :- SKS_no > 1, Mod_SKS is SKS_no mod 2, (Mod_SKS =:= 1), Prioritas_pre is Prioritas - 1, jadwal(Prioritas_pre, Kode_mk, Kelas_mk, Kode_waktu1, Kode_ruang1), avail_interval_slots(Kode_waktu1, Kode_waktu, Kode_ruang1, Kode_ruang).
f.
Mata kuliah non-TPB yang diselenggarakan dalam lebih dari satu kelas (kelas paralel) dilaksanakan pada slot waktu yang sama (Tipe II). Implementasi dalam bentuk aturan: % Aturan rules6 memberikan bobot tambahan sebesar 300 apabila mata kuliah yang memiliki jumlah kelas lebih besar dari 2 dapat menempati slot yang sama untuk setiap slot jadwalnya. rules6(Kode_mk, Kelas_mk, Kode_waktu, Kode_ruang, Bobot_old, Bobot_new) :- (mata_kuliah(Kode_mk, _, _, Jml_kelas, _)), Jml_kelas >= 2, jadwal(_, Kode_mk, Kelas2, Kode_waktu, Kode_ruang2), Kelas_mk \= Kelas2, kelas_mk(Kode_mk, Kelas_mk, _, _, NIP1, _), kelas_mk(Kode_mk, Kelas2, _, _, NIP2, _), NIP1 \= NIP2, Kode_ruang \= Kode_ruang2, avail_slot(Kode_waktu, Kode_ruang), avail_slot(Kode_waktu, Kode_ruang2), Bobot_new is Bobot_old + 300; Bobot_new is Bobot_old + 0.
g. Mata kuliah TPB yang diselenggarakan dalam lebih dari satu kelas (kelas paralel) dilaksanakan dalam beberapa slot waktu sesuai dengan kelompok berdasarkan pada fakultas / sekolah (Tipe I). Tidak diimplementasikan, karena data mengenai batasan ini tidak diperoleh.
h. Suatu mata kuliah dalam satu tingkat pada setiap prodi tidak tabrakan (Tipe II). Implementasi dalam bentuk aturan: % Aturan slot_together3 menghasilkan fakta turunan mengenai kode waktu mata kuliah lain yang setingkat yang bertabrakan dengan mata kuliah Kode_mk. slot_together3(Kode_mk,
Kode_waktu)
:-
atom_codes(Kode_mk,
nth0(2, L, Tk1), digit_value(Tk1, Tingkat1),
L),
E-14 No.
Kelompok Batasan Definisi Aturan (Tipe) jadwal(_, Kode_mk2, _, Kode_waktu2, _), atom_codes(Kode_mk2,
L2),
nth0(2,
L2,
Tk2),
digit_value(Tk2,
Tingkat2), Tingkat1
=:=
Tingkat2,
Kode_mk
\=
Kode_mk2,
Kode_waktu
=
Kode_waktu2. % Aturan rules7 memberikan bobot tambahan sebesar 75 apabila mata kuliah dalam satu tingkat tidak tabrakan. rules7(Kode_mk, Kode_waktu, Bobot_old, Bobot_new) :avail_waktu(Kode_waktu), not(slot_together3(Kode_mk, Kode_waktu)), Bobot_new is Bobot_old + 75; Bobot_new is Bobot_old + 0.
i.
Semua mata kuliah dalam dua tingkat berurutan pada setiap prodi tidak tabrakan (Tipe II). Implementasi dalam bentuk aturan: % Aturan slot_together4 menghasilkan fakta turunan mengenai kode waktu mata kuliah lain yang berada pada dua tingkat yang berurutan yang bertabrakan dengan mata kuliah Kode_mk. slot_together4(Kode_mk,
Kode_waktu)
:-
atom_codes(Kode_mk,
L),
nth0(2, L, Tk1), digit_value(Tk1, Tingkat1), jadwal(_, Kode_mk2, _, Kode_waktu2, _), atom_codes(Kode_mk2,
L2),
nth0(2,
L2,
Tk2),
digit_value(Tk2,
Tingkat2), (Tingkat1 < Tingkat2), Tingkat1 =:= Tingkat2 - 1, Kode_mk \= Kode_mk2, Kode_waktu = Kode_waktu2. slot_together4(Kode_mk,
Kode_waktu)
:-
atom_codes(Kode_mk,
L),
nth0(2, L, Tk1), digit_value(Tk1, Tingkat1), jadwal(_, Kode_mk2, _, Kode_waktu2, _), atom_codes(Kode_mk2,
L2),
nth0(2,
L2,
Tk2),
digit_value(Tk2,
Tingkat2), (Tingkat1 > Tingkat2), Tingkat2 =:= Tingkat1 - 1, Kode_mk \= Kode_mk2, Kode_waktu = Kode_waktu2. % Aturan rules8 memberikan bobot tambahan sebesar 50 apabila mata kuliah dalam dua tingkat yang berurutan tidak tabrakan. rules8(Kode_mk, Kode_waktu, Bobot_old, Bobot_new) :avail_waktu(Kode_waktu), not(slot_together4(Kode_mk, Kode_waktu)), Bobot_new is Bobot_old + 50; Bobot_new is Bobot_old + 0.
E-15 No.
Kelompok Batasan Definisi Aturan (Tipe)
2.
Batasan Dosen a. Dosen hanya mengajar paling banyak satu mata kuliah dalam satu slot waktu (Tipe I). Implementasi dalam bentuk aturan: % Aturan rules_dosen1 menghasilkan fakta mengenai slot waktu yang dapat digunakan oleh dosen untuk mengajar, yaitu slot waktu yang tidak bertabrakan dengan jadwal mengajar lainnya. rules_dosen1(NIP, Kode_waktu) :- avail_waktu(Kode_waktu), kelas_mk(Kode_mk, Kelas_mk,
_, _, NIP, _), not(jadwal(_,
Kode_mk, Kelas_mk, Kode_waktu, _)).
b. Dosen hanya mengajar maksimum 4 sks dalam satu hari (Tipe I). Implementasi dalam bentuk aturan: % Aturan rules_dosen2 menghasilkan fakta turunan mengenai slot waktu mana saja yang dapat digunakan dosen agar dosen tidak mengajar lebih dari 4 sks dalam sehari. rules_dosen2(NIP, Kode_waktu) :- avail_waktu(Kode_waktu), atom_codes(Kode_waktu,
L1),
nth0(0,
L1,
H1),
digit_value(H1,
Hari), count_facts(dosen_mengajar(NIP, Hari), Num), Num < 4.
c. Untuk dosen yang memiliki jabatan struktural (Rektor, Wakil Rektor, Dekan, Wakil Dekan, Ketua SPM, dan SPI) harus disediakan slot waktu yang sama di mana mereka tidak diberi tugas mengajar (Tipe I). Tidak diimplementasikan, karena data mengenai batasan ini tidak diperoleh.
d. Setiap dosen hanya mengajar paling banyak 4 hari dalam seminggu (Tipe II). Implementasi dalam bentuk aturan: Tidak diimplementasikan.
e. Dosen dengan kendala fisik diberi ruang kuliah yang sesuai (Tipe II). Implementasi dalam bentuk aturan: % Aturan rules_dosen3 memberikan bobot tambahan sebesar 150 apabila dosen dapat menempati ruangan tertentu yang sesuai. rules_dosen3(NIP_dosen, Kode_ruang, BobotOld, BobotNew) :(NIP_dosen='132164563', Kode_ruang='7601'), BobotNew is BobotOld + 150; BobotNew is BobotOld + 0.
E-16 No.
Kelompok Batasan Definisi Aturan (Tipe)
3.
Batasan Ruangan a. Satu ruang hanya dipakai untuk paling banyak satu mata kuliah dalam satu slot waktu (Tipe I). Implementasi dalam bentuk aturan: % Aturan avail_slot menghasilkan fakta turunan mengenai slot jadwal yang belum dialokasikan untuk kelas mata kuliah lain. avail_slot(Kode_waktu, Kode_ruang) :- waktu(Kode_waktu, _, _), ruangan(Kode_ruang, _, _), Kode_waktu \= '0', Kode_ruang \= 'dummy', not(jadwal(_, _, _, Kode_waktu, Kode_ruang)).
b. Ruang kuliah diisi sesuai dengan kapasitasnya (Tipe I). Implementasi dalam bentuk aturan: % Aturan capacity_ok menghasilkan fakta turunan mengenai kode ruang yang dapat digunakan sesuai dengan jumlah perkiraan peserta dari kelas mata kuliah yang akan dijadwalkan. capacity_ok(Kode_mk, Kelas_mk, Kode_ruang) :- kelas_mk(Kode_mk, Kelas_mk, _, _, _, Jml_peserta), ruangan(Kode_ruang, Kapasitas, _), avail_ruang(Kode_ruang), Jml_peserta =< Kapasitas.
c. Dalam satu slot waktu, minimal ada 10% ruang yang bebas (Tipe II) Tidak diimplementasikan.
DAFTAR PUSTAKA [BAR99] Barták, Roman. 1999. Dynamic Constraint Models for Planning and Scheduling Problems. Charles University, Prague. http://ktiml.mff.cuni.cz/~bartak/downloads/ERCIM99-proceedings.pdf. Tanggal akses: 16 Oktober 2007. [BAR01] Barták, Roman dan Hana Rudová. 2001. Integrated Modelling for Planning, Scheduling, and Timetabling Problems. Charles University, Prague. http://www.fi.muni.cz/~hanka/publ/plansig01.pdf. Tanggal akses: 10 Januari 2007. [BAR02] Barták, Roman. 2002. Modelling Planning and Scheduling Problems with Time and Resources. Charles University, Prague, http://ktiml.mff.cuni.cz/~bartak/downloads/WSEAS2002.pdf. [FIS00] Fissgus, Ursula. 2000. Scheduling Using Genetic Algorithms. Computer Science Department. University Halle-Wittenberg. http://www.mathematik.unihalle.de/reports/sources/2000/00-01report.ps. Tanggal akses: 18 Juni 2007. [KLO02] Klotz, Walter. 2002. Graph Coloring Algorithms. http://www.math.tuclausthal.de/Arbeitsgruppen/Diskrete-Optimierung/publications/2002/gca.ps. Tanggal akses: 2 Februari 2007. [KOS02] Koswara, Dedi. 2002. Perangkat Lunak Bantu Menggunakan Algoritma Genetika dalam Kasus Penjadwalan Kuliah. ITB. [MUL01] Müller T., Barták R. 2001. Interactive Timetabling. In Proceedings of the ERCIM Workshop on Constraints, Prague. http://kti.mff.cuni.cz/~bartak/downloads/PATAT2002.pdf. Tanggal akses: 28 Mei 2007. [MUN05] Munir, Rinaldi. 2005. Diktat Kuliah IF2251 Strategi Algoritmik. Lab. Ilmu dan Rekayasa Komputasi. ITB. [ULL88] Ullman, J. D. 1988. Principles of Database and Knolewdge-Base Systems, Volume I. Computer Science Press Inc. [VAE94] Vaessens, R. J. M, E. H. L. Aarts, dan J. K. Lenstra. 1994. Job Shop Scheduling by Local Search. http://citeseer.ist.psu.edu/rd/77118696%2C327719%2C1%2C0.25%2CDownload/ http://citeseer.ist.psu.edu/cache/papers/cs/16308/ftp:zSzzSzftp.win.tue.nlzSzpubzS ztechreportszSzvaessenszSzjssls.pdf/vaessens94job.pdf. Tanggal akses: 18 Juni 2007. [VOR02] Voronkov, Andrei. 2002. Informal Introduction To Deductive Databases. University of Manchester. http://www.voronkov.com/dresden/2002/chapter_1.ps.
xiii
[WEB01] http://www.thefreedictionary.com/timetabling. Tanggal akses: 20 Februari 2007. [WEB02] http://thefreedictionary.com/constraint. Tanggal akses: 6 Maret 2007. [WEB03] http://id.wikipedia.org/wiki/Sumber_daya. Tanggal akses: 7 Mei 2007 [WEB04] http://en.wikipedia.org/wiki/Resource_%28Types_and_Developments%29. Tanggal akses: 7 Mei 2007 [WEB05] http://www.densis.fee.unicamp.br/~moscato/memetic_home.html. Tanggal akses: 15 Mei 2007 [WEB06] http://en.wikipedia.org/wiki/Memetic_algorithm. Tanggal akses: 15 Mei 2007 [WEB07] http://en.wikipedia.org/wiki/Local_search_(optimization). Tanggal akses: 28 Mei 2007 [WEB08] http://en.wikipedia.org/wiki/Graph_coloring. Tanggal akses: 28 Mei 2007
xiv