Sistem Pakar Bahan Dasar
Sistem Pakar Bahan Dasar
Sistem Pakar Bahan Dasar
Referensi:
Durkin. Expert Systems: Design and Development. MacMillan.
Dologite. Developing Knowledge Based Systems using VP Expert.
MacMillan.
Explanation Knowledge
Facility Base
user User
Interface
Inference Working
Engine Memory
Knowledge Base
Berisi kumpulan informasi atau pengetahuan khusus pada area
masalah yang diberikan oleh pakar.
Knowledge Engineer: seorang spesialis komputer yang mempunyai
kemampuan menambang pengetahuan pakar dan
mentransferkannya ke dalam Knowledge Base yang
terkomputerisasi.
Representasi pengetahuan secara umum adalah rule.
Working Memory
1
Berisi fakta-fakta yang telah ditemukan selama proses konsultasi.
Fakta ini bisa berupa:
- Informasi yang diberikan oleh user
- Konklusi yang diberikan oleh rule
Inference Engine
Adalah mesin pengetahuan yang dimodelkan menurut reasoning
seorang pakar.
Merupakan otak dari sistem pakar.
Dapat dibuat secara manual oleh programmer, tetapi sistem pakar
sekarang ini umumnya dibuat menggunakan sebuah shell yang
mempunyai built-in inference engine. Shell ini disebut Expert
System Shell. Contoh ES Shell: VP Expert.
Explanation Facility
Menyimpan history selama konsultasi seorang user.
History berisi rule-rule yang digunakan untuk membangkitkan
konklusi akhir.
User Interface
Mengakomodasi interaksi antara sistem pakar dan user,
menggunakan bahasa alami.
Model umum user interface adalah pertanyaan-pertanyaan dengan
sejumlah opsi jawaban.
Contoh:
IF bola berwarna merah
THEN saya menyukai bola itu
2
Rule dapat mempunyai banyak premis yang digabungkan dengan
AND (conjunction), atau OR (disjunction), atau kombinasi keduanya.
Rule juga dapat berisi bagian ELSE, yang akan dinyatakan TRUE jika
salah satu premisnya FALSE.
Contoh:
IF jam sekarang lewat jam 10
AND hari ini adalah Senin sampai Jumat
AND saya sedang di rumah
OR bos menelepon saya dan mengatakan saya terlambat bekerja
THEN saya terlambat bekerja
ELSE saya tidak terlambat bekerja
Inference
Sumber: Durkin, halaman 94-95, 60-61
Contoh inference:
KNOWLEDGE BASE
IF Bola berwarna merah
Step 3
THEN Saya menyukai bola
itu
Step 5 IF Saya menyukai bola itu
Forward Chaining
Sumber: Durkin, halaman 100-103
Memasukkan semua
informasi yang diketahui
user ke dalam working
memory
Semua rule sudah dijalankan?
T
Memeriksa rule
berikutnya yang
F belum pernah
dijalankan
T
Menambahk F
Semua premis Masih ada
an konklusi T F
cocok dengan working rule lagi
ke working
memory
memory
F
STOP
4
Contoh rule:
RULE 1
IF pasien merasa tenggorokannya sakit
AND pasien diduga terinfeksi bakteri
THEN pasien terkena radang tenggorokan
RULE 2
IF suhu pasien > 100
THEN pasien terkena demam
RULE 3
IF lama pasien sakit > 1 bulan
AND pasien terkena demam
THEN pasien diduga terinfeksi bakteri
5
Rule 2 dijalankan Suhu pasien = 102
Pasien terkena demam Lama pasien sakit = 2 bulan
Pasien merasa
tenggorokannya sakit
Pasien terkena demam
Siklus 2
6
Siklus 3
Siklus 4
Contoh rule:
RULE 1
IF The Steelers main hari ini
AND saya mempunyai uang $20
THEN saya seharusnya pergi ke stadion
7
RULE 2
IF film favorit saya main hari ini
AND saya mempunyai uang $20
THEN saya seharusnya pergi ke bioskop
8
Strategi sederhana mengatasi konflik:
1. Menetapkan sebuah goal.
2. Menghentikan chaining jika goal telah diperoleh.
Berdasarkan contoh sebelumnya:
Goal: saya seharusnya pergi ke mana?
Setelah rule 1 dijalankan dan menghasilkan konklusi: ke stadion,
maka sistem dihentikan, dan rekomendasi yang dihasilkan adalah
ke stadion.
Backward Chaining
Sumber: Durkin, halaman 106-109
Contoh rule:
RULE 1
IF pasien merasa tenggorokannya sakit
AND pasien diduga terinfeksi bakteri
THEN pasien terkena radang tenggorokan
RULE 2
IF suhu pasien > 100
THEN pasien terkena demam
RULE 3
IF lama pasien sakit > 1 bulan
AND pasien terkena demam
THEN pasien diduga terinfeksi bakteri
9
10
Inference menurut Backward Chaining:
Step 1
Goal: pasien terkena radang tenggorokan? -> belum diketahui
Step 2
Cari rule dengan konklusi Pasien terkena radang tenggorokan ->
Rule 1
RULE 1
IF pasien merasa tenggorokannya sakit
AND pasien diduga terinfeksi bakteri
THEN pasien terkena radang tenggorokan
Step 3
Premis 1 Rule 1: pasien merasa tenggorokannya sakit? -> belum
diketahui
Step 4
Cari rule dengan konklusi Pasien merasa tenggorokannya sakit?
-> tidak ditemukan
Step 5
Menanyakan Pasien merasa tenggorokannya sakit?
Q: Apakah pasien merasa tenggorokannya sakit?
A: True WORKING MEMORY
Step 6 Pasien merasa
Kembali ke Step 2 (Rule 1) tenggorokannya sakit
Premis 2 Rule 1: pasien diduga terinfeksi bakteri? -> belum
diketahui
Step 7
Cari rule dengan konklusi Pasien diduga terinfeksi bakteri? -> Rule 3
RULE 3
IF lama pasien sakit > 1 bulan
AND pasien terkena demam
THEN pasien diduga terinfeksi bakteri
Step 8
Premis 1 Rule 3: lama pasien sakit > 1 bulan? -> belum diketahui
Step 9
Cari rule dengan konklusi Lama pasien sakit > 1 bulan? -> tidak
ditemukan
Step 10
WORKING MEMORY
Menanyakan Lama pasien sakit > 1 bulan?
11 Pasien merasa
tenggorokannya sakit
Lama pasien sakit > 1 bulan
Q: Berapa lama pasien sakit?
A: 2 bulan
Step 11
Kembali ke Step 7 (Rule 3)
Premis 2 Rule 3: pasien terkena demam? -> belum diketahui
Step 12
Cari rule dengan konklusi Pasien terkena demam? -> Rule 2
RULE 2
IF suhu pasien > 100
THEN pasien terkena demam
Step 13
Premis 1 Rule 2: suhu pasien > 100? -> belum diketahui
Step 14
Cari rule dengan konklusi
Suhu pasien > 100? -> tidak ditemukan WORKING MEMORY
Step 15 Pasien merasa
Menanyakan Suhu pasien > 100? tenggorokannya sakit
Q: Berapa suhu pasien? Lama pasien sakit > 1 bulan
A: 102 Suhu pasien > 100
WORKING MEMORY
Step 16
Pasien merasa
Kembali ke Step 12 (Rule 2)
tenggorokannya sakit
Rule 2 dijalankan
Lama pasien sakit > 1 bulan
Konklusi: Pasien terkena demam
Suhu pasien > 100
Step 17
Pasien terkena demam
Kembali ke Step 7 (Rule 3) WORKING MEMORY
Rule 3 dijalankan Pasien merasa
Konklusi: Pasien diduga terinfeksi bakteri
tenggorokannya sakit
Step 18 Lama pasien sakit > 1 bulan
Kembali ke Step 2 (Rule 1) Suhu pasien > 100
Rule 1 dijalankan Pasien terkena demam
Konklusi: Pasien terkena radang Pasien diduga terinfeksi
tenggorokan WORKING MEMORY
Step 19 Pasien merasa
Goal telah diketahui -> True tenggorokannya sakit
Lama pasien sakit > 1 bulan
Suhu pasien > 100
Pasien terkena demam
Pasien diduga terinfeksi
bakteri
12
Forward Chaining dan Backward Chaining
Sumber: Durkin, halaman 112-116
13
Kombinasi Forward Chaining dan Backward Chaining:
- Separate systems
Perancang sistem pakar membagi masalah menjadi subtask.
Menentukan subtask yang harus dikerjakan -> FORWARD
Menyelesaikan masalah dalam sebuah subtask -> BACKWARD
Contoh:
Diagnosa penyakit:
Semua fakta awal diambil untuk menentukan hipotesis ->
FORWARD
Diagnosa penyakit untuk membuktikan hipotesis -> BACKWARD
- Demon rule
Ada sejumlah demon rule.
Sebuah demon rule terdiri atas sejumlah rule.
Penyelesaian dalam sebuah demon rule -> BACKWARD
Sebuah demon rule mempengaruhi demon rule yang lain ->
FORWARD
15
Contoh: Sistem Pakar layanan HMO (Health Maintenance
Organization)
Tahap 1: isolasi area
HMO
Layanan HMO
Level Layanan
Tahap 3: membuat diagram ketergantungan
16
?anggota
(ya, tidak)
status_anggo
?id_valid ta
(ya, tidak) ok
?alasan layanan
(kasus_baru, kasus_lanjutan, informasi_lainnya) level_1
level_2
?temperatur level_3
(normal, abnormal, tidak_tahu)
informasi_lainnya
masalah
serius bukan_anggota
?gejala_lain tidak_serius
(ada, tidak_ada)
18
direduksi menjadi:
Rul status_anggo Alasan masalah layanan
e ta
1 ok kasus_baru serius level_1
2 ok kasus_baru tidak_seri level_2
us
3 ok kasus_lanjutan serius level_1
4 ok kasus_lanjutan tidak_seri level_3
us
5-6 ok informasi_lainn X informasi_lainn
ya ya
7- tidak_ok X X bukan_anggota
12
RULE 1
IF status_anggota = ok
AND alasan = kasus_baru OR alasan = kasus_lanjutan
AND masalah = serius
THEN layanan = level_1;
RULE 2
IF status_anggota = ok
AND alasan = kasus_baru
AND masalah = tidak_serius
THEN layanan = level_2;
RULE 3
IF status_anggota = ok
AND alasan = kasus_lanjutan
AND masalah = tidak_serius
THEN layanan = level_3;
RULE 4
IF status_anggota = ok
AND alasan = informasi_lainnya
THEN layanan = informasi_lainnya;
RULE 5
IF status_anggota = tidak_ok
19
THEN layanan = bukan_anggota;
direduksi menjadi:
Rule anggota id_valid status_anggota
1 ya ya Ok
2 ya tidak tidak_ok
3-4 tidak x tidak_ok
20
direduksi menjadi:
Rule Suhu gejala_lain masalah
1 Normal Ada serius
2 Normal tidak_ada tidak_serius
3-4 Abnormal X serius
5-6 tidak_tahu X serius
22
clauses
mother_child(trude, sally).
father_child(tom, sally).
father_child(tom, erica).
father_child(mike, tom).
sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).
parent_child(X, Y) :- father_child(X, Y).
parent_child(X, Y) :- mother_child(X, Y).
Contoh goal:
sibling(sally, erica)
PROLOG engine akan menjawab: Yes
domains
list = symbol*
database
known(symbol, symbol)
predicates
actions
layanan(symbol)
status_anggota(symbol)
masalah(symbol)
23
anggota(symbol)
id_valid(symbol)
alasan(symbol)
suhu(symbol)
gejala_lain(symbol)
ask(string, symbol, symbol, list)
check_value(string, symbol, symbol, symbol, list)
member(symbol, list)
clauses
actions :- retractall(known(_, _)),
write(Selamat datang di Layanan
HMO), nl,
layanan(X),
write(Rekomendasi layanan: , X).
layanan(level_1) :- status_anggota(ok),
alasan(kasus_baru),
masalah(serius).
layanan(level_1) :- status_anggota(ok),
alasan(kasus_lanjutan),
masalah(serius).
layanan(level_2) :- status_anggota(ok),
alasan(kasus_baru),
masalah(tidak_serius).
layanan(level_3) :- status_anggota(ok),
alasan(kasus_lanjutan),
masalah(tidak_serius).
layanan(informasi_lain) :- status_anggota(ok),
alasan(informasi_lainnya).
layanan(bukan_anggota) :- status_anggota(tidak_ok).
status_anggota(ok) :- anggota(ya),
id_valid(ya).
status_anggota(tidak_ok) :- anggota(ya),
id_valid(tidak).
status_anggota(tidak_ok) :- anggota(tidak).
24
25
masalah(serius) :- suhu(normal),
gejala_lain(ada).
masalah(tidak_serius) :- suhu(normal),
gejala_lain(tidak_ada).
masalah(serius) :- suhu(abnormal).
masalah(serius) :- suhu(tidak_tahu).
26
member(X, [X|_]) :- !.
member(X, [_|T]) :- member(X, T).
27
goal
actions
Contoh:
Himpunan S adalah seperti berikut:
status_anggot Alasan Masalah Layanan
a
Ok kasus_baru Serius level_1
Ok kasus_baru tidak_serius level_2
Ok kasus_lanjutan Serius level_1
Ok kasus_lanjutan tidak_serius level_3
Ok informasi_lainnya Serius informasi_lainnya
Ok informasi_lainnya tidak_serius informasi_lainnya
tidak_ok kasus_baru Serius bukan_anggota
tidak_ok kasus_baru tidak_serius bukan_anggota
tidak_ok kasus_lanjutan serius bukan_anggota
tidak_ok kasus_lanjutan tidak_serius bukan_anggota
tidak_ok informasi_lainnya serius bukan_anggota
tidak_ok informasi_lainnya tidak_serius bukan_anggota
30
Gain(S, status_anggota)
= Entropy(S) - (6/12) * Entropy(Sok) - (6/12) * Entropy(Stidak_ok)
= 1,959147917 - (6/12) * 1,918295834 - (6/12) * 0
= 1,959147917 - 0,959147917 = 1
31
status_anggota
ok tidak_ok
Entropy(Sok)
= - (2/6) log2 (2/6) - (1/6) log2 (1/6) - (1/6) log2 (1/6) - (2/6) log2
(2/6)
= 0,528320834 + 0,430827084 + 0,430827084 + 0,528320834 =
1,918295834
32
= 1,918295834 - (2/6) * 1 - (2/6) * 1 - (2/6) * 0
= 1,918295834 - 0,333333333 - 0,333333333 0 = 1,251629168
33
Ada 2 variasi nilai dalam masalah yaitu serius dan tidak_serius.
Entropy(Sok,serius)
= - (2/3) log2 (2/3) - (1/3) log2 (1/3)
= 0,389975001 + 0,528320834 = 0,918295834
Entropy(Sok,tidak_serius)
= - (1/3) log2 (1/3) - (1/3) log2 (1/3) - (1/3) log2 (1/3)
= 0,528320834 + 0,528320834 + 0,528320834 = 1,584962501
Gain(Sok, masalah)
= Entropy(Sok) - (3/6) * Entropy(Sok,serius) - (3/6) * Entropy(Sok,tidak_serius)
= 1,251629168 - (3/6) * 0,918295834 - (3/6) * 1,584962501
= 1,251629168 - 0,459147917 - 0,792481250 = 0,000000001
status_anggota
ok tidak_ok
alasan
kasus_baru kasus_lanjutaninformasi_lainnya
status_anggota
ok tidak_ok
alasan bukan_anggota
kasus_baru kasus_lanjutaninformasi_lainnya
34
dan seterusnya... hingga menghasilkan pohon keputusan seperti
berikut:
status_anggota
ok tidak_ok
alasan bukan_anggota
kasus_baru kasus_lanjutaninformasi_lainnya
masalah masalah informasi_lainnya
seriustidak_serius seriustidak_serius
level_1 level_2 level_1 level_3
RULE 1
IF status_anggota = ok
AND alasan = kasus_baru
AND masalah = serius
THEN layanan = level_1;
RULE 2
IF status_anggota = ok
AND alasan = kasus_baru
AND masalah = tidak_serius
THEN layanan = level_2;
RULE 3
IF status_anggota = ok
AND alasan = kasus_lanjutan
AND masalah = serius
THEN layanan = level_1;
RULE 4
IF status_anggota = ok
AND alasan = kasus_lanjutan
AND masalah = tidak_serius
THEN layanan = level_3;
35
RULE 5
IF status_anggota = ok
AND alasan = informasi_lainnya
THEN layanan = informasi_lainnya;
RULE 6
IF status_anggota = tidak_ok
THEN layanan = bukan_anggota;
Certainty
Sumber: Durkin, halaman 332-353
Dologite, halaman 85-89
Contoh:
IF ada awan hitam
THEN akan turun hujan CF = 0.8
Diketahui: kejadian ada awan hitam dengan CF = 0.5
maka nilai certainty untuk konklusi akan turun hujan adalah:
CF(akan turun hujan) = CF(ada awan hitam) * CF(RULE) = 0.5 * 0.8
= 0.4
37
sehingga konklusi akan turun hujan dapat diwakili dengan frase
maybe turun hujan.
Contoh:
IF langit gelap
AND angin bertiup kencang
THEN akan turun hujan CF = 0.8
Diketahui: kejadian langit gelap dengan CF = 1.0 dan angin bertiup
kencang dengan CF = 0.7, maka nilai certainty untuk konklusi akan
turun hujan adalah:
CF(akan turun hujan) = min(CF(langit gelap), CF(angin bertiup
kencang)) * CF(RULE)
= min(1.0, 0.7) * 0.8 = 0.56
Contoh:
IF langit gelap
OR angin bertiup kencang
THEN akan turun hujan CF = 0.9
Diketahui: kejadian langit gelap dengan CF = 1.0 dan angin bertiup
kencang dengan CF = 0.7, maka nilai certainty untuk konklusi akan
turun hujan adalah:
CF(akan turun hujan) = max(CF(langit gelap), CF(angin bertiup
kencang)) * CF(RULE)
= max(1.0, 0.7) * 0.9 = 0.9
38
Rumus menghitung ketidakpastian sebuah konklusi yang
didapatkan dari dua buah rule:
CFCOMBINE(CF1, CF2) = CF1 + CF2 * (1 - CF1); jika semuanya > 0
CFCOMBINE(CF1, CF2) = (CF1 + CF2) / (1 - min(|CF1|, |CF2|)); jika salah
satu < 0
CFCOMBINE(CF1, CF2) = CF1 + CF2 * (1 + CF1); jika semuanya < 0
Contoh:
IF ahli cuaca mengatakan akan hujan
THEN akan turun hujan CF = 0.8
IF petani mengatakan akan hujan
THEN akan turun hujan CF = 0.8
Diketahui: kejadian ahli cuaca mengatakan akan hujan dengan CF =
0.6, dan petani mengatakan akan turun hujan dengan CF = 0.5;
maka certainty untuk konklusi akan turun hujan adalah:
CF1(akan turun hujan) = CF(ahli cuaca mengatakan akan hujan) *
CF(RULE1)
= 0.6 * 0.8 = 0.48
CF2(akan turun hujan) = CF(petani mengatakan akan hujan) *
CF(RULE2)
= 0.5 * 0.8 = 0.4
CFCOMBINE(akan turun hujan) = CF1 + CF2 * (1 - CF1) = 0.48 + 0.4 * (1
0.48) = 0.688
Contoh lengkap:
RULE 1
IF cuaca terlihat buruk
AND saya malas bermain bola
THEN saya seharusnya tidak ke lapangan bola CF = 0.9
RULE 2
IF saya percaya akan hujan
THEN cuaca terlihat buruk CF = 0.8
RULE 3
IF saya percaya akan hujan
AND ahli cuaca mengatakan akan hujan
THEN saya malas bermain bola CF = 0.9
RULE 4
IF ahli cuaca mengatakan akan hujan
THEN cuaca terlihat buruk CF = 0.7
39
RULE 5
IF cuaca terlihat buruk
THEN saya malas bermain bola CF = 0.95
STEP 1
Rule dengan konklusi saya seharusnya tidak ke lapangan bola =>
RULE 1
Premis pertama: cuaca terlihat buruk
STEP 2
Rule dengan konklusi cuaca terlihat buruk => RULE 2 dan RULE 4
Ke RULE 2 dulu (sebuah premis)
Premis: saya percaya akan hujan
STEP 3
Rule dengan konklusi saya percaya akan hujan => tidak ada
User ditanyai saya percaya akan hujan => dijawab: ya dengan CF
= 0.95
Berarti: CF(saya percaya akan hujan) = 0.95
STEP 4
Kembali ke RULE 2
Menghitung CF(cuaca terlihat buruk) => rumus rule dengan sebuah
premis
CF(cuaca terlihat buruk) = CF(saya percaya akan hujan) * CF(RULE
2)
= 0.95 * 0.8 = 0.76
STEP 5
Rule dengan konklusi cuaca terlihat buruk => masih ada RULE 4
Ke RULE 4 (sebuah premis)
Premis: ahli cuaca mengatakan akan hujan
STEP 6
Rule dengan konklusi ahli cuaca mengatakan akan hujan => tidak
ada
User ditanyai ahli cuaca mengatakan akan hujan => dijawab:
tidak dengan
CF = 0.85
Berarti: CF(ahli cuaca mengatakan akan hujan) = -0.85
40
STEP 7
Kembali ke RULE 4
Menghitung CF(cuaca terlihat buruk) => rumus rule dengan sebuah
premis:
CF(cuaca terlihat buruk) = CF(ahli cuaca mengatakan akan hujan) *
CF(RULE 4)
= -0.85 * 0.7 = -0.595
STEP 8
Rule dengan konklusi cuaca terlihat buruk => RULE 2 dan RULE 4
Menghitung CFCOMBINE(cuaca terlihat buruk) => kasus 2: salah satu <
0
CFCOMBINE(cuaca terlihat buruk) = (CF1 + CF2) / (1 - min(|CF1|, |CF2|))
= (0.85 - 0.595) / (1 - min(0.85, 0.595)) = 0.6296
41
STEP 9
Kembali ke RULE 1
Premis kedua: saya malas bermain bola
STEP 10
Rule dengan konklusi saya malas bermain bola => RULE 3 dan
RULE 5
Ke RULE 3 dulu (dua premis)
Premis pertama: saya percaya akan hujan
Sudah dijawab dengan CF(saya percaya akan hujan) = 0.95
Premis kedua: ahli cuaca mengatakan akan hujan
Sudah dijawab dengan CF(ahli cuaca mengatakan akan hujan) =
-0.85
Menghitung CF(saya malas bermain bola) => rumus conjunctive
rule:
CF(saya malas bermain bola) = min(CF(saya percaya akan hujan),
CF(ahli cuaca mengatakan akan hujan))
*
CF(RULE 3)
= min(0.95, -0.85) * 0.9 = -0.765
STEP 11
Rule dengan konklusi saya malas bermain bola => masih ada
RULE 5
Ke RULE 5 (sebuah premis)
Premis: cuaca terlihat buruk
Sudah diketahui dengan CF(cuaca terlihat buruk) = 0.6296 (dari
STEP 8)
Menghitung CF(saya malas bermain bola) => rumus rule dengan
sebuah premis:
CF(saya malas bermain bola) = CF(cuaca terlihat buruk) * CF(RULE
5)
= 0.6296 * 0.95 = 0.5981
STEP 12
Rule dengan konklusi saya malas bermain bola => RULE 3 dan
RULE 5
Menghitung CFCOMBINE(saya malas bermain bola) => kasus 2: salah
satu < 0
CFCOMBINE(saya malas bermain bola) = (CF1 + CF2) / (1 - min(|CF1|, |
CF2|))
42
= (-0.765 + 0.5981) / (1 - min(0.765, 0.5981)) = -0.4153
STEP 13
Kembali ke RULE 1
Menghitung CF(saya seharusnya tidak ke lapangan bola) => rumus
conjunctive rule:
CF(saya seharusnya tidak ke lapangan bola)
= min(CF(cuaca terlihat buruk), CF(saya malas bermain bola)) *
CF(RULE 1)
= min(0.6296, -0.4153) * 0.9 = -0.3738
Kesimpulan: saya TIDAK seharusnya tidak ke lapangan bola, atau
saya seharusnya ke lapangan bola, dengan CF = 0.3738
Hasil CF rendah bisa kita tolak, dengan mengimplementasikan yang
namanya TRUTHTHRESH (threshold kebenaran).
Contoh:
seandainya TRUHTHRESH = 0.6
STEP 1
Rule dengan konklusi saya seharusnya tidak ke lapangan bola =>
RULE 1
Premis pertama: cuaca terlihat buruk
STEP 2
Rule dengan konklusi cuaca terlihat buruk => RULE 2 dan RULE 4
Ke RULE 2 dulu (sebuah premis)
Premis: saya percaya akan hujan
STEP 3
Rule dengan konklusi saya percaya akan hujan => tidak ada
User ditanyai saya percaya akan hujan => dijawab: ya, dengan
CF = 0.95
Berarti: CF(saya percaya akan hujan) = 0.95
STEP 4
Kembali ke RULE 2
Menghitung CF(cuaca terlihat buruk) => rumus rule dengan sebuah
premis
CF(cuaca terlihat buruk) = CF(saya percaya akan hujan) * CF(RULE
2)
= 0.95 * 0.8 = 0.76
STEP 5
43
Rule dengan konklusi cuaca terlihat buruk => masih ada RULE 4
Ke RULE 4 (sebuah premis)
Premis: ahli cuaca mengatakan akan hujan
STEP 6
Rule dengan konklusi ahli cuaca mengatakan akan hujan => tidak
ada
User ditanyai ahli cuaca mengatakan akan hujan => dijawab:
tidak, dengan
CF = 0.85
Berarti: CF(ahli cuaca mengatakan akan hujan) = -0.85
STEP 7
Kembali ke RULE 4
Menghitung CF(cuaca terlihat buruk) => rumus rule dengan sebuah
premis:
CF(cuaca terlihat buruk) = CF(ahli cuaca mengatakan akan hujan) *
CF(RULE 4)
= -0.85 * 0.7 = -0.595 => ditolak
STEP 8
Rule dengan konklusi cuaca terlihat buruk => RULE 2 diterima,
RULE 4 ditolak
CF(cuaca terlihat buruk) = 0.76
STEP 9
Kembali ke RULE 1
Premis kedua: saya malas bermain bola
STEP 10
Rule dengan konklusi saya malas bermain bola => RULE 3 dan
RULE 5
Ke RULE 3 dulu (dua premis)
Premis pertama: saya percaya akan hujan
Sudah dijawab dengan CF(saya percaya akan hujan) = 0.95
Premis kedua: ahli cuaca mengatakan akan hujan
Sudah dijawab dengan CF(ahli cuaca mengatakan akan hujan) =
-0.85
Menghitung CF(saya malas bermain bola) => rumus conjunctive
rule:
CF(saya malas bermain bola) = min(CF(saya percaya akan hujan),
CF(ahli cuaca mengatakan akan hujan))
*
44
CF(RULE 3)
= min(0.95, -0.85) * 0.9 = -0.765
STEP 11
Rule dengan konklusi saya malas bermain bola => masih ada
RULE 5
Ke RULE 5 (sebuah premis)
Premis: cuaca terlihat buruk
Sudah diketahui dengan CF(cuaca terlihat buruk) = 0.76 (dari STEP
8)
Menghitung CF(saya malas bermain bola) => rumus rule dengan
sebuah premis:
CF(saya malas bermain bola) = CF(cuaca terlihat buruk) * CF(RULE
5)
= 0.76 * 0.95 = 0.722
STEP 12
Rule dengan konklusi saya malas bermain bola => RULE 3 dan
RULE 5
Menghitung CFCOMBINE(saya malas bermain bola) => kasus 2: salah
satu < 0
CFCOMBINE(saya malas bermain bola) = (CF1 + CF2) / (1 - min(|CF1|, |
CF2|))
= (-0.765 + 0.722) / (1 - min(0.765, 0.722)) = -0.1547 => ditolak
STEP 13
Kembali ke RULE 1
Premis saya malas bermain bola itu tidak diketahui, sehingga
konklusi saya seharusnya tidak ke lapangan bola juga tidak bisa
diketahui.
Pada VP Expert:
CNF hanya bernilai positif, dalam rentang 0 sampai 100.
CNF = 100 dihitung sebagai CF = 1 (CF = CNF / 100).
Jika premis ditolak, maka rule ditolak.
Disjunctive rule: menggunakan rumus kombinasi dua rule versi
Durkin, kasus pertama yaitu semuanya > 0.
Seandainya ada dua rule atau lebih yang mendefinisikan sebuah
konklusi yang sama, dan apabila rule pertama telah diterima,
maka rule yang lain tidak diperiksa.
45
Karena rule kedua tidak diperiksa, maka anda harus
menggabungkan dua rule atau lebih yang mendefinisikan sebuah
konklusi yang sama, menjadi sebuah disjunctive rule, agar rumus
kombinasi dua rule terpakai.
46