Presentation is loading. Please wait.

Presentation is loading. Please wait.

PRAKTIKUM 04 SISTEM PAKAR CLIPS [lanjutan]. WildCard Pattern.

Similar presentations


Presentation on theme: "PRAKTIKUM 04 SISTEM PAKAR CLIPS [lanjutan]. WildCard Pattern."— Presentation transcript:

1 PRAKTIKUM 04 SISTEM PAKAR CLIPS [lanjutan]

2 WildCard Pattern

3 Used to take the place of a symbol on the left hand side of a rule. ? -> match any one symbol $?-> match zero or more symbols ?name-> only match one symbols

4 phone.CLP (deftemplate person (multislot name) (slot phone-number)) (deffacts orang (person (name dimpy adira ratu) (phone-number 12345)) (person (name fani vale rina) (phone-number 67890))) (defrule print-telephone-number (person (name ? ? ?) (phone-number ?phone)) => (printout t ?phone crlf))

5 bands.CLP (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 who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule bands (member_bands (member-of ?band $?)) => (printout t "there is a band called " ?band crlf))

6 bands_member.CLP (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 who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule band-members (member_bands (member-of ?band $? ?member $?)) => (printout t ?member " is a member of " ?band crlf))

7 multi_member.CLP (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 who roger_daltrey pete_townsend keith_moon)) (member_bands (member-of ebtg tracey_thorn ben_watt))) (defrule band-members (member_bands (member-of ?band $?members)) => (printout t "The members of " ?band " are " $?members crlf))

8 VARIABEL

9 variabel.CLP (deftemplate variabel (slot number1) (slot number2)) (deftemplate jumlah (slot total)) (deffacts nilai (variabel (number1 4) (number2 6))) (defrule addup (variabel (number1 ?x) (number2 ?y)) => (bind ?total (+ ?x ?y)) (printout t ?x " + " ?y " = " ?total crlf) (assert (jumlah (total ?total))))

10 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))))

11 Function Templates and Conditions

12 birthday.CLP (defrule birthday_is ?ulang_tahun <- (ultah (birthday ?name)) ?data-fact <- (personal-data (name ?name) (age ?age)) => (modify ?data-fact (age (+ ?age 1))) (retract ?ulang_tahun))

13 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 )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule lardy-bugger (personal-data (name ?name) (weight ?weight)) (test (> ?weight 100)) => (printout t ?name " weighs " ?weight " kg - the fat sod." crlf))

14 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 )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood- pressure ))) (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))

15 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))

16 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 )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule not-birthday (personal-data (name ?name) (weight ?weight)) (not (ultah (birthday ?name))) => (printout t "It's not " ?name "'s birthday" crlf))

17 pointless.CLP (defrule pointless (test (> 6 5)) => (printout t "Six is indeed greater than five" crlf))

18 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 )) (personal-data (name Cyril) (age 63) (weight 70) (height 1678) (blood-pressure ))) (defrule person-exists (personal-data (name ?name)) => (printout t "Rule person exists reports there is a person called " ?name crlf))

19 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 persons have a name" crlf))

20 Summary (deftemplate (slot slotname1) (slot slotname1)) (and (predicate1) (predicate2)) (or (predicate1) (predicate2)) (not (predicate1)) (test (predicate1)) (exists (pattern)) (forall (pattern1) (pattern2) )


Download ppt "PRAKTIKUM 04 SISTEM PAKAR CLIPS [lanjutan]. WildCard Pattern."

Similar presentations


Ads by Google