• Tidak ada hasil yang ditemukan

Lampiran A Konfigurasi IIS untuk PSP

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lampiran A Konfigurasi IIS untuk PSP"

Copied!
34
0
0

Teks penuh

(1)

A-1

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 SWI-Prolog.

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 = <Lokasi executable SWI-Prolog> -q –s <Lokasi webserver.pl dari PSP> -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.

(2)

B-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

(3)

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

(4)

B-3

Aksi Aktor Reaksi Sistem

4. Penggguna melakukan perubahan untuk fakta batasan yang dipilih

5. Melakukan validasi masukan pengguna 6. Menerima masukan pengguna

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

(5)

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 B-4.

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

(6)

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

(7)

C-1

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.

(8)

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.

(9)

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.

(10)

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.

(11)

C-5

No. Aksi

(12)

D-1

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.

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

Textbox2 Label1 Textbox1 Tombol1 Tombol2 Label2 Link1 Link2 Link3

(13)

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.

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. Label1 Link1 Link2 Textarea1 Tombol1 ComboBox1 Link3 Link4 Link5

(14)

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.

Gambar D-3 Rancangan Antarmuka Menjadwalkan Resource

(15)

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.

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.

Tombol1 Tombol2 ComboBox1

(16)

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.

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.

Tombol1

(17)

E-1

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

(18)

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

(19)

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’).

(20)

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

(21)

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

(22)

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

(23)

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_mk, Kelas_mk, Kode_waktu, Kode_ruang). 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 Definisi Aturan

1. Mata kuliah dengan jumlah perkiraan peserta lebih banyak dijadwalkan terlebih dahulu.

Dapat dilihat pada Algoritma E-1

2. Mata kuliah dengan SKS besar dijadwalkan terlebih dahulu. Dapat dilihat 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. Kelompok Batasan Definisi Batasan (Tipe)

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

(24)

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

(25)

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, L2), nth0(2, L2, Tk2), digit_value(Tk2,

Tingkat2), Tingkat1 =:= Tingkat2, 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)

(26)

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), slot_avail_siang(Kode_waktu);

(Semester = 2, Tingkat = 1; Semester = 2, Tingkat = 3), slot_avail_siang(Kode_waktu);

(Semester = 2, Tingkat = 2; Semester = 2, Tingkat = 4), 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.

(27)

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

(28)

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

(29)

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, L), nth0(2, L, Tk1), digit_value(Tk1, Tingkat1),

(30)

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.

(31)

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.

(32)

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.

(33)

xiii

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.uni-halle.de/reports/sources/2000/00-01report.ps. Tanggal akses: 18 Juni 2007. [KLO02] Klotz, Walter. 2002. Graph Coloring Algorithms.

http://www.math.tu-clausthal.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.

(34)

xiv

[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

Gambar

Tabel B-1 Skenario Alternatif Use Case Manipulasi Resource
Tabel B-2 Skenario Alternatif Use Case Manipulasi Batasan
Tabel B-3 Skenario Alternatif Use Case Penjadwalan
Tabel B-5 Skenario Alternatif Use Case Menampilkan Jadwal Solusi
+7

Referensi

Dokumen terkait

1 Pelayanan anternatal Januari-Desember 2017 poskesdes dan posyandu 2 Pertolongan persalinan oleh tenaga kesehatan Januari-Desember 2017 poskesdes dan posyandu 3 Deteksi

Persoalan magis dalam Kaba Puti Nilam Cayo, juga tidak terlepas dari gejala-gejala sosial masyarakat yang melatarbelakanginya, seperti manusia keramat, tongkat keramat, naga

Sesungguhnya ada salah seorang dari kalian yang beramal dengan amalan penduduk surga hingga jarak antara dirinya dengan surga tinggal sehasta saja, namun takdir yang

Tahanan gesek berdasarkan hasil percobaan pada pelat datar sehingga mengabaikan faktor bentuk dari kapal.. (tebal lapisan batas tidak sama, kecepatan partikel air  p p p

keunggulan materi yang bagus, lengkap, berkualitas, dan menarik. Fasilitas-fasilitas yang ada di website tersebut di atas sangat bermanfaat bagi mahasiswa namun timbul

Untuk menentukan skor kemampuan berpikir kretaif matematis itu kita harus menyusun pedoman penskoran, Selanjutnya kita memberi skor dengan cara menterjemahkannya ke dalam

Data primer yang digunakan adalah data yang diperoleh dari responden terpilih sebagai sampel, yang meliputi: karakteristik responden (jenis kelamin, tingkat pendidikan,