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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΑΣΦΑΛΕΙΑ & ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ(Θ)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Ηλεκτρονικοί Υπολογιστές

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Πληροφορική ΙΙ Θεματική Ενότητα 7

{ int a = 5; { int b = 7; a = b + 3;

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Ηλεκτρονικοί Υπολογιστές

Δομές Δεδομένων. Ενότητα 1: Εισαγωγή-Υλοποίηση του ΑΤΔ Σύνολο με Πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αυτοματοποιημένη χαρτογραφία

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

Συστήματα Γνώσης. Πρακτικό Κομμάτι Μαθήματος Η Αντικειμενοστραφής Γλώσσα Προγραμματισμού COOL του CLIPS

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 9: Ειδικά θέματα γλώσσας C/C++. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εφαρμογές Πληροφορικής στην Τοπογραφία 9η Ενότητα - Εκτυπώσεις στο AutoCAD

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Θεωρία Πιθανοτήτων & Στατιστική

Στατιστική Επιχειρήσεων Ι

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Ηλεκτρονικοί Υπολογιστές II

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 7: Πρόγραμμα Συνδεδεμένης Λίστας και Διαδικασιών. Μανόλης Γ.Η.

Ειδικά Θέματα Προγραμματισμού

Το πρόβλημα: Πρόβλεψη επιτυχίας σε εξετάσεις

Βιομηχανικοί Ελεγκτές

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Πληροφορική ΙΙ Θεματική Ενότητα 5

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Εφαρμογές Συστημάτων Γεωγραφικών Πληροφοριών

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Μοντελοποίηση Λογικών Κυκλωμάτων

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δομές Δεδομένων. Ενότητα 3: Ουρές Εισαγωγή-Υλοποίηση ΑΤΔ Ουρά με πίνακα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Λογιστικές Εφαρμογές Εργαστήριο

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Μαθηματικά. Ενότητα 9: Όριο Συνάρτησης στο Διηνεκές. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρακτικό Κομμάτι Μαθήματος Πρότυπα Γεγονότων Νίκος Βασιλειάδης, Αναπλ. Καθηγητής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Πρότυπα Γεγονότων

Μεγάλα/Σύνθετα Γεγονότα Σε μεγάλα προγράμματα χρειάζεται να αναπαρασταθεί η πληροφορία με μεγάλα ή σύνθετα γεγονότα Π.χ. βάση δεδομένων μαθητών: (student name <name> surname <surname> sex <sex> age <age> classes <classes>) (student name john surname ref sex male age 28 classes math physics chem) 5

Χρήση Μεγάλων Γεγονότων Όταν κάποιο μεγάλο γεγονός αλλάζει μορφή, τότε πρέπει να γίνουν σημαντικές αλλαγές σε κάθε κανόνα που αναφέρει το γεγονός στη συνθήκη του, καθώς το γεγονός πρέπει να αναφέρεται κάθε φορά με όλες τις παραμέτρους του (defrule print-students (student name?n surname?sn sex?s age?a classes $?cl) => (printout t "Student: "?n crlf) ) 6

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

Συνάρτηση deftemplate (deftemplate <template name> (slot <slotname1> (type <type1>)) (multislot <slotname2> (type <type2>))... (slot <slotnamen> (type <typen>)) ) 8

Συνάρτηση deftemplate slotnamen είναι το όνομα της ιδιότητας (type <typeν>) καθορίζει τον τύπο της τιμής της συγκεκριμένης ιδιότητας Ο καθορισμός τύπου είναι προαιρετικός Αν δεν ορισθεί για κάποια ιδιότητα αυτή μπορεί να δεχθεί τιμή οποιουδήποτε τύπου Υπάρχουν δύο είδη ιδιοτήτων: slot που μπορούν να πάρουν σαν τιμή μόνο ένα σύμβολο ή αριθμό (μονότιμες μεταβλητές) multislot οι οποίες δέχονται πολλαπλές τιμές (μεταβλητές πολλαπλών τιμών) 9

Παράδειγμα προτύπου μαθητή (deftemplate student (slot name) (slot surname) (slot sex) (slot age) (multislot classes) ) CLIPS>(assert (student (name john) (surname smith) (sex male) (age 30) (classes physics computer))) 10

Παράδειγμα Κανόνα με template (defrule print-students (student (name?name) (sex male)) => (printout t "Student: "?name crlf)) Στις συνθήκες των κανόνων δε χρειάζεται να γραφεί ολόκληρο το γεγονός, αλλά μόνο το όνομα του προτύπου και τα ονόματα των ιδιοτήτων που ενδιαφέρουν 11

Διαθέσιμοι Τύποι Ιδιοτήτων Τύπος Η ιδιότητα μπορεί να περιέχει SYMBOL STRING LEXEME INTEGER FLOAT NUMBER?VARIABLE σύμβολα Αλφαριθμητικά σύμβολα ή αλφαριθμητικά ακέραιες τιμές πραγματικές τιμές ακέραιες ή πραγματικές τιμές τιμές οποιουδήποτε τύπου 12

(deftemplate student ) Παράδειγμα προτύπου μαθητή με τύπους (slot name (type SYMBOL)) (slot surname (type SYMBOL)) (slot sex (type SYMBOL)) (slot age (type INTEGER)) (multislot classes (type SYMBOL)) 13

Απαρίθμηση επιτρεπτών τιμών Για να απαριθμήσουμε τις επιτρεπτές τιμές που μπορεί να πάρει μια ιδιότητα, χρησιμοποιούμε τη δήλωση: (allowed-<prefix> <values>) (allowed-symbols <symbols>) (allowed-strings <strings>) (allowed-lexemes <symbols or strings>) (allowed-integers <integers>) (allowed-floats <floats>) (allowed-numbers <numbers or floats>) (allowed-values <values>) 14

(deftemplate student ) Παράδειγμα προτύπου μαθητή με... (slot sex (type SYMBOL) (allowed-symbols male female))... απαρίθμηση τιμών 15

Περιορισμός εύρους αριθμητικών τιμών Για να καθορίσουμε το επιτρεπτό εύρος τιμών που επιδέχεται μια ιδιότητα με αριθ-μητικές τιμές χρησιμοποιούμε τη δήλωση: (range <min value> <max value>) (deftemplate student... (slot age (type INTEGER) (range 18 60))... ) 16

Εάν η ιδιότητα δεν πρέπει να έχει άνω ή κάτω όριο τότε εισάγεται το σύμβολο?variable στην αντίστοιχη θέση (deftemplate student ) Περιορισμός εύρους αριθμητικών... (slot age (type INTEGER) (range 18?VARIABLE))... τιμών 17

Περιορισμός πλήθους συμβόλων Στις ιδιότητες πολλαπλών τιμών (multislots) περιορίζουμε το πλήθος των συμβόλων που μπορούν να δοθούν σαν τιμή, με τη δήλωση: (cardinality <min> <max>) (deftemplate student... (multislot classes (type SYMBOL) (cardinality 1 4))... ) 18

Δήλωση προκαθορισμένων τιμών (defaults) Σε όλες τις ιδιότητες μπορούμε να προκαθορίσουμε τιμές (default) με τη δήλωση: (default <value>) (deftemplate student... (slot age (type INTEGER) (default 18))... ) 19

Σύμβολα με ειδική σημασία στη (default?derive) δήλωση default Δίνεται σαν τιμή στην ιδιότητα μια από τις επιτρεπόμενες τιμές, όπως αυτές προκύπτουν από τους περιορισμούς που υπάρχουν για την ιδιότητα Αν δεν υπάρχει δήλωση default, τότε υπονοείται η δήλωση (default?derive) 20

Παράδειγμα προτύπου μαθητή με δήλωση default (deftemplate student... (slot age (type INTEGER) (range 18?VARIABLE) (default?derive))... ) Αν εισαχθεί γεγονός μαθητή, χωρίς τιμή για το age, θα πάρει την τιμή 18 21

Παράδειγμα προτύπου μαθητή με δήλωση default (deftemplate student... (slot sex (type SYMBOL) (allowed-symbols male female) (default?derive))... ) Αν εισαχθεί γεγονός μαθητή, χωρίς τιμή για το sex, θα πάρει την τιμή male 22

Παράδειγμα προτύπου μαθητή με δήλωση default (deftemplate student... (slot name (type SYMBOL) (default?derive))... ) Αν εισαχθεί γεγονός μαθητή χωρίς όνομα, τότε η ιδιότητα name θα πάρει την τιμή nil 23

Σύμβολα με ειδική σημασία στη (default?none) δήλωση default Δηλώνει ότι δεν υπάρχει προκαθορισμένη τιμή για την ιδιότητα Πρέπει οπωσδήποτε να δοθεί τιμή στη συγκεκριμένη ιδιότητα κατά τη δημιουργία του αντίστοιχου γεγονότος Αλλιώς το γεγονός δε θα εισαχθεί στη λίστα γεγονότων 24

Παράδειγμα προτύπου μαθητή με δήλωση default (deftemplate student... (slot name (type SYMBOL) (default?none))... ) Δεν μπορεί να εισαχθεί γεγονός μαθητή, αν δεν υπάρχει τιμή για την ιδιότητα name 25

Έλεγχος τιμών Υπάρχουν 2 επίπεδα ελέγχου τιμών που εισάγο-νται στα πρότυπα γεγονότων, το στατικό και το δυναμικό Ο στατικός έλεγχος τιμών αφορά τα γεγονότα τα οποία εισάγονται στο σύστημα από αρχείο, μέσα από τις δηλώσεις deffacts, defrule, κλπ. Ενεργοποιείται από την εντολή: (set-static-constraint-checking TRUE FALSE ) Η τρέχουσα τιμή επιστρέφεται με την εντολή: (get-static-constraint-checking) 26

Έλεγχος τιμών Στο δυναμικό έλεγχο κάθε γεγονός που εισάγεται στη λίστα γεγονότων ελέγχεται για την εγκυρότητα των τιμών του, ακόμη και αν η εισαγωγή γίνεται κατά την εκτέλεση του προγράμματος Ενεργοποίηση/απενεργοποίηση : (set-dynamic-constraint-checking TRUE FALSE ) Τρέχουσα τιμή: (get-dynamic-constraint-checking) Σε περίπτωση ύπαρξης σφάλματος στις τιμές που δίνονται σε κάποια ιδιότητα επιστρέφεται μήνυμα λάθους και σταματά η εκτέλεση των κανόνων 27

Αλλαγή τιμής μιας ιδιότητας (modify <fact-index> (<slot> <νέα τιμή slot>)) Αλλάζει την τιμή της ιδιότητας <slot> σε <νέα τιμή slot> στο γεγονός με αριθμό factindex Δίνει τη δυνατότητα αλλαγής της τιμής κάθε ιδιότητας ενός γεγονότος που ακολουθεί κάποιο πρότυπο, ανεξάρτητα από τις άλλες ιδιότητες Η χρήση του χαρακτηριστικού αριθμού για την εφαρμογή της εντολής επιβάλλει τη χρήση του τελεστή <- στις συνθήκες του κανόνα 28

Παράδειγμα χρήσης modify Ο κανόνας αλλάζει ταυτόχρονα τις τιμές των ιδιοτήτων name και classes στα γεγονότα student που βρίσκονται στη μνήμη εργασίας (defrule change-information?x <- (student (name?name)) => (modify?x (name noname) (classes (create$ math physics chem))) ) 29

Εντολή modify Η εντολή modify αφαιρεί το παλαιό γεγονός από τη λίστα και προσθέτει σε αυτή ένα καινούργιο με τις απαραίτητες αλλαγές Αυτό σημαίνει ότι ο προηγούμενος κανόνας θα εκτελείται επ' άπειρον, καθώς θα υπάρχει πάντα σε κάθε κύκλο ένα "νέο" γεγονός (με νέο fact index) το οποίο θα ικανοποιεί τις συνθήκες του 30

Ορθότερο παράδειγμα χρήσης modify (defrule change-information?x <- (student (name?name&~noname)) => (modify?x (name noname) (classes (create$ math physics chem))) ) 31

Γεγονότα χωρίς template Τα γεγονότα χωρίς την χρήση template που εξετάσαμε έως σήμερα ονομάζονται διατεταγμένα γεγονότα (ordered facts) Στην πραγματικότητα έχουν μόνο ένα «κρυφό» (implied) slot για να αποθηκεύουν όλες τις παραμέτρους του γεγονότος Το slot αυτό έχει όνομα implied και είναι multifield 32

Παράδειγμα CLIPS> (assert (person John Smith age 27)) CLIPS> (defrule my-rule CLIPS> (run) (person $?x) => (printout t "All data for person: " $?x crlf)) All data for person: (John Smith age 27) Το slot implied δεν αναφέρεται ρητά Απόδειξη ότι το slot implied υπάρχει! CLIPS> (deftemplate-slot-names person) (implied) 33

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Τέλος Ενότητας Επεξεργασία: Εμμανουήλ Ρήγας Θεσσαλονίκη, 17/3/2014