Monday, January 2, 2017

Studi Kasus : Prolog

Contoh Program Prolog

write(“Program Sederhana Prolog”),nl,nl,
write(“Masukkan nama : “), read(Nama),
write(Nama),nl,
write(“Masukkan kelas : “), read(_kelas),
write(_kelas),nl,nl,
write(“Menghitung Luas Persegi Panjang!”),nl,
write(“Masukkan panjang : “), read(P),
write(P),nl,
write(“Masukkan lebar : “), read(L),
write(L),nl,
LUAS is P*L,
write(“Luas Persegi Panjang = “),
write(LUAS).

Pada saat program di-run , untuk menginput nilai variabel Nama & _kelas  dengan 2 kata atau lebih, pake tanda (“); seperti pada contoh output di bawah, saat menginput nilai untuk variabel Nama yaitu “Aresa Riskiana” , contoh untuk variabel _kelas yaitu “3 IA03”


Bahasa Pemrograman untuk Intelegensi Buatan : Prolog

A. Dasar-Dasar Prolog
Fakta dan Relasi

      Fakta Adalah suatu unit yang selalu bernilai benar,fakta ini merupakan kumpulan data-data objek. Suatu fakta dibedakan dalam 2 jenis, yaitu fakta yang menunjukan relasi dan fakta yang menunjukan milik/sifat, penulisan suatu fakta selalu di akhir dengan (.)

Contoh :

Fakta
Prolog
Slamet adalah ayah Amin
ayah (slamet, amin).
Anita adalah seorang wanita
wanita (anita).
Angga suka renang dan tenis
suka(angga,renang).dan suka(angga,tenis).
Jeruk berwarna jingga
jngga(jeruk).

Aturan (“Rules”)

      Aturan adalah suatu pernyataan yang menunjukan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
Contoh :

Fakta dan Aturan
Prolog
F : Tino suka apel
A : Yuli suka sesuatu yang disukai Tino
suka(tino, apel).
suka(yuli,Sesuatu) :-  suka(tino,Sesuatu).

Pertanyaan (“Query”)
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada. Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.

Contoh :

Pertanyaan
Prolog dan Jawaban Program
Apakah Tini suka boneka ?
?- suka(tini,boneka).
Yes ……. (jika faktanya Tini suka boneka)
No……..…(jika tidak sesuai fakta).
Apakah yang disukai Tini ?
?- suka(tini,Apa).
Apa=boneka
Siapakah yang suka boneka ?
?- suka(Siapa,boneka).
Siapa=tini
Dari contoh silsilah keluarga di atas :
Siapakah kakek Budi ?


Siapakah cucu Slamet ?


?- kakek(Siapa,budi).
Siapa=slamet

?- kakek(slamet,Cucu).
Cucu=budi ;
Cucu=badu

(jika kemungkinan ada lebih dari satu jawaban gunakan tanda “;” pada akhir setiap jawaban).


B. Struktur Program Prolog
Dalam struktur program prolog terdapat 4 macam di antara nya adalah Domain,Predicate,Variable, dan goal.

Domain
Domain berfungsi untuk menyatakan jenis suatu variabel seperti hal nya tipe data dalam bahasa prosedural (Pascal,C) . beberapa domain standar dalam prolog diantara nya char,integer,real,string,symbol. Contoh :
namaBunga = symbol
mataKuliah = string
nilai = integer

Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal,  yaitu abjad,  angka,  pungtuasi (?.!,<,...), dan operasi (+,,...). Penulisan argumen bertipe char dalam prolog diapit tanda ’...’. contoh : nilai (dita, ’A’).

Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak yang dapat berupa kata maupun suatu tulisan (kumpulan katakata termasuk di dalamnya pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string dalam prolog diapit tanda ”...”. contoh: hobi(rina,”Memasak”).

Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat.
Contoh : nilai(tini,”Kalkulus”,75).

Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan. Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda titik (.). contoh: nilai(ivan, 8.75).

Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan karakter yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata  dapat disambungkan dengan kata lain dengan  tanda _ (underscore). contoh : lelaki(toni_setiawan).

Predicate
Dalam bahasa prolog kita perlu mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Prolog tidak akan mengenalnya. Namun untuk predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan.
Misalkan untuk domains seperti di atas dapat dibuat predicates
            Predicates
            menu(integer)
            data(NamaOrang, Alamat, Umur)

Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen. Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka, garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh mengandung spasi, tanda minus, asteris atau garis miring.

Variable
Variabel merupakan sebuah interpretasi yang digunakan untuk menemukan
nilai dari sebuah klausa. Variabel harus diawali dengan huruf besar.
Contoh : 
  - suka(andi,X) .
            X = eskrim
  - anakperempuan(lila, X).
            X = agus

Variabel yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan
menekan tombol (;)

Deskripsi Rekrusif dari Sebuah Hubungan
Nah ini yang gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari
child dari sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek,
ayah, dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek,
ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif.

Representasinya seperti berkut
turunan(X,Y) :- antiturunan(Y,X).
turunan(X,Y) :- antiturunan(Y,Z), turunan(X,Z).

Goal
Goal dalam turbo Prolog ada 2 macam yakni :
a. Goal eksternal
b. Goal internal

            Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal internal yang di simpan pada bagian Goal. Sebenarnya goal inilah yang dicari dan dipanggil pada saat program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya, program berhenti dalam keadaan gagal.
Contoh :
            Predicates
                        tulis(string)
            Goal
                        tulis(X),
                        write(X).
            Clauses
                        tulis(“Bandung”).
                        tulis(“Yogya”).
                        tulis(“Jakarta”).

Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya, goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar :
            X = Bandung
            X = Yogya
            X = Jakarta

Penalaran

A. Ketidakpastian
Ketidakpastian dapat dianggap sebagai suatu kekurangan informasi yang memadai untuk membuat suatu keputusan.  Ketidakpastian merupakan suatu permasalahan karena mungkin menghalangi kita membuat suatu keputusan yang terbaik.

Teori-teori yang berhubungan dengan ketidakpastian :
- Probabilitas Klasik
- Probabilitas Bayes
- Teori Hartley yang berdasarkan pada himpunan klasik
- Teori Shanon yang didasarkan pada peluang
- Teori Dempster-Shafer
- Teori Fuzzy Zadeh

Contoh aplikasi yang klasik sistem pakar yang sukses sehubungan dengan ketidakpastian:
- MYCIN untuk diagnosa medis
- PROPECTOR untuk ekplorasi mineral

B. Probabilitas dan Teorema Bayes
Teorema Bayes ditemukan oleh Thomas Bayes. Teorema Bayes kebalikan dari probabilitas kondisional P(A|B) atau disebut posteriori probability, dimana dalam teorema Bayes: state probabilitas dari kejadian awal diberikan untuk melihat kejadian yang mungkin akan terjadi kemudian.

Dari contoh kerusakan disket merk X dan bukan merk X :
·        (6) 75% kemungkinan disket merk X akan rusak dlm 1 tahun adalah.
·        (7) probabilitas disket merk bukan X rusak dalam 1 tahun 50%.
·     Pertanyaannya adalah : kita punya disket dan tidak tahu merk apa, bagaimana probabilitas kerusakannya jika merk X ? Atau merk bukan X ?
·      Diketahui kita diberikan disket rusak, probabilitas merk X dapat diperoleh dari probabilitas kondisional dan hasil (1), (5).
P(X | C) = P(C Ç X) = 0.6   = 6
                             P(C)      0.7       7

·        Alternatif lain, menggunakan Hukum Multiplicative (1), (3), (6).
P(X | C) = P(C|X) P(X) = (0.75) (0.8) = 0.6  = 6
                     P(C)                0.7            0.7    7 

C. Faktor Kepastian (Certainty Factor)
Faktor kepastian merupakan cara dari penggabungan kepercayaan (belief) dan ketidapercayaan (unbelief) dalam bilangan yang tunggal. Dalam certainty theory, data-data kualitatif direpresentasikan sebagai derajat keyakinan (degree of belief).

Tahapan Representasi Data Kualitatif :
1.     Kemampuan untuk mengekspresikan derajat keyakinan sesuai dengan metode yang sudah dibahas sebelumnya.
2.     Kemampuan untuk menempatkan dan mengkombinasikan derajat keyakinan tersebut dalam sistem pakar
Dalam mengekspresikan derajat keyakinan digunakan suatu nilai yang disebut certainy factor (CF) untuk mengasumsikan derajat keyakinan seorang pakar terhadap suatu data.
D. Teori Dempster-Shafer
Teori Dempster-Shafer adalah suatu teori matematika untuk pembuktian berdasarkan belief functions and plausible reasoning (fungsi kepercayaan dan pemikiran yang masuk akal), yang digunakan untuk mengkombinasikan potongan informasi yang terpisah (bukti) untuk mengkalkulasi kemungkinan dari suatu peristiwa. Teori ini dikembangkan oleh Arthur P. Dempster dan Glenn Shafer.
Secara umum Teori Dempster-Shafer ditulis dalam suatu interval:
[Belief,Plausibility]

Belief

Belief (Bel) adalah ukuran kekuatan evidence (gejala) dalam mendukung suatu himpunan bagian. Jika bernilai 0 maka mengindikasikan bahwa tidak ada evidence, dan jika bernilai 1 menunjukan adanya kepastian.

Plausibility

Plausibility (Pl) dinotasikan sebagai:
Pl(s)= 1 – Bel(¬­­­­­­­­­s)­­­­­­­
Plausibility juga bernilai 0 sampai 1. Jika kita yakin akan –s, maka dapat dikatakan bahwa Bel(¬s)=1, dan Pl(¬s)=0. Plausability akan mengurangi tingkat kepercayaan dari evidence. Pada teori Dempster-Shafer kita mengenal adanya frame of discernment yang dinotasikan dengan θ dan mass function yang dinotasikan dengan m. Frame ini merupakan semesta pembicaraan dari sekumpulan hipotesis sehingga disebut dengan environtment.
Misalkan: θ = {A, B, C, D, E, F, G, H, I, J}
Dengan :
A   = Gagal Ginjal Kronik
B   = Kanker Ginjal
C   = Pielonefritis
D   = Sindroma Nefrotik
E    = Hidronefrosis
F    = Kanker Kandung Kemih
G   = Ginjal Polikista
H   = Nefritis Tubulointerstisialis
I     = Sistitis
J     = Infeksi Saluran Kemih

Mass Function

Sedangkan mass function (m) dalam teori Dempster-Shafer adalah tingkat kepercayaan dari suatu evidence measure sehingga dinotasikan dengan (m). Untuk mengatasi sejumlah evidence pada teori Dempster-Shafer menggunakan aturan yang lebih dikenal dengan Dempster’s Rule of Combination.

Inferensi dalam Logika Order Pertama

A. Mengubah Inferensi Order Pertama menjadi Inferensi Proposisi
------------------------------------------
Representasi 4 kategori silogisme menggunakan logika predikat

Kaidah universal Instation merupakan state dasar, dimana suatu individual dapat digantikan kedalam sifat universal.

• Contoh :
Misal, φ merupakan fungsi proposisi :
( x) φ(x)
φ(a)
merupakan bentuk yang valid, dimana a menunjukkan spesifik individual, sedangkan x adalah suatu variabel yang berada dalam jangkauan semua individu (universal)
• Contoh lain : ( x) H(x)
H(Socrates)
• Berikut ini adalah contoh pembuktian formal silogisme
All men are mortal
Socrates is a man
Therefore, Socrates is mortal
Misal : H = man, M = mortal, s = Socrates
1. ( x) (H (x) -> M(x))
2. H(s) / M(s)
3. H(s) -> M(s) 1 Universal Instatiation
4. M(s) 2,3 Modus Ponens


B. Unifikasi
--------------------
Unifikasi adalah usaha untuk mencoba membuat dua ekspresi menjadi identik (mempersatukan keduanya) dengan mencari substitusi-substitusi tertentu untuk mengikuti peubah-peubah dalam ekspresi mereka tersebut. Unifikasi merupakan suatu prosedur sistematik untuk memperoleh peubah-peubah instan dalam wffs. Ketika nilai kebenaran predikat adalah sebuah fungsi dari nilai-nilai yang diasumsikan dengan argumen mereka, keinstanan terkontrol dari nilai-nilai selanjutnya yang menyediakan cara memvalidasi nilai-nilai kebenaran pernyataan yang berisi predikat. Unifikasi merupakan dasar atas kebanyakan strategi inferensi dalam Kecerdasan Buatan. Sedangkan dasar dari unifikasi adalah substitusi.

      Suatu substitusi (substitution) adalah suatu himpunan penetapan istilah-istilah kepada peubah, tanpa ada peubah yang ditetapkan lebih dari satu istilah. Sebagai pengetahuan jantung dari eksekusi Prolog, adalah mekanisme unifikasi.

Aturan-aturan unifikasi :

1.      Dua atom (konstanta atau peubah) adalah identik.
2.      Dua daftar identik, atau ekspresi dikonversi ke dalam satu buah daftar.
3.      Sebuah konstanta dan satu peubah terikat dipersatukan, sehingga peubah menjadi terikat kepada konstanta.
4.      Sebuah peubah tak terikat dipersatukan dengan sebuah peubah terikat.
5.      Sebuah peubah terikat dipersatukan dengan sebuah konstanta jika pengikatan pada peubah terikat dengan konstanta tidak ada konflik.
6.      Dua peubah tidak terikat disatukan. Jika peubah yang satu lainnya menjadi terikat dalam upa-urutan langkah unifikasi, yang lainnya juga menjadi terikat ke atom yang sama (peubah atau konstanta).
7.      Dua peubah terikat disatukan jika keduanya terikat (mungkin melalui pengikatan tengah) ke atom yang sama (peubah atau konstanta).
C. Generalized Modus Ponens (GMP)
----------------------------------------------------------
Dalam logika Boolean, dengan aturan `` JIKA X adalah A THEN Y adalah B '', proposisi X adalah A harus diamati untuk mempertimbangkan proposisi Yadalah B. Dalam logika fuzzy, proposisi `` X adalah A' '', Dekat dengan premis `` X adalah A '' dapat diamati untuk memberikan kesimpulan `` Y adalah B' '' Dekat dengan kesimpulan `` Y adalah B '' . Sebuah inferensi fuzzy sederhana dapat direpresentasikan sebagai :

Aturan
: JIKA
X adalah A THEN
Y adalah B
Fakta
:
X adalah A'
Kesimpulan
:
Y adalah B'

Untuk menyimpulkan seperti inferensi fuzzy kita menggunakan mekanisme yang disebut umum modus ponens. Di sini, kita menggunakan salah satu berdasarkan implikasi fuzzy Brouwer-Gödel diungkapkan oleh:


Catatan:
Asumsikan --> operator implikasi Brouwer-Godel dan operator kombinasi, rumus dapat dinyatakan dengan B' = Ao(A-->B) yang kita gunakan sekarang untuk menyederhanakan notasi

D. Rangkaian Forward and Backward Chaining
-------------------------------------------------------------
Forward Chaining :
Suatu rantai yang dicari atau dilewati/dilintasi dari suatu permasalahn untuk memperoleh solusi. Penalaran dari fakta menuju konklusi yang terdapat dari fakta
Backward Chaining :
Suatu rantai yang dilintasi dari suatu hipotesa kembali ke fakta yang mendukung hipotesa tersebut.
·         Tujuan yang dapat dipenuhi dengan pemenuhan sub tujuannya.

 Karakteristik Forward dan Backward chaining :

Forward chaining
Backward chaining
Perencanaan, monitoring, kontrol
Diagnosis
Disajkan untuk masa depan
Disajikan untuk masa lalu
Antecedent ke konsekuen
Konsekuen ke antecedent
Data memandu, penalaran dari bawah ke atas
Tujuan memandu, penalaran dari atas ke bawah
Bekerja ke depan untuk mendapatkan solusi apa yang mengikuti fakta
Bekerja ke belakang untuk mendapatkan fakta yang mendukung hipotesis
Breadth first search dimudahkan
Depth first search dimudahkan
Antecedent menentukan pencarian
Konsekuen menentukan pencarian
Penjelasan tidak difasilitasi
Penjelasan difasilitasi