(2) Bab 5 Sistem Pakar

download (2) Bab 5 Sistem Pakar

of 25

Transcript of (2) Bab 5 Sistem Pakar

SISTEM PAKAR55.1 DEFINISI Secara umum, sistem pakar (expert system) adalah sistem yang berusaha mengadopsi pengetahuan manusia ke komputer, agar komputer dapat menyelesaikan masalah seperti yang biasa dilakukan oleh para ahli. Sistem pakar yang baik dirancang agar dapat menyelesaikan suatu permasalahan tertentu dengan meniru kerja dari para ahli. Dengan sistem pakar ini, orang awampun dapat menyelesaikan masalah yang cukup rumit yang sebenarnya hanya dapat diselesaikan dengan bantuan para ahli. Bagi para ahli, sistem pakar ini juga akan membantu aktivitasnya sebagai asisten yang sangat berpengalaman. Ada beberapa definisi tentang sistem pakar, antara lain: Menurut Durkin: Sistem pakar adalah suatu program komputer yang dirancang untuk memodelkan kemampuan penyelesaian masalah yang dilakukan oleh seorang pakar. Menurut Ignizio: Sistem pakar adalah suatu model dan prosedur yang berkaitan, dalam suatu domain tertentu, yang mana tingkat keahliannya dapat dibandingkan dengan keahlian seorang pakar. Menurut Giarratano dan Riley: Sistem pakar adalah suatu sistem komputer yang bisa menyamai atau meniru kemampuan seorang pakar. Sistem pakar pertama kali dikembangkan oleh komunitas AI pada pertengahan tahun 1960. Sistem pakar yang muncul pertama kali adalah General-purpose Problem Solver (GPS) yang dikembangkan oleh Newel dan Simon. GPS (dan program-program yang serupa) ini mengalami kegagalan dikarenakan cakupannya terlalu luas sehingga terkadang justru meninggalkan pengetahuan-pengetahuan penting yang seharusnya disediakan. Smpai saat ini sudah banyak sistem pakar yang dibuat, beberapa contoh diantaranya terlihat pada Tabel 5.1. Tabel 5.1. Sistem Pakar yang terkenal Sistem Pakar MYCIN DENDRAL XCON & XSEL SOPHIE Prospector FOLIO DELTA Diagnosa penyakit Mengidentifikasi struktur molekular campuran yang tak dikenal Membantu konfigurasi sistem komputer besar Analisis sirkit elektronik Digunakan di dalam geologi untuk membantu mencari dan menemukan deposit. Membantu memberikan keputusan bagi seorang manajer dalam hal stok broker dan investasi. Pemeliharaan lokomotif listrik disel Kegunaan

77

5.2 KEUNTUNGAN SISTEM PAKAR Secara garis besar, banyak manfaat yang dapat diambil dengan adanya sistem pakar, antara lain: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Memungkinkan orang awam bisa mengerjakan pekerjaan para ahli; Bisa melakukan proses secara berulang secara otomatis; Menyimpan pengetahuan dan keahlian para pakar; Meningkatkan output dan produktivitas. Meningkatkan kualitas. Mampu mengambil dan melestarikan keahlian para pakar (terutama yang termasuk keahlian langka). Mampu beroperasi dalam lingkungan yang berbahaya. Memiliki kemampuan untuk mengakses pengetahuan. Memiliki reliabilitas. Meningkatkan kapabilitas sistem komputer. Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidakpastian. Sebagai media pelengkap dalam pelatihan. Meningkatkan kapabilitas dalam penyelesaian masalah. Menghemat waktu dalam pengambilan keputusan.

5.3 KELEMAHAN SISTEM PAKAR Disamping memiliki beberapa keuntungan, sistem pakar juga memiliki beberapa kelemahan, antara lain: 1. Biaya yang diperlukan untuk membuat dan memeliharanya sangat mahal. 2. Sulit dikembangkan. Hal ini tentu saja erat kaitannya dengan ketersediaan pakar di bidangnya. 3. Sistem Pakar tidak 100% bernilai benar. 5.4. KONSEP DASAR SISTEM PAKAR Menurut Efraim Turban, konsep dasar sistem pakar mengandung: keahlian, ahli, pengalihan keahlian, inferensi, aturan dan kemampuan menjelaskan. Keahlian adalah suatu kelebihan penguasaan pengetahuan di bidang tertentu yang diperoleh dari pelatihan, membaca atau pengalaman. Contoh bentuk pengetahuan yang termasuk keahlian adalah: Fakta-fakta pada lingkup permasalahan tertentu. Teori-teori pada lingkup permasalahan tertentu. Prosedur-prosedur dan aturan-aturan berkenaan permasalahan tertentu. Strategi-strategi global untuk menyelesaikan masalah. Meta-knowledge (pengetahuan tentang pengetahuan).

dengan

lingkup

78

Bentuk-bentuk ini memungkinkan para ahli untuk dapat mengambil keputusan lebih cepat dan lebih baik daripada seseorang yang bukan ahli. Seorang ahli adalah seseorang yang mampu menjelaskan suatu tanggapan, mempelajari hal-hal baru seputar topik permasalahan (domain), menyusun kembali pengetahuan jika dipandang perlu, memecah aturan-aturan jika dibutuhkan, dan menentukan relevan tidaknya keahlian mereka. Pengalihan keahlian dari para ahli ke komputer untuk kemudian dialihkan lagi ke orang lain yang bukan ahli, merupakan tujuan utama dari sistem pakar. Proses ini membutuhkan 4 aktivitas yaitu: tambahan pengetahuan (dari para ahli atau sumber-sumber lainnya), representasi pengetahuan (ke komputer), inferensi pengetahuan, dan pengalihan pengetahuan ke user. Pengetahuan yang disimpan di komputer disebut dengan nama basis pengetahuan. Ada 2 tipe pengetahuan, yaitu: fakta dan prosedur (biasanya berupa aturan). Salah satu fitur yang harus dimiliki oleh sistem pakar adalah kemampuan untuk menalar. Jika keahlian-keahlian sudah tersimpan sebagai basis pengetahuan dan sudah tersedia program yang mampu mengakses basisdata , maka komputer harus dapat diprogram untuk membuat inferensi. Proses inferensi ini dikemas dalam bentuk motor inferensi (inference engine). Sebagian besar sistem pakar komersial dibuat dalam bentuk rule-based systems, yang mana pengetahuan disimpan dalam bentuk aturan-aturan. Aturan tersebut biasanya berbentuk IF-THEN. Fitur lainnya dari sistem pakar adalah kemampuan untuk merekomendasi. Kemampuan inilah yang membedakan sistem pakar dengan sistem konvensional (Tabel 5.2). Tabel 5.2. Sistem konvensional vs. sistem pakar. Sistem Konvensional Informasi dan pemrosesannya biasanya jadi satu dengan program Biasanya tidak bisa menjelaskan mengapa suatu input data itu dibutuhkan, atau bagaimana output itu diperoleh. Pengubahan program cukup sulit & membosankan. Sistem hanya akan beroperasi jika sistem tersebut sudah lengkap. Eksekusi dilakukan langkah demi langkah. Menggunakan data. Tujuan utamanya adalah efisiensi. Sistem Pakar Basis pengetahuan merupakan bagian terpisah dari mekanisme inferensi. Penjelasan adalah bagian terpenting dari sistem pakar.

Pengubahan aturan dapat dilakukan dengan mudah. Sistem dapat beroperasi hanya dengan beberapa aturan. Eksekusi dilakukan pada keseluruhan basis pengetahuan. Menggunakan pengetahuan. Tujuan utamanya adalah efektivitas.

5.5 Bentuk Sistem Pakar Ada 4 bentuk sistem pakar, yaitu: 1. Berdiri sendiri. Sistem pakar jenis ini merupakan software yang berdiri-sendiri tidak tergabung dengan software yang lainnnya. Semua contoh sistem pakar pada Tabel 5.1 merupakan sistem pakar jenis ini.

79

2. Tergabung. Sistem pakar jenis ini merupakan bagian program yang terkandung di dalam suatu algoritma (konvensional), atau merupakan program dimana di dalamnya memanggil algoritma subrutin lain (konvensional). 3. Menghubungkan ke software Lain. Bentuk ini biasanya merupakan sistem pakar yang menghubungkan ke suatu paket program tertentu, misalnya dengan DBMS. 4. Sistem Mengabdi. Sistem pakar merupakan bagian dari komputer khusus yang dihubungkan dengan suatu fungsi tertentu. Misalnya sistem pakar yang digunakan untuk membantu menganalisis data radar. 5.6 STRUKTUR SISTEM PAKAR Sistem pakar terdiri-dari 2 bagian pokok, yaitu: lingkungan pengembangan (development environment) dan lingkungan konsultasi (consultation environment). Lingkungan pengembangan digunakan sebagai pembangun sistem pakar baik dari segi pembangun komponen maupun basis pengetahuan. Lingkungan konsultasi digunakan oleh seseorang yang bukan ahli untuk berkonsultasi.Basis Pengetahuan UserFakta-fakta tentang kejadian khusus Fakta: Aturan: Apa yang diketahui tentang area domain logical reference

Antarmuka Fasilitas penjelasan

Rekayasa pengetahuan Interpreter Scheduler Consistency Enforcer Penambahan pengetahuan Pengetahuan ahli

Aksi yang direkomendasi

Motor inferensi

BlackboardRencana Solusi Agenda Deskripsi masalah Penyaring pengetahuan

Gambar 5.1 Struktur sistem pakar. Komponen-komponen yang ada pada sistem pakar adalah Gambar 5.1: 1. Subsistem penambahan pengetahuan. Bagian ini digunakan untuk memasukkan pengetahuan, mengkonstruksi atau memperluas pengetahuan dalam basis pengetahuan. Pengetahuan itu bisa berasal dari: ahli, buku, basisdata, penelitian, dan gambar. 2. Basis pengetahuan. Berisi pengetahuan-pengetahuan yang dibutuhkan untuk memahami, memformulasikan dan menyelesaikan masalah. 3. Motor inferensi (inference engine). Program yang berisi metodologi yang digunakan untuk melakukan penalaran terhadap informasi-informasi dalam basis pengetahuan dan blackboard, serta digunakan untuk

80

memformulasikan konklusi. Ada 3 elemen utama dalam motor inferensi, yaitu: o Interpreter: mengeksekusi item-item agenda yang terpilih dengan menggunakan aturan-aturan dalam basis pengetahuan yang sesuai. Scheduler: akan mengontrol agenda. Consistency enforcer: akan berusaha memelihara kekonsistenan dalam merepresentasikan solusi yang bersifat darurat.

o o

4. Blackboard. Merupakan area dalam memori yang digunakan untuk merekam kejadian yang sedang berlangsung termasuk keputusan sementara. Ada 3 tipe keputusan yang dapat direkam, yaitu: o o o Rencana: bagaimana menghadapi masalah. Agenda: aksi-aksi yang potensial yang sedang menunggu untuk dieksekusi. Solusi: calon aksi yang akan dibangkitkan.

5. Antarmuka. Digunakan untuk media komunikasi antara user dan program. 6. Subsistem penjelasan. Digunakan untuk melacak respon dan memberikan penjelasan tentang kelakuan sistem pakar secara interaktif melalui pertanyaan: o o o o Mengapa suatu pertanyaan ditanyakan oleh sistem pakar? Bagaimana konklusi dicapai? Mengapa ada alternatif yang dibatalkan? Rencana apa yang digunakan untuk mendapatkan solusi?

7. Sistem penyaring pengetahuan. Sistem ini digunakan untuk mengevaluasi kinerja sistem pakar itu sendiri untuk melihat apakah pengetahuanpengetahuan yang ada masih cocok untuk digunakan di masa mendatang. 5.7 BASIS PENGETAHUAN (KNOWLEDGE BASE) Basis pengetahuan berisi pengetahuan-pengetahuan dalam penyelesaian masalah, tentu saja di dalam domain tertentu. Ada 2 bentuk pendekatan basis pengetahuan yang sangat umum digunakan, yaitu: a. Penalaran berbasis aturan (Rule-Based Reasoning) Pada penalaran berbasis aturan, pengetahuan direpresentasikan dengan menggunakan aturan berbentuk: IF-THEN. Bentuk ini digunakan apabila kita memiliki sejumlah pengetahuan pakar pada suatu permasalahan tertentu, dan si pakar dapat menyelesaikan masalah tersebut secara berurutan. Disamping itu, bentuk ini juga digunakan apabila dibutuhkan penjelasan tentang jejak (langkah-langkah) pencapaian solusi. b. Penalaran berbasis kasus (Case-Based Reasoning). Pada penalaran berbasis kasus, basis pengetahuan akan berisi solusi-solusi yang telah dicapai sebelumnya, kemudian akan diturunkan suatu solusi untuk keadaan yang terjadi sekarang (fakta yang ada). Bentuk ini digunakan apabila user menginginkan untuk tahu lebih banyak lagi pada kasus-kasus yang hampir sama (mirip). Selain itu, bentuk ini juga digunakan apabila kita telah memiliki sejumlah situasi atau kasus tertentu dalam basis pengetahuan.

81

5.8 MOTOR INFERENSI (INFERENCE ENGINE) Ada 2 cara yang dapat dikerjakan dalam melakukan inferensi, yaitu: 1. Forward Chaining. Pencocokan fakta atau pernyataan dimulai dari bagian sebelah kiri (IF dulu). Dengan kata lain, penalaran dimulai dari fakta terlebih dahulu untuk menguji kebenaran hipotesis. Tabel 5.3 Contoh Aturan-aturan No. R-1 R-2 R-3 R-4 R-5 R-6 R-7 R-8 R-9 R-10 Contoh 5.1: Pada Tabel 5.3 terlihat ada 10 aturan yang tersimpan dalam basis pengetahuan. Fakta awal yang diberikan hanya: A & F (artinya: A dan F bernilai benar). Ingin dibuktikan apakah K bernilai benar (hipotesis: K)? Langkah-langkah inferensi adalah sebagai berikut: Dimulai dari R-1. A merupakan fakta sehingga bernilai benar, sedangkan B belum bisa diketahui kebenarannya, sehingga C-pun juga belum bisa diketahui kebenarannya. Oleh karena itu kita tidak mendapatkan informasi apapun pada R-1 ini. Sehingga kita menuju ke R-2. Pada R-2, kita tidak mengetahui informasi apapun tentang C, sehingga kita juga tidak bisa memastikan kebenaran D. Oleh karena itu kita tidak mendapatkan informasi apapun pada R-1 ini. Sehingga kita menuju ke R-3. Pada R-3, baik A maupun E adalah fakta sehingga jelas benar. Dengan demikian F sebagai konsekuen juga ikut benar. Sehingga sekarang kita mempunyai fakta baru yaitu F. Karena F bukan hipotesis yang hendak kita buktikan (=K), maka penelusuran kita lanjutkan ke R-4. Pada R-4, A adalah fakta sehingga jelas benar. Dengan demikian G sebagai konsekuen juga ikut benar. Sehingga sekarang kita mempunyai fakta baru yaitu G. Karena G bukan hipotesis yang hendak kita buktikan (=K), maka penelusuran kita lanjutkan ke R-5. Pada R-5, baik F maupun G bernilai benar berdasarkan aturan R-3, dan R-4. Dengan demikian D sebagai konsekuen juga ikut benar. Sehingga sekarang kita mempunyai fakta baru yaitu D. Karena D bukan hipotesis yang hendak kita buktikan (=K), maka penelusuran kita lanjutkan ke R-6. Pada R-6, baik A maupun G adalah benar berdasarkan fakta dan R-4. Dengan demikian H sebagai konsekuen juga ikut benar. Sehingga sekarang kita mempunyai fakta baru yaitu H. Karena H bukan hipotesis yang hendak kita buktikan (=K), maka penelusuran kita lanjutkan ke R-7. IF IF IF IF IF IF IF IF IF IF Aturan A & B THEN C C THEN D A & E THEN F A THEN G F & G THEN D G & E THEN H C & H THEN I I & A THEN J G THEN J J THEN K

82

Pada R-7, meskipun H benar berdasarkan R-6, namun kita tidak tahu kebenaran C, sehingga I-pun juga belum bisa diketahui kebenarannya. Oleh karena itu kita tidak mendapatkan informasi apapun pada R-7 ini. Sehingga kita menuju ke R-8. Pada R-8, meskipun A benar karena fakta, namun kita tidak tahu kebenaran I, sehingga J-pun juga belum bisa diketahui kebenarannya. Oleh karena itu kita tidak mendapatkan informasi apapun pada R-8 ini. Sehingga kita menuju ke R-9. Pada R-9, J bernilai benar karena G benar berdasarkan R-4. Karena J bukan hipotesis yang hendak kita buktikan (=K), maka penelusuran kita lanjutkan ke R-10. Pada R-10, K bernilai benar karena J benar berdasarkan R-9. Karena H sudah merupakan hipotesis yang hendak kita buktikan (=K), maka terbukti bahwa K adalah benar. Tabel munculnya fakta baru pada saat inferensi terlihat pada Tabel 5.4. Sedangkan alur inferensi terlihat pada Gambar 5.2. Tabel 5.4 Fakta Baru Aturan R-3 R-4 R-5 R-6 R-9 R-10 Fakta Baru F G D H J K

R-9 Fakta R-4

J

R-10

K

GR-5

AR-3

F

D

R-6

H

EFakta

Gambar 5.2. Forward Chaining 2. Backward Chaining. Pencocokan fakta atau pernyataan dimulai dari bagian sebelah kanan (THEN dulu). Dengan kata lain, penalaran dimulai dari hipotesis terlebih dahulu, dan untuk menguji kebenaran hipotesis tersebut dicari harus dicari fakta-fakta yang ada dalam basis pengetahuan. Contoh 5.2: Seperti halnya pada Contoh 5.1, pada Tabel 5.3 terlihat ada 10 aturan yang tersimpan dalam basis pengetahuan. Fakta awal yang diberikan hanya: A & F

83

(artinya: A dan F bernilai benar). Ingin dibuktikan apakah K bernilai benar (hipotesis: K)? Langkah-langkah inferensi adalah sebagai berikut: Pertama-tama kita cari terlebih dahulu mulai dari R-1, aturan mana yang memiliki konsekuen K. Ternyata setelah ditelusur, aturan dengan konsekuen K baru ditemukan pada R-10. Untuk membuktikan bahwa K benar, maka perlu dibuktikan bahwa J benar. Kita cari aturan yang memiliki konsekuen J. Kita mulai dari R-1, dan ternyata kita baru akan menemukan aturan dengan konsekuen J pada R-8. Untuk membuktikan bahwa J benar, maka perlu dibuktikan bahwa I dan A benar. Untuk membuktikan kebenaran I, kita perlu cari aturan dengan konsekuen I, ternyata ada di R-7. Untuk membuktikan I benar di R-7, kita perlu buktikan bahwa C dan H benar. Untuk itu kitapun perlu mencari aturan dengan konsekuen C, dan ada di R-1. Untuk membuktikan C benar di R-1, kita perlu buktikan bahwa A dan B benar. A jelas benar karena A merupakan fakta. Sedangkan B kita tidak bisa membuktikan kebenarannya, karena selain bukan fakta, di dalam basis pengetahuan juga tidak ada aturan dengan konsekuen B. Dengan demikian maka dari penalaran ini kita tidak bisa buktikan kebenaran dari hipotesis K. Namun demikian, kita masih punya alternatif lain untuk melakukan penalaran. Kita lakukan backtracking. Kita ulangi lagi dengan pembuktian kebenaran C dengan mencari aturan lain dengan konsekuen C. Ternyata tidak ditemukan. Kita lakukan backtraking lagi dengan mencari aturan dengan konsekuen I, ternyata juga tidak ada. Kita lakukan backtraking lagi dengan mencari aturan dengan konsekuen J, ternyata kita temukan pada R-9. Sehingga kita perlu buktikan kebenaran G. Kita mendapatkan R-4 dengan konsekuen G. Kita perlu buktikan kebenaran A. Karena A adalah fakta, maka terbukti bahwa G benar. Dengan demikian berdasarkan penalaran ini bisa dibuktikan bahwa K bernilai benar. Alur inferensi terlihat pada Gambar 5.3.Fakta

K

R-10

JR-8

IR-7

CR-1

A

A

H

BTidak diketahui

(a) Pertama: Gagal

Fakta

K

R-10

J

R-9

G

R-4

A

(b) Kedua: Sukses

84

Gambar 5.3 Backward chaining. Contoh 5.3: Diketahui sistem pakar dengan aturan-aturan sebagai berikut: R1 : IF suku bunga turun THEN harga obligasi naik R2 : IF suku bunga naik THEN harga obligasi turun R3 : IF suku bunga tidak berubah THEN harga obligasi tidak berubah R4 : IF dolar naik THEN suku bunga turun R5 : IF dolar turun THEN suku bunga naik R6 : IF harga obligasi turun THEN beli obligasi Apabila diketahui bahwa dolar turun, maka untuk memutuskan apakah akan membeli obligasi atau tidak dapat ditunjukkan sebagai: Forward chaining: Solusi dengan menggunakan forward chaining dapat dilihat pada Gambar 5.4. Dari fakta dolar turun, berdasarkan aturan-5, diperoleh konklusi suku bunga naik. Dari aturan-2, suku bunga naik menyebabkan harga obligasi turun. Dengan menggunakan aturan-6, jika harga obilasi turun, maka kesimpulan yang diambil adalah membeli obligasi.

dolar turun R5 suku bunga naik R2 harga obligasi turun R6 beli obligasi Gambar 5.4 Backward chaining: Solusi dengan menggunakan backward chaining dapat dilihat pada Gambar 5.5. Berangkat dari solusi yaitu membeli obligasi, dengan menggunakan aturan-6 diperoleh anteseden harga obligasi turun. Dari aturan-2 bisa akan dibuktikan harga obligasi turun bernilai benar jikan suku bunga naik bernilai benar. Dari aturan-5, suku bunga naik memang bernilai benar karena diketahui fakta dolar turun. dolar turun R5 suku bunga naik R2 harga obligasi turun R6 beli obligasi Penyelesaian dengan forward chaining.

85

Gambar 5.5 Penyelesaian dengan backward chaining. 5.9 CIRI-CIRI SISTEM PAKAR Sistem pakar yang baik harus memenuhi ciri-ciri sebagai berikut: 1. Memiliki fasilitas informasi yang handal; 2. Mudah dimodifikasi; 3. Dapat digunakan dalam berbagai jenis komputer; 4. Memiliki kemampuan untuk belajar beradaptai. 5.10 PERMASALAHAN YANG DISENTUH OLEH SISTEM PAKAR Ada beberapa masalah yang menjadi area luas aplikasi sistem pakar, antara lain: 1. Interpretasi. Pengambilan keputusan dari hasil observasi, termasuk diantaranya: pengawasan, pengenalan ucapan, analisis citra, interpretasi sinyal, dan beberapa analisis kecerdasan. Prediksi. Termasuk diantaranya: peramalan, prediksi demografis, peramalan ekonomi, prediksi lalulintas, estimasi hasil, militer, pemasaran, atau peramalan keuangan. Diagnosis. Termasuk diantaranya: medis, elektronis, mekanis, dan diagnosis perangkat lunak. Perancangan. bangunan. Termasuk diantaranya: layout sirkuit dan perancangan

2.

3. 4. 5. 6. 7. 8. 9.

Reformulasi Perencanaan. Termasuk diantaranya: perencanaan keuangan, komunikasi, Tahap 1: Penilaianrouting, dan manajemen proyek. Keadaan militer, pengembangan produk,

Monitoring. Misalnya: Computer-Aided Monitoring Systems. Debugging, memberikan resep obat terhadap suatu kegagalan. Perbaikan.Tahap 2: Koleksi Pengetahuan Eksplorasi Kebutuhan

Instruksi. Melakukan instruksi untuk diagnosis, debugging dan perbaikan kinerja. Pengetahuan prediksi,

10. Kontrol. Melakukan kontrol terhadap interpretasi interpretasi, Tahap 3: perbaikan, dan monitoring kelakuan sistem. PerbaikanPerancangan Struktur 5.11 MENGEMBANGKAN SISTEM PAKAR

Seperti layaknya pengembangan 4: perangkat lunak, pada pengembangan sistem Tahap pakar inipun diperlukan beberapa tahapan seperti terlihat pada Gambar 5.6. TesEvaluasi Tahap 5: Dokumentasi Produk Tahap 6: Pemeliharaan

86

Gambar 5.6 Tahap-tahap pengembangan sistem pakar. Secara garis besar pengembangan sistem pakar pada Gambar adalah sebagai berikut: 1. Mengidentifikasi masalah dan kebutuhan. Mengkaji situasi dan memutuskan dengan pasti tentang masalah yang akan dikomputerisasi dan apakah dengan sistem pakar bisa lebih membantu atau tidak. Misalnya: Penjual komputer mendapat kesulitan dalam mencocokkan hardware dengan softwae untuk aplikasi tertentu dan merakit sistem yang lengkap karena mereka tidak punya pengalaman yang luas atau pengetahuan yang cukup tentang produk dan inventory. Perusahaan bagian pemeliharaan penerbangan komersial memerlukan bantuan yang terus-menerus dari beberapa spesialis yang ada. Hal ini memperlambat operasi perbaikan dan pelayanan. Operator proyek tenaga nuklir harus mengawasi belasan indikator dan mencatat status proyek, kondisi, dan keamanan, dan harus segera menerapkan pengetahuannya dengan cepat untuk mencegah terjadinya kerusakan atau segera memperbaikinya. Dalam contoh tersebut ada 2 kondisi, yaitu: (1) user tidak tahu informasi atau tidak pernah berhubungan dengan seseorang yang ahli mengerjakannya; (2) user perlu pengetahuan untuk melakukan pekerjaan itu dengan cepat. 2. Menentukan masalah yang cocok. Ada beberapa syarat yang harus dipenuhi agar sistem pakar dapat bekerja dengan baik, yaitu: o Domain masalah tidak terlalu luas;

87

o

Kompleksitasnya menengah, artinya jika masalah terlalu mudah (dapat diselesaikan dalam beberapa detik saja) atau masalah yang sangat kompleks seperti peramalan inflasi tidak perlu menggunakan sistem pakar; Tersedianya ahli; Menghasilkan solusi mental bukan fisik, artinya sistem pakar hanya memberikan anjuran tidak bisa melakukan aktivitas fisik seperti membau atau merasakan. Tidak melibatkan hal-hal yang bersifat common sense, yaitu penalaran yang diperoleh dari pengalaman, seperti: adanya gravitasi membuat benda jatuh, atau jika lampu lalulintas merah maka kendaraan harus berhenti.

o o

o

3. Mempertimbangkan alternatif. Dalam hal ini ada 2 alternatif yaitu menggunakan sistem pakar atau komputer tradisional. 4. Menghitung pengembalian investasi. Termasuk diantaranya: biaya pembuatan sistem pakar, biaya pemeliharaan, dan biaya training. 5. Memilih alat pengembangan. Bisa digunakan software pembuat sistem pakar (seperti: SHELL) atau dirancang dengan bahasa pemrograman sendiri (misalnya: dengan menggunakan PROLOG). 6. Rekayasa Pengetahuan. Perlu dilakukan penyempurnaan terhadap aturanaturan yang sesuai. 7. Merancang sistem. Bagian ini termasuk pembuatan menterjemahkan pengetahuan menjadi aturan-aturan. prototype, serta

8. Melengkapi pengembangan. Termasuk pengembangan prototype apabila sistem yang telah ada sudah sesuai dengan keinginan. 9. Menguji dan mencari kesalahan sistem. 10. Memelihara sistem. Dalam hal ini harus dilakukan: memperbaharui pengetahuan, mengganti pengetahuan yang sudah ketinggalan, dan meluweskan sistem agar bisa lebih baik lagi dalam menyelesaikan masalah. 5.12 KASUS: DIAGNOSA PENYAKIT Pada bagian ini kita akan membangun sebuah sistem pakar untuk diagnosa penyakit. Domain yang akan kita ambil, kita batasi pada penyakit THT (Telinga Hidung Tenggorokan). Ada 23 penyakit dengan 38 gejala, sebagai contoh: Penyakit: Faringitis Gejala: 1. demam, 2. nyeri saat berbicara atau menelan, 3. nyeri tenggorokan, 4. nyeri leher, 5. pembengkakan kelenjar getah bening. Daftar penyakit beserta gejala selengkapnya terlihat pada Tabel 5.5. Baris menunjukkan gejala-gejala, sedangkan kolom menunjukkan jenis penyakitnya. Tabel 5.5 Penyakit THT dan Gejala-gejalanya.No 1 Demam 2 Sakit kepala GEJALA Contact Abses Abses Barotitis Deviasi Faringitis Ulcers Parafaringeal Peritonsiler Media Septum * * * * *

88

3 Nyeri saat bicara atau menelan 4 Batuk 5 Hidung tersumbat 6 Nyeri telinga 7 Nyeri tenggorokan 8 Hidung meler 9 Letih dan lesu 10 Mual dan muntah 11 Selaput lendir merah & bengkak 12 Ada benjolan di leher 13 Nyeri leher Pembengkakan kelenjar getah 14 bening 15 Pendarahan hidung 16 Suara serak 17 Bola mata bergerak tanpa sadar 18 Dahi sakit 19 Leher bengkak 20 Tuli 21 Ada yang tumbuh di mulut 22 Air liur menetes 23 Berat badan turun 24 Bunyi nafas abnormal 25 Infeksi sinus 26 Nyeri antara mata 27 Nyeri pinggir hidung 28 Nyeri pipi di bawah mata 29 Nyeri wajah 30 Perubahan kulit 31 Perubahan suara 32 Radang gendang telinga 33 Sakit gigi 34 Serangan vertigo 35 Telinga berdenging 36 Telinga terasa penuh 37 Tenggorokan gatal 38 Tubuh tak seimbang

*

* * *

*

* *

*

* * * * * *

*

*

*

*

Sumber: http://cybermed.cbn.net.id/ Lanjutan Tabel 5.5...No GEJALA Kanker Neuronitis Leher Laringitis VestibuLeher Laring & Nasofaring Tonsil laris Metastatik Kepala * * * * * * * *

1 Demam 2 Sakit kepala 3 Nyeri saat bicara atau menelan 4 Batuk 5 Hidung tersumbat 6 Nyeri telinga 7 Nyeri tenggorokan 8 Hidung meler 9 Letih dan lesu 10 Mual dan muntah 11 Selaput lendir merah & bengkak 12 Ada benjolan di leher 13 Nyeri leher Pembengkakan kelenjar getah 14 bening 15 Pendarahan hidung

* * * * * * * *

89

16 Suara serak 17 Bola mata bergerak tanpa sadar 18 Dahi sakit 19 Leher bengkak 20 Tuli 21 Ada yang tumbuh di mulut 22 Air liur menetes 23 Berat badan turun 24 Bunyi nafas abnormal 25 Infeksi sinus 26 Nyeri antara mata 27 Nyeri pinggir hidung 28 Nyeri pipi di bawah mata 29 Nyeri wajah 30 Perubahan kulit 31 Perubahan suara 32 Radang gendang telinga 33 Sakit gigi 34 Serangan vertigo 35 Telinga berdenging 36 Telinga terasa penuh 37 Tenggorokan gatal 38 Tubuh tak seimbang

* * * * * *

* *

*

Lanjutan Tabel 5.5...No Gejala Otitis Tumor OsteoVertigo Media Meniere Tonsilitis Syaraf sklerosis Postular Akut Pendengaran * * * * * * * * *

1 Demam 2 Sakit kepala 3 Nyeri saat bicara atau menelan 4 Batuk 5 Hidung tersumbat 6 Nyeri telinga 7 Nyeri tenggorokan 8 Hidung meler 9 Letih dan lesu 10 Mual dan muntah 11 Selaput lendir merah & bengkak 12 Ada benjolan di leher 13 Nyeri leher Pembengkakan kelenjar getah 14 bening 15 Pendarahan hidung 16 Suara serak 17 Bola mata bergerak tanpa sadar 18 Dahi sakit 19 Leher bengkak 20 Tuli 21 Ada yang tumbuh di mulut 22 Air liur menetes 23 Berat badan turun 24 Bunyi nafas abnormal 25 Infeksi sinus 26 Nyeri antara mata 27 Nyeri pinggir hidung 28 Nyeri pipi di bawah mata 29 Nyeri wajah 30 Perubahan kulit 31 Perubahan suara 32 Radang gendang telinga

*

*

*

*

*

*

*

90

33 Sakit gigi 34 Serangan vertigo 35 Telinga berdenging 36 Telinga terasa penuh 37 Tenggorokan gatal 38 Tubuh tak seimbang

* * * *

Lanjutan Tabel 5.5...Sinusitis No Gejala Maksilaris Frontalis Etmoidalis Sfenoidalis * * * * * * * * * * * * * * * * * * * * *

1 Demam 2 Sakit kepala 3 Nyeri saat bicara atau menelan 4 Batuk 5 Hidung tersumbat 6 Nyeri telinga 7 Nyeri tenggorokan 8 Hidung meler 9 Letih dan lesu 10 Mual dan muntah 11 Selaput lendir merah & bengkak 12 Ada benjolan di leher 13 Nyeri leher Pembengkakan kelenjar getah 14 bening 15 Pendarahan hidung 16 Suara serak 17 Bola mata bergerak tanpa sadar 18 Dahi sakit 19 Leher bengkak 20 Tuli 21 Ada yang tumbuh di mulut 22 Air liur menetes 23 Berat badan turun 24 Bunyi nafas abnormal 25 Infeksi sinus 26 Nyeri antara mata 27 Nyeri pinggir hidung 28 Nyeri pipi di bawah mata 29 Nyeri wajah 30 Perubahan kulit 31 Perubahan suara 32 Radang gendang telinga 33 Sakit gigi 34 Serangan vertigo 35 Telinga berdenging 36 Telinga terasa penuh 37 Tenggorokan gatal 38 Tubuh tak seimbang

* * *

* * *

* * *

*

*

* * *

*

Program dibuat dengan menggunakan PROLOG. Diagnosa penyakit dilakukan dalam bentuk klausa: diagnosa(NamaPenyakit):gejala(gejala_ke_1), gejala(gejala_ke_2), gejala(gejala_ke_3),

91

gejala(gejala_ke_N). /*-------------------------------------------------------------*/ /* Program DIAGNOSA PENYAKIT THT */ /*-------------------------------------------------------------*/ domains penyakit gejala query jawab

= = = =

string symbol string char

database dbmengalami(gejala) dbtdkmengalami(gejala) predicates penyebab(penyakit) go mengalami(query,gejala) tdkmengalami(query,gejala) gejala(gejala) clear_fakta2 simpan(gejala,jawab) tanya(query,gejala,jawab) go_once diagnosa(penyakit) solusi(penyakit) goal clearwindow, makewindow(*,32,*2," go, removewindow.

DIAGNOSA PENYAKIT THT

",0,0,24,80),

clauses go:-

go_once,nl,nl,nl,nl,nl, write("Ingin mengulang lagi (y/t)?"), readchar(Jawab),nl, clearwindow, Jawab = 'y', go.

go_once:diagnosa(_),!, save("test.dat"), clear_fakta2. go_once:write("Maaf penyakit tidak bisa didiagnosa"),nl, clear_fakta2. mengalami(_,Gejala):dbmengalami(Gejala),!.

92

mengalami(Query,Gejala):not(dbtdkmengalami(Gejala)), tanya(Query,Gejala,Jawab), Jawab='y'. tdkmengalami(_,Gejala):dbtdkmengalami(Gejala),!. tdkmengalami(Query,Gejala):not(dbmengalami(Gejala)), tanya(Query,Gejala,Jawab), Jawab='t'. tanya(Query,Gejala,Jawab):write(Query), readchar(Jawab), write(Jawab),nl, simpan(Gejala,Jawab). simpan(Gejala,'y'):asserta(dbmengalami(Gejala)). simpan(Gejala,'t'):asserta(dbtdkmengalami(Gejala)). clear_fakta2:retract(dbmengalami(_)),fail. clear_fakta2:retract(dbtdkmengalami(_)),fail. clear_fakta2. /*----------- GEJALA ---------------*/ gejala(Gejala):dbmengalami(Gejala),!. gejala(Gejala):dbtdkmengalami(Gejala),!,fail. /***/ gejala(demam):mengalami("Apakah Anda demam (y/t)? ",demam). /*2*/ gejala(sakit_kepala):mengalami("Apakah Anda sakit kepala (y/t)? ", sakit_kepala). /*3*/ gejala(nyeri_bicara_menelan):mengalami("Apakah Anda merasa nyeri pada saat berbicara atau menelan (y/t)? ", nyeri_bicara_menelan). gejala(batuk):mengalami("Apakah Anda batuk (y/t)? ",batuk).

/*4*/

93

/*5*/ gejala(hidung_tersumbat):mengalami("Apakah hidung Anda tersumbat (y/t)? ", hidung_tersumbat). /*6*/ gejala(nyeri_telinga):mengalami("Apakah Anda mengalami nyeri telinga (y/t)? ", nyeri_telinga). gejala(nyeri_tenggorokan):mengalami("Apakah Anda mengalami nyeri tenggorokan (y/t)? ", nyeri_tenggorokan). /*8*/ gejala(hidung_meler):mengalami("Apakah Anda sering mengeluarkan ingus (meler) (y/t)? ", hidung_meler). gejala(letih_lesu):mengalami("Apakah Anda merasa letih dan lesu (y/t)? ", letih_lesu). /**0*/ gejala(mual_muntah):mengalami("Apakah Anda mengalami mual atau muntah (y/t)? ", mual_muntah). gejala(selaput_lendir_merah):mengalami("Apakah selaput lendir Anda berwarna merah dan bengkak (y/t)? ", selaput_lendir_merah). /**2*/ gejala(benjolan_leher):mengalami("Apakah ada benjolan di leher Anda (y/t)? ", benjolan_leher). gejala(nyeri_leher):mengalami("Apakah Anda mengalami nyeri di leher (y/t)? ", nyeri_leher). /**4*/ gejala(getah_bening):mengalami("Apakah Anda mengalami pembengkakan getah bening (y/t)? ", getah_bening). gejala(pendarahan_hidung):mengalami("Apakah Anda mengalami pendarahan hidung (y/t)? ", pendarahan_hidung). /**6*/ gejala(suara_serak):mengalami("Apakan suara Anda terasa serak (y/t)? ", suara_serak).

/*7*/

/*9*/

/****/

/**3*/

/**5*/

94

/**7*/ gejala(bolamata_bergerak):mengalami("Apakah bola mata Anda bergerak tanpa sadar (y/t)? ", bolamata_bergerak). /**8*/ gejala(dahi_sakit):mengalami("Apakah dahi Anda terasa sakit (y/t)? ", dahi_sakit). gejala(leher_bengkak):mengalami("Apakah leher Anda bengkak (y/t)? ", leher_bengkak). /*20*/ gejala(tuli):mengalami("Apakah ada gejala tuli (y/t)? ",tuli). gejala(tumbuh_dimulut):mengalami("Apakah ada yang tumbuh di mulut Anda (y/t)? ", tumbuh_dimulut). gejala(airliur_menetes):mengalami("Apakah air liur Anda sering menetes (y/t)? ", airliur_menetes). /*23*/ gejala(beratbadan_turun):mengalami("Apakah berat badan Anda turun (y/t)? ", beratbadan_turun). gejala(nafas_abnormal):mengalami("Apakah bunyi nafas Anda abnormal (y/t)? ", nafas_abnormal). /*25*/ gejala(infeksi_sinus):mengalami("Apakah Anda mengalami infeksi sinus (y/t)? ", infeksi_sinus). gejala(nyeri_antara_mata):mengalami("Apakah Anda mengalami nyeri antara mata (y/t)?", nyeri_antara_mata). /*27*/ gejala(nyeri_pinggir_hidung):mengalami("Apakah Anda mengalami nyeri di pinggir hidung (y/t)? ", nyeri_pinggir_hidung). gejala(nyeri_pipi):mengalami("Apakah Anda mengalami nyeri pipi di bawah mata (y/t)? ", nyeri_pipi).

/**9*/

/*2**/

/*22*/

/*24*/

/*26*/

/*28*/

95

/*29*/

gejala(nyeri_wajah):mengalami("Apakah Anda mengalami nyeri di wajah (y/t)? ", nyeri_wajah). gejala(perubahan_kulit):mengalami("Apakah kulit Anda mengalami perubahan (y/t)? ", perubahan_kulit).

/*30*/

/*3**/

gejala(perubahan_suara):mengalami("Apakah Anda mengalami perubahan suara (y/t)? ", perubahan_suara). gejala(radang_gendang_telinga):mengalami("Apakah Anda mengalami radang gendang telinga (y/t)? ", radang_gendang_telinga).

/*32*/

/*33*/

gejala(sakit_gigi):mengalami("Apakah Anda mengalami sakit gigi (y/t)? ", sakit_gigi). gejala(serangan_vertigo):mengalami("Apakah Anda mengalami serangan vertigo (y/t)? ", serangan_vertigo).

/*34*/

/*35*/

gejala(telinga_berdenging):mengalami("Apakah telinga Anda berdenging (y/t)? ", telinga_berdenging). gejala(telinga_penuh):mengalami("Apakah telinga Anda terasa penuh (y/t)? ", telinga_penuh).

/*36*/

/*37*/

gejala(tenggorokan_gatal):mengalami("Apakah tenggorokan Anda terasa gatal (y/t)? ", tenggorokan_gatal). gejala(tubuh_tak_seimbang):mengalami("Apakah tubuh Anda terasa tak seimbang (y/t)? ",tubuh_tak_seimbang).

/*38*/

/* ----------------------------- DIAGNOSA ------------------------- */ /***/

diagnosa("Tonsilitis"):gejala(demam), gejala(sakit_kepala), gejala(nyeri_bicara_menelan), gejala(batuk),

96

gejala(nyeri_tenggorokan), gejala(selaput_lendir_merah), penyebab("Tonsilitis"). /*2*/ diagnosa("Sinusitis Maksilaris"):gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), penyebab("Sinusitis Maksilaris"). diagnosa("Sinusitis Frontalis"):gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), gejala(bolamata_bergerak), penyebab("Sinusitis Frontalis"). /*4*/ diagnosa("Sinusitis Edmoidalis"):gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), gejala(bolamata_bergerak), penyebab("Sinusitis Edmoidalis"). /*5*/ diagnosa("Sinusitis Sfenoidalis"):gejala(demam), gejala(sakit_kepala), gejala(batuk), gejala(hidung_tersumbat), gejala(hidung_meler), gejala(letih_lesu), gejala(benjolan_dileher), gejala(nyeri_leher), penyebab("Sinusitis Sfenoidalis"). /*6*/ diagnosa("Abses Peritonsiler"):gejala(demam), gejala(sakit_kepala), gejala(nyeri_tenggorokan), gejala(getah_bening), gejala(suara_serak), penyebab("Abses Peritonsiler").

/*3*/

97

/*7*/

diagnosa("Faringitis"):gejala(demam), gejala(nyeri_bicara_menelan), gejala(nyeri_tenggorokan), gejala(nyeri_leher), gejala(getah_bening), penyebab("Faringitis"). diagnosa("Kanker Laring"):gejala(nyeri_bicara_menelan), gejala(batuk), gejala(nyeri_tenggorokan), gejala(getah_bening), gejala(suara_serak), penyebab("Kanker Laring").

/*8*/

/*9*/

diagnosa("Deviasi Septum"):gejala(demam), gejala(hidung_tersumbat), gejala(nyeri_telinga), gejala(pendarahan_hidung), penyebab("Deviasi Septum"). diagnosa("Laringitis"):gejala(demam), gejala(nyeri_bicara_menelan), gejala(getah_bening), gejala(leher_bengkak), penyebab("Laringitis"). diagnosa("Kanker Leher & Kepala"):gejala(nyeri_bicara_menelan), gejala(benjolan_leher), gejala(pendarahan_hidung), penyebab("Kanker Leher & Kepala"). diagnosa("Otitis Media Akut"):gejala(demam), gejala(nyeri_telinga), gejala(mual_muntah), penyebab("Otitis Media Akut").

/**0*/

/****/

/**2*/

/**3*/

diagnosa("Contact Ulcers"):gejala(nyeri_bicara_menelan), gejala(suara_serak), penyebab("Contact Ulcers"). diagnosa("Abses Parafaringeal"):gejala(nyeri_bicara_menelan), gejala(leher_bengkak), penyebab("Abses Parafaringeal").

/**4*/

98

/**5*/

diagnosa("Barotitis Media"):gejala(sakit_kepala), gejala(nyeri_telinga), penyebab("Barotitis Media"). diagnosa("Kanker Nafasoring"):gejala(hidung_tersumbat), gejala(pendarahan_hidung), penyebab("Kanker Nafasoring"). diagnosa("Kanker Tonsil"):gejala(nyeri_tenggorokan), gejala(benjolan_dileher), penyebab("Kanker Tonsil"). diagnosa("Neuronitis Vestibularis"):gejala(mual_muntah), gejala(bolamata_bergerak), penyebab("Neuronitis Vestibularis"). diagnosa("Meniere"):gejala(nyeri_telinga), gejala(mual_muntah), penyebab("Meniere"). diagnosa("Tumor Syaraf Pendengaran"):gejala(sakit_kepala), gejala(tuli), penyebab("Tumor Syaraf Pendengaran"). diagnosa("Kanker Leher Metastatik"):gejala(benjolan_dileher), penyebab("Kanker Leher Metastatik"). diagnosa("Osteosklerosis"):gejala(tuli), penyebab("Osteosklerosis").

/**6*/

/**7*/

/**8*/

/**9*/

/*20*/

/*2**/

/*22*/

/*23*/

diagnosa("Vertigo Postular"):gejala(bolamata_bergerak), penyebab("Vertigo Postular"). penyebab("Tonsilitis"):solusi("Tonsilitis"). penyebab("Sinusitis Maksilaris"):gejala(nyeri_pipi), gejala(sakit_gigi), solusi("Sinusitis Maksilaris").

99

penyebab("Sinusitis Frontalis"):solusi("Sinusitis Frontalis"). penyebab("Sinusitis Edmoidalia"):gejala(nyeri_antara_mata), gejala(nyeri_pinggir_hidung), solusi("Sinusitis Edmoidalis"). penyebab("Sinusitis Sfenoidalis"):solusi("Sinusitis Sfenoidalis"). penyebab("Abses Peritonsiler"):gejala(airliur_menetes), solusi("Abses Peritonsiler"). penyebab("Faringitis"):solusi("Faringitis"). penyebab("Kanker Laring"):gejala(beratbadan_turun), gejala(nafas_abnormal), solusi("Kanker Laring"). penyebab("Deviasi Septum"):gejala(infeksi_sinus), gejala(nyeri_wajah), solusi("Deviasi Septum"). penyebab("Laringitis"):gejala(tenggorokan_gatal), solusi("Laringitis"). penyebab("Kanker Leher & Kepala"):gejala(tumbuh_dimulut), gejala(perubahan_kulit), gejala(perubahan_suara), solusi("Kanker Leher & Kepala"). penyebab("Otitis Media Akut"):gejala(radang_gendang_telinga), solusi("Otitis Media Akut"). penyebab("Contact Ulcers"):solusi("Contact Ulcers"). penyebab("Abses Parafaringeal"):solusi("Abses Parafaringeal"). penyebab("Barotitis Media"):solusi("Barotitis Media"). penyebab("Kanker Nafasoring"):solusi("Kanker Nafasoring"). penyebab("Kanker Tonsil"):solusi("Kanker Tonsil"). penyebab("Neuronitis Vestibularis"):solusi("Neuronitis Vestibularis").

100

penyebab("Meniere"):gejala(serangan_vertigo), gejala(telinga_penuh), solusi("Otitis Media Akut"). penyebab("Tumor Syaraf Pendengaran"):gejala(tubuh_tak_seimbang), solusi("Tumor Syaraf Pendengaran"). penyebab("Kanker Leher Metastatik"):solusi("Kanker Leher Metastatik"). penyebab("Osteosklerosis"):gejala(telinga_berdenging), solusi("Osteosklerosis"). penyebab("Vertigo Postular"):solusi("Vertigo Postular"). solusi(Penyakit):upper_lower(BPenyakit,Penyakit),nl,nl,nl, write(" Penyakit Anda adalah ",BPenyakit),nl. Salah satu contoh output dari program ini seperti terlihat pada Gambar 5.7.

Gambar 5.7 Hasil diagnosa penyakit THT.

101