Οικονόμου Παναγιώτης. Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου.

Σχετικά έγγραφα
Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Το Σύστημα Κανόνων CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Συναρτήσεις στο CLIPS. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Εισαγωγή στο κέλυφος ανάπτυξης έµπειρων συστηµάτων του CLIPS

Π1 Το Σύστηµα Κανόνων CLIPS

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Περιορισμοί στις Συνθήκες Κανόνων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Π2 Το Σύστηµα Κανόνων CLIPS

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Προτεραιότητα Κανόνων και Στρατηγικές Επίλυσης Συγκρούσεων

CLIPS Σύντομη Εισαγωγή - Περιγραφή του Μηχανισμού Εκτέλεσης

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

ΕΡΓΑΣΤΗΡΙΟ CLIPS ΑΣΚΗΣΗ 1

ΕΡΓΑΣΗΡΙΟ CLIPS ΑΣΚΗΣΗ 6

Λειτουργικά. Συστήματα Ι. Φ ρ ο ν τ ι σ τ ή ρ ι ο. Αριστείδης Ηλίας. Εργαστήριο Ηλεκτρονικών Υπολογιστών

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΜΑΤΙΚΗΣ

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Διαχείρισης καταστάσεων ανάγκης σε συγκρότημα κτηρίων

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Εναλλακτικό Παράδειγμα Επιλογής Δώρου. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Εισαγωγή στον Προγραμματισμό

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Κίνησης Robot. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Ευφυής Προγραμματισμός

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Πέτρα Ψαλίδι - Χαρτί. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Διάγνωσης Βλάβης βασισμένης σε Μοντέλο. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Εισαγωγή στη Matlab 2 Εισαγωγή στην Αριθμητική Ανάλυση Διδάσκων: Γεώργιος Ακρίβης Βοηθός: Δημήτριος Ζαβαντής

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Rule Based systems Συστήματα Βασισμένα σε κανόνες

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΕΡΓΑΣΗΡΙΟ CLIPS ΑΣΚΗΣΗ 4

Ευφυής Προγραμματισμός

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Συναρτησιακός Προγραμματισμός 2008 Λύσεις στο Δεύτερο Φύλλο Ασκήσεων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Κανόνες & Μετά κανόνες

Πληρουορική Γ Γσμμασίοσ

HY340, 2009 Α. Σαββίδης Slide 2 / 143. HY340, 2009 Α. Σαββίδης Slide 3 / 143. HY340, 2009 Α. Σαββίδης Slide 4 / 143

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Εντολές ελέγχου ροής if, for, while, do-while

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Εισαγωγή στον Προγραμματισμό

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Θέματα Προγραμματισμού Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Πρόγραμμα Στοιβάσματος Κιβωτίων. Νίκος Βασιλειάδης, Αναπλ. Καθηγητής Τμήμα Πληροφορικής

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

Πανεπιστήµιο Πατρών Τµήµα Μηχ/κών Η/Υ & Πληροφορικής ΜΠΣ ΕΠΙΣΤΗΜΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΥΦΥΗ ΣΥΣΤΗΜΑΤΑ ΑΠΟΦΑΣΕΩΝ. Ι.

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Η γλώσσα προγραμματισμού EEL

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Εισαγωγή στο MATLAB. Κολοβού Αθανασία, ΕΔΙΠ,

Shell Scripts: loops / if / test

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Ευφυής Προγραμματισμός

Σημειώσεις. Ο αριθμός των στοιχείων μίας λίστας μπορεί να βρεθεί με χρήση της συνάρτησης len:

Αντικειμενοστρεφής Προγραμματισμός

ΕΡΓΑΣΗΡΙΟ CLIPS ΑΣΚΗΣΗ 3

Λύσεις Σειράς Ασκήσεων 5

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ευφυής Προγραμματισμός

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δομημένος Προγραμματισμός

Προγραμματισμός PASCAL

Λειτουργικά Συστήματα

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Ει αγωγή η Fortran.

Διαδικαστικός Προγραμματισμός

Αβδέλαρου Κωνσταντίνα

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Ευφυής Προγραμματισμός

Στοιχειώδης προγραμματισμός σε C++

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

ιαδικαστικός Προγραμματισμός

Συναρτήσεις και διαδικασίες

Υπολογιστικά Συστήματα

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Διαδικασιακός Προγραμματισμός

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Εισαγωγή στην γλώσσα προγραμματισμού C

Transcript:

Οικονόμου Παναγιώτης panawths@gmail.com poikonomou@teilam.gr Οι διαφάνειες παρουσιάζονται κατόπιν άδειας της Δρ. Ελπινίκης Παπαγεωργίου. Οικονόμου Παναγιώτης 1

CLIPS Παπαγεωργίου. 2

C Language Integrated Production System Περιβάλλον προγραμματισμού με κανόνες, αντικείμενα και συναρτήσεις Αναπτύχθηκε από τη NASA το 1985 Υλοποιήθηκε με τη γλώσσα C Τρέχει σε DOS, Windows, UNIX, VMS Υποστηρίζει τον αντικειμενοστραφή προγραμματισμό (COOL) Παπαγεωργίου. 3

Λίστα Γεγονότων (facts list) (name george) Βάση κανόνων (rule/knowledge base) (defrule rain in case of rain (weather rain) => (assert (action take umbrella ))) Μηχανισμός Εξαγωγής Συμπερασμάτων (Inference Engine) Στρατηγικές Eπίλυσης Ανταγωνισμού (Conflict Resolution Strategies) Παπαγεωργίου. 4

Πρόγραμμα Ένα σύνολο από κανόνες και γεγονότα Εκτέλεση Ακολουθία από πυροδοτήσεις κανόνων των οποίων οι συνθήκες ικανοποιούνται Ικανοποίηση συνθηκών Ταυτοποίηση με γεγονότα Η εκτέλεση τερματίζεται όταν: Δεν υπάρχουν άλλοι κανόνες προς πυροδότηση Κληθεί συγκεκριμένη εντολή τερματισμού (halt) Παπαγεωργίου. 5

Εύρεση όλων των κανόνων των οποίων οι συνθήκες ικανοποιούνται και προσθήκη τους στην ατζέντα (agenda - conflict set). Αν η ατζέντα είναι κενή τότε η εκτέλεση τερματίζεται. Επιλογή ενός κανόνα με βάση τη στρατηγική επίλυσης ανταγωνισμού (conflict resolution) και εκτέλεσή του. Επιστροφή στο βήμα 1, εκτός αν υπάρχει εντολή τερματισμού (halt). Παπαγεωργίου. 6

Είναι Case-Sensitive Δομικά Στοιχεία: Σύμβολα, π.χ. you, why_this, good-morning Αλφαριθμητικά, π.χ. This is a String Αριθμοί, π.χ. 24,-45.6, 8e11 Σχόλια: ότι ακολουθεί τον χαρακτήρα ; Μεταβλητές Μονότιμες π.χ.?var,?x Πολλαπλών Τιμών π.χ. $?fruits, $?shopping Παπαγεωργίου. 7

Εμφανίζονται Στις συνθήκες ενός κανόνα Στις ενέργειες ενός κανόνα Παίρνουν τιμές Κυρίως στις συνθήκες των κανόνων μέσω της διαδικασίας ταυτοποίησης Η ανάθεση τιμής σε μεταβλητή στις ενέργειες ενός κανόνα είναι δυνατή με τη χρήση κατάλληλης συνάρτησης, αλλά καλό είναι να αποφεύγεται. Η εμβέλεια των μεταβλητών περιορίζεται στον κανόνα που αυτές εμφανίζονται. Παπαγεωργίου. 8

Παπαγεωργίου. 9

Λίστες από σύμβολα που περικλείονται σε παρενθέσεις π.χ. (name John Papas) (shopping_list cheese wine bread book) (days Monday Friday Sunday) Κάθε γεγονός έχει μοναδικό αριθμό-ταυτότητα (fact index) που καθορίζεται αυτόματα Εμφάνιση γεγονότων CLIPS> (facts) f-0 (name John Papas) for a total of 1 fact. Παπαγεωργίου. 10

Με τη χρήση της εντολής assert (assert <fact>) CLIPS> (assert (gift book)) <Fact-0> CLIPS> (facts) f-0 (gift book) for a total of 1 fact. CLIPS> (assert (day Monday) (phone 891363)) CLIPS> (facts) f-0 (gift book) f-1 (day Monday) f-2 (phone 891363) for a total of 3 facts. Παπαγεωργίου. 11

Με τη χρήση της εντολής deffacts (μαζί με reset ) (deffacts <name> comments (<fact1>) (<fact2>) (<fact n>) ) Παπαγεωργίου. 12

CLIPS> (deffacts colours this is to insert some colours (colour red)(colour blue)(colour green)) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact) f-1 (colour red) f-2 (colour blue) f-3 (colour green) for a total of 4 facts. CLIPS> (facts 2) f-2 (colour blue) f-3 (colour green) for a total of 2 facts. Παπαγεωργίου. 13

CLIPS> (assert (name nick)) <Fact-0> CLIPS> (facts) f-0 (name nick) For a total of 1 facts. CLIPS> (assert (name nick)) FALSE CLIPS> (facts) f-0 (name nick) For a total of 1 facts. Παπαγεωργίου. 14

Χρήση της εντολής (retract) (retract <fact-index>) CLIPS> (retract 1 3) CLIPS> (facts) f-0 f-2 (initial-fact) (colour blue) for a total of 2 facts. CLIPS> (retract 1) [PRNUTIL1] Unable to find fact-1 Χρήση της εντολής (clear) Παπαγεωργίου. 15

Χρήση της εντολής (watch facts) CLIPS> (watch facts) CLIPS> (assert (age 23)) ==> f-0 (age 23) <Fact-0> CLIPS> (reset) <== f-0 (age 23) ==> f-0 (initial-fact) CLIPS> (assert (mobile 0977233445)) ==> f-1 (mobile 0977233445) <Fact-1> CLIPS> (retract 1) <== f-1 (mobile 0977233445) CLIPS> (facts) f-0 (initial-fact) for a total of 1 fact. Παπαγεωργίου. 16

Μορφή: if (Συνθήκες) then (Ενέργειες) Συνθήκες: Γεγονότα & Μεταβλητές Ενέργειες: Πράξεις (εντολές) μετά την ενεργοποίηση του κανόνα Σημασία: Εάν ικανοποιούνται οι συνθήκες (δηλαδή ταυτοποιούνται με τη λίστα γεγονότων), Τότε εκτέλεσε τις ενέργειες Παπαγεωργίου. 17

Σύνταξη: (defrule <όνομα κανόνα> <σχόλια> (<συνθήκη 1>) (<συνθήκη n>) => (<εντολή 1>) (<εντολή m>) ) Παπαγεωργίου. 18

Παράδειγμα (defrule soccer-time Warns for your soccer time (day sunday) (time afternoon) => (assert (go for soccer))) Παπαγεωργίου. 19

Συνθήκη Γεγονός Αναθέσεις τιμών (day?d?t) (day fri 12) (list $?lst) (list a b c d) (car?c model $?m license?l) (car 1 model BMW FIAT license wqw45) Παπαγεωργίου. 20

Συνθήκη Γεγονός Αναθέσεις τιμών (day?d?t) (day fri 12)?d=fri?t=12 (list $?lst) (list a b c d) (car?c model $?m license?l) (car 1 model BMW FIAT license wqw45) Παπαγεωργίου. 21

Συνθήκη Γεγονός Αναθέσεις τιμών (day?d?t) (day fri 12)?d=fri?t=12 (list $?lst) (list a b c d) $?lst=(a b c d) (car?c model $?m license?l) (car 1 model BMW FIAT license wqw45) Παπαγεωργίου. 22

Συνθήκη Γεγονός Αναθέσεις τιμών (day?d?t) (day fri 12)?d=fri?t=12 (list $?lst) (list a b c d) $?lst=(a b c d) (car?c model $?m license?l) (car 1 model BMW FIAT license wqw45)?c=1 $?m=(bmw FIAT)?l=wqw45 Παπαγεωργίου. 23

Οι συναρτήσεις στο CLIPS έχουν παρόμοια μορφή με εκείνη των συναρτήσεων στην LISP Μορφή Κλήσης (<όνομα συνάρτησης> όρισμα1 όρισμαν) Τιμή: επιστρέφει στο σημείο στο οποίο εμφανίζεται η συνάρτηση CLIPS> (assert (The number (+ 2 3))) <Fact-0> CLIPS> (facts) f-0 (The number 5) For a total of 1 fact. Παπαγεωργίου. 24

Βασικές Αριθμητικές Συναρτήσεις (+ <ορίσματα>) (* <ορίσματα>) (- <ορίσματα>) (/ <ορίσματα>) Συναρτήσεις σύγκρισης αριθμών (= <ορίσματα>) (>= <ορίσματα>) (<= <ορίσματα>) (< <ορίσματα>) (> <ορίσματα>) (<> <ορίσματα>) Οι ακόλουθες συναρτήσεις επιστρέφουν TRUE (>= 5 5 4 2 2 1) (<= 2 3 3 4 6) (<> 3 5) Παπαγεωργίου. 25

Δυνατότητα να εκφραστούν πολύπλοκες συνθήκες κανόνων (and <ορίσματα>) (or <ορίσματα>) (not <όρισμα>) (eq <ορίσματα>) (neq <ορίσματα>) Οι ακόλουθες συναρτήσεις επιστρέφουν TRUE (and (>= 5 5) (> 3 2 1) (= 10 10)) (and (not (= 10 7)) (= 9 9)) Παπαγεωργίου. 26

(defrule days (month Jan mon) (or (hour 12) (hour 13)) => (assert (day is Monday noon time)) ) (defrule days (month Jan mon) (or (and (hour 12) (lunch break)) (and (hour 17) (departure time)) ) => (assert (office closed at this hour)) ) Παπαγεωργίου. 27

(printout <device> <expression>) Αποστέλλει την έκφραση <expression> στη συσκευή <device> Η συσκευή μπορεί να είναι ένα αρχείο ή η οθόνη Για οθόνη, χρησιμοποιούμε t (terminal) (printout t "The day was "?type crlf) The day was sunny Το σύμβολο crlf δηλώνει αλλαγή γραμμής Παπαγεωργίου. 28

(read) Εισάγει σύμβολο από τo πληκτρολόγιο Συνήθως χρησιμοποιείται σε συνδυασμό με την εντολή bind, για ανάθεση τιμής σε μεταβλητή στις ενέργειες ενός κανόνα (defrule get-user-answer (initial-fact) => (printout t "What s your name: ") (bind?name (read)) (assert (user-name?name)) ) Παπαγεωργίου. 29

(bind <variable> <value>) Ανατίθεται η τιμή <value> σε μια μεταβλητή <variable> στις ενέργειες των κανόνων (defrule rule1 "example rule" (oldcost?oldcost) (newcost?newcost) => (bind?total_cost (+?newcost?oldcost)) (assert (cost?total_cost)) (printout t "The total cost is "?total_cost crlf) ) Παπαγεωργίου. 30

(if (condition) ;συνθήκη then (command 1) ;εντολή 1... (command M) ;εντολή M else (command Α) ;εντολή A... (command N) ;εντολή N ) Εκτελεί υπό συνθήκη κάποια σύνολα εντολών Παπαγεωργίου. 31

Τύπωσε positive, negative ή zero, αν ο αριθμός?n είναι μεγαλύτερος, μικρότερος ή ίσος με μηδέν (defrule sign (num?n) => (if (>?n 0) then (printout t "positive" crlf)) else (if (<?n 0) then (printout t "negative" crlf) else (printout t "zero" crlf)) ) ) Παπαγεωργίου. 32

(defrule test (initial-fact) => (printout t "Ti sas aresei:" crlf) (printout t "1. football" crlf) (printout t "2. fashion" crlf) (printout t "3. music" crlf) (bind?x (read)) (assert (choise?x)) ) (defrule epilogh (choise?z) => (if (=?z 1) then (printout t "Ti omada eisai?" crlf)) (if (=?z 2) then (printout t "Ti xrwmata sou aresoun" crlf)) (if (=?z 3) then (printout t "Pes mou ena sygkrothma?" crlf)) ) Παπαγεωργίου. 33

(deffacts init "arxikh" (temp fact) ) (defrule test?temp<-(temp fact) => (printout t "Ti sas aresei:" crlf) (printout t "1. football" crlf) (printout t "2. fashion" crlf) (printout t "3. music" crlf) (bind?x (read)) (assert (choise?x)) (retract?temp) ) (defrule epilogh?del<-(choise?z) => (if (=?z 1) then (printout t "Ti omada eisai?" crlf)) (if (=?z 2) then (printout t "Ti xrwmata sou aresoun" crlf)) (if (=?z 3) then (printout t "Pes mou ena sygkrothma?" crlf)) (if (neq?z 1 2 3) then (printout t "DWSE ALLH APADHSH" crlf) (assert (temp fact)) (retract?del)) ) Παπαγεωργίου. 34

(deffacts interestes (interested popi in tango) (interested john in music) (interested andronikos in music) (interested andronikos in tango)) (defrule print-matches?fid1 <- (interested?sb in?something1)?fid2 <- (interested?sb2 in?something2) => (printout t?sb?something1 "-----"?sb2?something2 crlf) (if (neq?sb?sb2) then (assert (matches?sb?sb2)) (retract?fid1) (retract?fid2) ) ) Παπαγεωργίου. 35

Παπαγεωργίου. 36