Upload
damayantielisabethsibarani
View
246
Download
1
Embed Size (px)
Citation preview
8/2/2019 Praktikum 3 Sistem pakar
1/48
PRAKTIKUM 3 SISTEM PAKAR
Wildcard Pattern
Rule dengan probability (Certainty Factor)
Asisten Praktikum Sistem pakarDepartemen Ilmu KomputerFakultas MIPAIPB
8/2/2019 Praktikum 3 Sistem pakar
2/48
PREVIOUSLY @ PRAKTIKUM 2
(deftemplate mahasiswa
(slot nama)
(slot nrp)
(slot nilai))
(deftemplate mutu
(slot nilai-mutu))
(deffacts ilkom (mahasiswa (nama aa)
(nrp g61)
(nilai 10))
(mahasiswa (nama bb)
(nrp g62)
(nilai 9))
(mahasiswa (nama cc)
(nrp g63) (nilai 8))
(mahasiswa (nama df)
(nrp g64)
(nilai 7))
(mahasiswa (nama ee)
(nrp g65)
(nilai 6))
(mahasiswa (nama fd)
(nrp g66)
(nilai 5)))
(defrule n1 (mahasiswa (nilai 10))
=>
(assert (mutu
(nilai-mutu A))))
(defrule n2
(mahasiswa (nilai 9))
=> (assert (mutu
(nilai-mutu A))))
(defrule n3
(mahasiswa (nilai 8))
=>
(assert (mutu
(nilai-mutu B))))
(defrule n4
(mahasiswa (nilai 7))
=>
(assert (mutu
(nilai-mutu B))))
(defrule n5
(mahasiswa (nilai 6))
=>
(assert (mutu
(nilai-mutu C))))
(defrule n6
(mahasiswa (nilai 5))
=>
(assert (mutu (nilai-mutu C))))
Masih ingatkahini???
8/2/2019 Praktikum 3 Sistem pakar
3/48
PREVIOUSLY @ PRAKTIKUM 2
Hasilnya???
8/2/2019 Praktikum 3 Sistem pakar
4/48
8/2/2019 Praktikum 3 Sistem pakar
5/48
SUPAYA LEBIH ELEGAN
(deftemplate mahasiswa
(slot nama)
(slot nrp)
(slot nilai))
(deftemplate mutu
(slot nrp)
(slot nilai-mutu))
(deffacts ilkom
(mahasiswa (nama aa)
(nrp g61)
(nilai 10))
(mahasiswa (nama bb)
(nrp g62)
(nilai 9))
(mahasiswa (nama cc)
(nrp g63) (nilai 8))
(mahasiswa (nama df)
(nrp g64)
(nilai 7))
(mahasiswa (nama ee)
(nrp g65)
(nilai 6))
(mahasiswa (nama fd)
(nrp g66)
(nilai 5)))
(defrule n1
(mahasiswa (nrp ?x)(nilai 10))
=>
(assert (mutu
(nrp ?x)(nilai-mutu A))))
(defrule n2
(mahasiswa (nrp ?x)(nilai 9))
=>
(assert (mutu (nrp ?x)(nilai-mutu A))))
(defrule n3
(mahasiswa (nrp ?x)(nilai 8))
=>
(assert (mutu
(nrp ?x)(nilai-mutu B))))
(defrule n4
(mahasiswa (nrp ?x)(nilai 7))
=>
(assert (mutu
(nrp ?x)(nilai-mutu B))))
(defrule n5
(mahasiswa (nrp ?x)(nilai 6))
=>
(assert (mutu
(nrp ?x)(nilai-mutu C))))
(defrule n6
(mahasiswa (nrp ?x)(nilai 5))
=>
(assert (mutu
(nrp ?x)(nilai-mutu C))))
8/2/2019 Praktikum 3 Sistem pakar
6/48
SUPAYA LEBIH ELEGAN
Hasilnya???
8/2/2019 Praktikum 3 Sistem pakar
7/48
WILDCARD PATTERN
Wildcard Patternmerupakan cara yangdigunakan untuk menggantikan suatu simbolyang terdapat di bagian antesenden suatu
aturan (LHS)
8/2/2019 Praktikum 3 Sistem pakar
8/48
WILDCARD PATTERN
Terdapat dua jenis wildcard pattern yang seringdigunakan:
?x : mengambil satu simbol yang sesuai
$? : boleh tidak mengambil ataumengambil lebih dari satu simbol(biasanya digunakan pada multislot
8/2/2019 Praktikum 3 Sistem pakar
9/48
CONTOH 1
(deftemplate member_bands
(multislot member-of))
(deffacts nama_band(member_bands (member-of beatles john_lennon
paul_mccartney george_harrison ringo_starr))
(member_bands (member-of smash roger_daltrey
pete_townsend keith_moon))
(member_bands (member-of kangen_band tracey_thorn
ben_watt)))
(defrule bands
(member_bands (member-of ?band $?))
=>
(printout t "there is a band called " ?band crlf))
Contoh 1 (band.clp)
8/2/2019 Praktikum 3 Sistem pakar
10/48
CONTOH 2
(deftemplate member_bands(multislot member-of))
(deffacts nama_band
(member_bands (member-of beatles john_lennonpaul_mccartney george_harrison ringo_starr))
(member_bands (member-of smash roger_daltrey pete_townsend
keith_moon))(member_bands (member-of kangen_band tracey_thorn
ben_watt)))(defrule band-members
(member_bands (member-of ?band ?member $?))=>
(printout t ?member " is a member of " ?band crlf))
Contoh 2 (akses_single_member.clp)
8/2/2019 Praktikum 3 Sistem pakar
11/48
CONTOH 3
(deftemplate member_bands
(multislot member-of))
(deffacts nama_band(member_bands (member-of beatles john_lennon
paul_mccartney george_harrison ringo_starr))
(member_bands (member-of smash roger_daltrey pete_townsend
keith_moon))
(member_bands (member-of kangen_band tracey_thorn
ben_watt)))
(defrule band-members
(member_bands (member-of ?band $?members))
=>
(printout t "The members of " ?band " are " $?members
crlf))
Contoh 3 (akses_multi_member.clp)
8/2/2019 Praktikum 3 Sistem pakar
12/48
VARIABEL
8/2/2019 Praktikum 3 Sistem pakar
13/48
VARIABEL.CLP
(deftemplate variabel
(slot number))
(deftemplate jumlah
(slot total))
(deffacts nilai
(variabel (number 4))
(variabel (number 6)))
(defrule addup
(variabel (number ?x))
(variabel (number ?y))
=>
(bind ?total (+ ?x ?y))
(printout t ?x " + " ?y " = " ?total crlf)
(assert (jumlah (total ?total))))
8/2/2019 Praktikum 3 Sistem pakar
14/48
DEFGLOBAL.CLP
(defglobal?*var1* = 17?*oranges* = "seven")
(deftemplate variabel(slot number))
(deftemplate jumlah(slot total))
(deffacts nilai(variabel (number 24)))
(defrule addup
(variabel (number ?x))=>
(bind ?total (- ?x ?*var1*))(printout t ?x " + " ?*var1* " = " ?total "(" ?*oranges* ")" crlf)(assert (jumlah (total ?total))))
8/2/2019 Praktikum 3 Sistem pakar
15/48
Function
Templates and Conditions
8/2/2019 Praktikum 3 Sistem pakar
16/48
BIRTHDAY.CLP
(defrule birthday_is
?ulang_tahun
8/2/2019 Praktikum 3 Sistem pakar
17/48
TES_WEIGHT.CLP
(deftemplate personal-data(slot name) (slot age) (slot weight) (slot height)(multislot blood-pressure))
(deffacts people
(personal-data (name Andrew) (age 20) (weight 180) (height 188)(blood-pressure 130 80))(personal-data (name Cyril) (age 63) (weight 70) (height 1678)
(blood-pressure 180 90)))
(defrule lardy-bugger
(personal-data (name ?name) (weight ?weight))(test (> ?weight 100))
=>(printout t ?name " weighs " ?weight " kg - the fat sod." crlf))
8/2/2019 Praktikum 3 Sistem pakar
18/48
PRINT_AGE.CLP
(deftemplate personal-data(slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure))
(deffacts people(personal-data (name Andrew) (age 120) (weight 80) (height 188) (blood-
pressure 130 80))
(personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure 180 90)))
(defrule print-ages(and
(personal-data (name ?name) (age ?age))
(personal-data (name ?name) (weight ?weight)))=>
(printout t ?name " weighs " ?weight " at " ?age " years old." crlf))
8/2/2019 Praktikum 3 Sistem pakar
19/48
UMBRELLA.CLP
(deftemplate umbrella(slot weather))
(deffacts cuaca(umbrella (weather raining))
(umbrella (weather snowing))(umbrella (weather sunny)))
(defrule take-an-umbrella(or
(umbrella (weather raining))(umbrella (weather snowing)))=>
(printout t "Take an umbrella" crlf))
8/2/2019 Praktikum 3 Sistem pakar
20/48
NOT_BIRTHDAY.CLP
(deftemplate personal-data(slot name) (slot age) (slot weight) (slot height) (multislot blood-pressure))
(deftemplate ultah(slot birthday))
(deffacts is_ultah(ultah (birthday Andrew)))
(deffacts people(personal-data (name Andrew) (age 120) (weight 80) (height 188) (blood-
pressure 130 80))
(personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure180 90)))
(defrule not-birthday(personal-data (name ?name) (weight ?weight))(not (ultah (birthday ?name)))
=>(printout t "It's not " ?name "'s birthday" crlf))
8/2/2019 Praktikum 3 Sistem pakar
21/48
POINTLESS.CLP
(defrule pointless
(test (> 6 5))
=>(printout t "Six is indeed greater than five"crlf))
8/2/2019 Praktikum 3 Sistem pakar
22/48
EXIST_FORALL.CLP
(deftemplate personal-data(slot name) (slot age) (slot weight) (slot height) (multislot blood-
pressure))
(deffacts people
(personal-data (name Andrew) (age 20) (weight 80) (height 188)(blood-pressure 130 80))(personal-data (name Cyril) (age 63) (weight 70) (height 1678)
(blood-pressure 180 90)))
(defrule person-exists
(personal-data (name ?name))=>
(printout t "Rule person exists reports there is a person called "?name crlf))
8/2/2019 Praktikum 3 Sistem pakar
23/48
LANJUTAN......
(defrule are-there-people(exists (personal-data (name ?name)))
=>(printout t "Rule are-there-people reports there is at least one
person" crlf))
(defrule check-each-person(forall
(personal-data (name ?name) (age ?umur))(personal-data (name ?name) (weight ?berat)))=>
(printout t "Rule check-each-person reports that all personshave a name" crlf))
8/2/2019 Praktikum 3 Sistem pakar
24/48
CERTAINTY FACTOR
8/2/2019 Praktikum 3 Sistem pakar
25/48
Uncertanity
There is a uncertainty in the mind
Of experts when make a decision
accordance their expertise
8/2/2019 Praktikum 3 Sistem pakar
26/48
Causes of Uncertainty
Not completely and uncertainty information
Unknown data
Unify the different of view point of experts
Imprecise language(always,often,seldom,some times)
8/2/2019 Praktikum 3 Sistem pakar
27/48
Certainty Theory
Certainty factor (cf ), value to measure degree ofbelief from expert.
Maximum value of cf is +1.0 (definitely true) and
minimum -1.0 (definitely false).
Two aspects:
Certainty in the EvidenceThe evidence can have a certainty factor
attached
Certainty in Rule
8/2/2019 Praktikum 3 Sistem pakar
28/48
1. Model Net Belief (Shortliffe dan Buchanan)
CF (Rule)=MB(H,E)-MD(H,E)
MB(H,E) =
M D(H,E) =
Computation of Certainty Factors
1 ; if P(H)=1
max[P(H|E),P(H)]-P(H)/1-P(H) ; Otherwise
1 ; if P(H)=0
min[P(H|E),P(H)]-P(H)/1-P(H) ; Otherwise
8/2/2019 Praktikum 3 Sistem pakar
29/48
Certainty Factors
Uncertain Term Certainty Factor
Definitely not -1.0
Almost certainly not -0.8
Probably not -0.6
Maybe not -0.4
Unknown -0.2 to +0.2
Maybe +0.4
Probably +0.6
Almost certainly +0.8
Definitely +1.0
2. Direct Interview with Expert
8/2/2019 Praktikum 3 Sistem pakar
30/48
Example :
Expert :If headache and have a cold and fever,
then most possibility is influenza
Rule : IF evidence 1= headache AND evidence2= have a cold AND evidence 3= fever
THEN seek=influenza
(cf = 0.8)
8/2/2019 Praktikum 3 Sistem pakar
31/48
Expert System With CF
In Expert System with CF, knowledge basecomposed of set of rules with syntax:
IF THEN {cf }
CF refers to degree of belief for hypothesis Hwhen evidence E occured.
8/2/2019 Praktikum 3 Sistem pakar
32/48
Degree of belief for hypothesis H whenevidence E occured.cf (H,E) = cf (E) * cf(Rule)
e.g:IF sky is clearTHEN the forecast is sunny {cf 0.8}
With cf of sky is clear is 0.5cf (H,E) = 0.5 * 0.8 = 0.4
Example
8/2/2019 Praktikum 3 Sistem pakar
33/48
Multiple Antecedents
How the CF if we have two evidence?
With conjunction (i.e. and)
Use minimum cfof evidence
With disjunction(i.e. or)
Use maximum cf ofevidence
8/2/2019 Praktikum 3 Sistem pakar
34/48
Conjunctive Antecedents - Example
Conjunctive Rules:
cf(H, E1 and E2and Ei) = min{cf(E1 , E2 ,Ei )} *cf(Rule)
IF there are dark clouds E1
AND the wind is stronger E2
THEN it will rain {cf 0.8}
If cf(E1) = 0.5 and cf(E2) = 0.9, then
cf(H, E) = min{0.5, 0.9} * 0.8 = 0.4
8/2/2019 Praktikum 3 Sistem pakar
35/48
Disjunctive Antecedents - Example
Disjunctive Rules:
cf(H, E1 or E2or Ei) = max{cf(E1 , E2, Ei )}*cf(Rule)
IF there are dark clouds E1
OR the wind is stronger E2
THEN it will rain {cf 0.8}
If cf(E1) = 0.5 and cf(E2) = 0.9, then
cf(H, E) = max{0.5, 0.9} * 0.8 = 0.72
8/2/2019 Praktikum 3 Sistem pakar
36/48
How to determine CF if two rules have similarconclusion?
Similarly Concluded Rules
Rule 1:
IF weatherperson predicts rain (E1)
THEN it will rain
{cf1 0.7}
Rule 2:
IF farmer predicts rain (E2)
THEN it will rain
{cf2 0.9}
8/2/2019 Praktikum 3 Sistem pakar
37/48
Similarly Concluded Rules
Formula :
8/2/2019 Praktikum 3 Sistem pakar
38/48
Similarly Concluded Rules
New CF value from facts above above can beformulated:
cf (cf1,cf2) = cf1+cf2*(1-cf1)
= 0.7+0.9(1-0.7)
= 0.97
8/2/2019 Praktikum 3 Sistem pakar
39/48
EXERCISE
Determine New Value of CF from some facts inbelow :
1. IF fever
THEN typhus {cf-0.39}2. IF amount of thrombosis is low
THEN typhus {cf-0.51}
3. IF the body is weak
THEN typhus {cf0.87}
4. IF diarhea/constipation
THEN typhus {cf0.63}
8/2/2019 Praktikum 3 Sistem pakar
40/48
Combining CF with CLIPS
8/2/2019 Praktikum 3 Sistem pakar
41/48
Combining CF with CLIPS
8/2/2019 Praktikum 3 Sistem pakar
42/48
Combining CF with CLIPS
8/2/2019 Praktikum 3 Sistem pakar
43/48
Combining CF with CLIPS
8/2/2019 Praktikum 3 Sistem pakar
44/48
Combining CF with CLIPS
8/2/2019 Praktikum 3 Sistem pakar
45/48
Lakukan Beberapa Langkah
- Load -> Reset -> (agenda)
- Perhatikan urutan rule yang dijalankan
Rule dengan Salience yang lebih besar akandieksekusi terlebih dahulu
8/2/2019 Praktikum 3 Sistem pakar
46/48
Modifikasi Salience dari Rule
(defrule both-positif
(declare (salience 6)) ....
....
....
(defrule both-negatif
(declare (salience 10))
....
....
....
8/2/2019 Praktikum 3 Sistem pakar
47/48
Lakukan langkah yang sama : Load -> Reset -> Agenda
Lihat pada Agenda:
Akan terlihat bahwa ruledengan salience tinggi, akan dijalankan terlebih dahulu
8/2/2019 Praktikum 3 Sistem pakar
48/48
Combining CF with CLIPS
Cf = 0.8390766