PROLOG

Pengertian Prolog 

Prolog adalah bahasa, tepatnya merupakan bahasa komputer atau bahasa pemrograman logika. Bahasa pemrograman dituliskan dalam bentuk bahasa natural atau bahasa yang dikenal manusia, misal bahasa Inggris. Bahasa yang dikenal manusia ini jelas tidak mungkin dikenal oleh komputer yang hanya mengenal bahasa mesin. Untuk menjembatani kedua bahasa itu dibutuhkan interpreter atau compiler yang akan mengubah bahasa yang dipahami manusia menjadi bahasa yang mudah dipahami mesin.
Prolog dikenal sebagai bahasa deskriptif (descriptive language), yang berarti dengan diberikan serangkaian fakta-fakta dan aturan-aturan, Prolog, dengan menggunakan cara berpikir deduktif (deductive reasoning), akan dapat menyelesaikan permasalahan suatu program. Ini dikontraskan dengan bahasa komputer tradisional seperti C, BASIC, Pascal yang dikenal sebagai bahasa prosedural (procedural language). Dalam bahasa prosedural, programmer harus memberikan instruksi tahap demi tahap agar komputer dapat dengan pasti bagaimana menyelesaikan permasalahan yang diberikan. Dengan kata lain, programmer harus tahu lebih dahulu bagaimana cara menyelesaikan permasalahan sebelum diinstuksikan ke komputer. Lain jika dibandingkan dengan programmer Prolog. Programmer Prolog hanya membutuhkan deskripsi/gambaran permasalahan, lalu menerjemahkannya ke bahasa Prolog. Selanjutnya tinggal sistem Prolog yang menentukan bagaimana mencari solusinya.
Prolog didasarkan pada klausa-klausa Horn (Horn clauses), yang merupakan himpunan bagian dari sistem formal yang dinamakan logika predikat (predicate logic). Logika predikat menyederhanakan cara agar jelas bagaimana berpikir akan dilakukan. Prolog menggunakan variasi sintak logika predikat yang telah disederhanakan dengan demikian sintaknya mudah dimengerti dan sangat mirip dengan bahasa natural.
Prolog mempunyai mesin inferensi (infrence engine) yang merupakan suatu proses berpikir logis mengenai informasi. Mesin inferensi mempunyai pencocok pola (pattern matcher) yang akan mengambil informasi yang telah disimpan (diketahui) dan kemudian mencocokkan jawaban atas pertanyaan. Satu feature penting dari Prolog adalah bahwa, sehubungan mencari jawaban logis atas pertanyaan yang diajukan, ia dapat berhubungan dengan banyak alternatif dan mencari semua kemungkinan dari pada hanya satu solusi

Dasar-Dasar Prolog 

Fakta dan Relasi :
a. Prolog terdiri dari kumpulan data-data obyek yang merupakan suatu fakta.
b. Fakta selalu benar (true).
c. Dalam prolog, fakta dibedakan menjadi 2 macam yaitu menunjukan relasi dan milik/sifat.
Contoh :
• Slamet adalah ayah Amin
– ayah(slamet,amin).
• Anita adalah wanita
– wanita(anita).

Aturan (Rules)

a. Programmer Prolog mendefinisikan object-object dan relasi-relasi, kemudian mendefinisikan aturan mengenai kapan relasi-relasi ini dikatakan benar (true).
b. Suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.
c. Dinyatakan sebagai suatu kalimat bersyarat.
Contoh :
– Fakta : Tino suka apel
– Aturan : Yuli suka sesuatu yang disukai Tino
Dalam prolog ditulis :
– suka(tino,apel).
– suka(yuli,Sesuatu) if suka(tino,Sesuatu).

 Pertanyaan (Query)

Kalau kita sudah memberikan Prolog sekumpulan fakta, selanjutkan dapat diajukan pertanyaan sehubungan dengan fakta-fakta. Ini dikenal dengan nama memberikan query ke sistem Prolog (querying the Prolog system). Pertanyaan yang diajukan ke Prolog sama tipenya seperti dalam bahasa natural
• Untuk mengajukan pertanyaan, misal : Apakah Tini suka boneka?
• Dalam prolog ditulis :
– suka(tini,boneka).
• Prolog akan memberikan jawaban :
– Yes
• Jika pertanyaannya
– suka(tini,mobil-mobilan).
• Prolog akan memberikan jawaban :
– No
• Prolog juga mampu memberikan jawaban atas pertanyaan apakah, siapakah, dan lain-lain.
• Contoh : Apakah yang disukai Tini ?
– suka(tini,Apa).
• Prolog akan memberikan jawaban :
– Apa = boneka
• Siapakah yang suka boneka ?
– suka(Siapa,boneka).
– Siapa = tini

Struktur Program Prolog

  • 1. DOMAINS
Berisi deklarasi (pernyataan) tentang jenis data yang digunakan dalam fakta dan aturan.
Ada 6 buah domain standar :
a. Integer : -32.768 sampai 32.767
b. Real : 1e-307 sampai 1e+308
c. Char
d. String
e. Symbol (kumpulan karakter yang diawali dengan huruf kecil)
f. File (digunakan untuk operasi file)
  • 2. PREDICATES
• Nama simbolik untuk relasi
– ayah(slamet,amin).
• Predikat dari fakta diatas ditulis :
– ayah(symbol,symbol)
• Slamet dan amin disebut argumen
• Jumlah argumen disebut aritas (arity)
• Ditulis tanpa diakhiri tanda titik
• Syarat penulisan nama predikat :
– Diawali huruf kecil dan dapat diikuti huruf, angka, atau garis
bawah
– Panjang nama maksimum 250 karakter
– Tidak diperbolehkan menggunakan spasi, tanda minus, tanda
bintang, dan garis miring.
  • 3. CLAUSES 
a. Berisi fakta dan aturan yang membentuk keseluruhan program.
b. Mirip prosedur pada bahasa pemrograman lain.
c. Bagian fakta umumnya ditulis sebelum bagian aturan.
d. Fakta dan aturan yang mempunyai relasi yang sama harus dituliskan berkelompok.
e. Fakta/aturan ditulis mulai dari fakta/aturan yang paling atas kemudian urut ke bawah.
f. Kemungkinan yang lebih besar ditempatkan lebih awal daripada kemungkinan yang lebih kecil.
  • 4. GOAL 
a. Berisi pertanyaan yang diajukan kepada Prolog.
b. Dapat terdiri dari beberapa bagian yang disebut subgoal
c. Ada 2 jenis goal :
  1. 1. Goal eksternal : goal yang diberikan melalui compiler, dituliskan dalam jendela dialog.
  2. 2. Goal internal : goal yang dituliskan sekaligus dalam program.
  3.   - GOAL : ayah(slamet,badu)
  4.   - True. 

Goal Majemuk

a. Goal yang terdiri lebih dari satu pernyataan
b. Bagian goal tersebut disebut sub goal
- GOAL : mobil(Merk,Warna,Harga), Harga < 50.
- GOAL : mobil(Merk,Warna,Harga),
                Warna = merah,
                Harga < 35.

Variabel 

a. Besaran yang nilainya dapat berubah-ubah
b. Tata cara penulisan variabel :
1. Harus diawali huruf besar atau garis bawah (_).
2. Dapat terdiri dari huruf, angka atau simbol dan merupakan satu kesatuan.
3. Panjang maksimum 250 karakter.
4. Hendaknya mengandung makna yang berkaitan dengan data yang dinyatakannya.
c. Ada 3 macam variabel dalam prolog :
– Variabel bebas (free variable)
– Variabel terikat (bound variable)
– Variabel tak bernama (anonymous variable)

Sumber :
http://www.rumahinformatika.ml/2014/06/26-laporan-praktikum-kecerdasanbuatan.html
lulu.staff.gunadarma.ac.id/Downloads/files/45791/10-PengenalanProlog.pdf

http://www.herowintolo.stta.ac.id/2010/12/kecerdasan-buatan1_21.html
Read more...

SISTEM PAKAR PENGERTIAN, SEJARAH, DAN PEMBAHASANNYA



  • A. Sistem Pakar

Sistem pakar (dalam bahasa Inggris expert system) adalah sistem informasi yang berisi dengan pengetahuan dari pakar sehingga dapat digunakan untuk konsultasi. Pengetahuan dari pakar di dalam sistem ini digunakan sebagi dasar oleh Sistem Pakar untuk menjawab pertanyaan (konsultasi).
Kepakaran (expertise) adalah pengetahuan yang ekstensif dan spesifik yang diperoleh melalui rangkaian pelatihan, membaca, dan pengalaman. Pengetahuan membuat pakar dapat mengambil keputusan secara lebih baik dan lebih cepat daripada non-pakar dalam memecahkan problem yang kompleks. Kepakaran mempunyai sifat berjenjang, pakar top memiliki pengetahuan lebih banyak daripada pakar yunior. Tujuan Sistem Pakar adalah untuk mentransfer kepakaran dari seorang pakar ke komputer, kemudian ke orang lain (yang bukan pakar).
Sistem pakar adalah suatu program komputer yang mengandung pengetahuan dari satu atau lebih pakar manusia mengenai suatu bidang spesifik. Jenis program ini pertama kali dikembangkan oleh periset kecerdasan buatan pada dasawarsa 1960-an dan 1970-an dan diterapkan secara komersial selama 1980-an. Bentuk umum sistem pakar adalah suatu program yang dibuat berdasarkan suatu set aturan yang menganalisis informasi (biasanya diberikan oleh pengguna suatu sistem) mengenai suatu kelas masalah spesifik serta analisis matematis dari masalah tersebut. Tergantung dari desainnya, sistem pakar juga mampu merekomendasikan suatu rangkaian tindakan pengguna untuk dapat menerapkan koreksi. Sistem ini memanfaatkan kapabilitas penalaran untuk mencapai suatu simpulan.
  • B. Sejarah Sistem Pakar
Sistem Pakar petama kali dikembangkan oleh komunitas AI (Artificial Intellegence) pada pertengahan tahun 1956. Sistem Pakar yang munculpertama kali adalah General-purpose Problem Solver (GPS) yang dikembangkan oleh Newel dan Simon (Sri Kusumadewi, 2003).
Pertengahan tahun 1960-an, terjadi pergantian dari program serba bisa (general-purpose) ke program yang spesialis (special-purpose) dengan dikembangkannya DENDRAL oleh E.Feigenbauh dari Universitas Stanford dan kemudian diikutu oleh MYCIN.
Awal tahun 1980-an, teknologi Sistem Pakar yang mula-mula dibatasi oleh suasana akademis mulai muncul sebagai aplikasi komersial, khususnya XCON, XSEL (dikembangkan dari R-1 pada Digital Equipment Corp.) dan CATS-1 (dikembangkan oleh General Electric). Sistem Pakar dari tahun ketahun selalu mengalami perkembangan.
  • C. Struktur Sistem Pakar
1. Basis Pengetahuan (Knowledge Base)
Basis pengetahuan merupakan inti dari suatu sistem pakar, yaitu berupa representasi pengetahuan dari pakar. Basis pengetahuan tersusun atas fakta dan kaidah. Fakta adalah informasi tentang objek, peristiwa, atau situasi. Kaidah adalah cara untuk membangkitkan suatu fakta baru dari fakta yang sudah diketahui. Menurut Gondran (1986) dalam Utami (2002), basis pengetahuan merupakan representasi dari seorang pakar, yang kemudian dapat dimasukkan kedalam bahasa pemrograman khusus untuk kecerdasan buatan (misalnya PROLOG atau LISP) atau shell sistem pakar (misalnya EXSYS, PC-PLUS, CRYSTAL, dsb.)
2. Mesin Inferensi (Inference Engine)
Mesin inferensi berperan sebagai otak dari sistem pakar. Mesin inferensi berfungsi untuk memandu proses penalaran terhadap suatu kondisi, berdasarkan pada basis pengetahuan yang tersedia. Di dalam mesin inferensi terjadi proses untuk memanipulasi dan mengarahkan kaidah, model, dan fakta yang disimpan dalam basis pengetahuan dalam rangka mencapai solusi atau kesimpulan. Dalam prosesnya, mesin inferensi menggunakan strategi penalaran dan strategi pengendalian.
Strategi penalaran terdiri dari strategi penalaran pasti (Exact Reasoning) dan strategi penalaran tak pasti (Inexact Reasoning). Exact reasoning akan dilakukan jika semua data yang dibutuhkan untuk menarik suatu kesimpulan tersedia, sedangkan inexact reasoning dilakukan pada keadaan sebaliknya.
Strategi pengendalian berfungsi sebagai panduan arah dalam melakukan prose penalaran. Terdapat tiga tehnik pengendalian yang sering digunakan, yaitu forward chaining, backward chaining, dan gabungan dari kedua tehnik pengendalian tersebut.
3. Basis Data (Database)
Basis data terdiri atas semua fakta yang diperlukan, dimana fakta-fakta tersebut digunakan untuk memenuhi kondisi dari kaidah-kaidah dalam sistem. Basis data menyimpan semua fakta, baik fakta awal pada saat sistem mulai beroperasi, maupun fakta-fakta yang diperoleh pada saat proses penarikan kesimpulan sedang dilaksanakan. Basis data digunakan untuk menyimpan data hasil observasi dan data lain yang dibutuhkan selama pemrosesan.
4. Antarmuka Pemakai (User Interface)
Fasilitas ini digunakan sebagai perantara komunikasi antara pemakai dengan sistem. Hubungan antar komponen penyusun struktur sistem pakar dapat dilihat pada Gambar di bawah ini :
  • D. Arsitektur Sistem Pakar

1. Knowledge base
Knowledge base merupakan representasi pengetahuan dari seorang atau beberapa pakar yang diperlukan untuk memahami, memformulasikan dan memecahkan masalah. Dalam hal ini digunakan untuk memecahkan masalah-masalah yang terjadi pada komputer. Knowledge base ini terdiri dari dua elemen dasar, yaitu fakta dan rules.
2. Inference engine 
Inference engine merupakan otak dari sistem pakar yang mengandung mekanisme fungsi berpikir dan pola-pola penalaran sistem yang digunakan oleh seorang pakar. Mekanisme ini yang menganalisis suatu masalah tertentu dan kemudian mencari solusi atau kesimpulan yang terbaik.
3. Working Memory 
Working memory merupakan tempat penyimpanan fakta-fakta yang diketahui dari hasil menjawab pertanyaan.
4. User/developer interface
Semua software pengembangan sistem pakar memberikan interface yang berbeda bagi user dan developer. User akan berhadapan dengan tampilan yang sederhana dan mudah sedangkan developer akan berhadapan dengan editor dan source code waktu mengembangkan program.
5. Explanation facility 
Explanation facility memberikan penjelasan saat mana user mengetahui apakah alasan yang diberikan sebuah solusi.
6. External programs
Berbagai program seperti database, spreadsheets, algorithms, dan lainnya yang berfungsi untuk mendukung sistem.

  • E. Ciri-ciri Sistem Pakar
1.    Terbatas pada bidang yang spesifik
2.    Dapat memberikan penalaran untuk data-data yang tidak lengkap atau tidak pasti.
3.    Dapat digunakan dalam berbagai jenis komputer.
4.    Memiliki kemampuan untuk belajar beradaptasi.
5.    Dirancang untuk dapat dikembangkan secara bertahap.
6.    Output tergantung dari dialog dengan user.
7.    Knowledge dan inference engine terpisah
8.    Keuntungan Sistem Pakar
9.    Memungkinkan orang awam bisa mengerjakan pekerjaan para ahli.
10. Bisa melakukan proses secara berulang secara otomatis.
11. Menyimpan pengetahuan dan keahlian dari para pakar.
12. Meningkatkan output dan produktivitas.
13. Meningkatkan kualitas.
14. Mampu mengambil dan melestarikan keahlian para pakar (terutama termasuk yang keahlian langka).
15. Mampu beroperasi dalam lingkungan yang berbahaya.
16. Memiliki kemampuan untuk mengakses pengetahuan.
17. Memiliki reabilitas.
18. Meningkatkan kapabilitas sistem komputer.
19. Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidak pastian.
20. Sebagai media pelengkap dalam pelatihan.
21. Meningkatkan kapabilitas dalam menyelesaikan masalah.
22. Menghemat waktu dalam mengambil keputusan.
23. Kelemahan Sistem Pakar
24. Biaya yang diperlukan dalam pembuatan aplikasi sistem pakar dan memeliharanya sangat mahal.
25. Sulit dikembangkan. Hal ini tentu saja erat kaitannya dengan ketersediaan pakar di bidangnya.
26. Sistem pakar tidak 100% bernilai benar.
  • F. Perbandingan Sistem Konvensional dan Sistem Pakar
Sistem Konvensional
Sistem Pakar
Informasi dan pemrosesan umumnya digabung dalam satu program sequential
Knowladge base terpisah dari mekanisme pemrosesan.
Program tidak pernah salah
Program bisa saja melakukan kesalahan
Data harus lengkap
Data tidak harus legkap
Sistem bekerja jika sudah lengkap
System dapat bekerja hanya dengan rules yang sedikit
Data kuantitatif
Data kualitatif
Representasi data dalam numerik
Representasi pengetahuan dalam symbol
Eksekusi secara algoritmik (step by step)
Eksekusi dilakukan secara heuristic dan logik

Daftar Pustaka
Arhami, Muhammad. (2004). Konsep Dasar Sistem Pakar. Andi. Yogyakarta.
Farid Azis, M, (1994), Belajar sendiri pemrograman sistem pakar, Elexmedia Komputindo, Jakarta, 3-48.
Turban Efraim. 1992: “Expert System And Applied Artificial Intelegence”. Macmillan Publishing Company, Printed in The republic Of singapore.
Kusrini, 2006. Sistem Pakar Teori dan Aplikasi. Yogyakarta : Andi Offset.

Read more...