Κανόνες & Μετά κανόνες
Κανόνες & Μετά κανόνες Κάθε κανόνας παραγωγής είναι αυτόνομος και περιέχει όσα χρειάζονται Ένας κανόνας δεν καλεί έναν άλλο κανόνα όπως συμβαίνει στο procedural programming. Ένας κανόνας μπορεί να προκαλεί την πυροδότηση ενός άλλου κανόνα, αλλά μόνο διαμέσου αλλαγών που προκαλεί στην περιοχή εργασίας Εάν θέλουμε να χρησιμοποιήσουμε υπάρχουσα γνώση για να αποφασίσουμε ποίος κανόνας θα πυροδοτηθεί, χρησιμοποιούμε μετά-κανόνες CLIPS δεν χρησιμοποιεί μετά - κανόνες.
Μετά- κανόνες Οι μετά- κανόνες χρησιμοποιούνται για άμεσο συλλογισμό και όχι για να υλοποιήσουν συλλογισμό Οι μετά-κανόνες παρουσιάζουν ποιοι κανόνες πρόκειται να εφαρμοσθούν στη συνέχεια, βοηθώντας στην επίλυση συγκρούσεων Στο MYCIN οι μετά-κανόνες εφαρμόζονται σε κανόνες οι οποίοι εφαρμόζονται σε υπο-στόχους Εάν θέλουμε προσδιορίσουμε έναν μικροοργανισμό μπορεί να χρειάζεται να εφαρμόσουμε 30 κανόνες Οι μετά-κανόνες χρησιμοποιούνται για να μειώσουν και να βάλουν σε σειρά τη λίστα των κανόνων
Μετά-κανόνες Οι μετά-κανόνες μπορεί να είναι ειδικοί για κάθε περιοχή εφαρμογής Αυτοί κωδικοποιούν τη στρατηγική γνώση για την περιοχή εφαρμογής Μπορεί να είναι ανεξάρτητοι της περιοχής εφαρμογής Τότε είναι πιο γενικοί και μπορούν να εφαρμόζονται σε ποικιλία προβλημάτων ή σε διαφορετικές περιοχές εφαρμογής
Παράδειγμα από MYCIN Μετά-κανόνα Μετακανόνας001 IF: 1) Εάν η καλλιέργεια δεν έχει ληφθεί από αποστειρωμένη πηγή, και 2) υπάρχουν κανόνες οι οποίοι αναφέρουν στις προϋποθέσεις τους έναν προηγούμενο μικροοργανισμό, ο οποίος μπορεί να είναι ο ίδιος με τον υπάρχοντα μικροοργανισμό THEN: είναι σίγουρο (1.0) κανένας από αυτούς δεν είναι χρήσιμος Αυτό είναι ένα παράδειγμα ενός κανόνα που περιορίζει τους κανόνες του MYCIN.
Παράδειγμα MYCIN Μετα-κανόνα Μετά- κανόνας002 IF: 1) Εάν η μόλυνση είναι pelvic abcess, και 2) υπάρχουν κανόνες που στις προπυποθέσεις αναφέρονται σε enterobacteriaceae, και 3) υπάρχουν κανόνες οι οποίοι αναφέρουν στις προϋποθέσεις τους μικροοργανισμούς gram-positive rods, THEN: υπάρχει μια υποκειμενική απόδειξη (.4) ότι το πρωθύστερο μπορεί να προϋπήρχε του τελευταίου. Αυτός είναι ένας μετά- κανόνας MYCIN ο οποίος κωδικοποιεί τη στρατηγική γνώση.
Παράδειγμα MYCIN Μετα-κανόνα Μετά κανόνας 003 IF: 1) υπάρχουν κανόνες οι οποίοι δεν αναφέρουν τον υπάρχοντα στόχο στις προϋποθέσεις τους, και 2) υπάρχουν κανόνες οι οποίοι αναφέρουν τον υπάρχοντα στόχο στις προϋποθέσεις τους THEN: είναι σίγουρο (1.0) ότι ο πρωθύστερος θα έπρεπε να έχει πραγματοποιηθεί πριν από τον επόμενο Αυτός είναι ένας MYCIN μετά-κανόνας για την κωδικοποίηση των προτιμήσεων ανάμεσα σους κανόνες
CLIPS & Προτεραιότητα CLIPS δεν έχει μηχανισμό να επιτρέπει να ορίζουμε μετά-κανόνες Ο βασικός μηχανισμός επιλογής των κανόνων είναι η προτεραιότητα (salience). Αυτός ο μηχανισμός δίνει στους επιλεγμένους κανόνες υψηλότερες πιθανότητες να επιλεχθούν κατά την ανάλυση των συγκρούσεων Είναι προκαθορισμένο να δίνει προτεραιότητα 0 Μια θετική προτεραιότητα δίνει περισσότερο βάρος σε έναν κανόνα Μια αρνητική προτεραιότητα δίνει μικρότερο βάρος σε έναν κανόνα
Παράδειγμα προτεραιότητας Προκειμένου να είμαστε βέβαιοι ότι ο κανόνας penguin θα πυροδοτηθεί πριν από το γενικό κανόνα bird (defrule (bird (type?x)) (assert (flying yes)) ) (defrule (declare (salience 20)) (bird (type penguin)) (assert (flying no)) )
Κανόνες ελέγχου (defrule detection-to-isolation (declare (salience -10))?phase <- (phase detection) (retract?phase) (assert (phase isolation)) ) (defrule isolation-to-recovery (declare (salience -10))?phase <- (phase isolation) (retract?phase) (assert (phase recovery)) )
(defrule recovery-to-detection (declare (salience -10))?phase <- (phase recovery) (retract?phase) (assert (phase detection)) ) Κανόνες ελέγχου (defrule find-fault-location-and-recovery (phase recovery) (recovery-solution switch-device?replacement on) (printout t Switch device?replacement on crlf) )
Κανόνες ελέγχου The previous control rules can be written in a more general form (deffacts control-information (phase detection) (phase-after detection isolation) (phase-after isolation recovery) (phase-after recovery detection) ) (defrule change-phase (declare (salience -10))?phase <- (phase?current-phase) (phase-after?current-phase?next-phase) (retract?phase) (assert (phase?next-phase)) )
Κανόνες ελέγχου It can also be written as a sequence of phases to be cycled through (deffacts control-information (phase detection) (phase-sequence isolation recovery detection) ) (defrule change-phase (declare (salience -10))?current-phase <- (?phase?current-phase) (phase-sequence?next-phase $?other-phases) (retract?current-phase) (assert (phase?next-phase)) (assert (phase-sequence $?other-phases?next-phase)) )
CLIPS Ένα παράδειγμα από ένα πρόγραμμα CLIPS declarations Ορισμός γεγονότων Κανόνες παραγωγής σχόλια ;