Presentation is loading. Please wait.

Presentation is loading. Please wait.

PRAKTIKUM _#5 Expert System CLIPS [lanjutan]. WildCard Pattern.

Similar presentations


Presentation on theme: "PRAKTIKUM _#5 Expert System CLIPS [lanjutan]. WildCard Pattern."— Presentation transcript:

1 PRAKTIKUM _#5 Expert System 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 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 ?groupband ?member1 $?)) => (printout t "there is a band called " ?groupband “anggota1 adalah“ ?member1 crlf))

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

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

7 VARIABEL

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

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

10 Function Templates and Conditions

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

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

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

14 umbrella.CLP (deftemplate umbrella (slot weather)) (deffacts cuaca (umbrella (weather raining)) (umbrella (weather snowing)) ; mencoba dihilangkan fakta ini (umbrella (weather sunny))) (defrule take-an-umbrella (or (umbrella (weather raining)) (umbrella (weather snowing))) => (printout t "Take an umbrella" crlf)) (defrule notTake-an-umbrella (not (umbre lla (weather sunny))) => (printout t “Not Take an umbrella" crlf))

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

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

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

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

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


Download ppt "PRAKTIKUM _#5 Expert System CLIPS [lanjutan]. WildCard Pattern."

Similar presentations


Ads by Google