Sumber info: Wikipedia Sistem pakar (expert sistem) adalah software yang menggunakan suatu basis pengetahuan (knowledge base) dari keahlian manusia untuk melakukan pemecahan masalah (problem solving) atau mengklarifikasikan hal-hal yang tidak pasti di mana perlu konsultasi dari manusia yang ahli pada bidang yang diklarifikasikan (definisi: wikipedia). Dengan kata lain, expert sistem berguna untuk melakukan klarifikasi dan memberikan solusi terhadap suatu masalah seperti sedang berkonsultasi oleh seorang pakar/ahli dalam bidang/masalah tersebut. Sistem pakar juga merupakan sebuah teknik inovatif dalam menangkap dan memadukan pengetahuan yang kekuatannya terletak dalam memecahkan masalah-masalah praktis. Suatu sistem pakar umumnya dapat menimbulkan suatu dialog setelah diberikan jawaban, sistem pakar dapat memberikan solusi atau saran. Sistem pakar dapat mengumpulkan dan menyimpan pengetahuan seorang pakar atau beberapa orang pakar ke dalam komputer. Pengetahuan tersebut kemudian digunakan oleh siapa saja yang memerlukan. Sistem pakar pada dasarnya dibuat dan digunakan untuk membantu memecahkan suatu masalah, tanpa tergantung dari seorang pakar. Kebutuhan akan keahlian manusia tentunya sangat variatif sesuai dengan bentuk masalah. Misalnya dalam suatu pabrik terjadi kerusakan salah satu mesin produksi. Ketika teknisinya akan dimintai bantuan untuk mereparasi mesin tersebut, ternyata teknisi tersebut sedang sakit, atau ke luar kota, atau ada kepentingan lain. Padahal, selama ini pabrik itu hanya bergantung pada teknisi itu. Di sinilah peran sistem pakar. Sistem pakar bisa menggantikan teknisi yang sedang ada keperluan tersebut dan memberikan solusi sementara di mana solusi yang diberikan tersebut sudah seperti seorang pakar/ahli. Sistem pakar itu dibuat berdasarkan keahlian dari seorang pakar untuk memecahkan suatu permasalahan, masalah yang telah ada beserta indikasi, keterangan, solusi atau saran yang sifatnya sementara. Jadi, suatu sistem pakar itu bersifat dinamis dan up to date. Banyak keuntungan dalam pemanfaatan sistem pakar, antara lain: 1. Memperluas jangkauan dari seorang pakar 2. Arsip yang terpercaya dari sebuah keahlian 3. Dapat menyederhanakan suatu pekerjaan 4. Waktu kerja menjadi lebih efisien 5. Meningkatkan produktifitas karena meningkatnya kualitas hasil pekerjaan 6. Biaya kecil 7. Bisa digunakan untuk development human resousrce P.S: Info keuntungan sistem pakar di atas, kami ambil dari kuliah Sistem Berbasis Pengetahuan. Bimo Adi Pradono 31045 www.digizoneku.com
critical time supaya perawatan infeksi otak dapat ditangani dengan baik. Dengan potensi kemapuan yang menjanjikan tersebut, MYCIN terus dikembangkan oleh para ilmuwan di Stanford and Pacific Medical Center untuk memproduksi Puff, yaitu sistem pakar yang membantu dalam diagnosis kelaianan paru-paru dalam jenis tertentu. Sekarang perkembanganya sudah mencapai Carduceus, sistem pakar terbaru yang memiliki knowledge base yang lebih besar dibanding para dokter karena sudah sekitar 80% dari medical literature yang sudah tertanam di dalam sistem pakar ini. Saat ini, sistem pakar sudah dikomersilkan dan masih terus dikembangkan dalam pemanfaatannya dalam berbagai bidang: KAS (Knowledge Acquisition Sistem) and Teiresias membantu para knowledge engineer untuk membangun sistem pakar. ONCOCIN membantu ahli fisika dalam me-manage rejimen obat yang rumit untuk perawatan pasien yang menderita kanker Molgen membantu para pakar biologi dalam perencanaan eksperimen DNA. Guidon berperan sebagai pakar pembelajaran yang mengajarkan kepada siswa dengan membetulkan jawaban ke bentuk pertanyaan teknis. Genesis membantu para ilmuwan dalam perencanaan eksperimen cloning. TATR digunakan oleh angkatan udara dalam perencanaan penyerangan pada pangkalan markas udara lawan.
www.digizoneku.com
Gambar 1. Alur logika program indikasi sakit maag Penjelasan singkat logika pengindikasiannya: Pasien akan ditanya, Apakah Anda sakit perut? Jika pasien menjawab ya, maka logikanya akan berjalan ke sebelah kiri (lihat gambar). Jika pasien menjawab tidak, maka alur logika akan berjalan ke sebelah kanan. Pasien akan ditanya lagi, Apakah Anda mual? Jika ya, maka software akan memberi kesimpulan dari konfirmasinya terhadap pasien, dan memunculkan kalimat Anda menderita sakit maag. Bimo Adi Pradono 31045 www.digizoneku.com
Kesimpulan Masih sehat Hanya mual Hanya sakit perut biasa Sakit maag
Tabel 1. Alur logika dan kesimpulan dari program indikasi sakit maag Program indikasi sakit maag di atas itu memang sederhana, tapi sudah menggambarkan kinerja umum dari expert sistem, yaitu problem solving. Pemecahan masalah dengan expert sistem juga banyak dipakai di perusahaan untuk memecahkan masalah dengan mengklarifikasi jawaban dari pertanyaan-pertanyaan seperti contoh di atas. Main Menu Pilihan 1: Pendeteksi Sakit Maag
www.digizoneku.com
;definisi variabel (defvar *y-maag*) (defvar *no-maag*) (defvar *maag-q*) (defvar *y-maag-q*) (defvar *no-maag-q*) (defvar *y-maag-def*) (defvar *y-maag-def2*) (defvar *no-maag-def*) (defvar *no-maag-def2*) (defvar *y-maag-list*) (defvar *y-maag-list2*) (defvar *no-maag-list*) (defvar *no-maag-list2*) (defvar *id-cf*) (defvar *id-km*) (defvar *id-mu*) (defvar *im-choice*) (defvar *im-active* 1)
;fungsi untuk memanggil var *y-maag-list* (defun y-maag-def () (print-spacer 2) (print-list *y-maag-list*) (print-spacer 4)) ;fungsi untuk memanggil var *y-maag-list2* (defun y-maag-def2 () (print-spacer 2) (print-list *y-maag-list2*) (print-spacer 4)) ;fungsi untuk memanggil var *no-maag-list*
www.digizoneku.com
(defun no-maag-def () (print-spacer 2) (print-list *no-maag-list*) (print-spacer 4)) ;fungsi untuk memanggil var *no-maag-list2* (defun no-maag-def2 () (print-spacer 2) (print-list *no-maag-list2*) (print-spacer 4))
;interface yang ditampilkan di konsol (defvar *ci-welcome-header* (list " Mata Kuliah " SISTEM BERBASIS PENGETAHUAN " ==================================================================" " " " Program Pendeteksi Sakit Maag ")) (defvar *ci-welcome-footer* (list " " " ===================================================================" " " " ")) (defvar *ci-i-main-menu* (list " ==================================================================" " || MENU UTAMA ||" " || Silakan masukkan angka yang sesuai dengan pilihan Anda ||" " ||---------------------------------------------------------------||" " || 1. Pendeteksi Sakit Maag ||" " ||---------------------------------------------------------------||" " || 9. Kembali ke Menu Utama ||" " || 0. Keluar ||" " ||---------------------------------------------------------------||" " || (Bimo A.P/31045)||" " =================================================================="))
" "
;pesan kesimpulan dari tiap percabangan if (defvar *y-maag-list* (list "Anda menderita sakit maag.")) (defvar *y-maag-list2* (list "Perut Anda sakit, tapi tidak sakit maag.")) (defvar *no-maag-list* (list "Perut Anda mual, tapi tidak sakit maag.")) (defvar *no-maag-list2* (list "Anda masih sehat."))
-----"))
(defvar *ci-imenu-wrong-choice* (list " ----Maaf, pilihan Anda salah, mohon coba lagi (defvar *ci-imenu-message* (list " ----Selamat datang. Silakan masukkan pilihan Anda
-----"))
-----"))
www.digizoneku.com
;fungsi untuk memanggil var *ci-welcome-header* dan *ci-welcome-footer* (defun welcome () (print-spacer 25) (print-list *ci-welcome-header*) (print-list *ci-welcome-footer*))
;fungsi percabangan pertama (defun generate1 () (progn (print-spacer 2) (print-list (list "===============================")) (print-list (list "Apakah perut Anda sakit?")) (print-list (list "Pilih Angka: ([1] Yes / [2] No)")) (print-list (list "===============================")) (setq *maag-q* (prompt-integer "Masukkan no. pilihan Anda:"))) (if (equal *maag-q* 1) (y-maag) (if (equal *maag-q* 2) (no-maag) (print-list (list "no. yang anda masukkan tidak ada dalam daftar"))))) ;percabangan ketika dijawab yes (defun y-maag () (progn (print-spacer 2) (print-list (list "===============================")) (print-list (list "Apakah perut Anda mual?")) (print-list (list "Pilih Angka: ([1] Yes / [2] No)")) (print-list (list "===============================")) (setq *y-maag-q* (prompt-integer "Masukkan no. pilihan Anda:"))) (if (equal *y-maag-q* 1) (y-maag-def) (if (equal *y-maag-q* 2) (y-maag-def2) (print-list (list "no. yang anda masukkan tidak ada dalam daftar"))))) ;percabangan ketika dijawab no (defun no-maag () (progn (print-spacer 2) (print-list (list "===============================")) (print-list (list "Apakah perut Anda mual?")) (print-list (list "Pilih Angka: ([1] Yes / [2] No)")) (print-list (list "===============================")) (setq *no-maag-q* (prompt-integer "Masukkan no. pilihan Anda:"))) (if (equal *no-maag-q* 1) (no-maag-def) (if (equal *no-maag-q* 2) (no-maag-def2) (print-list (list "no. yang anda masukkan tidak ada dalam daftar")))))
;fungsi untuk memilih message yang ditampilkan di bawah menu (defun imenu-message-selector (menu) (if (equal *im-choice* 9999) (progn (print-spacer 25) (print-list menu) (print-spacer 1) (print-list *ci-imenu-wrong-choice*)) (progn (if (equal *ci-imenu-message* "##MENU-NAV##") (setf *ci-imenu-message* *ci-imenu-helper*)
www.digizoneku.com
(prompt-read "Tekan tombol [ENTER] untuk melanjutkan")) (print-spacer 25) (print-list menu) (print-spacer 1) (print-list *ci-imenu-message*))))
;fungsi untuk menampilkan menu utama (defun imenu-main () (print-spacer 25) (print-list *ci-i-main-menu*) (print-spacer 1) (print-list *ci-imenu-helper*) (print-spacer 1) (setq *im-choice* (prompt-integer "Pilihan Anda" 999)) (loop (cond ((= *im-choice* 0) (quit)) ((= *im-choice* 1) (generate1)) ((= *im-choice* 2) (generate2)) ((= *im-choice* 3) (generate3)) ((= *im-choice* 9) (progn (setf *ci-imenu-message* "##MENU-NAV##") (welcome) (return))) (t (setf *im-choice* 9999))) (print-spacer 1) (imenu-message-selector *ci-i-main-menu*) (print-spacer 1) (setf *im-choice* (prompt-integer "Pilihan Anda" 999))))
www.digizoneku.com
www.digizoneku.com
BAB V REFERENSI
Buku: Suyoto, Dr. Intelegensi Buatan, Teori dan Pemrograman. Penerbit Gava Media. Yogyakarta, 2004. P.S: buku ini diperlukan sebagai dasar ilmu untuk penulisan program LISP
File PDF: Hauskrecht, Milos. Knowledge Representation Lecture 2. CS 2740. Tutorial Lisp Dengan Interpreter SBCL dari Papirus. P.S: buku ini diperlukan sebagai dasar ilmu untuk penulisan program LISP
Situs Web: http://www.atariarchives.org/deli/expert_sistems.php http://en.wikipedia.org/wiki/Expert_sistem http://en.wikipedia.org/wiki/Knowledge_base http://agro.web.ugm.ac.id/lisp-tutorial.htm http://steve-yegge.blogspot.com/2008/01/emergency-elisp.html http://www.gigamonkeys.com/book/ http://norvig.com/paip/README.html Sumber utama dari penulisan dan paradigma laporan ini adalah: Ir. Surjono, Mata Kuliah Sistem Berbasis Pengetahuan, UGM.
www.digizoneku.com