420 likes | 593 Views
Flex. Κέλυφος Εμπείρων Συστημάτων Expert System Shell. Νίκος Βασιλειάδης, Άνοιξη 2003. Τι είναι το Flex;. Το Flex είναι ένα ισχυρό εργαλείο ανάπτυξης εμπείρων συστημάτων. Κέλυφος εμπείρων συστημάτων (expert system shell) Στηρίζεται πάνω στη γλώσσα LPA WinProlog A ποτελείται από:
E N D
Flex Κέλυφος Εμπείρων Συστημάτων Expert System Shell Νίκος Βασιλειάδης, Άνοιξη 2003
Τι είναι το Flex; • Το Flex είναι ένα ισχυρό εργαλείο ανάπτυξης εμπείρων συστημάτων. • Κέλυφος εμπείρων συστημάτων (expert system shell) • Στηρίζεται πάνω στη γλώσσα LPA WinProlog • Aποτελείται από: • Πρόσθετα κατηγορήματα στην Prolog. • Τη γλώσσα αναπαράστασης γνώσης KSL (Knowledge Specification Language) • Ένα μετα-διερμηνέα που μεταφράζει την KSL Prolog.
Βασικά Χαρακτηριστικά Flex • Ορθή ακολουθία εκτέλεσης • Ανάστροφη ακολουθία εκτέλεσης • Πλαίσια και κληρονομικότητα • Ερωτήσεις και απαντήσεις • Επεξηγήσεις • Προγραμματισμός οδηγούμενος από τα δεδομένα
Ορθή ακολουθία εκτέλεσης Forwardchaining • Οι κανόνες παραγωγής ακολουθούν την κλασσική μορφή "εάν-τότε" (IF-THEN). • Πολλαπλά συμπεράσματα ή ενέργειες στο THEN μέρος. • Δυνατότητα επεξήγησης. • Υποστηρίζονται πολλοί αλγόριθμοι επίλυσης συγκρούσεων (conflictresolution) κανόνων. • Υπάρχει δυνατότητα ορισμού νέων αλγορίθμων. • Μηχανισμός δυναμικής βαθμολόγησης των κανόνων (scoring mechanism) για την επίλυση συγκρούσεων κατά την πυροδότησή τους.
Ανάστροφη ακολουθία εκτέλεσηςBackward chaining • Κανόνες ανάλογοι των κανόνων της Prolog. • Ονομάζονται συσχετίσεις (relations) • Έχουν ένα μόνο συμπέρασμα το οποίο αληθεύει αν όλες οι συνθήκες είναι δυνατό να αποδειχθούν.
Πλαίσια και κληρονομικότηταFrames, Inheritance • Το Flex υποστηρίζει ιεραρχίες πλαισίων επιτρέποντας στις ιδιότητες τους να κληρονομούνται. • Κάθε πλαίσιο ή στιγμιότυπο (instance) έχει ένα σύνολο από ιδιότητες (slots) που περιγράφουν τα χαρακτηριστικά των πλαισίων. • Τα πλαίσια κληρονομούντις τιμές των ιδιοτήτων άλλων πλαισίων σύμφωνα με τη θέση τους στην ιεραρχία. • Αποφεύγεται η επανάληψη πληροφοριών και απλοποιείται σημαντικά ο κώδικας. • Η κληρονομικότητα γίνεται αυτόματα και είναι δυνατό να ελεγχθεί με διάφορες οδηγίες (directives).
Ερωτήσεις και απαντήσεις • Ενσωματωμένο υποσύστημα ερωταπαντήσεων. • Τα προγράμματα που αναπτύσσονται με το Flex μπορούν να ζητήσουν από το χρήστη να εισάγει δεδομένα μέσω παραθύρων διαλόγου.
Επεξηγήσεις • Ενσωματωμένο σύστημαεπεξήγησης το οποίο υποστηρίζει τις επεξηγήσεις πώς (how) και γιατί (why). • How: πώς έφτασες σε αυτό το συμπέρασμα; • Why: Γιατί μου κάνεις αυτή την ερώτηση; • Οι επεξηγήσεις μπορούν να ενσωματωθούν στους κανόνες και στις ερωτήσεις.
Προγραμματισμός οδηγούμενος από τα δεδομένα • Eιδικές διαδικασίες οι οποίες μπορούν να προσαρτηθούν σε πλαίσια. • Παραμένουν αδρανείς έως ότου ενεργοποιηθούν από την προσπέλαση ή την τροποποίηση των πλαισίων στα οποία έχουν προσαρτηθεί. • Υπάρχουν 4 τύποι διαδικασιών: • διαδικασίες αρχικοποίησης (launches) • δαίμονες (demons) • φύλακες (watchdogs) • περιορισμοί (constraints)
Η Γλώσσα KSLKnowledgeSpecificationLanguage • Χρησιμοποιείται για τον ορισμό κανόνων, πλαισίων, διαδικασιών κλπ. • Υποστηρίζει μαθηματικές, λογικές και υποθετικές εκφράσεις • Είναι επεκτάσιμη με τη χρήση των συνωνύμων και των προτύπων. • Βασικά στοιχεία: • όροι (terms) • αντικείμενα (objects) • αριθμητικέςεκφράσεις(numerical expressions) • λογικές και διαδικαστικές εκφράσεις (formulae) • δομέςελέγχου(control structures) • προτάσεις(sentences)
Προτάσεις • Καθορίζουν τι μπορεί να δηλωθεί σε ένα πρόγραμμα. • Αρχίζουν με μια από τις ακόλουθες λέξεις-κλειδιά και τερματίζουν με ένα διάστημα ακολουθούμενο από μια τελεία. • frame, instance • rule, ruleset • relation • action, function • launch, constraint, demon, watchdog • question • data, do • group • synonym, template
Πλαίσια και στιγμιότυπα • Υπάρχουν 3 μέρη στον καθορισμό ενός πλαισίου. • Το 1ο καθορίζει σε ποιο σημείο της ιεραρχίας βρίσκεται το πλαίσιο. • Αυτό επιτυγχάνεται με τον καθορισμό των πλαισίων-γονέων (αν υπάρχουν). • Το 2ο και καθορίζει ποιες είναι οι ιδιότητες του πλαισίου και οι προκαθορισμένες τιμές τους. • Στο 3ο επαναπροσδιορίζεται η ιεραρχία της κληρονομικότητας. • Ορισμένα πλαίσια μπορούν να γίνουν πλαίσια-γονείς για κάποιο άλλο πλαίσιο προκειμένου να κληρονομήσει ορισμένες ιδιότητές τους • Συγκεκριμένες ιδιότητες μπορούν να δηλωθούν έτσι ώστε να μην κληρονομηθούν.
Γενική σύνταξη πλαισίου frame Name is a kind of Frame1, Frame2, … ; default Attribute1 is Value; inherit Attribute2 from Frame; do not inherit Attribute3 from Frame . 1 2 3
Παράδειγμα frame wedge is a kind of block, toy ; do not inherit shape and inherit volume from block and inherit density from pyramid, toy .
Στιγμιότυπα • Διαφέρουν από τα πλαίσια: • Μπορούν να έχουν μόνο ένα πλαίσιο-γονέα • Δεν μπορούν να έχουν παιδιά • Κληρονομούν όλες τις ιδιότητες του πλαισίου-γονέας • Δεν υπάρχει δυνατότητα ορισμού νέων ιδιοτήτων • Όλες οι τιμές των ιδιοτήτων τους θεωρούνται τρέχουσες (current values)
Δήλωση στιγμιότυπου • Σύνταξη: instance Instance is a Frame ; Attribute is Value . • Παράδειγμα: instance tweety is a kind of bird ; habitat is a cage and predator is sylvester; do not inherit motions .
Αρχικό πλαίσιο animal • Ορισμός ιδιότητας blood frame animal ; default blood is warm .
Πλαίσια mammal, bird • Κληρονόμηση ιδιότητας blood frame mammal is a kind of animal; default skin is fur and default habitat is the land and default motions are { walk and swim } . frame bird is a kind of animal; default skin is feather and default habitat is a tree and default motions are { fly } .
Πλαίσιο fish • Αλλαγή τιμής για την ιδιότητα blood frame fish is a kind of animal; default skin is scale and default habitat is the water and default motions are { swim } and default blood is cold .
Πλαίσια carnivore, herbivore • Δε συνδέονται στην υπάρχουσα ιεραρχία frame carnivore; default meal is meat . frame herbivore; default meal is plant .
Πλαίσιο penguin • Αλλαγή τιμής για τις ιδιότητες habitat, motions • Ορισμός ιδιότητας size frame penguin is a bird; default habitat is the land and default motions are { walk and swim } and default size is medium .
Πλαίσια 'sea water fish‘, 'fresh water fish' • Αλλαγή τιμής (εξειδίκευση) για την ιδιότητα habitat frame 'sea water fish' is a fish; default habitat is the sea . frame 'fresh water fish' is a fish; default habitat is a river .
Πλαίσιο salmon • Πολλαπλή κληρονομικότητα (2 πλαίσια-γονείς) frame salmon is a 'sea water fish', 'fresh water fish' .
Πλαίσιο feline • Κληρονομεί την ιδιότητα meal από το πλαίσιο carnivore • Ορίζει 3 νέες ιδιότητες tail, speed, legs frame feline is a mammal; default tail is { long and furry } and default speed is 'very fast' and default legs are 4 ; inherit meal from carnivore .
Πλαίσια tiger, cat • Η ιδιότητα size έχει οριστεί ξανά στο πλαίσιο penguin frame tiger is a feline; default size is large and default state is predator and default habitat is the jungle and default meal is human . frame cat is a feline; default size is medium .
Πλαίσια manx, moggy • Η κολοβή γάτα δεν κληρονομεί την ιδιότητα tail! frame manx is a cat; do not inherit tail . • Η κουτσή γάτα έχει άλλη τιμή για την ιδιότητα legs! frame moggy is a cat; default legs are 3.5 .
Πλαίσιο rodent • Ορίζει 2 νέες ιδιότητες tail (ξανά), status • Κληρονομεί την ιδιότητα meal από το herbivore frame rodent is a mammal; default tail is { short and thin } and default status is pest and default habitat is sewer; inherit meal from herbivore .
Πλαίσιο squirrel • Ορίζει την ιδιότητα size (ξανά) • Δίνει άλλη τιμή στην ιδιότητα tail • Δεν κληρονομεί την ιδιότητα habitat frame squirrel is a rodent; default size is small and default tail is { long and bushy } ; do not inherit habitat .
Πλαίσιο whale • Δεν ορίζεται ως «θαλάσσιο ψάρι» γιατί το μόνο κοινό με αυτά είναι το habitat frame whale is a mammal; default habitat is the sea .
Διάφορα στιγμιότυπα (cat, tiger) • Οι τιμές που θέτουμε στις ιδιότητες υπερισχύουν των default τιμών instance arthur is a cat ; skin is shaggy and meal is 'kit-e-kat' and habitat is 'my house' . instance shere_khan is a tiger ; speed is 'quite slow' and legs are 3.5 .
Διάφορα στιγμιότυπα (tiger, bird) • Η τιμή μιας ιδιότητας μπορεί να είναι το όνομα ενός άλλου πλαισίου ή στιγμιότυπου instance my_other_tig is a tiger ; meal is my_pusscat . • Παίρνει όλες τις default τιμές instance joey is a bird .
Ορισμός στιγμιότυπου με εντολή data • Δημιουργία στιγμιότυπου του πλαισίου salmon κατά τη διάρκεια του compilation data new_freddie do freddie is a new salmon whose size is large and whose habitat is fish_tank and echo('freddie has been created') and nl . Εμφάνιση μηνύματος σε παράθυρο
Δεδομένα και δηλώσεις • Τα δεδομένα (data) είναι μία σειρά εντολών • Δημιουργούν νέα στιγμιότυπα • Αντιστοιχίζουν τιμές σε ιδιότητες • Τροποποιούν τα γεγονότα μιας βάση δεδομένων • Χρησιμοποιούνται για την αρχικοποίηση του προβλήματος, αφού εκτελούνται • Κατά τη στιγμή της μεταγλώττισης • Κάθε φορά που καλείται η ρουτίνα restart/0. • Σύνταξη: data data_name do directive(s)
Παράδειγμα data Αλλάζει την τιμή του slot data start_up_configuration do the contents of jugA becomes 2 and jugB`s contents becomes jugB`s capacity-2 and remember that danger_level(yellow) Κάνει “assert” κάτι στη βάση δεδομένων
Πρόταση do • Συντάσσεται παρόμοια με μια πρόταση data • Εκτελεί τις εντολές της μόνο κατά τη στιγμή της μεταγλώττισης. • Σύνταξη: do directive(s).
Παράδειγμα do Δημιουργεί νέο στιγμιότυπο do c1 is a new car whose engine_size is 1100 and c1`s model := ‘Whizzo’ and c1`s colour := metallic_blue Αλλάζει τιμές ιδιοτήτων • Θα μπορούμε να γραφεί και ως: • the colour of c1 becomes metallic_blue
Χρήση πλαισίων • Τα πλαίσια αναπαριστούν με ευέλικτο τρόπο τα αντικείμενα και τις έννοιες του φυσικού κόσμου • Από μόνα τους τα πλαίσια είναι δομές δεδομένων • Δεν αποτελούν κάτι το εκτελέσιμο • Το ρόλο του προγράμματος παίζουν οι κανόνες, forward ή backward
Παράδειγμα ζωικού βασιλείουANIMAL.KSL • Θέλουμε να ορίσουμε μία «ρουτίνα» η οποία να επιστρέφει το πλαίσιο στο οποίο «ταιριάζει» ένα ζώο, δίνοντας • ιδιότητες που αυτό έχει (θετικά παραδείγματα) • ιδιότητες που σίγουρα δεν έχει (αρνητικά παραδείγματα) ?- identify( Class, [habitat-land,size-medium], [meal-meat]).
Αλγόριθμος εύρεσης πλαισίου • Επέλεξε κάποιο τυχαίο πλαίσιο • Έλεγξε αν έχει όλα τα θετικά παραδείγματα • Έλεγξε αν δεν έχει όλα τα αρνητικά παραδείγματα • Αν τα παραπάνω ισχύουν, τότε το αρχικό πλαίσιο πρέπει να επιστραφεί, αλλιώς επέστρεψε στο πρώτο βήμα
Χρήση πλαισίων μέσα από relation Ενσωματωμένο κατηγόρημα Prolog που προσθέτει το Flex relation identify(Frame,PosAtts,NegAtts) if isa_frame( Frame, _ ) and for every PosAttr-PosVal is included in PosAtts do [ check the PosAttr of Frame includes PosVal or check the PosAttr of Frame is equal to PosVal] end for and for every NegAttr-NegVal is included in NegAtts do check the NegAttr of Frame does not include NegVal and check the NegAttr of Frame is not equal toNegVal end for . Έλεγχος συνθήκης Βρόχος επανάληψης για όλα τα στοιχεία μιας λίστας
Συσχετίσεις (relations) • Κανόνες ανάστροφης ακολουθίας εκτέλεσης, αντίστοιχοι της Prolog. • Μια συσχέτιση καθορίζεται από μια συλλογή προτάσεων. • Σύνταξη: relation relation_name if condition(s) . • Παράδειγμα: relation is_leaf( Node ) if the links_out of Node is empty .