SISTEM PAKAR PENDIAGNOSA PENYAKIT INFEKSI MATA MENGGUNAKAN LOGIKA SAMAR
TESIS Untuk memenuhi sebagian Persyaratan mencapai derajat Sarjana S-2
Program Studi Magister Ilmu Komputer Jurusan Ilmu-ilmu Matematika dan Pengetahuan Alam
Diajukan Oleh:
Luther A. Latumakulita 23543/I-4/1898/05 Kepada
PROGRAM PASCA SARJANA UNIVERSITAS GADJAH MADA YOGYAKARTA 2008
TESIS
SISTEM PAKAR PENDIAGNOSA PENYAKIT INFEKSI MATA MENGGUNAKAN LOGIKA SAMAR dipersiapkan dan disusun oleh Luther Alexander Latumakulita 23543/I-4/1898/05 telah dipertahankan di depan Dewan Penguji pada tanggal 23 Januari 2008
Susunan Dewan Penguji Pembimbing Utama
Anggota Dewan Penguji Lain
Drs. Retantyo Wardoyo, M.Sc., Ph.D NIP.131 284 234
Dra. Sri Hartati, M.Sc., Ph.D NIP. 131 789 766
Drs. Widodo Prijodiprodjo, M.Sc.,EE NIP. 131 217 846
Drs. Suprapto, M.I.Kom. NIP. 131 767 184 Tesis ini telah diterima sebagai salah satu persyaratan untuk memperoleh gelar Magister Tanggal 23 Januari 2008
Drs. Retantyo Wardoyo, M.Sc., Ph.D Pengelola Program Studi : Ilmu Komputer
ii
PERNYATAAN
Dengan ini saya menyatakan bahwa dalam tesis ini tidak terdapat karya yang pernah diajukan untuk memperoleh gelar kesarjanaan di suatu Perguruan Tinggi, dan sepanjang pengetahuan saya juga tidak terdapat karya atau pendapat yang pernah ditulis atau diterbitkan oleh orang lain, kecuali yang secara tertulis diacu dalam naskah ini dan disebutkan di dalam daftar pustaka.
Yogyakarta, Januari 2008 Yang membuat pernyataan,
(Luther A. Latumakulita)
iii
K KA ATTA A PPEEN NG GA AN NTTA AR R
Segala puji dan syukur penulis panjatkan kehadapan Tuhan Yang Maha Kuasa atas penyertaan-Nya, sehingga penulisan laporan penelitian dengan judul ”SISTEM
PAKAR
PENDIAGNOSA
PENYAKIT
INFEKSI
MATA
MENGGUNAKAN LOGIKA SAMAR” ini dapat diselesaikan. Laporan penelitian ini disusun untuk memenuhi sebagian persyaratan untuk mencapai derajat Sarjana S-2 pada Program Studi Ilmu Komputer, Jurusan Ilmu-ilmu Matematika dan Pengetahuan Alam, Program Pascasarjana, Universitas Gadjah Mada. Penulis menyadari sepenuhnya bahwa penulisan laporan penelitian ini tidak akan terwujud tanpa adanya bantuan dari berbagai pihak. Untuk itu, pada kesempatan ini penulis ingin menyampaikan penghargaan dan ucapan terimakasih kepada: 1.
Rektor Universitas Gadjah Mada, Direktur Program Pascasarjana dan Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada atas kesempatan yang diberikan kepada penulis untuk mengikuti pendidikan Pascasarjana.
2.
Drs. Retantyo Wardoyo. M.Sc, Ph.D Selaku Pengelola Magister Ilmu Komputer Program Pascasarjana Universitas Gadjah Mada
3.
Drs. Retantyo Wardoyo. M.Sc, Ph.D yang telah berkenan menjadi Dosen pembimbing dan berkat bimbingan, pengarahan, dorongan dan nasehat serta kesabaran beliau sehingga laporan ini dapat diselesaikan.
4.
Bapak dan Ibu Dosen pengajar beserta Staff Magister Ilmu Komputer Universitas Gadjah Mada atas bimbingan serta ilmu-ilmu yang telah diajarkan
5.
Seluruh pihak-pihak yang tidak dapat penulis sebutkan satu persatu yang telah banyak memberikan bantuannya selama ini.
Penulis menyadari masih banyak kekurangan dalam menyajikan serta penulisan laporan ini. Walaupun penulis telah berusaha menyajikan dengan sebaik-
iv
baiknya sesuai dengan kemampuan penulis. Untuk memperbaiki penelitian dikemudian hari, penulis sangat mengharapkan kritik dan saran yang bersifat membangun. Semoga laporan ini dapat memberikan manfaat bagi semua pihak yang membacanya. Yogyakarta, Januari 2008 Penulis,
Luther A. Latumakulita
v
DAFTAR ISI HALAMAN JUDUL......................................................................................................... i HALAMAN PENGESAHAN.......................................................................................... ii HALAMAN PERNYATAAN ........................................................................................ iii KATA PENGANTAR .................................................................................................... iv DAFTAR ISI................................................................................................................... vi DAFTAR GAMBAR ...................................................................................................... ix DAFTAR TABEL............................................................................................................ x INTISARI........................................................................................................................ xi ABSTRACT................................................................................................................... xii
Bab I Pendahuluan 1.1. Latar Belakang Masalah..................................................................................... 1 1.2. Rumusan Masalah .............................................................................................. 2 1.3. Batasan Masalah ................................................................................................ 2 1.4. Keaslian Penelitian............................................................................................. 3 1.5. Tujuan Penelitian ............................................................................................... 3 1.6. Manfaat Penelitian ............................................................................................ 4 1.7. Tinjauan Pustaka ................................................................................................ 4 1.8. Metode Penelitian ............................................................................................. 6
Bab II Tinjauan Teori 2.1. Sistem Pakar....................................................................................................... 8 2.1.1. Konsep Dasar Sistem Pakar .................................................................. 10 2.1.1.1. Keahlian (Expertice) ................................................................ 11 2.1.1.2. Ahli (Expert) ............................................................................ 12 2.1.1.3. Pemindahan Keahlian (Tranferring Expertice) ........................ 12 2.1.1.4. Inferensi (Inferencing) ............................................................. 13
vi
2.1.1.5. Aturan (Rules) ......................................................................... 13 2.1.1.6. Keampuan Menjelaskan (Explanation Capability) .................. 14 2.1.2. Struktur Sistem Pakar ............................................................................ 14 2.1.2.1. Antar Muka Pemakai (User Interface) ..................................... 15 2.1.2.2. Basis Pengetahuan (Knowledge Base) ..................................... 15 2.1.2.3. Basis Data (Working Memory) ................................................ 16 2.1.2.4. Mesin Inferensi (Inference Mechine) ....................................... 16 2.2. Representasi Pengetahuan................................................................................ 19 2.2.1. Jaringan Semantik ................................................................................. 20 2.2.2. Bingkai ................................................................................................. 20 2.2.3. Kaidah Produksi .................................................................................... 21 2.2.4. Logika Predikat ..................................................................................... 22 2.3. Logika Samar ................................................................................................... 24 2.3.1. Himpunan Samar (fuzzy set) .................................................................. 24 2.3.2. Operasi Hipunan Samar ....................................................................... 25 2.3.3. Relasi Fuzzy .......................................................................................... 27 2.3.4. Variabel Linguistik ................................................................................ 28 2.3.5. Aturan Fuzzy IF - THEN ...................................................................... 30 2.3.6. Basis Aturan Samar ............................................................................... 32 2.3.7. Mesin Inferensi Samar .......................................................................... 34 2.3.7.1. Inferensi Berbasis Komposisi .................................................. 35 2.3.7.2. Inferensi Berbasis Individu ...................................................... 36 2.4. Pengetahuan tentang Penyakit Mata ................................................................ 37 2.4.1. Anatomi Mata ....................................................................................... 37 2.4.2. Jenis Penyakit Infeksi Mata ................................................................. 38
Bab III Desain Sistem Pendiagnosa Pakar Penyakit Infeksi Mata menggunakan Logika Samar 3.1. Gambaran Umum ............................................................................................. 39
vii
3.2. Tahap Pembangunan Sistem ............................................................................ 39 3.2.1. Menentukan Toll / Bahasa Pemrograman ............................................. 40 3.2.2. Identifikasi Domain dan Pengetahuan .................................................. 41 3.2.2.1. Akuisisi Pengetahuan (Knowledge Acqusition) ....................... 42 3.2.2.2. Representase Pengetahuan (Knowledge Representation) ......... 44 3.2.2.3. Himpunanan Aturan ................................................................. 49 3.3. Proses Fuzzyfikasi Nilai................................................................................... 51 3.4. Mekanisme Inferensi ....................................................................................... 58 3.5. Rancangan Sistem ........................................................................................... 60 3.5.1. Rancangan Basis Data ........................................................................... 60 3.5.1.1. Struktur Tabel .......................................................................... 60 3.5.1.2. Relasi Antar Tabel .................................................................... 63
Bab IV Implementasi dan Pembahasan 4.1. Implementasi .................................................................................................... 65 4.2. Pembahasan ..................................................................................................... 72
Bab V Penutup 5.1. Kesimpulan ...................................................................................................... 78 5.2. Saran ................................................................................................................ 78 Daftar Pustaka.............................................................................................................. 79 LAMPIRAN A.............................................................................................................. 80 LAMPIRAN B .............................................................................................................. 82
viii
DAFTAR GAMBAR
Gambar 2.1.
Arsitektur Sistem Berbasis Pengetahuan ............................................... 15
Gambar 2.2.
Anatomi Mata......................................................................................... 37
Gambar 3.1.
Struktur Sistem Pakar Pendiagnosa Penyakit Infeksi Mata ................ ...40
Gambar 3.2.
Diagram Pengoperasian Sistem Pakar Pendiagnosa Penyakit Infeksi Mata ....................................................................................................... 41
Gambar 3.3.
Diagram Inferensi .................................................................................. 59
Gambar 3.4.
Relasi Antar Tabel.................................................................................. 64
Gambar 4.1.
Form menu utama .................................................................................. 66
Gambar 4.2.
Form menu login.................................................................................... 66
Gambar 4.3.
Form menu input data penyakit ............................................................. 67
Gambar 4.4.
Form menu input data gejala.................................................................. 67
Gambar 4.5.
Form setup rule ...................................................................................... 68
Gambar 4.6.
Form setup fungsi keanggotaan gejala penyakit .................................... 69
Gambar 4.7.
Fungsi keanggotaan gejala keluar air mata, mata terasa gatal dan mata mengeluarkan kotoran............................................................................ 70
Gambar 4.8.
Fungsi keanggotaan gejala penglihatan kabur ....................................... 70
Gambar 4.9.
Form setup operator fuzzy ..................................................................... 71
Gambar 4.10. Form diagnosa........................................................................................ 72
ix
DAFTAR TABEL
Tabel 2.1.
Kategori fungsi sistem pakar.............................................................. 9
Tabel 2.2.
Faktor-faktor penentu tingkatan sistem pakar.................................. 10
Tabel 3.1.
Perumusan masalah penyakit yang berhubungan dengan gejala yang dialami.............................................................................................. 43
Tabel 3.2.
Tabel Keputusan .............................................................................. 45
Tabel 3.3.
Tabel keputusan identifikasi penyakit.............................................. 46
Tabel 3.4.
Struktur tabel pemakai ..................................................................... 60
Tabel 3.5.
Struktur tabel fungsi_Anggota ......................................................... 60
Tabel 3.6.
Struktur tabel gejala penyakit .......................................................... 61
Tabel 3.7.
Struktur tabel penyakit ..................................................................... 61
Tabel 3.8.
Struktur tabel linguistik.................................................................... 61
Tabel 3.9.
Struktur tabel anteseden ................................................................... 62
Tabel 3.10. Struktur tabel pasien......................................................................... 62 Tabel 3.11. Struktur tabel diagnosa..................................................................... 62 Tabel 4.1.
Tabel nilai kedekatan penyakit infeksi mata.................................... 77
Tabel 4.2.
Tabel perbandingan operator............................................................ 77
x
IIN NTTIIS SA AR RII SISTEM PAKAR PENDIAGNOSA PENYAKIT INFEKSI MATA MENGGUNAKAN LOGIKA SAMAR
Program Studi Ilmu Komputer Sekolah Pascasarjana Universitas Gadjah Mada Pada penelitian ini dilakukan rancang bangun sistem untuk mendiagnosa penyakit infeksi mata. Sistem ini ditujukan untuk masyarakat maupun ahli mata dengan memasukan gejala-gejala penyakit tersebut. Mengingat gejala-gejala penyakit yang terjadi ada yang mengandung ketidakpastian, maka gejala dikelompokan dalam fuzzy sedangkan kelompok gejala yang bersifat pasti dikelompokkan dalam crisp. Pemasukan gejala fuzzy oleh user saat konsultasi dipermudah menggunakan fasilitas slider. Ada beberapa tahap yang dilakukan untuk membuat sistem ini yaitu akuisisi pengetahuan, membuat representasi pengetahuan, menentukan himpunan aturan, dan membuat mesin inferensi. Adapun model yang digunakan untuk menangani ketidakpastian ini adalah menggunakan logika samar (fuzzy logic) dengan menggunakan berbagai kombinasi operator yaitu kelas standar, kelas aljabar, kelas yager dan kelas einstein dengan implikasi Dienes-Rescher dan untuk mengkombinasikan semua rule digunakan Mamdani Combination. Berdasarkan gejala-gejala yang dimasukan, hasil uji data dan analisisnya menggunakan kelas standar, sistem dapat mediagnosa penyakit infeksi mata dengan nilai inferensi tertentu. Kata kunci : diagnosa, infeksi mata, sistem pakar, logika samar.
xi
ABSTRACT EXPERT SYSTEM FOR DIAGNOSING EYE’S INFECTION DISEASE USING FUZZY LOGIC Computer Science Major Postgraduate School Gadjah Mada University
In this research, a system for diagnosing eye’s infection disease was designed and implemented. This system will be used for paramedics or eye’s expert. They need to enter many symptoms. The symptoms are classified into two categories, crisps and fuzzy. The fuzzy symptoms are input using slider. It is used for uncertainty symptoms. Building this system, needs three steps knowledge acquisition, knowledge representation and then building knowledge base, and finally building inference engine. This system uses standard class operator, algebraic class operator, and Einstein class operator. Implication rule uses Dienes-Rescher and for combine all rules use Mamdani Combination. Based on all symptom that have been entered using standard class operator, this system is a success for diagnosing eye’s infection disease and its inference value.
Keyword : diagnose, eye’s infection,expert system, fuzzy logic.
xii
1
BAB I PENDAHULUAN
1.1
Latar Belakang Masalah Perkembangan ilmu pengetahuan dan teknologi saat ini juga merambah dunia
kedokteran. Perubahan ini berjalan tanpa disadari, terutama oleh sebagian praktisi (dokter). Di lain pihak dengan tidak mengikuti perubahan tersebut, maka kemudahan informasi dan banyaknya teknologi baru akan mempersulit praktisi dalam melakukan penanganan penyakit. Salah satu jenis penyakit yang sebagian besar pernah diderita oleh semua lapisan masyarakat adalah penyakit infeksi pada mata. Infeksi pada mata bisa terjadi karena virus, bakteri
maupun disebabkan
karena lingkungan yang berdebu dan kotor. Penyakit Infeksi pada
mata yang
umumnya terjadi adalah penyakit Blefaritis, Konjungtivitis, Selulitis Orbitalis, Skleritis dan Ulkus Kornea. Informasi tentang jenis-jenis penyakit infeksi pada mata sebaiknya diketahui secara benar oleh semua masyarakat sejak dini sehingga dapat di lakukan penanganan yang tepat sebelum penyakit menjadi bertambah parah sehingga merusak kesehatan mata maupun kesehatan tubuh secara umum. Salah satu cara untuk mendiagnosa penyakit infeksi pada mata adalah dengan menggunakan sistem diagnosa dimana faktor ketidakpastian (uncertainty) ditangani menggunakan logika samar (fuzzy logic).
1
2
Salah satu komponen dari sistem pakar adalah basis pengetahuan (knowledge Base). Pengetahuan terdiri dari sekumpulan aturan (rules). Aturan-aturan tersebut menggambarkan fakta/gejala tentang penyakit infeksi pada mata. Gejala suatu penyakit kadang-kadang tidak bisa direpresentasikan selalu mutlak bernilai ‘benar’ dan tidak selalu mutlak benilai ‘salah’. Kebanyakan gejala penyakit mengandung nilai yang tidak pasti.Hal ini juga berlaku pada gejala penyakit infeksi pada mata. Untuk mengatasi permasalahan tersebut gejala yang tidak pasti pada penyakit infeksi mata akan digunakan logika samar (fuzzy logic) sedangkan logika proposional untuk menangani gejala pasti.bernilai ‘benar’ dan pasti bernilai ‘salah’.
1.2
Rumusan Masalah Berdasarkan latar belakang diatas, permasalahan yang diajukan adalah
bagaimana membuat program aplikasi yang mudah dipahami untuk membantu user baik sebagai pakar/dokter maupun sebagai pasien(masyarakat umum) dalam mendiagnosa penyakit infeksi pada mata, dengan gejala yang mengandung ketidakpastian.
1.3
Batasan Masalah Agar penelitian lebih terfokus pada tujuan yang ingin dicapai, maka
terdapat beberapa batasan masalah yang akan menjadi pokok pembicaraan: 1. Penyakit mata yang menjafi fokus penelitian adalah penyakit infeksi pada mata
3
2. Gejala yang mengandung ketidakpastian direpresentasikan dengan logika samar sementara gejala yang mempunyai nilai kebenaran mutlak direprensentasikan dengan logika proporsional 3. Fungsi keanggotaan bilangan fuzzy dapat berupa fungsi monoton naik, monoton turun atau fungsi segitiga (triangular fuzzy number) 4. Pembuatan program menggunakan bahasa pemrograman Borland Delphi 7.0 dan database yang dipakai adalah MySql versi 5.0
1.4
Keaslian Penelitian Penelitian tentang sistem pakar pendiagnosa penyakit mata pernah dilakukan
sebelumnya oleh saudara Bean Hardana pada program studi strata satu (S1) ilmu komputer UGM. Metoda yang digunakan dalam membangun aturan pada sistersebut mengunakan logika proposional dan tidak memperhatikan faktor ketidakpastian. Sampai saat ini, penggunaan logika samar dalam penelitian tentang sistem pendiagnosa penyakit infeksi pada mata belum pernah dilakukan sebelumnya, selain itu data penyakit dan gejala yang digunakan dalam penelitian ini berbeda dengan penelitian yang disebutkan diatas.
1.5
Tujuan Penelitian Tujuan Penelitian ini adalah membangun sistem pakar pendiagnosa penyakit
infeksi pada mata menggunakan logika samar.
4
1.6
Manfaat Penelitian Manfaat penelitian ini bagi penulis adalah memperluas wawasan dalam AI
(Artificial Intelligence) khususnya mengenai penggunaan logika samar dalam sistem pakar dan dapat membantu user sebagai pakar/dokter dalam melakukan diagnosa terhadap penyakit infeksi pada mata dengan memperhatikan faktor ketidakpastian menggunakan logika samar.
1.7
Tinjauan Pustaka Penelitian tentang penggunaan logika samar dalam sistem berbasis
pengetahuan untuk menangani masalah data yang mengandung nilai ketidakpastian telah banyak di lakukan antara lain penelitian yang dilakukan tentang Model Mesin Inferensi pada Sistem Pakar dengan Logika Samar (Mulyana S, tahun 2000). Penelitian yang lain yang dilakukan oleh saudara tentang Sistem Berbasis Pengetahuan Untuk Evaluasi Kesesuaian Lahan Untuk Tanaman Budidaya Dengan Mesin Inferensi Fuzzy (Sitanggang IS, tahun 2002). Penelitian tentang sistem pakar juga telah banyak dilakukan dan salah satu penelitian yang diangkat sebagai tinjauan pustaka dalam penelitian ini adalah penelitian tentang Sistem Pakar Pendiagnosa Penyakit Mata (Hardana B, tahun 1999). (Zebua,A.T dan Wahab,W.1995) Dalam penelitian tentang perbandingan aplikasi
berbasis
logika
samar
(fuzzy
logic)
(http://www.elektroindonesia.com/elektro/no6b.html) disebutkan bahwa pada sistem
5
diagnosis fuzzy peranan manusia/operator lebih dominan. Pengiriman data dilaksanakan oleh operator ke dalam sistem, ketika sistem memerlukan data tambahan. Selain itu operator dapat meminta atau menanyakan informasi dari sistem diagnosis berupa hasil konklusi diagnosis atau prosedur detail hasil diagnosis oleh sistem. Dari sifat sistem ini, sistem diagnosis fuzzy dapat digolongkan pada sistem pakar fuzzy. Sistem pakar fuzzy adalah sistem pakar yang menggunakan notasi fuzzy pada aturan-aturan dan proses inferensi (logika keputusan). Salah satu kelebihan sistem pakar fuzzy dibandingkan sistem pakar konvensional adalah jumlah aturan lebih sedikit, sehingga sistem lebih transparan untuk dianalisa. Kekurangannya adalah kehandalan sistem sangat tergantung pada baik-buruknya proses pengumpulan aturan seperti prosedur pertanyaan dan komponen-komponen kuisioner, serta sering terjadi kesulitan untuk menyimpulkan suatu pernyataan tertentu oleh operator. Bidang aplikasi sistem diagnosis ini biasanya suatu proses yang besar dan kompleks, sehingga sangat sulit dianalisa menggunakan algoritma eksak dan dimodelkan dengan model matematika biasa. Pada permulaan persiapan sistem, jumlah aturan yang digunakan ini biasanya sangat banyak. Namun pada tahap akhir, jumlah aturan akan lebih sedikit dan mudah dibaca. Salah satu contoh dari sistem pakar fuzzy adalah proyek diagnosa kebocoran-H2 pada sistem pendingin high-performance generator. Salah satu contoh aturan sistem diagnostik ini adalah :
6
"JIKA konsumsi H2 tinggi dan daya yang tersedia rendah dan suhu gas rendah dan tekanan H2 generator tidak rendah/menurun, MAKA tingkatkan konsumsi H2 (untuk menurunkan temperatur)" Yang perlu diperhatikan pada sistem diagnostik yang hanya menghasilkan keluaran berupa aproksimasi linguistik yang merupakan suatu pernyataan atau jawaban tidak berlaku proses defuzzifikasi misalnya sistem diagnostik penyakit
1.8
Metode Metode-metode yang akan digunakan dalam penelitian ini
adalah : 1. Metode Pengumpulan Data a. Studi pustaka mempelajari definisi-definisi dan metode-metode dari literatur yang digunakan. Untuk itu penelitian ini dimulai dengan mempelajari
konsep
himpunan
samar
secara
umum
dan
keterkatiannya dengan sistem pakar b. Wawancara dan Observasi, untuk mendapatkan data-data menyangkut penyakit Infeksi pada mata 2. Metode Pengembangan Sistem a. Akuisisi Pengetahuan Pada bagian ini dilakukan proses mengubah data-data menjadi perumusan pengetahuan awal tentang penyakit infeksi pada mata. Pada bagian ini melibatkan pakar penyakit mata sebagai nara sumber.
7
b. Perancangan Pada bagian ini, rumusan pengetahuan yang telah diperoleh diolah lebih lanjut menjadi bentuk pengetahuan dalam format JIKA
MAKA . Anteseden dapat berupa
himpunan gejala dengan nilai kebenaran pasti atau himpunan gejala dengan nilai kebenaran kabur/samar atau dapat juga berupa gabungan keduanya. Selanjutnya dilakukan proses fuzzifikasi untuk menentukan nilai kebenaran dari gejala yang mengandung ketidakpastian berdasarkan fungsi keanggotaan fuzzy yang telah didefenisikan sebelumnya. Konsekuen merupakan kesimpulan terhadap hasil diagnosa yaitu jenis penyakit infeksi mata yang diderita berdasarkan aturan (rule) dari basis pengetahuan.. c. Implementasi Tahap ini dilakukan untuk menterjemahkan perancangan ke dalam bahasa pemrograman. Hal yang penting dilakukan pada tahap ini adalah pembuatan mesin inferensi. (inference machine). d. Pengujian Setelah program selesai dibuat, maka pada tahap ini merupakan uji coba terhadap program tersebut terhadap kesalahan-kesalahan teknis pemrograman maupun penelusuran aturan.
8
BAB II TINJAUAN TEORI
2.1. SISTEM PAKAR Kecerdasan
buatan
adalah
salah
satu
bidang
ilmu
komputer
yang
mendayagunakan komputer sehingga dapat berperilaku cerdas seperti manusia. Ilmu komputer tersebut mengembangkan perangkat lunak dan perangkat keras untuk menirukan tindakan manusia. Aktifitas manusia yang ditirukan seperti penalaran, penglihatan, pembelajaran, pemecahan masalah, pemahaman bahasa alami, dan sebagainya. Sesuai dengan definisi tersebut, teknologi kecerdasan buatan dipelajari dalam bidang-bidang seperti Robotika (Robotics), Penglihatan Komputer (Computer Vision), Pengolahan Bahasa Alami (Natural Language Processing), Pengenalan Pola (Pattern Recognition), Sistem Syaraf Buatan (Artificial Neural System), Pengenalan Suara (Speech Recognition), dan Sistem pakar (Expert System). Bidang yang dicirikan oleh sistem berdasarkan pengetahuan (knowledge-based system) ini memungkinkan komputer dapat berpikir dan mengambil kesimpulan dari sekumpulan kaidah. (Ignizio,1991). Dalam proses tersebut seorang pemakai dapat berkomunikasi secara interaktif dengan komputer untuk memecahkan suatu persoalan atau masalah, seolah-olah pemakai berhadapan langsung dengan manusia yang ahli dalam bidang tersebut yaitu pakar. Hal ini dimungkinkan karena sistem dapat menyimpan pengetahuan heuristik, yakni pengetahuan yang diperoleh berdasarkan pengalaman atau intuisi pakar.
8
9
Sistem pakar pada dasarnya digunakan untuk menyelesaikan problem yang memerlukan keahlian seseorang. Tabel 2.1 berikut ini akan menunjukkan daftar fungsi yang bisa dilakukan oleh sebuah sistem pakar. Tabel 2.1. Kategori fungsi sistem pakar (Sumber : Teft, L, “Programming in Turbo Prolog With an Introduction to Knowledge-Based Systems “,1989,Prentice-Hall Inc ) Function Control
Description
Examples
Diagnose, predict, repair,and PTRANS monitor system
Debugging
Identify and plan remedies
DRILLING ADVISOR
Design
Configure and design system XCON within constraints
Diagnosis
Infer
malfunction
from MYCIN
sysmptoms Instruction
Interpret observables and infer SOPHIE descriptions
Monitoring
GUIDON
Compare current states with DENDRAL desired states
Planning
Assist in the planning and MOLGEN design of system
Prediction
Infer
likely
consequences I&W
from current conditions
Sedangkan pada tabel 2.2 ditunjukkan tingkat atau level dari sistem pakar dimana sistem berbasis pengetahuan merupakan salah satu tingkat paling kecil dari beberapa tingkatan sistem pakar.(Harmon dan King, 1985).
10
Tabel 2.2. Faktor-Faktor Penentu Tingkatan Sistem Pakar Faktor
Type / Tingkatan Kecil
Besar
Sangat Besar
Cacah aturan
50 – 350
350 – 3000
>3000
Ketersediaan tool
Bisa ada / tidak
Bisa ada / tidak
Sebaiknya ada
Lama pembuatan
< 1 tahun
1 – 2 tahun
3 – 5 tahun
Biaya
< $500.000
$500.000 - $1 milion
>$1 milion
Secara umum dapat dikatakan bahwa program pada sistem pakar yang kecil (sistem berbasis pengetahuan) dapat dengan mudah diimplementasikan oleh pengguna dengan teknik konvensional sedangkan sistem pakar yang besar biasanya lebih sulit diimplementasikan. Sistem pakar dapat digunakan oleh seseorang yang tidak ahli untuk memperbaiki kemampuan penyelesaian masalah mereka. Sistem ini juga dapat digunakan sebagai asisten yang mempunyai banyak pengetahuan atau sebagai pengumpul sumber daya pengetahuan yang langka.
2.1.1. Konsep Dasar Sistem Pakar Pada bagian ini akan dibicarakan konsep dasar dalam sistem pakar. Dalam konsep ini sistem pakar meliputi keahlian (expertise), ahli/pakar (expert), pemindahan keahlian (transferring expertise), mekanisme inferensi (inferencing), aturan-aturan (rules), kemampuan menjelaskan (explanation capability).
11
2.1.1.1. Keahlian (expertise) Keahlian ini berhubunganan dengan pengetahuan (knowledge). Pengetahuan dapat diartikan sebagai segala sesuatu yang diketahui oleh seseorang, bisa berupa data, fakta, informasi, aturan dan sebagainya. Keahlian dapat dikatakan sebagai keluasan pengetahuan seseorang pada bidang tertentu. Keahlian tersebut bisa diperoleh dari pelatihan, membaca, atau pengalaman.(Giarratano dan Riley, 1994). Pemrosesan yang dilakukan dengan sistem pakar merupakan pemrosesan pengetahuan bukan pemrosesan data seperti yang dikerjakan dengan pemrosesan prosedural. Pengetahuan yang digunakan pada sistem pakar merupakan serangkaian informasi pada suatu domain tertentu. Kedua hal tersebut menurut ekspresi klasik oleh Wirth (Giarratano,1994) dituliskan sebagai berikut : Algoritma + Struktur Data Pengetahuan + Inferensi
=
=
Program
Sistem Pakar
Beberapa tipe pengetahuan yang bisa dikategorikan dalam bentuk keahlian adalah (Turban, 1995) : Fakta atau bukti tentang suatu permasalahan Teori-teori yang mendasari suatu permasalahan Aturan-aturan baku dan prosedur-prosedur berkenaan dengan permasalahan tertentu Aturan-aturan tentang apa yang harus dikerjakan dalam suatu permasalahan Strategi global Pengetahuan antara (meta-knowledge)
12
Tipe-tipe pengetahuan tersebut memungkinkan bagi seorang ahli untuk membuat keputusan yang lebih baik dan lebih cepat daripada bukan seorang ahli dalam permasalahan yang kompleks. 2.1.1.2. Ahli (Expert) Merupakan hal yang sulit untuk didefinisikan apakah seorang ahli itu, sebab kita akan bicara tentang derajat atau level keahlian yang sebenarnya. Tentunya menjadi sangat sulit untuk mengukur seseorang sehingga dia patut menjadi ahli dalam suatu bidang. Tetapi yang jelas adalah seorang ahli akan mempunyai kelebihan kalau dibandingkan dengan seseorang yang bukan ahli. Perilaku-perilaku seperti dapat melakukan pengenalan dan perumusan masalah dengan baik, belajar terhadap hal-hal baru, menyusun kembali pengetahuan jika dibutuhkan dan membuat perubahan-perubahan aturan jika dimungkinkan, dan menentukan keterkaitan antar keahlian mereka yang bersesuaian, merupakan kegiatan-kegiatan yang mencakup keahlian dari seseorang. (Lee T, 1989). 2.1.1.3. Pemindahan Keahlian (Transferring Expertise) Seperti telah dijelaskan didepan bahwa tujuan utama dari pakar adalah memindahkan keahlian dari seorang ahli ke dalam suatu sisem komputer kemudian kepada orang lain yang bukan ahli. Dalam hal ini pengguna bisa seolah-olah bertindak sebagai seorang ahli. Tujuan utama dari proses ini adalah agar keahlian seseorang dapat digunakan secara lebih luas. Proses-proses ini meliputi 4 kegiatan yaitu : Akuisisi pengetahuan dari seorang ahli atau sumber lain
13
Representasi pengetahuan ke dalam komputer Inferensi Pemindahan pengetahuan kepada pemakai Pengetahuan tersebut disimpan dalam sistem komputer dalam bentuk basis fakta dan prosedur-prosedur yang berkaitan dengan permasalahan. 2.1.1.4. Inferensi (Inferencing) Inferensi merupakan proses untuk memperoleh kesimpulan berdasarkan informasi yang ada. Inferensi ini merupakan ciri khusus dari sistem berbasis pengetahuan atau sistem pakar. Bagian yang digunakan untuk melakukan inferensi adalah mesin inferensi (inference enggine). Mesin inferensi ini berupa prosedurprosedur untuk menyelesaikan masalah. Tentang mesin inferensi akan dijelaskan pada bagian lain. 2.1.1.5. Aturan (Rules) Kebanyakan sistem pakar merupakan sistem-sistem yang didasarkan atas aturan-aturan. Pengetahuan sebagian besar disimpan dalam bentuk aturan sebagai prosedur. Banyak metode untuk merepresentasikan aturan, salah satu yang paling populer dan relevan adalah kaidah produksi (production rules). Kaidah itu juga disebut metode logika proposional atau dikenal sebagai kaidah IF…THEN…. Untuk masalah aturan ini akan dijelaskan lebih lanjut pada bagian basis pengetahuan (knowledge base).
14
2.1.1.6. Kemampuan Menjelaskan (Explanation Capability) Ciri lain dari sistem pakar adalah kemampuannya dalam memberikan penjelasan atas nasihat dan rekomendasi-rekomendasi. Penjelasan dan keputusan tersebut dikerjakan dalam suatu sub sistem yang dinamakan justifier atau explanation capability. Hal ini memungkinkan sistem untuk memeriksa penalarannya sendiri dan memilih operasi-operasinya.
2.1.2. Struktur Sistem Pakar Sebuah program sistem pakar difungsikan untuk menirukan seorang pakar manusia dan harus bisa melakukan hal-hal yang dapat dikerjakan seorang pakar. Untuk membangun sistem yang seperti itu maka struktur yang harus dimiliki : Antar muka pemakai (User Interface Design) Basis pengetahuan (Knowledge Base ) Mekanisme Inferensi (Inference Machine) Basis data (Working Memory) Sedangkan untuk menjadikan sistem menjadi lebih menyerupai seorang pakar yang berinteraksi dengan pemakai maka dapat dilengkapi dengan fasilitas berikut : Fasilitas Penjelasan (Explanation Facility) Fasilitas Akuisisi Pengetahuan (Knowledge Acquisition Facility ) Adapun struktur dari sistem berbasis pengetahuan atau sistem pakar bisa dilihat pada gambar dibawah ini. (Turban,1995)
15
CONSULTATION ENVIRONMENT
DEVELOPMENT ENVIRONMENT
Knowledge Base : Fact, Rules
User
Data User interface
Knowledge Representation
Explanati on
Knowledge Engineer Knowledge Aquisition
Inference Engine
Real Expert Knowledge Recommended Action
Workplace
Gambar 2. 1. Arsitektur Sistem Berbasis Pengetahuan
2.1.2.1. Antar Muka Pemakai (User Interface) Karena sistem pakar dapat menggantikan seorang pakar dalam suatu situasi tertentu, sistem menyediakan pendukung yang diperlukan oleh pemakai yang tidak memahami masalah teknis. Sistem pakar juga menyediakan komunikasi antara sistem dan pemakainya yang disebut sebagai antar muka. Antar muka yang effektif dan ramah penting bagi pemakai yang tidak ahli dalam bidang yang diterapkan . 2.1.2.2. Basis Pengetahuan (Knowledge Base ) Basis pengetahuan merupakan kumpulan pengetahuan bidang tertentu pada tingkatan pakar dalam format tertentu. Pengetahuan ini diperoleh dari akumulasi pengetahuan pakar dan sumber lain yang dapat berupa buku, majalah, jurnal ilmiah,
16
dan sebagainya. Basis pengetahuan dapat dikembangkan menjadi sebuah basis data pengetahuan dan basis data domain. Basis data pengetahuan berisi kaidah-kaidah sedangkan basis data domain berisi fakta-fakta. Alasan tentang pemisahan basis pengetahuan dari mesin inferensi bermanfaat untuk pengembangan sistem secara leluasa disesuaikan dengan perkembangan pengetahuan pada suatu domain. Penambahan dan pengurangan dapat dilakukan pada basis pengetahuan ini tanpa menganggu mesin inferensi. Basis pengetahuan merupakan kumpulan aturan yang menggambarkan hubungan antara bukti atau fakta dan hipotesa. Hipotesa merupakan proposisi yang atomik. Asumsi yang diberikan pada semua aturan adalah ‘true’.
2.1.2.3. Basis Data (Working Memory) Bagian ini digunakan untuk menampung data yang dihasilkan dari semua proses. Data dalam bagian ini bisa berupa data permanen maupun data temporer. Data permanen diperoleh dari input melalui user interface. Data ini akan tetap ada selama program dijalankan. Sedangkan data temporer bersifat sementara yang dihasilkan melalui proses inferensi. 2.1.2.4. Mesin Inferensi Mesin inferensi merupakan perangkat lunak yang melakukan tugas inferensi penalaran sistem, biasa dikatakan sebagai mesin pemikir (thinking machine). Pada prinsipnya mesin inferensi inilah yang mencari solusi dari suatu permasalahan.
17
Penalaran adalah proses untuk menghasilkan inferensi dari fakta yang diketahui atau yang diasumsikan. Inferensi adalah konklusi logis atau implikasi berdasarkan informasi yang tersedia. Dasar dari inferensi adalah penggunaan modus ponens yang mempunyai bentuk : Rule
:
Premis : Konklusi:
p → q p
1
∈
q1 ∈
p q
Artinya jika diketahui suatu instant dari bukti / fakta maka konklusi pada hipotesa akan dikerjakan atau jika suatu instant memenuhi aturan bukti suatu rule maka dikatakan rule tersebut di’fired’, yang menghasilkan aksi pada hipotesanya. Beberapa metode inferensi yang ada adalah penalaran deduktif, penalaran induktif, runut maju, dan runut balik. Tentang metode penalaran atau inferensi itu akan dijelaskan dibawah ini. Penalaran Deduktif (Deductive Reasoning) Penalaran deduktif merupakan proses penalaran dari masalah yang berupa informasi umum tentang suatu kelas obyek atau kejadian menjadi informasi spesifik tentang anggota dari kelas tersebut. Sebagai contoh : Siapa saja yang mempunyai mobil itu kaya Diva mempunyai mobil Jadi Diva itu kaya
18
Penalaran Induksi (Inductive Reasoning) Penalaran induksi merupakan proses penalaran yang menghasilkan sebuah konklusi umum berdasarkan fakta-fakta spesifik . Informasi tentang anggota dari kelas atau kejadian dapat mengarah pada perkiraan umum seluruh kelas. Sebagai contoh : Alarm pemadam kebakaran berbunyi Kita mencium bau asap Jadi ada kebakaran Runut Maju (Forward Chainning) Merupakan proses penalaran yang dimulai dengan menampilkan kumpulan data atau fakta yang meyakinkan menuju konklusi akhir. Runut maju bisa juga disebut sebagai penalaran maju (forward reasoning) atau pencarian yang dimotori data (data driven search). Jadi dimulai dari premis-premis atau informasi masukkan (if) dahulu kemudian menuju konklusi atau derived information (then) atau dapat dimodelkan sebagai berikut : IF (informasi masukkan)
THEN (konklusi) Informasi masukkan
dapat berupa data, bukti, temuan atau pengamatan.
Sedangkan konklusi dapat berupa tujuan, hipotesa, penjelasan atau diagnosis. Sehingga jalannya penalaran runut maju dapat dimulai dari data menuju tujuan, dari bukti menuju hipotesa, dari temuan menuju penjelasan, atau dari pengamatan menuju diagnosa. Sebagai contoh :
19
IF kulit luar tidak mempunyai duri AND warna merah atau ungu AND bentuk bundar kecil THEN buah anggur Runut Balik (Backward Chaining) Runut balik merupakan proses penalaran yang arahnya kebalikan dari runut maju. Proses penalaran runut balik dimulai dari tujuan kemudian merunut balik ke jalur yang akan mengarahkan ke tujuan tersebut. Jadi secara umum runut balik itu diaplikasikan ketika tujuan atau hipotesis yang dipilih itu sebagai titik awal penyelesaian masalah. Disebut juga goal driven search. Runut balik dimodelkan Tujuan, IF (kondisi) Sebagai contoh :
Buah anggur IF kulit luar tidak mempunyai duri AND warna merah atau ungu AND bentuk bundar kecil
2.2.REPRESENTASI PENGETAHUAN Setelah menentukan bidang kepakaran yang akan diaplikasikan maka perlu mengumpulkan pengetahuan yang sesuai dengan domain keahlian tersebut. Pengetahuan yang dikumpulkan tersebut tidak bisa diaplikasikan begitu saja dalam
20
sistem. Pengetahuan harus direpresentasikan
dalam format tertentu dan akan
dihimpun dalam suatu basis pengetahuan. Pemrosesan yang dilakukan dengan sistem ini adalah pemrosesan pengetahuan, bukan pemrosesan data seperti yang dikerjakan dengan pemrograman secara prosedural. Pengetahuan yang digunakan merupakan serangkaian informasi pada suatu domain tertentu. Beberapa model representasi pengetahuan yang ada (Firebaugh,1988) adalah : -
Jaringan semantik (Semantic nets)
-
Bingkai (Frame)
-
Kaidah produksi (Production Rules)
-
Logika predikat(Predicate Logic)
2.2.1. Jaringan Semantik Representasi jaringan semantik merupakan penggambaran grafis dari pengetahuan yang memperlihatkan hubungan hirarkis dari obyek-obyek. Komponen jaringan semantik adalah simpul dan link. Obyek direpresentasikan oleh simpul. Hubungan antar obyek dinyatakan oleh penghubung yang diberi label untuk menyatakan hubungan yang direpresentasikan. 2.2.2. Bingkai Bingkai berupa kumpulan slot-slot yang berisi atribut untuk mendeskripsikan pengetahuan. Pengetahuan yang termuat dalam slot dapat berupa kejadian, lokasi, situasi ataupun elemen-elemen lain. Bingkai digunakan untuk representasi pengetahuan deklaratif.
21
Bingkai memuat deskripsi sebuah obyek dengan menggunakan tabulasi informasi yang berhubungan dengan obyek. Jadi bingkai mengelompokkan atribut sebuah obyek. Dengan demikian bingkai membantu menirukan cara seseorang mengorganisasikan informasi tentang sebuah obyek menjadi kumpulan data. 2.2.3. Kaidah Produksi Kaidah produksi menyediakan cara formal untuk mereprentasikan rekomendasi, arahan atau strategi. Kaidah produksi dituliskan dalam bentuk jika-maka (if-then). Kaidah if-then menghubungkan anteseden (antecedent) dengan konsekuensi yang diakibatkannya. Berbagai struktur kaidah if-then yang menghubungkan obyek atau atribut sebagai berikut . Model yang digunakan dalam hal ini adalah kaidah produksi (production rules), yang mempunyai struktur umum : IF kondisi THEN aksi IF premis THEN konklusi IF masukkan THEN keluaran IF anteseden THEN konsekuen IF data THEN hasil IF tindakan THEN tujuan Premis mengacu pada fakta yang harus benar sebelum konklusi tertentu dapat diperoleh. Masukkan mengacu pada data yang harus tersedia sebelum keluaran dapat diperoleh. Kondisi mengacu pada keadaan yang harus berlaku sebelum tindakan dapat diambil. Anteseden mengacu pada situasi yang terjadi sebelum konsekuensi dapat diamati. Data mengacu pada informasi yang harus tersedia sehingga sebuah
22
hasil dapat diperoleh. Tindakan mengacu pada kegiatan yang harus dilakukan sebelum hasil dapat diharapkan. Kaidah dapat diklasifikasikan menjadi 2 kategori yaitu kaidah derajat pertama (first order rule) dan kaidah meta (meta rule). Kaidah derajat pertama adalah kaidah sederhana yang terdiri dari anteseden dan konsekuen. Kaidah meta adalah kaidah yang anteseden dan konsekuennya mengandung informasi tentang kaidah yang lain. Kondisi pada umumnya merupakan gabungan predikat yang dipergunakan untuk memeriksa keadaan sekarang, sedangkan aksi merupakan bagian yang mengubah keadaan sekarang. Pernyataan kondisi maupun aksi ternyata tidak selalu memberikan derajat kepastian yang penuh akan tetapi kadang-kadang tergantung pada suatu faktor tertentu.
Dalam hal ini
akan digunakan teori logika samar
untuk menangani
ketidakpastian yang timbul. Logika samar akan dijelaskan pada bagian lain.
2.2.4. Logika Predikat Logika predikat pertama kali dikembangkan oleh Aristoteles merupakan logika formal. Logika formal adalah logika yang berhubungan dengan bentuk (syntax) pernyataan bukan pada arti (semantic) dari pernyataannya. Logika formal berkonsekuensi pada penalarannya itu sendiri tanpa terganggu oleh obyek yang sedang dinalar. Logika formal berkembang sampai tahun 1874 saat George Boole mengemukaan konsep logika simbolis (symbolic Logic) . Pernyataan seperti semua
23
putri duyung dapat berenang dengan baik, tidak dapat diterima lagi sebagai premis ataupun konklusi pada logika simbolis, karena pada kenyataannya putri duyung itu tidak ada, hanya dongeng. Pada
logika
simbolis
terkenal
aksioma
yaitu
simbol-simbol
yang
mereprentasikan obyek dan kelas serta operasi aljabar untuk memanipulasi simbolsimbol tersebut. Logika proposional, bisa juga disebut kalkulus proposional, adalah logika simbolis yang memanipulasi proposisi. Logika proposional ini akan menangani kalimat deklaratif yang bernilai benar atau salah. Kalimat yang nilai benarnya dapat ditentukan disebut pernyatan (statement) atau proposisi. Logika proposional hanya mampu menangani pernyataan yang komplit dan tidak bisa menganalisa struktur internal sebuah pernyataan. Sehingga untuk menganalisa kasus yang lebih umum dikembangkan logika predikat yang dapat menganalisis struktur internal kalimat (sentence). Bentuk paling sederhana dari logika predikat adalah logika derajat pertama (first order logic). Logika derajat pertama tersebut terbentuk dengan menambahkan fungsi atau analisis lain pada kalkulus predikat. Fungsi merupakan logika yang menghasilkan nilai (value). Logika predikat berdasarkan pada kebenaran dan kaidah inferensi untuk merepresentasikan simbol-simbol dan hubungannya satu dengan yang lain. Logika predikat selain digunakna untuk menentukan kebenaran (truthfulness) atau kesalahan (falsity) sebuah pernyataan, juga dapat digunakan untuk merepresentasikan pernyataan tentang obyek tertentu.
24
Logika predikat menganalisa struktur internal kalimat tersebut, ditunjukkan dengan penggunaan quantifier. Quantifier berupa kata “semua”, “beberapa”, atau “tidak”. Quantifier ini menjadi begitu penting karena dengan quantifier inilah kata yang laian dapat diukur sehingga kalimat yang dihasilkan lebih eksak.
2.3.LOGIKA SAMAR 2.3.1.Himpunan samar (fuzzy set) Sebelum memahami himpunan samar, perlu dipahami dulu masalah himpunan crips. Misalkan U adalah himpunan semesta (universal set) yang memuat semua elemen yang mungkin dalam aplikasi tertentu. Sembarang himpunan A dalam himpunan semesta U dapat didefinisikan dengan : Mendaftar semua anggota
yang digunakan pada himpuanan berhingga
(metode Raster). (Soeharjo,1983) Menentukan syarat keanggotaannya yang digunakan untuk umum. (Soeharjo,1983) Penyajiannya himpunannya adalah sebagai berikut A = {x ∈ U | x dengan syarat tertentu}
(2.1)
Metode fungsi keanggotaan yang bernilai 0 atau 1. (Wang, 1997). Penyajian himpuanannya adalah : ⎧1 , jika x = A ⎩0 , jika x ≠ A
μ A ( x) = ⎨
(2.2)
25
Ide dasar pada teori himpunan samar adalah setiap elemen dalam himpunan samar mempunyai derajat keanggotaan. Dengan demikian sebuah proposisi tidak hanya bernilai benar atausalah saja tetapi bisa bernilai sebagian benar atau sebagian salah. Nilai itu berupa bilangan real dalam interval [0,1]. Selanjutnya hal-hal yang berkaitan dengan logika samar ini diacu dari buku A Course in Fuzzy Systems and Control. (Wang, 1997). 2.3.2. Operasi Himpunan Samar Berikut ini akan diuraikan beberapa operasi pada himpunan samar. Misalkan A dan B adalah himpunan samar dengan fungsi keanggotaan masing-masing adalah μA(x) dan μB(x). Kesamaan Himpunan Samar (Fuzzy Equaliy) Dua himpunan samar A dan B dikatakan sama jika dan hanya jika μA(x) = μB(x). untuk setiap x ∈ U.
(2.3 )
Fuzzy Complemen Komplemen dari himpunan samar A ditulis sebagai ~A dalam U dengan fungsi keanggotaannya didefinisikan menurut beberapa interpretasi sebagai berikut : •
Interprestasi Umum (General Interpretation of Complement) atau Standart complemen
(2.4 )
μ~A(x) = 1 - μA(x) •
Interprestasi Yager (Yager Interpretation of Complement) μ~A(x) = (1 – (μA(x)λ ))1/ λ dimana λ>0
(2.5 )
26
Fuzzy Union Gabungan (union) A dan B adalah himpunan samar dalam U yang disajikan dengan A ∪ B. Berikut ini defenisi fungsi keanggotaan fuzzy union menurut beberapa interpretasi :
•
Interpretasi standart μ A∪ B (x) = max [μA(x), μB(x)]
•
Interpretasi Lukasiewicz (Aljabar-Sum) μ A∪ B (x) = μA(x)+ μB(x) – (μA(x)μB(x)])
•
(2.7 )
Interpretasi Yager dengan parameter λ>0 μ A∪ B (x) =min(1, ((μA(x))λ + (μB(x)) λ)1/λ
•
(2.6 )
(2.8 )
Interpretasi Einstein μ A∪ B (x) =
μA(x)+ μB(x) 1+(μA(x) μB(x))
(2.9 )
Fuzzy Intersection Irisan (intersection) A dan B adalah himpunan samar dalam U yang disajikan dengan A∩B. Berikut ini defenisi fungsi keanggotaan untuk fuzzy intersection dengan beberapa interpretasi : •
Interpretasi standart (T- Norm) μA∩B (x) = min [μA(x),μB(x) ]
(2.10 )
27
•
Interpretasi Lukasiewicz (Aljabar Product) (2.11 )
μA∩B (x) = μA(x)*μB(x) •
Interpretasi Yager μA∩B (x) = 1-min[1,(1- ((μA(x))λ + (1-μB(x)) λ )1/λ]
•
(2.12 )
Interpretasi Einstein μ A∩ B (x) =
μA(x)μB(x) 2-(μA(x)+ μB(x)-( μA(x)μB(x)))
(2.13)
2.3.3. Relasi Fuzzy Misalkan U dan V adalah sembarang dua himpuanan non fuzzy (crips). Cartesian product U dan V dinotasikan dengan U x V adalah himpunan non fuzzy atas semua pasangan berurutan (u,v) dengan u∈U dan v∈V, sehingga U x V = {(u,v)| u∈U dan v ∈ V }
(2.14)
Dalam hal ini urutan dalam U x V merupakan hal yang penting, yaitu jika U≠ V maka U x V ≠ V x U. Secara umum, cartesian product atas n himpuanan non fuzzy U1, U2, …., Un ditulis dengan U1x U2 x ….x Un adalah himpuan non fuzzy atas n tuple (u1, u2, …., un) sehingga sedemikian sehingga ui ∈ Ui untuk i = {1,2,….,n} sehingga : U1x U2 x ….x Un = {(u1, u2, …., un) | u1 ∈ U1, u2 ∈ U2 ,……, , un ∈ Un }
(2.15)
Sebuah relasi antara himpunan non fuzzy U1,U2 , ….,Un adalah subset dari cartesian product U1x U2 x ….x Un sehingga jika kita gunakan Q (U1, U2, …., Un) untuk menyatakan relasi antara U1, U2, …., Un maka
28
Q (U1, U2, …., Un) ⊂ U1x U2 x …x Un.
(2.16 ) Sebuah kasus khusus, relasi biner antara himpunan non fuzzy U dan V adalah himpunan bagian dari Cartesian product U x V. Kita juga dapat menggunakan fungsi keanggotaan berikut ini untuk menyatakan sebuah relasi :
μ Q (u1 , u 2 ,..., u n ) = {1 jika (u1 , u 2 ,..., u n )∈(U 1 ,U 2 ,...,U n )
(2.17)
0 , yang lain
Dari pengertian diatas maka dapat diberikan konsep relasi pada relasi fuzzi. Relasi fuzzy adalah himpunan samar yang didefinisikan atas himpunan cartesian product atas himpunan non fuzzy U1x U2 x ….x Un. Dengan representasi himpunan samar A = {(x , μA(x)) | x ∈ A} maka relasi fuzzy Q dalam fuzzy U1x U2 x ….x Un didefinisikan sebagai himpunan samar : Q={((u1, u2, …., un),μQ(u1, u2, …., un)) |(u1, u2, …., un) ∈ U1xU2 x..xUn }
(2.18)
dimana μQ : U1xU2 x..xUn → [0,1].
Dengan menggunakan fungsi keanggotaan dalam representasi relasi maka diperoleh definisi komposisi relasi atas P(U,V) dan Q(V,W) sebagai berikut : μP ° Q (x,z) = max t [ μp (x,y) , μ Q (y,z) ]
(2.19 )
2.3.4.Variabel Linguistik Dalam kehidupan sehari-hari,banyak dijumpai penggunaan istilah untuk menyatakan suatu variabel. Contohnya, ketika seseorang mengatakan “Mata anda sangat merah” atau sama dengan “Mata anda merah sekali” , maka digunakan istilah
29
“merah” untuk menyatakan “kemerahan mata anda”. Namun variabel tersebut bisa bernilai berapa saja dalam ranges 0-100 tergantung pada persepsi orang. Dalam penelitian ini semua variable linguistik diberi nilai antara 0-100 untuk merepresentasikan ukuran variable linguistik dalam bilangan numeric. Apabila suatu variabel bernilai bilangan seperti tersebut diatas, maka dapat dibentuk model matematikanya. Namun jika variabel menggunakan istilah atau kata, hal tersebut tidak bisa dimodelkan dengan teori matematika klasik. Untuk menyediakan kerangka formal tersebut dikenalkan konsep variabel linguistik. Sebuah variabel linguistik disifatkan oleh (X, T, U, M) dengan : X adalah nama variabel linguistik. T adalah himpuan nilai linguistik yang mungkin untuk X. U adalah himpunan semesta non fuzzy untuk T M adalah himpunan fungsi keanggotaan dari anggota T. Dengan konsep variabel linguistik, kita dapat memberikan nilai kata pada variabel. Dalam kehidupan sehari-hari, orang sering menggunakan lebih dari satu kata untuk mendeskripsikan sebuah variabel. Sebagai contoh, jika nilai yang diperoleh dipandang sebagai variabel linguistik maka variabel tersebut dapat bernilai “ringan” , “sedang”, “berat” dan sebagainya. Secara umum, nilai dalam T dapat berisi ketajaman (hedges).
30
2.3.5. Aturan Fuzzy IF - THEN Salah satu bentuk menyatakan pengetahuan seseorang adalah dengan aturan fuzzy IF-THEN (fuzzy production systems). Suatu aturan fuzzy IF-THEN adalah pernyataan kondisional yang disajikan sebagai : IF <proposisi fuzzy>
THEN
<proposisi fuzzy>
Dengan demikian untuk mengetahui aturan fuzzy IF-THEN harus diketahui konsep proposisi fuzzy. Proposisi fuzzy mempunyai dua buah bentuk yaitu proposisi fuzzy tunggal (atomic fuzzy proposition) dan proposisi fuzzy gabungan (compound fuzzy proposition). Proposisi fuzzy tunggal adalah sebuah pernyataan tunggal : x adalah A dengan x menyatakan variabel linguistik dan A menyatakan nilai variabel linguistik A. Sedangkan proposisi fuzzy gabungan adalah gabungan dari proposisi fuzzy tunggal dengan menggunakan penghubung “dan”, “atau”, dan “not” yang berturutturut menggambarkan fuzzy interseksi, fuzzy union, dan fuzzy complement. Dengan demikian proposisi fuzzy gabungan akan dipahami sebagai relasi fuzzy dengan fungsi keanggotannya sebagai berikut : Misalkan x dan y menyatakan variabel linguistik dalam domain U dan V, dan A dan B berturut-turut menyatakan nilai linguistik yang merupakan himpunan samar dalam U dan V. maka proposisi fuzzy gabungan : x adalah A dan y adalah B
31
Dinyatakan dalam sebagai relasi fuzzy ‘A dan B’ dalam U x V dengan fungsi keangotaan : μA dan B (x,y) = t{μA(x), μB(y)]
(2.20 )
dengan t adalah sembarang T-norm x adalah A atau y adalah B Dinyatakan dalam sebagai relasi fuzzy ‘A atau B’ dalam U x V dengan fungsi keanggotaan : μA atau B (x,y) = s[μA(x), μB(y)]
(2.21 )
dengan s adalah sembarang S-norm x adalah tidak A Dinyatakan dalam sebagai relasi fuzzy ‘tidak A ’ dengan fungsi keanggotaan : μ~A (x,y) = c[μA(x)]
(2.22 )
dengan c adalah sembarang complement Setelah memahami konsep proposisi fuzzy, berikut ini akan dijelaskan interpretasi dari aturan fuzzy IF-THEN. Karena proposisi fuzzy dinyatakan sebagai relasi fuzzy maka hal yang paling mendasar adalah menyatakan operasi IF-THEN. Dalam kalkulus proposional klasik, ekspresi jika p maka q ditulis sebagai p→q. Dalam hal ini p disebut anteseden/premis dan q disebut konsekuen/konklusi. Implikasi → dapat juga dinyatakan sebagai ~p ∨ q dan (p ∧ q) ∨ ~p. Aturan fuzzy IF-THEN dapat dipandang sebagai penggantian p dan q dengan proposisi fuzzy sehingga kita dapat menginterpretasikan aturan IF-THEN dengan
32
mengganti operator ~, ∨, ∧ berturut-turut dengan fuzzy complement (c), fuzzy interseksi (t), dan fuzzy union (s). Misalkan kita tulis kembali proposisi fuzzy sebagai berikut : Jika maka Dengan dan adalah proposisi fuzzy. Berdasarkan sifat ekivalensi diperoleh : μFP1 → FP2 (x,y) = s[ c[μFP1(x)] , μFP2 (y) ]
(2.23 )
atau μFP1 → FP2 (x,y) = s[ t[μFP1(x) , μFP2 (y)] , c [μFP1 (x) ] ]
(2.24 ) Implikasi Dienes-Ritchter merupakan salah satu interpretasi aturan fuzzy IF-THEN dimana operator logika ~ dan ∨ diganti dengan fuzzy complement dan fuzzy union standar sehingga dalam implikasi ini diperoleh fungsi keanggotaan sebagai berikut : μQD (x,y) = max [1 - μFP1(x) , μFP2 (y) ]
(2.25 )
2.3.6. Basis Aturan Samar Sebuah basis aturan samar memuat sekumpulan aturan-aturan samar IF-THEN. Dalam beberapa aplikasi, hal ini merupakan inti dari sistem samar yaitu semua komponen yang lain digunakan untuk mengimplementasikan aturan-aturan tersebut dengan cara logis dan efisien. Secara khusus basis aturan samar terdiri atas aturanaturan samar IF-THEN sebagai berikut : Ru(1) : IF
x1
is
A11 and
THEN y
is
B1
…..
and xn
is
An1
33
dengan A11 dan B1 adalah himpunan samar dalam U1 ⊂ R dan V ⊂ R 1 dan x = (x1 , x2, ……, xn)T ∈ U dan y ∈ V. berturut-turut adalah masukan dan keluaran variabel linguistik dari sistem samar. Misalkan M adalah jumlah aturan dalam basis aturan samar , yaitu i=1,2,..,M. Kita dapat mengatakan bahwa aturan tersebut dalam bentuk aturan samar IF-THEN kanonik karena mencakup beberapa tipe aturan samar yang lain dan proposisi sebagai kasus khusus. Didalam kerangka kerja sistem samar ini pengetahuan seseorang telah direpresentasikan dalam bentuk aturan-aturan samar IF-THEN. Artinya kita hanya dapat menggunakan pengetahuan seseorang yang dapat dibentuk dalam aturan samar IF-THEN. Karena basis aturan samar berisi sekumpulan aturan maka hubungan antara aturan-aturan dan aturan itu sendiri secara keseluruhan merupakan permasalahan yang perlu diperhatikan. Permasalahan tersebut meliputi cakupan aturan untuk semua situasi yang mungkin dan aturan-aturan yang saling bertentangan. Untuk mengantisipasi hal itu maka didefinisikan konsep sebagi berikut : a. Sebuah himpuan aturan samar IF-THEN dikatakan lengkap jika untuk sembarang x ∈ U paling tidak terdapat satu aturan dalam basis aturan samar, yaitu Ru(1) sehingga μA11 (x1) ≠ 0, untuk semua i = 1,2,…,n. Dalam definisi tersebut dinyatakan bahwa kelengkapan sekumpulan aturan mensyaratkan adanya suatu aturan pada masukan di bagian IF yang nilai keanggotaannya tidak nol.
34
b. Sebuah himpunan aturan samar IF-THEN dikatakan konsisten jika tidak ada aturan-aturan bagian IF sama tetapi mempunyai bagian THEN yang berbeda. Untuk aturan-aturan non samar, konsistensi merupakan kebutuhan yang penting karena pelacakan akan sulit dilanjutkan apabila terdapat aturan-aturan yang saling bertentangan. Sedangkan untuk aturan-aturan samar, konsistensi bukan merupakan sesuatu yang amat penting karena mesin inferensi samar secara otomatis akan membuat rata-rata keluaran untuk menentukan hasil yang disepakati. Namun, mempertimbangkan basis aturan samar merupakan hal yang lebih baik. c. Sebuah himpunan aturan samar IF-THEN dikatakan kontinu jika tidak ada aturan-aturan yang berdekatan yang mana pada bagian THEN hinpunan samar mempunyai interaksi kosong. 2.3.7.
Mesin Inferensi Samar Didalam sebuah mesin inferensi samar, prinsip-prinsip logika samar digunakan
untuk mengkombinasikan aturan-aturan samar IF-THEN dalam basis aturan samar pada suatu pemetaan dari himpunan samar A1 dalam U ke himpunan samar B1 dalam V. Dalam beberapa aplikasi, basis aturan samar terdiri atas lebih dari satu aturan maka permasalahan yang harus diselesaikan adalah mengambil kesimpulan dengan beberapa aturan. Terdapat dua cara untuk mengambil kesimpulan dengan sekumpulan aturan, yaitu inferensi berbasis komposisi (composition based inference) berbasis aturan individu (individual-rule inference).
dan inferensi
35
2.3.7.1.
Inferensi Berbasis Komposisi
Dalam inferensi berbasis komposisi, semua aturan dalam basis aturan samar dikombinasikan menjadi sebuah relasi samar tunggal dalam U xV, yang selanjutnya dipandang sebagai aturan samar IF-THEN secara tunggal. Dalam hal ini yang menjadi permasalahan adalah membentuk kombinasi tersebut. Yang harus diketahui pertama adalah makna dari setiap aturan, kemudian kita dapat menggunakan operator logika yang tepat untuk mengkombinasikannya. Misalkan Ru(1) adalah aturan fuzzy yang terdiri atas aturan fuzzy IF-THEN sebagai berikut : Ru(1) : IF x1 is A1 AND ……….AND xn is An THEN y is B Ru(1) adalah relasi fuzzy dalam U x V yang menyatakan aturan fuzzy IF-THEN, yaitu Ru(1) = A11 x…….x An1 → B
1
. Telah diketahui bahwa A11 x…….x An1 adalah
relasi fuzzy pada U = U1 x …… x Un yang didefinisikan sebagai berikut . μA11x.. x A1n (x1,….., xn) = t (A11 , …….., A1n ) Sedangkan implikasi → pada Ru(1)
(2.26 ) didefinisikan menurut salah satu interpretasi
fuzzy IF – THEN. Untuk mengkombinasikan sekumpulan aturan fuzzy IF –THEN sebanyak M buah aturan
dapat dinyatakan sebuah relasi tunggal
QM dalam U x V yang
didefiniskan sebagai :
QM
=
M
U
i =1
Ru
i
(2.27 )
36
Kombinasi tersebut
dinamakan dengan Mamdani Combination. Kombinasi itu
menyatakan bahwa sekumpulan aturan fuzzy dipandang sebagai pernyataan kondisional yang berdiri sendiri sehingga operator yang digunakan adalah operator union. Modus ponens umum (Generalized Modus Ponens) merupakan salah satu alat yang banyak dipakai dalam penyusunan inferensi. Bentuk umum GMP adalah : Premis 1: x adalah A’ Premis 2: JIKA x adalah A
MAKA
y adalah B
Konklusi : y adalah B’ Sehingga jika diberikan aturan samar A’ yang menyatakan premis x adalah A’ dan relasi fuzzy A → B dalam U x V yang menyatakan premis JIKA x adalah A MAKA y adalah B, suatu himpunan samar B’ dalam V yang menyatakan konklusi y adalah B’ dapat dihitung dengan μB’ (y) = sup t[ μA’ (x) , μA x∈U
→ B
(x,y) ]
(2.28 )
2.3.7.2. Inferensi Berbasis Aturan Individu Dalam inferensi berbasis aturan individu, tiap-tiap aturan dalam basis aturan samar memberikan keluaran himpuan samar, sedangkan keluaran mesin inferensi samar secara keseluruhan merupakan kombinasi atas M himpunan samar secara individu. Sedangkan kombinasi tersebut dapat diberikan baik dengan operator gabungan maupun irisan.
37
2.4.
Pengetahuan Tentang Penyakit Infeksi Mata Seperti ada pepatah yang mengatakan “Mata adalah pelita hati” maka
kesehatan mata harus dijaga agar tetap sehat dan bersih. Dalam bagian ini akan diuraikan sedikit pengetahuan tentang penyakit infeksi pada mata yang penulis kumpulkan dari berbagai sumber pada institusi rumahsakit mata maupun dari internet dan para pakar penyakit mata yang penulis temui. Berdasarkan informasi tersebut penyakit infeksi pada mata disebakan oleh virus maupun bakteri maupun disebabkan karena lingkungan yang berdebu dan kotor dan dapat menular dengan cepat. 2.4.1. Anatomi Mata Adapun struktur anatomi mata dapat dilihat pada gambar dibawah ini. ( http://www.snec.com.sg/eye/ocular.asp)
Gambar 2. 2. Anatomi Mata
38
2.4.2
Jenis Penyakit Infeksi Mata Menurut apotik online dan media informasi obat penyakit medicastore
(http://www.medicastore.com/med/detail_pyk.php) terdapat berbagai macam jenis penyakit mata dan gejalanya. Dalam bagian ini penulis akan menyajikan sebagian contoh jenis penyakit mata dan gejalanya seperti: 1.
Blefaritis
adalah
suatu
peradangan
pada
kelopak
mata.
Blefaritis ditandai dengan pembentukan minyak berlebihan di dalam kelenjar di dekat kelopak mata yang merupakan lingkungan yang disukai oleh bakteri yang dalam keadaan normal ditemukan di kulit 2.
Konjungtivitis atau disebut juga penyakit mata merah adalah peradangan pada selaput luar dan selaput dalam kelopak mata
3.
Selulitis Orbitalis adalah suatu infeksi pada jaringan di sekitar bola mata
4.
Skleritis adalah suatu peradangan pada sklera (bagian putih mata)
5.
Ulkus Kornea adalah luka terbuka pada lapisan kornea yang paling luar. Ulkus biasanya terbentuk akibat: infeksi oleh bakteri (misalnya stafilokokus, pseudomonas atau pneumokokus), jamur, virus (misalnya herpes) atau protozoa akantamuba dan kekurangan vitamin A atau protein
39
BAB III DESAIN SISTEM PAKAR PENDIAGNOSA PENYAKIT INFEKSI MATA MENGUNAKAN LOGIKA SAMAR
3.1. GAMBARAN UMUM Sistem pakar ini merupakan perangkat lunak yang dapat bertindak sebagai pengganti pakar/dokter untuk mendiagnosa penyakit infeksi pada mata. Sesuai dengan struktur sistem berbasis pengetahuan/system pakar secara umum yang digambarkan pada bab 2, struktur sistem pakar pendiagnosa penyakit infeksi mata menggunakan logika samara ini terdiri atas 2 bagian pokok yaitu bagian konsultasi (consultation subsystem) dan subsistem pengembangan (development subsystem). Secara lengkap struktur sistem dapat dilihat pada gambar 3.1.
3.2. TAHAP PEMBANGUNAN SISTEM Untuk membangun sistem pakar secara umum melalui tahap-tahap sebagai berikut: (Harmon dan King, 1985) 1. Menentukan tool / bahasa pemrograman yang akan digunakan untuk mengimplementasikan sistem.
39
40
SUB SISTEM KONSULTASI
SUB SISTEM PENGEMBANGAN
user
Knowledge Base Data gejala yang dirasakan/dilihat Knowledge Representation
User interface Fuzzifikasi
Knowledge Engineer
nilai
Knowledge Aquisition
Mekanisme Inferensi
Pakar /dokter Penyakit terdiagnosa
Gambar 3.1. 2. Identifikasi
Data Base
Struktur Sistem Pakar Pendiagnosa Penyakit Infeksi Mata domain dan melakukan analisa terhadap pengetahuan yang
termasuk dalam sistem tersebut. 3. Melakukan desain sistem 4. Membuat prototipe sistem
3.2.1. Menentukan Tool / Bahasa Pemrograman Bahasa pemrograman yang digunakan dalam pembangunan sistem berbasis pengetahuan ini adalah menggunakan bahasa pemrograman Borland Delphi dengan basis data disimpan menggunakan MySQL. Dengan demikian interface yang digunakan untuk proses konsultasi maupun pemberian rekomendasi dalam bentuk
41
visual. Setiap sesi konsultasi data user disimpan dalam basis data termasuk hasil konsultasinya.
3.2.2. Identifikasi Domain dan Pengetahuan Langkah berikutnya adalah melakukan identifikasi terhadap domain dan pengetahuannya. Identifikasi domain ini dilakukan dengan menggambarkan operasi keseluruhan dari sistem yaitu : Menanyakan gejala penyakit yang dirasakan atau dilihat pada user. Melakukan proses pengolahan gejala yang bersifat fuzzy maupun crisp Menentukan penyakit infeksi mata yang diderita Dari operasi keseluruhan tersebut dapat digambarkan dengan menggunakan diagram pada gambar 3.2. Sebagai ilustrasi dari kerja sistem pakar pendiagnosa penyakit infeksi mata menggunakan logika samar adalah sebagai berikut. user
Gejala penyakit
Fuzzifikasi gejala penyakit
Gambar 3.2.
Penyakit Infeksi Mata yang terdeteksi
Diagram Pengoperasian Sistem Pakar Pendiagnosa Penyakit Infeksi Mata
42
User yang ingin mengetahui penyakit infeksi mata yang dideritanya harus memasukkan data-data yang berupa gejala-gejala penyakit yang dirasakan maupun terlihat. Sedangkan proses identifikasi pengetahuan dimulai dengan
akuisisi
pengetahuan (knowledge acquisition) dilanjutkan dengan representasi pengetahuan (knowledge representation).
3.2.2.1. Akuisisi Pengetahuan (Knowledge Acquisition) Sebuah sistem pakar dapat menirukan apa yang dilakukan oleh seorang pakar. Pengetahuan dikumpulkan untuk membangun sistem pakar. Akuisisi pengetahuan merupakan proses pengumpulan informasi dari sumber-sumber keahlian, seperti yang sudah dijelaskan pada bab II. Pengetahuan yang diperoleh dalam sistem ini diperoleh dari media internet yang memuat
pengetahuan
tentang penyakit
infeksi pada mata. Selain itu
pengetahuan juga diperoleh dari pakar/dokter mata. Setelah melakukan akuisisi pengetahuan kemudian dibuat perumusan masalah seperti pada tabel 3.1.
43
Tabel 3.1. Penyakit
Perumusan masalah penyakit yang dengan gejala yang dialami Gejala penyakit
Blefaritis
• • • • • • •
Konjungtivitis
• • • • • • • • •
Selulitis Orbitalis
• • • • • • • • • • • • • • • • • • •
Skleritis
Ulkus Kornea
berhubungan
Perasaan mengganjal Mata Terasa Panas keluar air mata Mata agak merah Peka terhadap cahaya Mata terasa gatal Terbentuk keropeng yang melekat erat pada tepi kelopak mata keluar air mata/mata berair Mata kelihatan sangat merah Mata terasa nyeri Peka terhadap cahaya (fotofobia) Penglihatan kabur Banyak mngeluarkan kotoran Mata terasa sangat gatal Agak Bengkak pada kelopak mata Terbentuk keropeng yang melekat erat pada tepi kelopak mata Mata kelihatan sangat merah Nyeri hebat pada mata Bengkak pada kelopak mata Mata menonjol Disertai demam Pergerakan mata terbatas Bengkak pada bola mata Keluar air mata Mata agak merah Mata terasa Nyeri Peka terhadap cahaya (fotofobia) Penglihatan kabur Bercak merah pada sklera Keluar air mata Mata agak merah Mata terasa nyeri Peka terhadap cahaya (fotofobia) Penglihatan kabur Keluar kotoran
44
• •
Mata terasa gatal Pada kornea tampak bintik nanah yang berwarna kuning keputihan
3.2.2.2. Representasi Pengetahuan (Knowledge Representation) Setelah proses akuisisi
selesai, hal berikutnya yang dilakukan adalah
mereprentasikan pengetahuan. Tujuan representasi pengetahuan adalah untuk mengembangkan suatu struktur yang akan membantu pengkodean pengetahuan ke dalam program. Pengetahuan direpresentasikan dalam format tertentu dan akan dihimpun dalam suatu basis pengetahuan. Representasi pengetahuan merupakan suatu cara untuk mengilustrasikan pengetahuan. Format pengetahuan yang digunakan adalah kaidah produksi dengan pertimbangan : Berbentuk modular sehingga mudah untuk dimodifikasi Mudah diinterpretasikan Serupa dengan cara berpikir manusia dalam menyelesaikan masalah Langkah yang dilakukan untuk membuat representasi pengetahuan berbentuk kaidah adalah sebagai berikut : 1. Pembuatan tabel keputusan (decision table) Tabel keputusan merupakan suatu metode untuk mendokumentasikan pengetahuan. Tabel pengetahuan mendeskripsikan pengetahuan. Tabel pengetahuan merupakan matrik kondisi yang dipertimbangkan dalam pendeskripsian kaidah.
45
Tabel 3.2. Tabel Keputusan Goal 1 Goal 2
Kondisi 1
9
Kondisi 2
9
Kondisi 3
9 9
2. Pengkonversian tabel keputusan menjadi kaidah produksi Representasi pengetahuan yang berbentuk kaidah produksi, dibentuk dari pengubahan keputusan. Pembuatan suatu kaidah dilakukan dengan beberapa tahapan. Sebagai contoh pembuatan kaidah 1 berikut. Pertama, konklusi dari kaidah 1 adalah Goal 1. Konklusi dapat dicapai bila kondisi yang mendukungnya terpenuhi yaitu kondisi 1 dan kondisi 2. Ketiga, pembuatan kaidah 1 menggunakan
goal dan kondisi yang
diperoleh dari langkah 1 dan 2, seperti berikut : Kaidah 1 : JIKA
Kondisi 1 DAN
Kondisi 2
MAKA Goal 2 Kaidah 2 : JIKA
Kondisi 2 DAN
MAKA
Kondisi 3 Goal
46
REPRESENTASI PENGETAHUAN GEJALA PENYAKIT Berdasarkan proses akuisisi data/gejala dibuat tabel keputusan sebagai berikut. Tabel 3.3. Tabel Keputusan Identifikasi Penyakit No
penyakit gejala
1 Bengkak pada bola mata 2 Bengkak pada kelopak mata 3 Bercak merah pada sklera 4 Demam 5 Keluar air mata 6 Mata menonjol 7 Mata merah 8 Mata terasa gatal 9 Mata terasa nyeri 10 Mata Terasa Panas 11 Mengeluarkan kotoran 12 Pada kornea tampak bintik nanah yang berwarna kuning keputihan 13 Peka terhadap cahaya 14 Penglihatan kabur 15 Perasaan mengganjal 16 Pergerakan mata terbatas 17 Terbentuk keropeng yang melekat erat pada tepi kelopak mata
Blefaritis
Konjungtivitis
SEDANG
SelulitisOrbitalis
Skleritis
Ulkus Kornea
BERAT BERAT SEDANG (CRISP)
RINGAN SEDANG SEDANG BERAT BERAT BERAT SEDANG RINGAN BERAT
BERAT
SEDANG
RINGAN
(CRISP) BERAT
RINGAN
BERAT
BERAT
SEDANG SEDANG RINGAN SEDANG (CRISP)
SEDANG SEDANG
RINGAN RINGAN
SEDANG (CRISP) (CRISP)
(CRISP)
RINGAN BERAT
47
Keterangan
Bengkak pada bola mata Ringan Æ bola mata normal/sedikit menonjol Sedang Æ bola mata agak menonjol Berat Æ bola mata sangat menonjol
Bengkak pada kelopak mata Ringan Æ mata masih bisa terbuka normal, pandangan masih jelas Sedang Æ mata terbuka kira-kira setengah sehinga pandangan agak tidak jelas Berat Æ mata tidak bisa terbuka sehingga benar-benar tidak bisa melihat
Bercak merah pada sklera Ringan Æ warna putih masih mendominasi warna merah (lihat simulasi program) Sedang Æ warna putih dan warna merah sama dominannya (lihat simulasi program) Berat Æ warna merah masih mendominasi warna putih (lihat simulasi program)
Keluar air mata Ringan Æ dalam hitungan jam keluar air mata Sedang Æ dalam hitungan menit keluar air mata Berat Æ hampir setiap saat keluar air mata
Mata merah Ringan Æ warna putih masih mendominasi warna merah (lihat simulasi program) Sedang Æ warna putih dan warna merah sama dominannya (lihat simulasi program)
48
Berat Æ warna merah masih mendominasi warna putih (lihat simulasi program)
Mata terasa gatal Ringan Æ tidak pernah/sedikit keinginan untuk menggosok mata Sedang Æ dalam hitungan menit, ingin menggosok mata Berat Æ setiap saat ingin menggosok mata
Mata terasa nyeri Ringan Æsaat ditekan pelan, mata terasa tidak/sedikit sakit Sedang Æ saat ditekan pelan, mata terasa agak sakit Berat Æ saat ditekan pelan, mata terasa sangat sakit
Mata Terasa Panas (pasien yang merasakannya) Ringan Æ pasien merasa, mata tidak/sedikit panas Sedang Æ pasien merasa, mata agak panas Berat Æ pasien merasa, mata sangat panas
Mengeluarkan kotoran Ringan Æ mata tidak / sedikit terlihat kotor dalam hitungan jam Sedang Æ mata terlihat kotor dalam hitungan menit Berat Æ hampir setiap saat mata mengelurakan kotoran.
Peka terhadap cahaya Ringan Æ pada ruangan dengan cahaya normal, mata tidak/sedikit silau Sedang Æ pada ruangan dengan cahaya normal, mata agak silau Berat Æ pada ruangan dengan cahaya normal, mata sangat silau
49
Penglihatan kabur Ringan Æ pengelihatan jelas pada benda dengan jarak kira-kira 5 m Sedang Æ pengelihatan jelas pada benda dengan jarak kira-kira 3 m Berat Æ pengelihatan jelas pada benda dengan jarak kira-kira 1 m
Perasaan mengganjal Ringan Æ saat mata berkedip terasa seperti ada pasir halus di mata Sedang Æ saat mata berkedip, terasa seperti ada pasir yang agak kasar di mata Berat Æ saat mata berkedip, terasa ada benda lebih besar dari pasir di mata
3.2.2.3. Himpunan Aturan Aturan-R1 : JIKA Perasaan mengganjal (SEDANG) DAN Mata Terasa Panas (RINGAN) DAN keluar air mata (RINGAN) DAN Mata merah (SEDANG) DAN Peka terhadap cahaya (BERAT) DAN Mata terasa gatal (BERAT) DAN Terbentuk
keropeng
kelopak mata MAKA Blefaritis Aturan-R2 : JIKA keluar air mata (SEDANG) DAN Mata merah (BERAT)
yang
melekat
erat
pada
tepi
50
DAN Mata terasa Nyeri (SEDANG) DAN Peka terhadap cahaya (SEDANG) DAN Penglihatan kabur (SEDANG) DAN Mengeluarkan kotoran (BERAT) DAN Mata terasa gatal (BERAT) DAN Bengkak pada kelopak mata (SEDANG) DAN Terbentuk
keropeng
yang
melekat
kelopak mata MAKA Konjungtivitis Aturan-R3 : JIKA Mata merah (BERAT) DAN Mata terasa Nyeri (BERAT) DAN Bengkak pada kelopak mata (BERAT) DAN Mata menonjol DAN Demam DAN pergerakan mata terbatas DAN Bengkak pada bola mata (BERAT) MAKA Selulitis Orbitalis Aturan-R4 : JIKA keluar air mata (SEDANG) DAN Mata merah (RINGAN) DAN Mata terasa Nyeri (BERAT) DAN Peka terhadap cahaya (RINGAN) DAN Penglihatan kabur (RINGAN)
erat
pada
tepi
51
DAN Bercak merah pada sklera (SEDANG) MAKA Skleritis Aturan-R5 : JIKA keluar air mata (RINGAN) DAN Mata merah (SEDANG) DAN Mata terasa Nyeri (RINGAN) DAN Peka terhadap cahaya (RINGAN) DAN Penglihatan kabur (BERAT) DAN Mengeluarkan kotoran (SEDANG) DAN Mata terasa gatal (SEDANG) DAN Pada kornea tampak bintik nanah yang berwarna kuning keputihan MAKA Ulkus Kornea
3.3. PROSES FUZZIFIKASI NILAI
Fuzzifikasi merupakan proses untuk mengubah data nilai crisp menjadi data nilai fuzzy. Hal ini diperlukan dalam sistem ini karena aturan yang dibangun berupa fuzzy anteseden seperti yang terlihat pada bagian sebelumnya. Proses ini tidak bisa terlepas dari pengertian himpunan fuzzy pada bab sebelumnya. Himpunan fuzzy menggambarkan derajat atau nilai perbedaan pada suatu variabel linguistik pada himpunan nilai linguistik variabel tersebut. Derajat atau nilai tersebut disebut dengan grades of membership.(Siler,2001). Dalam sistem ini grades of membership mempunyai nilai antara 0 (absolutely false) sampai 1 (absolutely true). Grades of
52
membership ini selanjutnya akan menjadi fungsi keanggotaan (membership function) yang digunakan dalam proses fuzzifikasi data gejala penyakit yang dialami. FUNGSI KEANGGOTAAN Dalam mengukur besaran nilai crisp suatu variable linguistic gejala penyakit infeksi mata, ada beberapa gejala yang pengukurannya sangat tergantung dari subjektifitas seorang pakar / dokter mata tanpa menggunakan alat ukur tertentu, misalnya gejala : •
Bengkak pada bola mata
•
Bengkak pada kelopak mata
•
Bercak merah pada sklera
•
Mata merah
•
Mata terasa nyeri
•
Mata terasa panas
•
Peka terhadap cahaya
•
Perasaan mengganjal
Untuk gejala-gejala tersebut diatas ditentukan ranges nilai [0..100] sebagai domain nilai crisp pada variable linguisticnya. Nilai range ini berupa besaran prosentase tingkat keparahan gejala tersebut. • Nilai crisp yang mendekati 0 (nol) % menunjukkan bahwa nilai kebenaran untuk lingustik RINGAN semakin terpenuhi, • Nilai crisp yang dalam range 40% – 60%
menunjukkan bahwa nilai
kebenaran untuk lingustik SEDANG semakin terpenuhi,
53
• Nilai crisp yang mendekati 100 (seratus) % menunjukkan bahwa nilai kebenaran untuk lingustik BERAT semakin terpenuhi. Dibawah ini disajikan fungsi keanggotaan untuk semua variabel linguistik yang pengukurannya tergantung pada subektifitas dokter X adalah nama variabel linguistic untuk setiap gejala penyakit yang bersifat fuzzy. T adalah nilai linguistic yang mungkin untuk X yaitu BERAT, SEDANG, dan RINGAN. U adalah himpunan semesta non fuzzy untuk T [0…100] yang menyatakan prosentase tingkat keparahan suatu gejala. M adalah himpuan fungsi keanggotaan untuk T Dengan fungsi keanggotaan masing-masing adalah •
Linguistic ‘RINGAN’ menggunakan fungsi monoton turun
•
Linguistik ‘SEDANG’ menggunakan fungsi segitiga
•
Linguistik ‘BERAT’ menggunakan fungsi monoton naik.
Berikut ini disajikan fungsi keanggotaan masin-masing linguistik yang dapat diubah 0 batas-batas nilainya berturut-turt sebagai berikut : a. Fungsi monoton turun 1 rt2 - x rt2 rt 0
; 0 ≤ x ≤ rt1 ; rt2 ≤ x ≤ rt1 ; rt2 ≤ x ≤ 100
(3.1)
54
rt1dan rt2 adalah variable ranges dimana nilai default rt1 = 20 dan rt2 = 40. b. Fungsi segitiga 0
; x ≤ rs1 atau x ≥ rs4
xrs2 -
; rs2 ≤ x ≤ rs
(3.2)
rs4 - x rs4 –
; rs4 ≤ x ≤ rs ; rs3 ≤ x ≤ 1 rs rs1, rs2, rs3 dan rs4 adalah variable yang dipakai untuk menguah nilai-nilai batas fungsi segitiga c. Fungsi monoton naik ; 0 ≤ x ≤ rn1 0 x - rn1 rn2 - rn1
; rn2 ≤ x ≤ rn1
1
; rn2 ≤ x ≤ 100
(3.3)
rn1 dan rn2 adalah variable yang dipakai untuk mengubah nilai-nilai batas fungsi monoton naik. Dan untuk gejala seperti :
•
Keluar air mata
•
Mata terasa gatal
•
Mengeluarkan kotoran
Pengukurannya berdasarkan selang waktu saat gejala tersebut terjadi secara berulang. Berdasarkan alasan tersebut maka domain nilai crisp untuk gejala-gejala diatas berada
55
dalam interval [0..1440] yang menunjukan selang waktu dalam satuan menit dimana gejala tersebut terjadi. Interval [0..1440] dapat di jelaskan sebagai berikut •
Jika
nilai
x semakin mendekati 0 (nol) mengandung arti bahwa
hampir setiap saat gejala tersebut dialami sehingga linguistik “BERAT”
pada
gejala
tersebut
semakin
terpenuhi.
Fungsi
keanggotaan menggunakan fungsi monoton turun dengan batas-batas nilai sebagai barikut : 1
; 0 ≤ x ≤ 30
120- x 90
;30≤ x ≤ 120 ; 120 ≤ x ≤ 1440
0 •
(3.4)
Jika nilai x berada pada interval 100 – 150 mengandung arti bahwa dalam hitungan menit gejala tersebut dialami sehingga lingustik “SEDANG”
pada
gejala
tersebut
semakin
terpenuhi.
Fungsi
Keanggotaannya menggunakan fungsi segitiga dengan batas-batas nilai sebagai berikut : 0
; x ≤ 30 atau x ≥ 220
x70
; 30 ≤ x ≤100
220 70 1
•
(3.5)
; 150 ≤ x ≤220 ; 100≤x≤15
Jika nilai x semakin mendekati atau melebihi 200 mengandung arti bahwa dalam hitungan jam gejala tersebut dialami sehingga linguistik “RINGAN” semakin terpenuhi. Fungsi keanggotaan menggunakan
56
fungsi monoton naik dengan batas-batas nilai sebagai berikut : 0
; 0 ≤ x ≤ 150
x50
; 150 ≤ x ≤ 200
1
; 200≤ x ≤ 1440
(3.6)
Dan untuk gejala penglihatan kabur, domain nilai crisp adalah [0..1000] yang menunjukan jarak dalam satuan senti meter (cm) dari mata ke suatu objek benda tertentu. Interval [0..1000] dapat dijelaskan sebagai berikut : •
Jika
nilai
x semakin mendekati 0 (nol) mengandung arti bahwa
dengan jarak pandang (dalam cm) yang semakin dekat, kemampuan mata untuk melihat benda tertentu tetap kabur atau dengan kata lain linguistik “BERAT” pada gejala penglihatan kabur semakin terpenuhi. Fungsi keanggotaan menggunakan fungsi monoton turun dengan batas-batas nilai sebagai barikut : 1
; 0 ≤ x ≤ 100
300 - x 200
; 100≤ x ≤ 300
0 •
(3.7)
; 300 ≤ x ≤ 1000
Jika nilai x berada pada interval 250 – 350 mengandung arti bahwa dalam dalam jarak kurang lebih 3 (tiga) meter mata mulai mengalami kekaburan, atau dengan kata lain, linguistik “SEDANG” pada gejala penglihatan kabur semakin terpenuhi. Fungsi Keanggotaannya menggunakan fungsi segitiga dengan batas-batas nilai sebagai berikut :
57
0
; x ≤ 100 atau x ≥ 500 - x 500 ; 350 ≤ x ≤ 500 x150 1 •
(3.8)
; 100 ≤ x ≤ 250 ; 250≤ x ≤ 350
Jika nilai x mendekati atau lebih dari 500 mengandung arti bahwa dalam dalam jarak kurang lebih 5 (lima) meter mata mulai mengalami kekaburan, atau dengan kata lain, linguistik “RINGAN” pada gejala penglihatan kabur semakin terpenuhi. Fungsi Keanggotaannya menggunakan fungsi monoton naik dengan batas-batas nilai sebagai berikut : 0
; 0 ≤ x ≤ 400
x100
; 400 ≤ x ≤ 500
1
; 500≤ x ≤ 1000
(3.9)
Untuk fungsi keanggotaan penyakit dinyatakan sebagai berikut : Linguistik (y) : Penyakit T = { Blefaritis, Konjuctivitis, Selulitis Orbitalis, skleretis, ulkus kornea } U = Besar nilai input prosentasi penyakit [70...95] M = { μBL , μKJ, μSO , μSL, μUK } Dengan fungsi keanggotaan sebagai berikut : Y= 0.01x - 0.092.
3.10
58
Fungsi diatas diperoleh berdasarkan data-data yang dikumpulkan dari pakar (dokter mata) yang menilai kebenaran gejala-gejala terhadap penyakit. Selanjutnya dari datadata tersebut dibuat fungsi yang sesuai menggunakan fitting curve. OPERTOR PADA HIMPUNAN FUZZY Dalam melakukan operasi pada himpunan fuzzy, user sebagai knowledge engineer atau admin dapat memilih operator yang akan digunakan. Pilihan operator meliputi operator standart, operator dari kelas Lukasewiecz, operator dari kelas Einstein dan operator dari kelas Yager dengan nilai λ ditentukan oleh user. Sebagai operator default dalam sistem ini dipakai oprator standart komplemen, standart union dan standart interseksi. User sebagai pakar atau user lainnya hanya dapat menggunakan operator dari kelas standart.
3.4. MEKANISME INFERENSI Pada sistem ini inferensi dilakukan untuk menentukan penyakit infeksi mata berdasarkan pada hasil fuzzifikasi gejala-gejala yang dimasukkan oleh user. Sesuai dengan basis pengetahuan yang berbentuk fuzzy compound proposition, diperlukan operator-operator fuzzy menghitung grades of membershipnya dengan menggunakan fungsi keanggotaan
pada bagian 3.3. Dalam hal ini
digunakan operator standard complement, standard union, standard intersection seperti pada bagian 2.4.2. Penggunakan operator standard ini sebenarnya dipilih karena kesederhanaan dalam proses perhitungannya sehingga menjadi lebih mudah. Untuk menghitung nilai aturan digunakan implikasi Dienes-Rescher (persamaan
59
2.18) karena interpretasi menggunakan operator standard fuzzy complement dan standard fuzzy union sehingga lebih sederhana. Sedangkan metode inferensi untuk menghasilkan penyakit yang terdeteksi digunakan metode inferensi berbasis komposisi dengan kombinasi Mamdani karena lebih efisien dalam perhitungan dan dipandang bahwa setiap aturan merupakan pernyataan kondisional yang berdiri sendiri sehingga operator yang digunakan adalah operator OR atau union. Setelah dihasilkan nilai inferensi selanjutnya untuk memilih aturan R-1, R-2, R-3, R-4, R5 (lihat bagian 3.2.2.3 tentang himpunan aturan) yang di’fired’, perlu menghitung nilai masing-masing aturan (μRi) yang paling dekat dengan inferensi tersebut (nilai minimal). Jika ternyata diperoleh nilai kedekatan minimal lebih dari satu maka aturan yang di’fired’ adalah aturan yang penulisannya terlebih dulu (tergantung urutan aturan). Hasil proses inferensi tahap 1 ini berupa identifikasi penyakit yang diderita.
Nilai Gejala (Nilai Crisp)
Fuzzifikasi
Hitung nilai fakta (dg operator standar, yager, einstein, lukasewich) & rule dg implikasi
Dienes-Reschter
Inferensi berbasis komposisi
Penyakit Terdiagnosa
Gambar 3.3 Diagram Inferensi
60
3.5. RANCANGAN SISTEM Bagian ini terdiri dari perancangan yaitu perancangan database meliputi perancangan struktur tabel serta relasi yang terjadi atas tabel-tabel tersebut.
3.5.1. RANCANGAN BASIS DATA Dalam sistem ini, data base managemen sistem yang dipakai adalah MySQL versi 5.0.
3.5.1.1 Struktur Tabel Tabel-tabel yang dibutuhkan dalam sistem ini adalah sebagai berikut. 1.
Tabel Pemakai Fungsi : Menyimpan data user sebagai pemakai sistem Tabel 3.4 Struktur tabel pemakai No 1 2
2.
Nama Field ID User_Name
Tipe Data Integer Varchar
Panjang 100
Keterangan Primary Key :ID
Tabel Fungsi_Anggota Fungsi : Menyimpan Batas-batas nilai (Ranges) dari setiap membership function yang di gunakan Tabel 3.5 Struktur tabel Fungsi_Anggota No 1 2 3 4
Nama Field ID_Fungsi Nama_Fungsi T_Awal T_1
Tipe Data Integer Varchar Integer Integer
Panjang 100 -
Keterangan PK : ID_Fungsi T_Awal default 0 T_Akhir default 100
61
5 6 7 8
3.
T_2 T_3 T_4 T_Akhir
Integer Integer Integer Integer
-
Tabel Gejala Fungsi : Menyimpan data gejala penyakit Tabel 3.6 Struktur tabel gejala No 1 2 3
4.
Nama Field ID_Gejala Nama_Gejala Tipe_Geja
Tipe Data Integer Varchar Char
Panjang 100 1
Keterangan PK : ID_Gejala
Tabel Penyakit Fungsi : Menyimpan data penyakit Tabel 3.7 Struktur tabel penyakit No 1 2 3 4
5.
Nama Field ID_Penyakit Nama_Penyakit Input_Fuzzy Nilai_Fuzzy
Tipe Data Integer Varchar Integer Integer
Panjang 100 -
Keterangan PK : ID_Penyakit
Tabel Linguistik Fungsi : Menyimpan data linguistik untuk keperluan rule Tabel 3.8 Struktur tabel linguistik No 1 2 3 4
Nama Field ID ID_Fungsi ID_Gejala Linguis
Tipe Data Integer Integer Integer varchar
Panjang Keterangan PK : ID_Fungsi, ID_Gejala, Linguis FK : ID_Fungsi (tabel 1 Fungsi_Angota) ID_Gejala( tabel 100 Gejala
62
6.
Tabel Anteseden Fungsi : Menyimpan data rule/aturan yang telah di setup Tabel 3.9 Struktur tabel anteseden
7.
No
Nama Field
Tipe Data
Panjang Keterangan
1
ID
Integer
-
2
ID_Penyakit
Integer
-
3
ID_Linguistik
Integer
1
PK : ID_Penyakit, ID_Linguistik FK : ID_Penyakit dari tabel Penyakit
Tabel Pasien Fungsi : Menyimpan data tentang pasien Table 3.10 Struktur tabel pasien No 1 2 3 4 5 6
8.
Nama Field ID_Pasien Nama Alamat JK Tempat_Lahir Tgl_Lahir
Tipe Data Integer Integer Integer Char Varchar DateTime
Panjang 1 100 -
Keterangan PK : ID_Pasien
Tabel Diagnosa Fungsi : Menyimpan data hasil diagnosa Tabel 3.11 Struktur tabel diagnosa No
Nama Field
Tipe Data
Panjang
Keterangan
1
ID
Integer
-
PK : ID
2
Tgl_Diagnosa
DateTime
-
3
ID_Pasien
Integer
-
4
ID_Penyakit
Integer
1
5
Ket
Varchar
100
63
3.5.1.2. Relasi Antar Tabel Dalam menentukan relasi antar tabel suatu basisdata tidak lepas dari aturan bisnis (business rule) tentang sistem tersebut. Dalam sistem ini business rule dapat diuraikan sebagai berikut : 1. Setiap gejala penyakit dikelompokkan dalam dua kategori yaitu gejala crisp dan gejala fuzzy. 2. Setiap gejala dapat mempunyai beberapa lingustik 3. Setiap linguistik mempunyai satu fungsi anggota. 4. Satu penyakit dapat mempunyai beberapa gejala dan satu gejala dapat dipunyai oleh beberapa penyakit. 5. Proses diagnosa dapat mendeteksi semua penyakit yang mungkin dialami berdasarkan gejala yang di berikan tetapi hanya satu penyakit saja yang dijadikan kesimpulan dari hasil diagnosa. Dari business rule di atas maka relasi antar table tersebut dapat digambarkan seperti pada gambar 3.4 berikut ini
64
Gambar 3.4. Relasi Antar tabel
65
BAB IV IMPLEMENTASI DAN PEMBAHASAN
4.1.
IMPLEMENTASI Berdasarkan rancangan yang telah dibuat pada bab 3, selanjutnya user
interface diimplementasikan menggunakan Borland Delphi dan data-data disimpan menggunakan DBMS MySQL versi 5.0. Alasan pengunaan DBMS MySQL adalah selain free MySQL versi 5.0 telah mendukung pemograman client-server sehingga mudah dikembangkan ke basis web dan diharapkan dapat dipakai oleh lebih banyak user. Selain itu dengan MySQL versi 5.0 dapat dibuat coding disisi server dalam bentuk strored procedure dan trigger. Untuk menggunakan project ini, seorang adminstartor diharuskan melakukan setup data dengan terlebih dahulu berkonsultasi dengan dokter mata atau pakar. Data-data yang perlu disiapkan oleh admin adalah 1. Pemasukkan data gejala-gejala penyakit
termasuk penggolongannya
dalam bentuk fuzzy maupun crisp. 2. setup fungsi keanggotaan untuk proses diagnosa 3. pemasukan data penyakit 4. pembentukan rule/aturan serta melakukan proses fuzzifikasi terhadap setiap penyakit yang berkaitan dengan himpunan gejala yang terkait dengan penyakit tersebut. Fungsi keanggotaan bersifat dinamis sehingga seorang pakar dapat mengubah ranges nilai setiap fungsi keanggotaan untuk menyatakan ukuran nilai numeric 65
66
terhadap linguistik (RINGAN, SEDANG, BERAT). Walaupun demikian nilai default setiap fungsi anggota juga disediakan, seperti pada bagian perancangan pada bab III. Selanjutnya diberikan form tampilan menu utama seperti pada gambar 4.1 berikut ini..
Gambar 4.1. Form menu utama Sebelum sistem dioperasikan maka user akan diminta memasukan nama dan password pada menu dialog login seperti pada gambar 4.2 berikut ini
Gambar 4.2. Form menu login
67
Data penyakit dimasukan melalui form penginputan penyakit seperti gambar 4.3 berikut ini
Gambar 4.3. Form menu input data penyakit Data gejala penyakit diinput melalui form input gejala seperti terlihat pada gambar 4.3 berikut ini
Gambar 4.4. Form menu input data gejala
68
Setelah data penyakit dan gejala telah diinput selanjutnya seorang pakar harus membentuk rule/aturan pada setiap penyakit dengan cara melakukan setup rule pada sub menu setup yang sudah disediakan sekaligus melakukan fuzzifikasi terhadap setiap penyakit yang berkaitan dengan rule/aturan tersebut untuk mendapatkan nilai fuzzy dari setiap penyakit. Aktifitas ini delakukan melalui form setup rule seperti terlihat pada gambar 4.5 berikut ini.
Gambar 4.5. Form setup rule
69
Sebelum melakukan aktifitas diagnosa, jika diinginkan user dapat melakukan perubahan pada range nilai fungsi keanggotaan dengan cara melakukan setup fungsi keanggotaan melalui sub menu setup fungsi anggota. Namun jika user tidak melakukan perubahan ranges nilai pada fungsi keanggotaan, maka proses fuzzifikasi gejala dalam aktifitas
diagnosa tetap mengacu pada ranges nilai default fungsi
keanggotan. Menu setup fungsi keanggotaan untuk gejala bengkak pada bola mata, bengkak pada kelopak mata, bercak merah pada sklera, mata merah, mata terasa nyeri, mata terasa panas, peka terhadap cahaya dan perasaan mengganjal dapat dilihat pada gambar 4.6
Gambar 4.6. Form setup fungsi keanggotaan Gejala Penyakit
70
Fungsi keanggotaan untuk gejala keluar air mata, mata terasa gatal dan mata mengeluarkan kotoran dapat dilihat pada gambar 4.7 berikut ini
Gambar 4.7. Fungsi keanggotaan gejala keluar air mata, mata terasa gatal dan mata mengeluarkan kotoran Dan untuk gejala penglihatan kabur, fungsi keanggotaannya dapat diliahat pada gambar 4.8 berikut ini
Gambar 4.8. Fungsi keanggotaan gejala penglihatan kabur
71
Dalam melakukan operasi pada himpunan fuzzy, user dapat memilih operator fuzzy pada menu setup operator. Proses selanjutnya akan menggunakan operator yang dipilih oleh user. Jika User tidak memilih operator atau tidak merubah setup operator fuzzy, maka proses selanjutnya akan menggunakan operator standart. (Complemen Standart, Union Standart dan interseksi Standart). Menu setup operator dapat dilihat pada gambar 4.7 dibawah ini.
Gambar 4.9. Form setup operator fuzzy Kemudian user dapat melakukan sesi diagnosa dengan memilih gejala-gejala yang telah disediakan oleh sistem. Jika gejala yang dipilih adalah fuzzy maka user akan memberikan nilai keanggotaan fuzzy menggunakan track bar yang sudah disediakan dengan nilai minimal dan nilai maksimal didasarkan pada fungsi anggota masing-masing gejala. Dari pemilihan gejala tersebut akan dilakukan proses inferensi berdasarkan metode inferensi yang telah di jelaskan pada bab 3. Berikut ini diberikan contoh hasil diagnosa seorang user. (gambar 4.9) dengan operator fuzzy dari kelas standart
72
Gambar 4.10. Form diagnosa 4.2. PEMBAHASAN Pada bagian ini akan dilakukan analisis dan pembahasan terhadap contoh diagnosa seperti yang terlihat pada gabar 4.9 diatas. Dari gambar tersebut user memberikan data gejala kemudian dilakukan proses fuzzifikasi terhadap gejala tersebut dan mengasilkan hasil sebagai berikut :
73
Perasaan mengganjal dengan input : 36 Nilai fuzzy berat
:0
Nilai fuzzy sedang : 0,95 Nilai fuzzy ringan : 0,05 Mata Terasa Panas dengan input : 23 Nilai fuzzy berat
:0
Nilai fuzzy sedang
: 0,15
Nilai fuzzy ringan
: 0,85
Keluar air mata dengan input : 197 Nilai fuzzy berat
:0
Nilai fuzzy sedang : 0,33 Nilai fuzzy ringan : 0,94 Mata merah dengan input : 36 Nilai fuzzy berat
:0
Nilai fuzzy sedang : 0,8 Nilai fuzzy ringan : 0,2 Peka terhadap cahaya dengan input : 82 Nilai fuzzy berat
:1
Nilai fuzzy sedang : 0 Nilai fuzzy ringan : 0 Mata terasa gatal dengan input : 44 Nilai fuzzy berat
: 0,84
74
Nilai fuzzy sedang : 0,02 Nilai fuzzy ringan : 0 Terbentuk keropeng yang melekat erat pada tepi kelopak mata Gejala crisp nilai fuzzy : 1 Selanjutnya setelah diperoleh nilai masing-masing fungsi keanggotaannya
akan
dihitung nilai masing-masing rule, dengan menggunakan interpretasi dari operator yang dipilih pada menu setup operator. Dalam contoh pembahasan berikut ini digunakan operator komplemen standard, t-norm standard, s-norm standart dengan menggunakan implikasi Dienes-Reschter ( Persamaan 2.4
sampai 2.28) sebagai
berikut.
Pada rule-1 : μFP11 (x1 ,x2 ,….xn) = min (0.95 , 0.85, 0.94, 0.8, 1, 0.84,1) = 0,8 μFP21(y)
= μBlefaritis (y) = 0.98
μR1(x1 ,x2 ,….. x3 , y) = max((1-0.8), 0.98) = max (0.2 , 0,98) = 0,98 Pada rule-2 : μFP12 (x1 ,x2 ,….xn) = min (0.05 , 0, 0, 0,0, 0,0.84, 0, 1) = 0
75
μFP22(y)
= μKonjuctivitis (y) = 0.94
μR2(x1 ,x2 ,….. x3 , y) = max((1-0), 0.94) = max (1 , 0.94) = 1 Pada rule-3 : μFP13 (x1 ,x2 ,….xn) = min (0 , 0, 0, 0, 0, 0,0) = 0 μFP23(y)
= μselulitis ob (y) = 0.88
μR3(x1 ,x2 ,….. x3 , y) = max((1-0), 0.88) = max (1 , 0.88) = 1 Pada rule-4 : μFP14 (x1 ,x2 ,….xn) = min (0.33 , 0.2, 0, 0, 0, 0) = 0 μFP24(y)
= μskleretis (y) = 0.85
μR4(x1 ,x2 ,….. x3 , y) = max((1-0), 0.85) = max (1 , 0.85) = 1 Pada rule-5 : μFP15 (x1 ,x2 ,….xn) = min (0.94, 0.8, 0, 0, 0, 0,0.15, 0) = 0
76
μFP25(y)
= μulkus kornea (y) = 0.91
μR5(x1 ,x2 ,….. x3 , y) = max((1-0), 0.91) = max (1 , 0.91) = 1 Nilai kebenaran fakta dengan persamaan 2.26 adalah : μB (x1, x2, ..xn) = max (μFP11 (x1 , x2 .. xn ), μFP12 (x1 , x2 .. xn), μFP13 (x1 , x2 .. xn), μFP14 (x1 , x2 , xn), μFP15 (x1 , x2 , xn)). = max(0.8, 0,0,0,0) = 0.8 Nilai keseluruhan rule dengan Mamdani Combination (persamaan 2.27) adalah μR_tot (y) = max (μR1(y), μR2 (y) , μR3 (y), μR4 (y), μR5 (y)) = max (0.98,1,1,1,1) =1 Sehingga nilai inferensi jika menggunakan Modus Ponens Umum (persamaan 2.28) adalah μB1 (x1 , x2 , x3 , y) = sup (t (μB (x1, x2, x3) , μR_tot(y)) = sup (min ( 0.8 , 1)) = 0.8 Dari nilai inferensi yang diperoleh tersebut , didapat nilai kedekatan masing-masing penyakit seperti pada tabel 4.1 berikut ini.
77
Tabel 4.1. Tabel Nilai Kedekatan Penyakit Infeksi Mata Penyakit
Nilai
Nilai
Inferensi
Kedekatan
Nilai Rule
Blefaritis
0.98
0.8
0.18
Konjuctivitis
1
0.8
0.2
Selulitis Orbitalis
1
0.8
0.2
skleretis
1
0.8
0.2
ulkus kornea
1
0.8
0.2
Berdasarkan inferensi diatas ternyata dihasilkan bahwa identifikasi penyakit mata adalah sesuai dengan urutan nilai kedekatan dari paling kecil ke besar adalah penyakit Blefaritis, Konjuctivitis., Selulitis Orbitalis, skleretis , ulkus kornea . Dalam hal ini aturan R-1 di’fired’ sehingga kesimpulan yang dihasilkan berdasarkan gejala-gejala yang dimasukkan user adalah Blefaritis sebagi penyakit terdiagnosa. Untuk
gejala
penyakit
yang
sama,
penggunaan
keempat
operator
menghasilkan kesimpulan yang sama yaitu Blefarsitis sebagai penyakit yang terdeteksi dengan nilai inferensi tertinggi adalah operator standar. Perbandingan penggunaan operator dapat dilihat pada tabel 4.2 berikut ini. Tabel 4.2. Tabel perbandingan operator Operator fuzzy
Nilai Inferensi
Diagnosis
Standar
0.8
Blefaristis
Yager (λ = 2)
0.64
Blefaristis
Lukasiewicz
0.44
Blefaristis
Einstein
0.36
Blefaristis
78
BAB V PENUTUP
5.1. KESIMPULAN Dari penelitian ini dapat diberikan beberapa kesimpulan sebagai berikut : 1.
Sistem pendiagnosa penyakit infeksi mata menggunakan logika samar dapat digunakan untuk mendeteksi penyakit infeksi mata berdasarkan gejala-gejala yang diderita.
2.
Representasi pengetahuan yang digunakan adalah kaidah produksi
3.
Metode penalarannya adalah penalaran maju (forward chainning)
4.
Setup fungsi keanggotaan untuk menentukan batas-batas nilai jangkuaan sangat menentukan kesimpulan atau hasil diagnosa pada sistem ini.
5.
Penggunaan operator dari kelas operator standart menghasilkan nilai inferensi terbesar jika dibandingkan dengan penggunaan operator
dari
kelas operator lainnya.
5.2. SARAN Beberapa saran yang bisa diberikan adalah : 1. Sistem pendiagnosa penyakit infeksi mata menggunakan logika samar perlu untuk diperluas domainnya agar dapat juga dipakai untuk mendiagnosa penyakit mata secara umum. 2. Perlu dikembangkan berbasis web. 78
79
DAFTAR PUSTAKA
Medicastore “Apotik Online dan Media Informasi (http://www.medicastore.com/med/detail_pyk.php)
Obat
Penyakit”
Siler,W.2001, “Building Fuzzy Expert System”, (http://members.aol.com/wsiler). Singapore National Eye Center, 2007( http://www.snec.com.sg/eye/ocular.asp) Zebua,A.T dan Wahab,W.1995 “Perbandinagn aplikasi berbasis logika samar (fuzzy logic)” (http://www.elektroindonesia.com/elektro/no6b.html) Davis.,R., and Lenat.,D.B. 1982, Knowledge-Based System In Artificiall Intelligent, Mcgraw-Hill, USA Firebaugh, Morris W. 1988, Artificiall Intelligent A Knowledge-Based Approach, PWS-Kent Publishing Co, Boston. Giarratano, J, and Riley, G. 2005, Expert System Principle and Programming, PWS Publishing Company,Boston,MA. Hardana, B. 1999 Skripsi “Sistem Pakar Pendiagnosa Penyakit Mata”. S1 ILKOM. Universitas Gadjah Mada, Yogyakarta. Harmon, P, and King, David 1985, Expert System, John Wiley & Sons Inc, Canada. Harmon, P, and King, David 1985 b, Artificial Intelligent In Bussiness, John Wiley & Sons Inc, Canada. Ignizio, James P 1991, Introduction to Expert System, Mcgraw – Hill,Inc, USA. Kusumadewi, S. 2003 Artificial Intelegence Teknik dan Aplikasinya.; Graha Ilmu, Yogyakarta Mulyana, S.2000,Tesis “Model Mesin Inferensi pada Sistem Pakar dengan Logika Samar”. S2 ILKOM. Universitas Gadjah Mada, Yogyakarta. Sitanggang, IS. 2002, Tesis “Sistem Berbasis Pengetahuan Untuk Evaluasi Kesesuaian Lahan Untuk Tanaman Budidaya Dengan Mesin Inferensi Fuzzy”. S2 ILKOM. Universitas Gadjah Mada, Yogyakarta. Soeharjo. 1983,, Diktat Pengantar Teori Himpunan, UNS, Solo Teft, L. 1989,, Programming In Turbo Prolog With an Introduction to KnowledgeBased Systems, Prentice Hall Inc, New Jersey. Turban, E. 1995, Decision Support and Expert System, Management Support Systems, Prentice Hall Inc, New York. Wang, Lie-Xin. 1997, A Course Fuzzy System and Control, Prentice Hall, Inc, NJ.
80
LAMPIRAN A HIMPUNAN RULE/ATURAN PENYAKIT INFEKSI MATA Rule Blefaritis : JIKA
Perasaan mengganjal (SEDANG) AND Mata Terasa Panas (RINGAN) AND keluar air mata (RINGAN) AND Mata merah (SEDANG) AND Peka terhadap cahaya (BERAT) AND Mata terasa gatal (BERAT) AND Terbentuk keropeng yang melekat erat pada tepi kelopak mata
MAKA
Penyakit Blefaritis
Rule Konjungtivitis : JIKA
keluar air mata (SEDANG) AND Mata merah (BERAT) AND Mata terasa Nyeri (SEDANG) AND Peka terhadap cahaya (SEDANG) AND Penglihatan kabur (SEDANG) AND Mengeluarkan kotoran (BERAT) AND Mata terasa gatal (BERAT) AND Bengkak pada kelopak mata (SEDANG) AND Terbentuk keropeng yang melekat erat pada tepi kelopak mata
MAKA
Penyakit Konjungtivitis
Rule Selulitis Orbitalis : JIKA
Mata merah (BERAT) AND Mata terasa Nyeri (BERAT) AND Bengkak pada kelopak mata (BERAT) AND Mata menonjol AND Demam AND pergerakan mata terbatas AND Bengkak pada bola mata (BERAT)
MAKA
Penyakit Selulitis Orbitalis
81
Rule Skleritis : JIKA
keluar air mata (SEDANG) AND Mata merah (RINGAN) AND Mata terasa Nyeri (BERAT) AND Peka terhadap cahaya (RINGAN) AND Penglihatan kabur (RINGAN) AND Bercak merah pada sklera (SEDANG)
MAKA
Penyakit Skleritis
Rule Ulkus Kornea : JIKA
keluar air mata (RINGAN) AND Mata merah (SEDANG) AND Mata terasa Nyeri (RINGAN) AND Peka terhadap cahaya (RINGAN) AND Penglihatan kabur (BERAT)AND Mengeluarkan kotoran (SEDANG) AND Mata terasa gatal (SEDANG) AND Pada
kornea
tampak
keputihan MAKA
Penyakit Ulkus Kornea
bintik
nanah
yang
berwarna
kuning
82
LAMPIRAN B LISTING PROGRAM Deklarasi variabel global :
unit UGlobalDec; interface uses StdCtrls,ADODB; Type TPasien = Record id_Pasien : integer; Nama,Alamat,Tempat_Lahir : String; jk : Char; tgl_lahir : Tdatetime; End; TPenyakit = Record id_Penyakit : integer; Nama_Penyakit : String; End; TGejala = REcord id_gejala : Integer; nama_gejala :String; tipe_geja : char; End; TTempGejala = REcord id_gejala,nilai : Integer; nama_gejala :String; tipe_geja : char; End; TLingus1 = REcord id:integer; nama:string; nilaiFuzzy:Real; end; TAnteseden = REcord id_Penyakit:integer; id_Linguistik, Nama_Linguis,Nama_Penyakit:string; nilaiFuzzy,min:Real; end; THasil = Record id_Penyakit:Integer; Nama_Penyakit:String; UFP1,UFP2,UR,NDekat:Real;
83
end; TLingus = Array[1..75] of TLingus1; TArrAnteseden = Array[1..75] of TAnteseden; TArrGejalaLing =Array[1..75] of string; TArrhasil =Array[1..75] of THasil; TMode=(mb,mi,me); TModeOperator=(standart,lukasewiecz,yager,einstein); Var pasien :TPasien; penyakit :TPenyakit; gejala : TGejala; tp : TTempGejala; linguis :TLingus; arrAnteseden:TArrAnteseden; GejalaLing:TArrGejalaLing; varHasil:TArrhasil; ModeOperrator:TModeOperator; id_Pasien,id_Penyakit,id_gejala,Nama_Gejala,ketGlobal:Str ing; id_fa1,Jum_Rec_Anteseden,Jum_GL,Jum_varH:Integer; UB,UR_tot,UB1,lamda:Real; rc,RecSet1,rc2,rc3:_Recordset; implementation uses uGloFunc; end.
Procedure dan Fungsi global
unit uGloFunc; interface uses Windows, SysUtils, iniFiles, Forms,StrUtils, UGlobalDec,AdoDB, StdCtrls,DBGrids,Grids,QExtCtrls,ExtCtrls; function Check_Password(ps:String):Boolean; function Get_Pasien(var Pas:TPasien;ID:String) :boolean; function Get_Penyakit(var sick:TPenyakit;ID:String) :boolean; function Get_Gejala(var simpton:TGejala;ID:String) :boolean;
84
function fs_Monoton_Turun(n:integer):Real; function fs_Segitiga(n:integer):Real; function fs_Monoton_Naik(n:integer):Real; function fs_Penyakit(n:integer):double; function Ambil_NIlai_Input(no:string):Integer; function Ambil_NIlai_Input_Penyakit(no:string):Integer; function Ambil_NIlai_Fuzzy_Penyakit(no:string):real; function Standart_Intersaction(a,b:real):real; function Lukasiewicz_Intersaction(a,b:real):real; function Yager_Intersaction(a,b,lamda:real):real; function Einstein_Intersaction(a,b:real):real; function Implikasi_Dienes_Rescher(a,b:real):real; function GMP(a,b:real):real; procedure init_linguis(var l:TLingus); procedure init_ArrAnteseden(var A:TArrAnteseden); procedure init_GejalaLIng(var GL:TArrGejalaLing); Procedure init_varHasil(Var h:TArrHasil); const DBName = 'DBmata'; implementation uses uDM, Variants, ADOInt, Math; Var RecSet:_Recordset; procedure init_linguis(var l:TLingus); var i: Integer; Begin for i:=1 to 75 do begin l[i].id:=0; l[i].nama:=''; l[i].nilaiFuzzy:=0; end; end; procedure init_GejalaLIng(var GL:TArrGejalaLing); var i: Integer; Begin for i:=1 to 75 do begin GL[i]:=''; end; end;
85
procedure init_ArrAnteseden(var A:TArrAnteseden); var i,j: Integer; Begin for j:=1 to 75 do begin with A[j]do Begin id_Penyakit :=0; ID_Linguistik :=''; Nama_Linguis :=''; Nama_Penyakit :=''; NilaiFuzzy :=0; min :=0; end; end; with dm.ADOCom1 do Begin CommandText:='select a.id_Penyakit,a.Id_Linguistik,l.Linguis,k.Nama_Penyakit From Linguistik l '+ 'INNER JOIN Anteseden a ON a.ID_Linguistik=l.ID '+ 'INNER JOIN Penyakit k ON a.id_Penyakit=k.id_Penyakit Order By a.ID_Penyakit'; rc:=Execute; i:=1; Jum_Rec_Anteseden:=rc.RecordCount; if rc.RecordCount>0 Then BEgin rc.MoveFirst; while not rc.EOF do BEgin A[i].id_Penyakit :=rc.Fields[0].Value; A[i].ID_Linguistik :=rc.Fields[1].Value; A[i].Nama_Linguis :=rc.Fields[2].Value; A[i].Nama_Penyakit :=rc.Fields[3].Value; A[i].NilaiFuzzy :=0; A[i].min :=0; i:=i+1; rc.MoveNext; end; End; end; end; Procedure init_varHasil(Var h:TArrhasil); var i,count :integer; Begin
86
for i:=1 to 75 do with h[i] do begin id_Penyakit :=0; Nama_Penyakit :=''; UFP1 :=0; UFP2 :=0; UR :=0; NDekat :=1; end; //set nilai fuzzy setiap penyakit count:=1; Jum_varH:=0; with dm.ADOCom1 do begin CommandText:='Select id_Penyakit,Nama_Penyakit,Nilai_fuzzy From Penyakit Order By Id_Penyakit'; rc:=Execute; if rc.RecordCount>0 Then BEgin rc.MoveFirst; Jum_varH:=rc.RecordCount; while not rc.EOF do Begin h[count].id_Penyakit :=rc.Fields[0].Value; h[count].Nama_Penyakit:=rc.Fields[1].Value; h[count].UFP2 :=rc.Fields[2].Value; count:=count+1; rc.MoveNext; end; end; end; End; function Check_Password(ps:String):Boolean; var h:Boolean; BEgin h:=False; with dm.ADOCom1 DO Begin CommandText:='Select pass from pemakai where User_Name= :i AND Pass= md5(:j)'; Parameters[0].Value:=user; Parameters[1].Value:=ps; recset:=Execute; if RecSet.RecordCount>0 Then Begin h:=True; End;
87
end; result:=h; End; function Get_Penyakit(var sick:TPenyakit;ID:String) :boolean; var h:Boolean; Begin h:=False; if trim(ID)<>'' then Begin with dm.ADOCom1 do Begin CommandText:='Select * From Penyakit where ID_Penyakit= :n'; Parameters[0].Value:=ID; RecSet:=Execute; if RecSet.RecordCount>0 then Begin with sick do begin id_Penyakit := RecSet.Fields[0].Value; Nama_Penyakit := RecSet.Fields[1].Value; end; H:=True; end; End; end; Result:=h; End; function Get_Pasien(var Pas:TPasien;ID:String) :boolean; var JkStr:String; h:Boolean; Begin h:=False; if trim(ID)<>'' then Begin with dm.ADOCom1 do Begin CommandText:='Select * From Pasien where ID_Pasien= :n'; Parameters[0].Value:=ID; RecSet:=Execute; if RecSet.RecordCount>0 then Begin with Pas do begin id_Pasien := RecSet.Fields[0].Value; Nama := RecSet.Fields[1].Value; Alamat := RecSet.Fields[2].Value; JkStr := RecSet.Fields[3].Value;
88
jk := JkStr[1]; Tempat_Lahir := RecSet.Fields[4].Value; tgl_lahir end; H:=True; end; End; end; Result:=h; End;
:= RecSet.Fields[5].Value;
function Get_Gejala(var simpton:TGejala;ID:String) :boolean; var h:Boolean; tipestr:string; Begin h:=False; if trim(ID)<>'' then Begin with dm.ADOCom1 do Begin CommandText:='Select * From Gejala where ID_Gejala= :n'; Parameters[0].Value:=ID; RecSet:=Execute; if RecSet.RecordCount>0 then Begin with simpton do begin id_gejala := RecSet.Fields[0].Value; nama_gejala := RecSet.Fields[1].Value; tipestr := RecSet.Fields[2].Value; tipe_geja := tipestr[1]; end; H:=True; end; End; end; Result:=h; End; function fs_Monoton_Turun(n:integer):Real; var hasil:Real; t1mt,t2mt,t3mt,t4mt:integer; Begin hasil:=0; t1mt:=0;t2mt:=0;t3mt:=0;t4mt:=0;
89
with dm.ADOCom1 Do Begin CommandText:='Select t_1,t_2 From Fungsi_Anggota Where id_fungsi= :n'; Parameters[0].Value:=1; rc:=Execute; if rc.RecordCount>0 Then Begin rc.MoveFirst; t1mt:=rc.Fields[0].Value; t2mt:=rc.Fields[1].Value; end; end; if n<=t1mt Then begin hasil:=1; end else if ((n>=t1mt) and (n<=t2mt)) Then begin hasil:=((t2mt-n)/(t2mt-t1mt)); end else begin hasil:=0; end; result:=hasil; End; function fs_Segitiga(n:integer):Real; var hasil : Real; t1sg,t2sg,t3sg,t4sg:integer; Begin hasil:=0; t1sg:=0;t2sg:=0;t3sg:=0;t4sg:=0; with dm.ADOCom1 Do Begin CommandText:='Select t_1,t_2,t_3,t_4 From fungsi_Anggota Where id_fungsi= :n'; Parameters[0].Value:=2; rc:=Execute; if rc.RecordCount>0 Then Begin rc.MoveFirst; t1sg:=rc.Fields[0].Value; t2sg:=rc.Fields[1].Value; t3sg:=rc.Fields[2].Value; t4sg:=rc.Fields[3].Value; end; end; if ((n<=t1sg) or (n>=t4sg)) Then begin hasil:=0;
90
end else if ((n>=t1sg) and (n<=t2sg)) Then begin hasil:=((n-t1sg)/(t2sg-t1sg)); end else if ((n>=t2sg) and (n<=t3sg)) Then Begin hasil:=1; end else if ((n>=t3sg) and (n<=t4sg)) Then Begin Hasil:=((t4sg-n)/(t4sg-t3sg)); end; result:=hasil; end; function fs_Monoton_Naik(n:integer):Real; var hasil:Real; t1mn,t2mn,t3mn,t4mn:integer; Begin hasil:=0; t1mn:=0;t2mn:=0;t3mn:=0;t4mn:=0; with dm.ADOCom1 Do Begin CommandText:='Select t_1,t_2 From Fungsi_Anggota Where id_fungsi= :n'; Parameters[0].Value:=3; rc:=Execute; if rc.RecordCount>0 Then Begin rc.MoveFirst; t1mn:=rc.Fields[0].Value; t2mn:=rc.Fields[1].Value; end; end; if n<=t1mn Then begin hasil:=0; end else if ((n>=t1mn) and (n<=t2mn)) Then begin hasil:=((n-t1mn)/(t2mn-t1mn)); end else begin hasil:=1; end; result:=hasil; End;
91
function fs_Penyakit(n:integer):double; var h:double; BEgin h:=(0.08*n)+0.2; result:=h; end; function Ambil_NIlai_Input(no:string):Integer; var hasil:integer; begin hasil:=0; with dm.ADOCom1 do BEgin CommandText:='select nilai from Temp_Gejala where id_Gejala= :x'; Parameters[0].Value:=no; rc:=Execute; if rc.RecordCount>0 Then hasil:=rc.Fields[0].Value; end; Result:=hasil; end; function Ambil_NIlai_Input_Penyakit(no:string):Integer; var hasil:integer; begin hasil:=0; with dm.ADOCom1 do BEgin CommandText:='select input_fuzzy from penyakit where id_Penyakit= :x'; Parameters[0].Value:=no; rc:=Execute; if rc.RecordCount>0 Then hasil:=rc.Fields[0].Value; end; Result:=hasil; end; function Ambil_NIlai_Fuzzy_Penyakit(no:string):real; var hasil:real; begin hasil:=0; with dm.ADOCom1 do BEgin
92
CommandText:='select nilai_fuzzy from penyakit where id_Penyakit= :x'; Parameters[0].Value:=no; rc:=Execute; if rc.RecordCount>0 Then hasil:=rc.Fields[0].Value; end; Result:=hasil; end; function Standart_Intersaction(a,b:real):real; begin result:=Min(a,b); end; function Lukasiewicz_Intersaction(a,b:real):real; begin result:=a*b; end; function Yager_Intersaction(a,b,lamda:real):real; var h,p,q,r,Hmin:Real; Begin p:=Power((1-a),lamda); q:=Power((1-b),lamda); r:=Power((p+q),(1/lamda)); Hmin:=Min(1,r); result:=1-HMin; end; function Einstein_Intersaction(a,b:real):real; begin result:=(a*b)/(2-((a+b)-(a*b))); end; function Implikasi_Dienes_Rescher(a,b:real):real; Begin result:=Max((1-a),b); end; function GMP(a,b:real):real; begin result:=Max(Min(a,b),0); end; end.