Rabu, 21 Oktober 2009
Expert system and Rule-based Expert System
Sebuah sistem pakar adalah perangkat lunak yang mencoba untuk memberikan jawaban atas suatu masalah, atau mengklarifikasi ketidakpastian di mana biasanya satu atau lebih pakar manusia perlu akan dikonsultasikan. Sistem pakar yang paling umum dalam masalah tertentu domain, dan adalah sebuah aplikasi tradisional dan / atau subfield kecerdasan buatan. Berbagai macam metode dapat digunakan untuk mensimulasikan kinerja Namun pakar umum bagi sebagian besar atau semua 1) penciptaan apa yang disebut "pengetahuan" yang menggunakan beberapa representasi pengetahuan formalisme untuk menangkap Subject Matter Expert's (UKM) pengetahuan dan 2) proses pengumpulan pengetahuan itu dari UKM dan kodifikasi itu sesuai dengan formalisme, yang disebut pengetahuan teknik. Sistem pakar mungkin atau mungkin tidak memiliki komponen belajar tetapi ketiga elemen umum adalah bahwa begitu sistem dikembangkan terbukti dengan menjadi ditempatkan dalam dunia nyata yang sama situasi pemecahan masalah UKM manusia, biasanya sebagai bantuan untuk pekerja manusia atau suplemen untuk beberapa sistem informasi.
Sebagai perdana penerapan komputasi dan kecerdasan buatan, topik sistem pakar telah banyak titik kontak dengan teori sistem umum, operasional penelitian, rekayasa ulang proses bisnis dan berbagai topik di bidang matematika terapan dan ilmu manajemen.
Expert systems topics
Chaining
Ada dua metode utama penalaran saat menggunakan aturan inferensi: backward chaining dan forward chaining.
Forward chaining dimulai dengan data yang tersedia dan menggunakan aturan inferensi untuk menyimpulkan lebih banyak data sampai tujuan yang diinginkan tercapai. Sebuah mesin inferensi menggunakan chaining maju pencarian aturan-aturan inferensi sampai menemukan satu di mana jika klausul diketahui benar. Kemudian menutup kemudian klausa dan menambahkan informasi ini untuk datanya. Akan terus melakukan hal ini sampai tujuan tercapai. Karena data yang tersedia menentukan aturan-aturan inferensi digunakan, metode ini juga disebut data driven.
Backward chaining dimulai dengan daftar sasaran dan bekerja ke belakang untuk melihat apakah ada data yang memungkinkan untuk menyimpulkan salah satu tujuan. Sebuah mesin inferensi menggunakan chaining mundur akan mencari aturan-aturan inferensi sampai menemukan satu yang memiliki kemudian klausul yang cocok dengan tujuan yang dikehendaki. Jika jika klausul aturan inferensi yang tidak diketahui benar, maka akan ditambahkan ke daftar tujuan. Misalnya, peraturan dasar yang berisi
Jika hijau maka Fritz Fritz adalah katak.
Jika Fritz adalah katak kemudian Fritz hops.
Misalkan tujuan adalah untuk menyimpulkan bahwa Fritz hops. Peraturan dasar akan digeledah dan aturan (2) akan dipilih karena kesimpulan (kemudian klausul) sesuai dengan tujuan. Tidak diketahui bahwa Fritz adalah katak, jadi ini "jika" pernyataan akan ditambahkan ke daftar tujuan. Basis aturan lagi dicari dan kali ini aturan (1) dipilih karena kemudian klausul sesuai dengan tujuan baru saja ditambahkan ke daftar. Kali ini, jika ayat (Fritz adalah hijau) dikenal benar dan tujuan yang melompat Fritz disimpulkan. Karena daftar tujuan menentukan aturan dipilih dan digunakan, metode ini disebut tujuan didorong.
Faktor kepastian
Satu keuntungan dari sistem pakar di atas metode tradisional pemrograman adalah bahwa mereka mengizinkan penggunaan "rahasia", juga dikenal sebagai faktor kepastian. Seorang manusia, ketika nalar, tidak selalu menyimpulkan sesuatu dengan 100% keyakinan: dia bisa usaha, "Kalau Fritz berwarna hijau, maka ia mungkin kodok" (setelah semua, dia mungkin seorang bunglon). Jenis penalaran dapat ditiru dengan menggunakan nilai numerik yang disebut rahasia. Misalnya, jika diketahui bahwa Fritz hijau, mungkin 0,85 disimpulkan dengan keyakinan bahwa ia adalah seekor katak, atau, jika diketahui bahwa ia adalah seekor katak, mungkin 0,95 disimpulkan dengan keyakinan bahwa dia hop. Angka-angka ini probabilitas dalam arti Bayesian, dalam arti bahwa mereka mengukur ketidakpastian.
Fact, Rules, Predicate, and Variable in Prolog
Prolog memiliki beberapa istilah yang disebut clause, fact, rules, predicate, dan variable. Semua bagian itu sangat penting dalam menjalankan program Prolog. Karena semuanya memiliki fungsi masing-masing yang tentunya sangat berguna untuk Logic Programming. Berikut ini akan dijelaskan satu persatu.
Fact and Rule (Fakta dan Aturan)
Program Prolog adalah program yang menggambarkan hubungan. Biasanya, hubungan-hubungan itu didefinisikan dengan menggunakan clause. Ada dua jenis klausa: Fakta dan aturan. Sebuah aturan adalah dalam bentuk
Head : - Body.
dan dibaca sebagai “Head is true if the body is true".
Clauses dengan tubuh kosong disebut fakta. Sebuah contoh fakta adalah:
sapi (randy).
yang setara dengan aturan:
sapi(randy): - true.
Jika predikat benar/0 adalah selalu benar.
Mengingat fakta di atas, kita dapat bertanya:
apakah randy sapi?
? - sapi (randy).
Yes.
apa diketahui tentang sapi?
? - sapi (X).
X = randy
Predicate (Predikat)
Dalam klausa prolog, terkadang juga ada suatu hal yang disebut predikat. Namun, tidak semua klausa memiliki predikat. Dibawah ini adalah contoh klausa berpredikat.
Jebakan(Apriyan, anaconda, jaring).
'jebakan' adalah predikat klausa, dan tiga istilah 'Apriyan', 'anaconda', dan 'jaring' adalah argumen klausa. Predikat 'jebakan' adalah dikatakan telah (atau mengambil) tiga argumen.
Variable (Variabel)
Sebuah variabel Prolog dapat mewakili banyak hal. Misalnya saja nomor, nama, struktur, sebuah array, sesuatu yang rumit yang dikenal sebagai alam semesta. Sebuah program Prolog bekerja dengan membatasi variabel-variabel sampai akhirnya mereka memiliki nilai-nilai tertentu, kemudian mengatakan apa yang nilai-nilai tersebut. Sebuah program yang sederhana mungkin akan
X adalah 3 +2.
dan ketika anda menjalankan itu, hasilnya akan
X = 5.
Yes.
Practical Exercise 2
(1) Type the following program into a file and load it into Prolog.
/* Animals Database */
animal(mammal,tiger,carnivore,stripes).
animal(mammal,hyena,carnivore,ugly).
animal(mammal,lion,carnivore,mane).
animal(mammal,zebra,herbivore,stripes).
animal(bird,eagle,carnivore,large).
animal(bird,sparrow,scavenger,small).
animal(reptile,snake,carnivore,long).
animal(reptile,lizard,scavenger,small).
Devise and test goals to find (a) all the mammals, (b) all the carnivores that are
mammals, (c) all the mammals with stripes, (d) whether there is a reptile that has a
mane.
(2) Type the following program into a file
/* Dating Agency Database */
person(bill,male).
person(george,male).
person(alfred,male).
person(carol,female).
person(margaret,female).
person(jane,female).
Extend the program with a rule that defines a predicate couple with two
arguments, the first being the name of a man and the second the name of a woman.
Load your revised program into Prolog and test it.
Jawaban Exercise 2 Menggunakan Prolog
1. Untuk menjawab pertanyaan no.1 dalam prolog, maka harus memasukkan data dulu ke dalam prolog.
animal(mammal,tiger,carnivore,stripes).
animal(mammal,hyena,carnivore,ugly).
animal(mammal,lion,carnivore,mane).
animal(mammal,zebra,herbivore,stripes).
animal(bird,eagle,carnivore,large).
animal(bird,sparrow,scavenger,small).
animal(reptile,snake,carnivore,long).
animal(reptile,lizard,scavenger,small).
(a) Tambahkan rule hewan apa saja yang merupakan mamalia.
mammal :- animal(mammal,Name,_,_),write(Name),nl,fail.
(b) Tambahkan rule untuk menuliskan daftar mamalia yang juga karnivora
mammal_carnivore :- animal(mammal,Name,carnivore,_),write(Name),nl,fail.
(c) Tambahkan rule untuk menuliskan mamalia dengan corak.
mammal_stripe:- animal(mammal,Name,_,stripes),write(Name),nl,fail.
(d) Tambahkan rule untuk menuliskan daftar reptile dengan mane.
reptile_mane :- animal(reptile,Name,_mane),write(Name),nl,fail.
Gambar yang menunjukkan hasil dari logic programming dengan prolog pada no.1
2. Untuk menjawab pertanyaan no.2 dalam prolog, maka harus memasukkan data dulu ke dalam prolog.
/* Dating Agency Database */
person(bill,male).
person(george,male).
person(alfred,male).
person(carol,female).
person(margaret,female).
person(jane,female).
Kemudian untuk mencari kemungkinan pasangan antara pria dan wanita yang dapat terjadi, kita perlu menambahkan ini.
couple(X,Y) :- person(X,male),person(Y,female).
Gambar input data yang dituliskan dalam prolog.
Gambar yang menunjukkan hasil dari logic programming dengan prolog pada no.2