• Tidak ada hasil yang ditemukan

TINJAUAN PUSTAKA Logic Programming

Kowalski (1979) menyatakan bahwa sebuah algoritme A terdiri atas komponen logika L dan komponen kontrol C. Komponen logika L merupakan komponen yang menjelaskan logika algoritme dan komponen kontrol C merupakan komponen yang menentukan cara yang digunakan. Secara simbolis ditulis dengan persamaan berikut:

Kowalski (1979) menambahkan bahwa efisiensi dari sebuah algoritme dapat ditingkatkan dengan meningkatkan efisiensi dari komponen kontrol tanpa mengganti komponen logika dan tanpa mengubah arti algoritme tersebut.

Answer Set Programming

Answer set programming (ASP) diawali dengan diperkenalkannya stable model semantic oleh Gelfond dan Lifschitz pada tahun 1988. ASP membuka paradigma baru terhadap pemrograman logika, dengan meningkatkan semantik dari pemrograman berbasis Prolog tradisional. Selanjutnya terdapat penambahan fitur-fitur baru, seperti classical negation dan disjungsi pada bagian head (Gelfond & Lifschitz 1991). Saat ini dikenal sebagai answer set programming.

Lifschitz (2008) menjelaskan bahwa Answer set programming (ASP) adalah bentuk formalisme dari pemrograman deklaratif yang berorientasi terhadap sulitnya masalah pencarian. Masalah pencarian di ASP telah dikurangi dengan menentukan stable model dan answer set solver.

Telah banyak pengembangan pada answer set programming dibanding dengan pemrograman logika berbasis Prolog. Prolog tidaklah murni deklaratif, semantik pada Prolog masih menggantungkan pada aspek prosedural, seperti urutan pada literal tubuh pada sebuah aturan (rule) dan urutan klausa-klausa dalam program tersebut. Adanya operator cut pada

Prolog (“!”) juga merupakan bukti properti

1 PENDAHULUAN

Latar Belakang

Penjadwalan merupakan pengalokasian kegiatan ke dalam slot waktu yang telah disediakan. Permasalahan dalam penjadwalan saat ini masih menjadi suatu permasalahan yang rumit untuk diselesaikan secara manual. Kesulitan semakin kompleks ketika persyaratan-persyaratan harus dipenuhi dalam menentukan penjadwalan.

Penelitian yang dilakukan oleh Tamba (2004) menghasilkan sebuah sistem yang mampu menyelesaikan masalah penjadwalan perkuliahan menggunakan Algoritme Genetika (studi kasus FMIPA IPB). Penelitian tersebut dilanjutkan oleh Syadid (2008) yang telah berhasil menyempurnakan kekurangan pada penelitian sebelumnya dalam hal pengakomodasian masalah penjadwalan ruangan.

Penelitian Hunt (2010) telah berhasil mengimplentasikan Answer Set Programming untuk permasalahan penjadwalan perkuliahan. Pada penelitian tersebut dilakukan pendaftaran mahasiswa terhadap mata kuliah dan kemudian ditempatkan dengan jadwal yang sesuai. Pada penelitian ini juga diharapkan Answer Set Programming mampu diimplementasikan untuk permasalahan penjadwalan ujian di Institut Pertanian Bogor.

Tujuan

Tujuan dari penelitian ini adalah:

1. Mengembangkan model penyelesaian permasalahan penjadwalan ujian Program Studi S1 Sistem Mayor-Minor Institut Pertanian Bogor dengan menggunakan Answer Set Programming.

2. Membangun prototipe sistem penjadwalan ujian Program Studi S1 Sistem Mayor- Minor IPB yang berbasis ASP.

3. Menguji efektivitas dan efisiensi sistem penjadwalan ujian terhadap data KRS Program Studi S1 Sistem Mayor-Minor IPB. Ruang Lingkup

Penelitian ini dibatasi pada penjadwalan ujian Program Studi S1 Sistem Mayor-Minor Institut Pertanian Bogor pada satu masa ujian semester. Sistem penjadwalan ujian dikembangkan dengan answer set programming dan C# .Net.

Manfaat

Penelitian ini diharapkan memberikan gambaran mengenai sistem penjadwalan ujian Program Studi S1 Sistem Mayor-Minor IPB sehingga menjadi dasar untuk pengembangan sistem penjadwalan ujian lebih lanjut.

TINJAUAN PUSTAKA Logic Programming

Kowalski (1979) menyatakan bahwa sebuah algoritme A terdiri atas komponen logika L dan komponen kontrol C. Komponen logika L merupakan komponen yang menjelaskan logika algoritme dan komponen kontrol C merupakan komponen yang menentukan cara yang digunakan. Secara simbolis ditulis dengan persamaan berikut:

Kowalski (1979) menambahkan bahwa efisiensi dari sebuah algoritme dapat ditingkatkan dengan meningkatkan efisiensi dari komponen kontrol tanpa mengganti komponen logika dan tanpa mengubah arti algoritme tersebut.

Answer Set Programming

Answer set programming (ASP) diawali dengan diperkenalkannya stable model semantic oleh Gelfond dan Lifschitz pada tahun 1988. ASP membuka paradigma baru terhadap pemrograman logika, dengan meningkatkan semantik dari pemrograman berbasis Prolog tradisional. Selanjutnya terdapat penambahan fitur-fitur baru, seperti classical negation dan disjungsi pada bagian head (Gelfond & Lifschitz 1991). Saat ini dikenal sebagai answer set programming.

Lifschitz (2008) menjelaskan bahwa Answer set programming (ASP) adalah bentuk formalisme dari pemrograman deklaratif yang berorientasi terhadap sulitnya masalah pencarian. Masalah pencarian di ASP telah dikurangi dengan menentukan stable model dan answer set solver.

Telah banyak pengembangan pada answer set programming dibanding dengan pemrograman logika berbasis Prolog. Prolog tidaklah murni deklaratif, semantik pada Prolog masih menggantungkan pada aspek prosedural, seperti urutan pada literal tubuh pada sebuah aturan (rule) dan urutan klausa-klausa dalam program tersebut. Adanya operator cut pada

Prolog (“!”) juga merupakan bukti properti

2 1. Sintaks

Aturan (rule) adalah sebuah ekspresi yang mengikuti bentuk:

dengan nilai , , dan

adalah classical literal. Himpunan { } disebut kepala (head) dari aturan (rule) , dinotasikan dengan Himpunan { } disebut tubuh (body) dari aturan dan dinotasikan dengan

. Tubuh (body) ada dua jenis, yaitu positive body literal yang dinotasikan dengan dan negative body literal yang dinotasikan dengan . dari aturan r tersebut adalah himpunan { } dan adalah himpunan{ }.

Bentuk aturan tanpa kepala ( ) disebut integrity constraint atau hard constraint. Aturan dengan minimal satu buah kepala ( ) disebut normal rule. Bentuk aturan dengan

disebut disjunctive rule. Jika bagian tubuh (body) kosong ( ) maka disebut fakta (fact), dalam penulisan simbol “ ” biasanya dihilangkan. Himpunan dari aturan- aturan tersebut disebut dengan extended disjunctive logic program (EDLP) atau biasa disebut program .

2. Semantik

Semantik dari program didefinisikan untuk program yang telah bebas dari variabel. Program yang sudah tidak mengandung variabel dapat dikatakan sebagai program ground. Dengan demikian, pertama kali dilakukan ground instantiation pada program , yaitu menghilangkan semua variabel di dalam program .

Herbrand Universe dari program dinotasikan dengan merupakan himpunan semua simbol konstanta yang muncul di . Jika tidak terdapat simbol kontanta di maka

, dengan merupakan simbol konstanta yang diambil semena-mena dari , dengan adalah himpunan semua konstanta. Herbrand Base ( ) dari program adalah himpunan semua literal ground yang dibangun dari simbol predikat yang muncul di dan simbol konstanta di . Sebuah ground instance pada aturan , dinotasikan dengan

yang diperoleh dengan mengganti variabel yang terjadi di dengan simbol konstanta di . Himpunan semua ground

instance dari aturan dinotasikan dengan

Semantik dari program harus mempertimbangkan program ground positif. Sebuah himpunan dari literal dikatakan konsisten jika dan hanya jika setiap atom memenuhi . Sebuah interpretasi pada program adalah sebuah himpunan bagian konsisten dari . Sebuah himpunan dari literal memenuhi sebuah aturan jika dan hanya jika dengan dan . Sebuah himpunan memenuhi program jika dan hanya jika literal memenuhi semua aturan-aturan di dalam . Sebuah model dari program merupakan sebuah interpretasi

dengan memenuhi . Sebuah answer set dari program positif ground merupakan merupakan minimal model dari .

Untuk memperluas definisi semantik pada program dengan negasi, dikenal transformasi Gelfond-Lifschitz (transformasi GL) untuk membebaskan negasi pada program . Pada transformasi GL dari program P, interpretasi I adalah atom dari program P. Transformasi GL ini dilambangkan dengan , yang dilakukan dengan:

a. Menghapus semua aturan r yang mempunyai literal negatif pada tubuh aturan tersebut dengan

b. Menghapus semua literal negatif dari semua aturan yang tersisa

Sebuah answer set dari program adalah (dengan ), jika adalah answer set dari . Semua himpunan answer set dari program dinotasikan dengan . Program dikatakan konsisten jika mempunyai paling tidak satu answer set ( ) dan selainnya dikatakan tidak konsisten.

Pada kasus khusus untuk program definite Horn ( ), diketahui hanya memiliki satu answer set yang dapat ditemukan dengan mencari fixpoint terhadap program . Fixpoint terhadap disebut juga immediate consequence dan dinotasikan dengan .

didefinisikan sebagai interpretasi dari program definite Horn. Operator immediate consequence didefinisikan sebagai

| . Selanjutnya , dengan didefinisikan sebagai dan

. monoton dan mempunyai satu leastfixpoint, dinotasikan dengan .

3 Sebagai contoh, di bawah ini adalah sebuah

program :

Kemungkinan model-model yang sesuai untuk program di atas dapat dilihat dari interpretasi pada gambar di bawah ini:

a, b, c, p

a,b,c a,b,p a,c,p b,c,p

a,b a,c a,p b,c b,p

a b c

Ø

c,p

p

Gambar 1 Semua interpretasi terhadap program .

Dari program tersebut diketahui bahwa berupa fakta dan selalu bernilai benar serta harus selalu muncul dalam setiap model. Untuk menentukan stable model dilakukan transformasi GL dan menentukan apakah interpretasi atau dinotasikan

.

Selanjutnya dipilih , ,

, , ,

, dan . Pada , dilakukan transformasi GL terhadap program sehingga diperoleh :

Fixpoint dari ( ) adalah {a,b,c,p}, sehingga diperoleh . Hal berarti bahwa bukan merupakan stable model, sedangkan untuk diperoleh :

Kemudian diperoleh , sehingga . Jadi merupakan stable model.

Dengan cara yang sama untuk semua interpretasi , maka diperoleh dan

sebagai stable model dari program dan juga merupakan answer set dari program . 3. Answer Set Programming Solver

Answer set programming solver atau answer set solver dikembangkan untuk mengevaluasi input pemrograman logika berbasis answer set programming. Beberapa answer set solver yang telah dikembangkan adalah Lparse (Gelfond & Lifschitz 1991), DLV (Eiter et al. 2006), clasp/claspD (Gebser et al. 2009 & Drescher et al. 2008), SMODELS (Simons et al. 2002), dan ASSAT (Lin & Zao 2002). Penelitian ini menggunakan DLV sebagai answer set solver dalam pengembangan sistem.

Menurut Eiter et al. (2006), Disjunctive Logic Programming (DLP) adalah formalisme canggih untuk representasi pengetahuan dan penalaran (knowledge representation and reasoning), yang sangat ekspresif dalam arti matematis. DLV merupakan sebuah sistem KRR (Knowledge Representation and Reasoning) yang didasarkan pada Disjunctive Logic Programming (DLP) di bawah stabel model semantic (disebut juga Answer Set Programming).

Mengikuti ketentuan Prolog, string yang dimulai dengan huruf besar menunjukkan variabel, sedangkan string yang dimulai dengan huruf kecil adalah konstanta. Selain itu, DLV juga mendukung konstanta bilangan bulat positif dan konstanta string. Sebuah term adalah variabel atau konstanta.

Sebuah atom adalah ekspresi p(t1,...,tn),

dengan p adalah predikat n, dan t1,...,tn adalah

term. Sebuah literal klasik (classical literal) l adalah sebuah atom p (positif) atau sebuah negasi atom ¬p (negatif). Negation as failure (NAF) literal l adalah sebuah bentuk l (positif) atau not l (negatif), dengan l adalah classical literal.

Mengingat sebuah classical literal l, pelengkap literal l didefinisikan sebagai ¬p jika l = p dan p jika l = ¬p. Sebuah himpunan L literal dikatakan konsisten jika untuk setiap l ϵ L yang saling melengkapi literal yang tidak terkandung dalam L.

Rule disjungsi (atau disebut rule saja) r dirumuskan sebagai berikut:

a1 v … v an :- b1,…,bk,not bk+1,…,not bm.

4 dengan a1 v … v an, b1,…,bk adalah

classical literal dan n ≥ 0, m ≥ k ≥ 0. Konjungsi

a1 v … v an adalah head (kepala) dari b1,…,bk,not bk+1,…,not bm adalah body

(tubuh)dari r. Sebuah rule tanpa literal kepala (yaitu n = 0) biasanya disebut sebagai integrity constraint. Rule memiliki tepat satu head (yaitu n = 1, tanpa tanda “v”) disebut aturan normal (normal rule). Jika body kosong (yaitu k = m = 0) disebut fakta (fact), biasanya tanda “:-“

dihilangkan.

Jika r adalah rule mengikuti rumus di atas, maka H(r) = {a1 v … v an} adalah himpunan

literal kepala dan B(r) = B+(r) U B−(r) adalah himpunan literal tubuh, dengan B+(r) (tubuh positif) adalah {b1,…,bk} dan B−(r) (tubuh

negatif) adalah {bk+1,…,bm}.

Bahasa DLV diperluas dengan adanya weak constraint. Eiter et al. (2006) menyatakan bahwa weak constraint sebagai varian dari integrity constraint. Untuk membedakan secara jelas, weak constraint menggunakan simbol

“:~” bukan “:-”. Selain itu bobot (weight) dan tingkat prioritas (priority level) ditentukan secara eksplisit.

Weak constraint wc diekspresikan dengan bentuk berikut:

:~ b1,…,bk,not bk+1,…,not bm.[w∶l]

dengan m ≥ k ≥ 0, b1,...,bmadalah classical literal, w (weight) dan l (level atau layer) adalah konstanta atau variabel bilangan bulat positif. Himpunan B+(wc), B(wc), B-(wc)dari weak constraint wc didefinisikan dengan cara yang sama seperti integrity constraint biasa.

Sebuah program adalah himpunan berhingga dari rule (mungkin termasuk integrity constraint) dan weak constraint. Dengan kata lain, program P adalah disjunctive datalog program yang mungkin berisi weak constraint. Untuk program P, WC(P) menandakan himpunan dari weak constraint di dalam P dan Rules(P) menandakan himpunan dari rule (termasuk integrity constraint)di dalam P.

Rule dikatakan aman (safe) jika setiap variabel di dalam rule muncul setidaknya satu literal positif di dalam body itu yang bukan komparatif built-in. Suatu program dikatakan aman jika setiap rule adalah aman, hanya program-program yang aman yang dipertimbangkan.

Bahasa DLV juga mempunyai predikat built-in, seperti aggregate predicate, comparative predicate, dan arithmatic

predicate. Selain itu bahasa DLV juga sudah support ODBC (Open Database Connectifity).

Sebagai contoh ASP digunakan untuk menyelesaikan permasalahan pewarnaan kota. Misalnya terdapat empat kota, yaitu Kota Natar, Metro, Batanghari, dan Pubian. Terdapat empat jembatan yang menghubungkan keempat kota tersebut. Kota-kota yang dihubungkan oleh jembatan itu adalah Kota Natar dengan Kota Metro, Kota Metro dengan Kota Batanghari, dan Kota Metro dengan Kota Pubian.

Pubian

Metro

Batanghari

Natar

Gambar 2 Peta Kota Natar, Metro, Batanghari, dan Pubian.

Dalam kode DLV dituliskan seperti di bawah ini: kota(natar). kota(metro). kota(batanghari). kota(pubian). jembatan(natar,metro). jembatan(metro,batanghari). jembatan(metro,pubian). warna(X,merah) v warna(X,hijau) v warna(X,biru) :- kota(X).

Answer set yang dibentuk adalah sebanyak 81 answer set. Answer set tersebut adalah sebagai berikut: {warna(natar,biru), warna(metro,biru), warna(batanghari,biru), warna(pubian,biru)} {warna(natar,hijau), warna(metro,biru), warna(batanghari,biru), warna(pubian,biru)} . . . {warna(natar,merah), warna(metro,merah), warna(batanghari,merah), warna(pubian,merah)}

Answer set pertama menunjukkan bahwa Kota Natar diberi warna biru, Kota Metro diberi warna biru, Kota Batanghari diberi warna biru, dan Kota Pubian diberi warna biru.

5 Biru Biru Biru Biru Pubian Metro Batanghari Natar

Gambar 3 Ilustrasi answer set pertama pada kasus tambahan pertama.

Kemudian kasus di atas ditambah dengan kendala yang menyatakan bahwa warna kota yang terhubung oleh jembatan harus berbeda. Kendala tersebut dituliskan dalam kode DLV seperti di bawah ini:

:- warna(X,W), warna(Y,W), jembatan(X,Y).

Answer set yang sesuai dengan kendala di atas ada sebanyak 24. Answer set tersebut adalah sebagai berikut:

{warna(natar,hijau), warna(metro,biru), warna(batanghari,hijau), warna(pubian,hijau)} . . . {warna(natar,hijau), warna(metro,merah), warna(batanghari,hijau), warna(pubian,hijau)}

Answer set pertama menunjukkan bahwa Kota Natar diberi warna hijau, Kota Metro diberi warna biru, Kota Batanghari diberi warna Hijau, dan Kota Pubian diberi warna hijau.

Biru Biru Biru Hijau Pubian Metro Batanghari Natar

Gambar 4 Ilustrasi answer set pertama pada kasus tambahan kedua.

Selanjutnya kasus di atas ditambah fakta bahwa masing-masing warna memiliki harga, warna merah sebesar 100, hijau sebesar 200, dan biru sebesar 100. Dengan demikian, melahirkan penambahan kendala yang menyatakan bahwa biaya pewarnaan kota harus

minimal. Fakta yang ditambahkan adalah sebagai berikut:

harga(merah,100). harga(hijau,200). harga(biru,100).

Kendala dalam kode DLV yang ditambahkan adalah:

:~ warna(X,W), harga(W,H). [H:1]

Terbentuk dua answer set dengan biaya paling kecil, yaitu:

Best model: {warna(natar,merah), warna(metro,biru),

warna(batanghari,merah), warna(pubian,merah)}

Cost ([Weight:Level]): <[400:1]> Best model: {warna(natar,biru), warna(metro,merah),

warna(batanghari,biru), warna(pubian,biru)}

Cost ([Weight:Level]): <[400:1]>

Answer set pertama berarti bahwa Kota Natar diberi warna merah, Kota Metro diberi warna biru, Kota Batanghari diberi warna merah, dan Kota Pubian diberi warna merah.

Merah Merah Merah Biru Pubian Metro Batanghari Natar

Gambar 5 Ilustrasi answer set pertama.

Dokumen terkait