Πράκτορες Λογισμικού
Αυτόματη Σύνθεση Διεργασιών Πώς μπορεί να σχεδιαστεί μια διεργασία αυτόματα, δηλαδή από λογισμικό; Θα μπορούσαμε να σχεδιάσουμε ταχύτερα πολλές πιθανές διεργασίες για τον ίδιο σκοπό και να τις αξιολογήσουμε ώστε να επιλεγεί η καλύτερη για εφαρμογή. Θα μπορούσαμε να εξασφαλίσουμε το σχεδιασμό διεργασιών που πληρούν συγκεκριμένα κριτήρια. Πώς μπορεί να σχεδιαστεί μια διεργασία από απλούστερες υπάρχουσες διεργασίες; Θα μπορούσαμε να επαναχρησιμοποιήσουμε υποδιεργασίες που θεωρούνται βέλτιστα ορισμένες σε νέες εφαρμογές Πώς μπορεί αυτόματα να ανασχεδιαστεί μια διεργασία με ανακατανομή των συνολικά διαθέσιμων πόρων ώστε η καινούργια να είναι αποδοτικότερη από την προηγούμενη; Θα μπορούσε ο έλεγχος διαφόρων σεναρίων ανακατανομής πόρων να γίνεται ταχύτερα και πληρέστερα. Πώς μπορεί να σχεδιάζεται μια διεργασία δυναμικά, δηλαδή ανάλογα με τους διαθέσιμους πόρους να σχεδιάζεται με την πιθανότητα να ανασχεδιαστεί αν αλλάξει η διαθεσιμότητα πόρων; Αντί για μια (στατική) περιγραφή διεργασίας για τον τομέα εφαρμογής που μας ενδιαφέρει, μπορούμε να έχουμε στη διάθεσή μας διάφορες πιθανές διεργασίες, και να επιλέγεται για εφαρμογή όποια κρίνεται καλύτερη στη δεδομένη χρονική στιγμή. Χρειαζόμαστε λογισμικό που να εκτελεί τις παραπάνω λειτουργίες!
Απαιτήσεις (άτυπα) λογισμικού Ι Απαιτήσεις (άτυπα) λογισμικού Ι Πρέπει να σχεδιάζει διεργασία ή/και να βελτιστοποιεί διεργασία δυναμικά Να αποφασίζει ποιές ατομικές εργασίες πρέπει να εκτελεστούν και με ποιά σειρά (εξάρτηση εισόδων/εξόδων), ακόμα κι όταν αλλάζουν οι διαθέσιμες ατομικές εργασίες. Αν υπάρχουν πολλές διαθέσιμες πιθανές ατομικές εργασίες που πετυχαίνουν το ίδιο αποτέλεσμα πρέπει να αποφασίζει ποιά είναι η καλύτερη για να επιλεχθεί, κι αυτό ακόμα κι όταν αλλάζουν οι διαθέσιμες (ισοδύναμου αποτελέσματος) ατομικές εργασίες. Πρέπει να επαναχρησιμοποιεί διεργασίες όπου αυτό είναι εφικτό Να εντοπίζει ευκαιρίες επαναχρησιμοποίησης και να τις αξιοποιεί Αν το ίδιο δεν διαθέτει διεργασίες για επαναχρησιμοποίηση αλλά τις εντοπίζει σε άλλο λογισμικό, πρέπει να πετυχαίνει συνεργασία με το άλλο λογισμικό
Απαιτήσεις (άτυπα) λογισμικού ΙΙ Απαιτήσεις (άτυπα) λογισμικού ΙΙ Ορθολογισμός (rationality): το λογισμικό να έχει στόχους και μηχανισμούς συλλογισμού που του επιτρέπουν να καθορίζει τις ενέργειες που πρέπει να γίνουν έτσι ώστε αυτές να είναι οι καλύτερες δυνατές για την επίτευξη των στόχων του. Αυτονομία (autonomy): Η συμπεριφορά του λογισμικού να μην εξαρτάται μόνο από την εσωτερική του κατάσταση αλλά και από την αντίληψή του για το περιβάλλον. Να μπορεί με βάση τη γνώση της κατάστασής του και του περιβάλλοντος να αποφασίσει τι είναι καλύτερο να πράξει υπό δεδομένες συνθήκες, όταν υπάρχουν διάφορες επιλογές δράσης. Κοινωνική ικανότητα (social ability): να μπορεί να αλληλεπιδρά με άλλο λογισμικό που συνυπάρχει στο περιβάλλον του, με σκοπό όχι απλά την ανταλλαγή δεδομένων αλλά για λόγους που τυπικά συσχετίζουμε με την ανθρώπινη κοινωνική δραστηριότητα, π.χ. να διαπραγματεύεται για να συνάψει συμφωνίες, να υπόσχεται, να συνεργάζεται κλπ. Λογισμικό που παρουσιάζει αυτά (τουλάχιστον) τα χαρακτηριστικά λέγεται πράκτορας.
Αφηρημένη άποψη πράκτορα/περιβάλλοντος Συνήθως το περιβάλλον θεωρείται μη-ντετερμινιστικό, δηλαδή η εκτέλεση μιας ενέργειας από τον πράκτορα δεν έχει πάντα το ίδιο αποτέλεσμα. Ιδιαίτερα, η εκτέλεση μιας ενέργειας από τον πράκτορα δεν είναι πάντα επιτυχής. Ο πράκτορας έχει ένα ρεπερτόριο ενεργειών που μπορεί να εκτελέσει. Δεν εκτελούναι όλες οι ενέργειες όλες τις φορές, συνήθως κάθε μιά απαιτεί συγκεκριμένες προϋποθέσεις. Το βασικό πρόβλημα για έναν πράκτορα είναι να αποφασίζει ποιά ενέργεια να εκτελέσει όταν περισσότερες από μια είναι πιθανές, έτσι ώστε να ικανοποιήσει τους στόχους για τους οποίους έχει σχεδιαστεί. Υπάρχουν αρχιτεκτονικές πρακτόρων, δηλαδή αρχιτεκτονικές λογισμικού για συστήματα λήψης αποφάσεων.
Κατηγορίες περιβαλλόντων για πράκτορες Οι Russel & Norvig (1995) τα κατηγοριοποιούν ανάλογα με τις ιδιότητές τους: Προσιτά/ μη-προσιτά: ένα περιβάλλον είναι προσιτό όταν ο πράκτορας μπορεί να λάβει πλήρη, ακριβή και ενημερωμένη πληροφορία για την κατάστασή του. Τα περισσότερα πραγματικά περιβάλλοντα είναι μη-προσιτά. Ντετερμινιστικά/μη-ντετερμινιστικά: ένα περιβάλλον είναι ντετερμινιστικό όταν κάθε ενέργεια που εκτελείται μέσα σε αυτό έχει ένα μοναδικό και εγγυημένο αποτέλεσμα (και οδηγεί σε μια μοναδική νέα κατάσταση του περιβάλλοντος). Στατικά/δυναμικά: ένα περιβάλλον θεωρείται στατικό όταν αλλάζει μόνο εξαιτίας της ενέργειας κάποιου πράκτορα. Ένα δυναμικό περιβάλλον περιέχει κι άλλες διεργασίες που το αλλάζουν και οι οποίες βρίσκονται εκτός του ελέγχου του πράκτορα. Διακριτά/συνεχή: ένα περιβάλλον είναι διακριτό όταν περιέχει σταθερό, πεπερασμένο αριθμό ενεργειών και μεταβλητών. Hewitt (1986): περιβάλλοντα μη-προσιτά, μη-ντετερμινιστικά, δυναμικά και συνεχή λέγονται ανοιχτά περιβάλλοντα.
Αφηρημένες αρχιτεκτονικές για νοήμονες πράκτορες Το περιβάλλον Ε μπορεί να είναι σε μια από ένα πεπερασμένο πλήθος διακριτών, στιγμιαίων καταστάσεων Ε={e0, e1, e2, …} Κάθε πράκτορας έχει ένα ρεπερτόριο ενεργειών που, αν τις πραγματοποιήσει, μετατρέπουν την κατάσταση του περιβάλλοντος. Ac={a0, a1, a2, …} Βασικό μοντέλο αλληλεπίδρασης: Το περιβάλλον αρχικά βρίσκεται σε μια κατάσταση και ο πράκτορας επιλέγει μια ενέργεια. Μετά την εκτέλεση της ενέργειας του πράκτορα το περιβάλλον μεταβαίνει σε μια (απο ένα σύνολο πιθανών) νεα κατάσταση η οποία δεν είναι εκ των προτέρων γνωστή στον πράκτορα. Ο πράκτορας επιλέγει νέα ενέργεια κλπ. Μια σειρά r, ενός πράκτορα σε ένα περιβάλλον είναι μια ακολουθία καταστάσεων του περιβάλλοντος εναλλασσόμενων με ενέργειες του πράκτορα:
Πιο αναλυτική αρχιτεκτονική για νοήμονες πράκτορες Η αφηρημένη αρχιτεκτονική που είδαμε νωρίτερα δεν αρκεί για να κατασκευάσουμε πράκτορες. Χρειάζεται να την κάνουμε περισσότερο αναλυτική (τι δομές δεδομένων περιέχει ο πράκτορας, τι πράξεις εκτελούνται σε αυτές και πώς ρέει ο έλεγχος ανάμεσα σε αυτές). Σε υψηλό επίπεδο, εξετάζουμε κατ’αρχήν τις σχεδιαστικές αποφάσεις που αφορούν τους πράκτορες, με τον κλασικό τρόπο της τεχνολογίας λογισμικού: διασπούμε το σύστημα του πράκτορα σε υποσυστήματα και αυτά σε άλλα απλούστερα υποσυστήματα κλπ. Πρώτο επίπεδο διάσπασης: Η λειτουργία της λήψης απόφασης του πράκτορα χωρίζεται σε υποσυστήματα αντίληψης και δράσης.
Υποσυστήματα αντίληψης και δράσης Το υποσύστημα αντίληψης μπορεί να υλοποιηθεί με υλικό (με αισθητήρες, κάμερα, infrared) για πράκτορα που λειτουργεί στο φυσικό περιβάλλον. Για πράκτορα λογισμικού, η αντίληψη υλοποιείται με εντολές που επιστρέφουν πληροφορία για το περιβάλλον λογισμικού (ls, finger κλπ). Η see είναι συνάρτηση που αντιστοιχίζει καταστάσεις του περιβάλλοντος σε αντιλήψεις (εισόδους των αισθητήρων) δηλαδή see:E Per. H action είναι συνάρτηση που αντιστοιχίζει σειρά αντιλήψεων σε ενέργειες, δηλαδή action: Per* Ac. Ένας πράκτορας ορίζεται σαν το ζεύγος συναρτήσεων Ag=<see, action>.
Ιδιότητες των υποσυστημάτων αντίληψης/δράσης
Πράκτορες με κατάσταση Έχουμε αναπαραστήσει τη λειτουργία λήψης απόφασης ενός πράκτορα σαν συνάρτηση που αντιστοιχίζει ακολουθίες καταστάσεων περιβάλλοντος σε ενέργειες. Έτσι μπορούμε να μιλάμε για πράκτορες που αποφασίζουν λαμβάνοντας υπόψη την ιστορία τους. Τώρα θα αντικαταστήσουμε αυτό τον ορισμό με έναν ισοδύναμο αλλά πιο φυσικό, που μας επιτρέπει να μιλάμε για πράκτορες που διατηρούν μια κατάσταση. Οι πράκτορες με κατάσταση έχουν μια εσωτερική δομή δεδομένων που χρησιμοποιείται για να καταγράφεται πληροφορία για την κατάσταση του περιβάλλοντος και την ιστορία.
Ορισμός πράκτορα με κατάσταση Το σύνολο όλων των εσωτερικών καταστάσεων του πράκτορα είναι Ι. Η συνάρτηση αντίληψης παραμένει αμετάβλητη, δηλαδή αντιστοιχίζει καταστάσεις περιβάλλοντος σε αντιλήψεις: see: E Per Η συνάρτηση δράσης αντιστοιχίζει εσωτερικές καταστάσεις του πράκτορα σε ενέργειες: action: I Ac Η συνάρτηση next αντιστοιχίζει μια εσωτερική κατάσταση του πράκτορα και μια αντίληψη σε μια νέα εσωτερική κατάσταση του πράκτορα: next: I x Per I Ο πράκτορας ξεκινά σε μια αρχική εσωτερική κατάσταση i0. Παρατηρεί την κατάσταση του περιβάλλοντός του e και δημιουργεί μια αντίληψη see(e). Ενημερώνεται η εσωτερική του κατάσταση και γίνεται next(i0, see(e)). Επιλέγεται ενέργεια action(next(i0, see(e))). Εκτελείται η ενέργεια και ο πράκτορας ξεκινά καινούργιο κύκλο. Οι πράκτορες με κατάσταση είναι ισοδύναμης συμπεριφοράς με τους πράκτορες όπως τους αναπαραστήσαμε προηγουμένως, απλά αυτό το μοντέλο είναι περισσότερο διαισθητικά κατανοητό.
Πώς θέτουμε στόχους σε έναν πράκτορα; Κατασκευάζουμε πράκτορες για να εκτελούν για λογαριασμό μας κάποιες συγκεκριμένες εργασίες. Πρέπει λοιπόν να ορίσουμε στους πράκτορές μας τι να κάνουν, να τους θέσουμε στόχους. Ένας τρόπος για να γίνει αυτό είναι να γράψουμε ένα πρόγραμμα για να το εκτελεί ο πράκτορας. Έτσι δεν υπάρχει αβεβαιότητα για τη συμπεριφορά του πράκτορά μας, θα εκτελεί πάντα αυτό που τον προγραμματίσαμε να εκτελεί. Όμως τότε θα πρέπει να σκεφτούμε ακριβώς πώς θα εκτελείται η εργασία και να γράψουμε το πρόγραμμα με συγκεκριμένο αλγόριθμο. Αν προκύψουν απρόβλεπτες συνθήκες, ο πράκτοράς μας δεν θα μπορεί να αντιδράσει ανάλογα. Ένας πιο χρήσιμος τρόπος είναι να ορίσουμε στον πράκτορά μας τι θέλουμε να κάνει χωρίς να του πούμε πώς να το κάνει. Μπορούμε να ορίσουμε εργασίες έμμεσα μέσω κάποιου μέτρου απόδοσης: συσχετίζουμε καταστάσεις του περιβάλλοντος με χρησιμότητες.
Συναρτήσεις χρησιμότητας σε καταστάσεις περιβάλλοντος
Συναρτήσεις χρησιμότητας σε σειρές του πράκτορα
Tileworld: περιγραφή
Tileworld: λειτουργία
Tileworld: ικανότητες πρακτόρων
Μειονεκτήματα των συναρτήσεων χρησιμότητας Είναι συχνά δύσκολο να ορίσουμε την κατάλληλη συνάρτηση χρησιμότητας. Συνήθως είναι πιο φυσικό να ορίζουμε τις εργασίες που θέλουμε να επιτελέσει ο πράκτορας μέσω στόχων που θα επιτευχθούν παρά μέσω της χρησιμότητας της κατάστασης περιβάλλοντος στην οποία ισχύουν αυτοί οι στόχοι. Έτσι προτιμούμε να ορίζουμε τις εργασίες πρακτόρων με κατηγορήματα.
Ορισμός εργασιών με κατηγορήματα
Περιβάλλοντα εργασίας
Είδη εργασίας
Εργασίες εκπλήρωσης
Εργασίες συντήρησης
Πράκτορες επαγωγικού συλλογισμού
Συμβολική τεχνητή νοημοσύνη Με την παραδοσιακή προσέγγιση για την κατασκευή τεχνητά νοημόνων ΥΣ δίνουμε στο ΥΣ μια συμβολική αναπαράσταση του περιβάλλοντός του και της επιθυμητής συμπεριφοράς του με προτάσεις λογικής. Το ΥΣ επεξεργάζεται «συντακτικά» αυτή την αναπαράσταση λογικών προτάσεων, κάνοντας επαγωγικό συλλογισμό (ή απόδειξη θεωρημάτων). Παράδειγμα: έχουμε ένα ρομποτικό πράκτορα που σκοπός του είναι να διατρέχει το χώρο ενός γραφείου και να μαζεύει τα σκουπίδια.
Παράδειγμα RALPH Ο RALPH λειτουργεί σε φυσικό περιβάλλον που αποτελείται από διαδρόμους και τοίχους. Οι αισθητήρες του δέχονται είσοδο από μια βιντεο-κάμερα. Το υποσύστημα interp μετατρέπει την είσοδο των αισθητήρων του σε προτάσεις λογικής πρώτης τάξης. Η γνώση του για το περιβάλλον του περιέχεται στη Βάση Γνώσης του.
Τα βασικά προβλήματα Για να κατασκευάσουμε τον RALPH (και όποιον άλλο πράκτορα) με συμβολική ΤΝ πρέπει να επιλύσουμε δύο προβλήματα: Πώς να μεταφράσουμε τον πραγματικό κόσμο σε μια συμβολική αναπαράσταση, που να είναι ακριβής και επαρκής, και σε χρόνο ώστε να είναι χρήσιμη η αναπαράσταση; Σε ποια συμβολική μορφή να κάνουμε την αναπαράσταση ώστε να μπορούν οι πράκτορες να την επεξεργάζονται για να εκτελούν συλλογισμούς με αυτήν σε χρόνο που να είναι χρήσιμα τα αποτελέσματα/συμπεράσματά τους; Η έρευνα ως προς το πρώτο πρόβλημα οδήγησε σε εξελίξεις στην μηχανική όραση, την επεξεργασία φωνής, τη μηχανική μάθηση κλπ. Η έρευνα ως προς το δεύτερο πρόβλημα οδήγησε σε εξελίξεις στην αναπαράσταση γνώσης, τον αυτόματο συλλογισμό, την αυτόματη κατάστρωση σχεδίου δράσης κλπ.
Οι πράκτορες που αποδεικνύουν θεωρήματα ή οι πράκτορες που σκέπτονται προσεκτικά (deliberate agents) Η εσωτερική κατάστασή τους θεωρείται πως είναι μια βάση δεδομένων που περιέχει προτάσεις κατηγορηματικής λογικής πρώτης τάξης. Αυτές οι προτάσεις περιγράφουν το περιβάλλον του πράκτορα και τις ιδιότητές του. Αντιστοιχούν σε αυτό που αποκαλούμε «πεποιθήσεις» για τους ανθρώπους. Παράδειγμα: στο φυσικό περιβάλλον του πράκτορα μπορεί η θερμοκρασία στο δωμάτιο 21 να είναι 40 βαθμοί. Η βάση δεδομένων του πράκτορα θα περιέχει την πρόταση temperature(room21,40). Όπως συμβαίνει και με τις πεποιθήσεις των ανθρώπων μπορεί οι πεποιθήσεις ενός πράκτορα να είναι λάθος (π.χ. Επειδή υπάρχει σφάλμα σε κάποιον αισθητήρα, επειδή η πληροφορία του πράκτορα δεν είναι ενημερωμένη, επειδή ο συλλογισμός του πράκτορα είναι λανθασμένος κλπ). Προσοχή λοιπόν, όπως και στις βάσεις δεδομένων ισχύει η διάκριση πραγματικού κόσμου και μικρο-κόσμου.
Τυπικός ορισμός επαγωγικού πράκτορα
Ψευδοκώδικας ορισμού της συνάρτησης δράσης Ο προγραμματιστής του πράκτορα κωδικοποιεί τους κανόνες ρ και τη βάση Δ έτσι ώστε αν μια πρόταση Do(α) (όπου α είναι μια ενέργεια) μπορεί να εξαχθεί, τότε η α είναι η καλύτερη ενέργεια. Ο πράκτορας δοκιμάζει για κάθε μια από τις ενέργειές του να αποδείξει Do(α) χρησιμοποιώντας τους κανόνες ρ. Αν πετύχει τότε η α είναι η ενέργεια που επιλέγεται. Αν αποτύχει, προσπαθεί να αποδείξει Do(α). Αν αποτύχει τότε η ενέργεια α δεν απαγορεύεται και επιστρέφεται. Αν αποτύχει και πάλι τότε καμία ενέργεια δεν επιτρέπεται και επιστρέφει null.
Παράδειγμα: ο πράκτορας-καθαριστής Ο πράκτορας έχει αισθητήρα για να αντιλαμβάνεται τη βρωμιά και αναρροφητή για να την μαζεύει. Έχει πάντα προσανατολισμό (Ν, S, E, W) και μπορεί να μετακινείται εμπρός κατά ένα βήμα ή να στρέφεται κατά 90ο. Το δωμάτιο αναπαρίσταται ως πλέγμα 3x3 και ας πούμε ότι ο πράκτορας ξεκινά πάντα από τη θέση (0,0) με προσανατολισμό Ν. Ο πράκτορας δέχεται αντιλήψεις dirt ή null. Oι ενέργειες που μπορεί να εκτελέσει είναι forward, suck, turn. Στόχος του είναι να διατρέχει διαρκώς το δωμάτιο μαζεύοντας βρωμιά όπου τη βρεί.
Αναπαράσταση για τον πράκτορα-καθαριστή (1)
Αναπαράσταση για τον πράκτορα-καθαριστή (2)
Αναπαράσταση για τον πράκτορα-καθαριστή (3)
Προβλήματα στην λογική προσέγγιση για την κατασκευή πρακτόρων (1)
Προβλήματα στην λογική προσέγγιση για την κατασκευή πρακτόρων (2)
«Πρακτορο-στραφής προγραμματισμός» (Agent-Oriented Programming, Shoham 1993) Η βασική ιδέα είναι να προγραμματίζουμε πράκτορες με βάση νοητικές έννοιες όπως τις πεποιθήσεις τους, τις επιθυμίες και τους στόχους τους, γιατί και οι άνθρωποι χρησιμοποιούμε τέτοιες έννοιες σαν αφαιρετικό μηχανισμό για να περιγράψουμε τις ιδιότητες πολύπλοκων συστημάτων. Όπως χρησιμοποιούμε τέτοιες έννοιες για να περιγράψουμε και να αναλύσουμε την ανθρώπινη συμπεριφορά, έτσι μπορούμε να τις χρησιμοποιήσουμε για να περιγράψουμε και να αναλύσουμε τη συμπεριφορά πρακτόρων. Η πρώτη ΑΟP γλώσσα προγραμματισμού για πράκτορες είναι η AGENT0. Η γλώσσα είναι στη φάση του πρωτοτύπου, δεν χρησιμοποιείται για την κατασκευή συστημάτων μεγάλης κλίμακας. Ένας πράκτορας προσδιορίζεται ορίζοντας Ένα σύνολο ικανοτήτων του (τι μπορεί να κάνει) Ένα σύνολο αρχικών πεποιθήσεων Ένα σύνολο αρχικών δεσμεύσεων Ένα σύνολο κανόνων δέσμευσης. Αυτό καθορίζει πώς ενεργεί ο πράκτορας.
Κανόνες δέσμευσης στην AGENT0 Κάθε κανόνας δέσμευσης ορίζεται από Μια συνθήκη μηνύματος Μια συνθήκη νοητική Μια ενέργεια Ένας κανόνας δέσμευσης ενεργοποιείται όταν η συνθήκη μηνύματός του ικανοποιείται με βάση τα μηνύματα που έχει λάβει ο πράκτορας. Τότε ελέγχεται αν ικανοποιείται η νοητική συνθήκη του κανόνα με βάση τις πεποιθήσεις του πράκτορα. Αν ναι, τότε ο πράκτορας δεσμεύεται να κάνει την ενέργεια που ορίζει ο κανόνας. (σε τι συνάρτηση της βασικής αρχιτεκτονικής αντιστοιχεί ο κανόνας δέσμευσης;)
Ενέργειες στην AGENT0 Μπορεί να είναι ιδιωτικές (private) δηλαδή να αντιστοιχούν σε υπορουτίνες που εκτελούνται εσωτερικά στον πράκτορα ή Επικοινωνιακές (communicative) δηλαδή να αντιστοιχούν σε αποστολή μηνυμάτων. Τα μηνύματα που μπορεί να στέλνει ο πράκτορας είναι τριών τύπων Αιτήσεις προς κάποιον άλλο πράκτορα για την εκτέλεση κάποιας ενέργειας (requests) Αίτήσεις προς κάποιον άλλο πράκτορα για να αποφύγει να εκτελέσει κάποια ενέργεια (unrequests) Πληροφόρηση κάποιου άλλου πράκτορα (inform) Τα μηνύματα αιτήσεων που λαμβάνει κάποιος πράκτορας έχουν σαν αποτέλεσμα να αλλάζουν οι δεσμεύσεις του. Τα μηνύματα πληροφόρησης που λαμβάνει κάποιος πράκτορας έχουν σαν αποτέλεσμα να αλλάζουν οι πεποιθήσεις του.
Παράδειγμα κανόνα δέσμευσης στην AGENT0 COMMIT ( (agent, REQUEST DO(time, action) ), ;;; msg condition (B, [now, Friend agent] AND CAN(self, action) AND NOT [time, CMT(self, anyaction)] ), ;;; mental condition self, DO(time, action) ) Σε παράφραση: Αν λάβω μήνυμα από έναν πράκτορα agent που μου ζητά να κάνω την ενέργεια action τη χρονική στιγμή time και πιστεύω ότι: Ο πράκτορας agent κατά τη χρονική στιγμή λήψης του μηνύματος είναι φίλος & Μπορώ να κάνω την ενέργεια action & Στη χρονική στιγμή time δεν είμαι δεσμευμένος να κάνω κάποια άλλη ενέργεια Τότε δεσμεύομαι να κάνω την ενέργεια action στο χρόνο time.
Λειτουργία πράκτορα στην AGENT0 Ο πράκτορας εκτελεί τον κύκλο Διάβασε όλα τα τρέχοντα μηνύματα και ενημέρωσε τις πεποιθήσεις (άρα και τις δεσμεύσεις) σου όπου αυτό είναι απαραίτητο Εκτέλεσε όλες τις δεσμεύσεις σου για τον τρέχοντα κύκλο όπου η συνθήκη ικανότητας της σχετικής ενέργειας ικανοποιείται
Η σύγχρονη (concurrent) γλώσσα MetateM (Fisher 1994) Ένα σύστημα στη MetateM αποτελείται από ένα πλήθος πρακτόρων που λειτουργούν συγχρόνως και επικοινωνούν μεταξύ τους με ασύγχρονη μετάδοση μηνυμάτων (asynchronous broadcasting). Κάθε πράκτορας προγραμματίζεται δίνοντας τον ορισμό της επιθυμητής συμπεριφοράς του σε χρονική λογική. Ο ορισμός του πράκτορα εκτελείται για να παράγει τη συμπεριφορά του. Ο ορισμός κάθε πράκτορα περιέχει δύο στοιχεία Μια διεπαφή που ορίζει πώς ο πράκτορας αλληλεπιδρά με το περιβάλλον του (δηλαδή και με άλλους πράκτορες) Μια υπολογιστική μονάδα που ορίζει πώς ενεργεί ο πράκτορας.
Διεπαφή πράκτορα στην MetateM Η διεπαφή πράκτορα αποτελείται από Ένα μοναδικό όνομα για τον ορισμό της ταυτότητάς του Ένα σύνολο συμβόλων που ορίζουν τα μηνύματα που μπορεί να δεχτεί ο πράκτορας (προτάσεις του περιβάλλοντος) Ένα σύνολο συμβόλων που ορίζουν τα μηνύματα που μπορεί να στείλει ο πράκτορας (προτάσεις του συστατικού) Παράδειγμα: η διεπαφή ενός πράκτορα-στοίβας μπορεί να είναι stack(pop, push) [popped, full] Όποτε μεταδίδεται μήνυμα pop ή push ο πράκτορας με όνομα stack το δέχεται. Αν μεταδίδεται μήνυμα διαφορετικό ο πράκτορας stack το αγνοεί. Τα μόνα μηνύματα που μπορεί να στείλει ο πράκτορας stack ξεκινούν με τα σύμβολα popped ή full.
Υπολογιστική μονάδα πράκτορα στην MetateM Ορίζεται από ένα σύνολο κανόνων που είναι προτάσεις σε χρονική λογική της μορφής Συνθήκη για το παρελθόν επακόλουθο για το παρόν και το μέλλον Οι προτάσεις αριστερά και δεξιά από το σύμβολο είναι προτάσεις σε χρονική λογική και χρησιμοποιούν τα λογικά συνδετικά που ορίζονται στον παρακάτω πίνακα. φ φ αληθής αύριο φ φ αληθής χθές φ φ αληθής κάποια στιγμή στο μέλλον φ αληθής πάντα στο μέλλον φ φ αληθής κάποια στιγμή στο παρελθόν φ φ αληθής πάντα στο παρελθόν φ U ψ φ αληθής μέχρι να γίνει αληθής ψ φ S ψ φ είναι απο το παρελθόν αληθής από τότε που έγινε αληθής ψ φ W ψ φ αληθής εκτός αν είναι αληθής ψ φ Z ψ φ αληθής από το παρελθόν και πιθανά από τότε που έγινε αληθής ψ
Παραδείγματα προτάσεων σε χρονική λογική important(agents) it is now and will always be true that agents are important tall(Janine) some time in the future Janine will be tall friends(us) U apologize(you) we are not friends now until you apologize apologize(you) tomorrow (in the next state) you apologize boss(you) you were boss some time in the past and you are boss now
Λειτουργία πράκτορα στη MetateM Ο πράκτορας εκτελεί τον κύκλο Διάβασε τα μηνύματα που λαμβάνεις από το περιβάλλον (δηλαδή άλλους πράκτορες) και ενημέρωσε την ιστορία σου με αυτά. Έλεγξε ποιοί κανόνες ενεργοποιούνται, δηλαδή ποιών κανόνων οι συνθήκες παρελθόντος ικανοποιούνται από τα μηνύματα της τρέχουσας ιστορίας σου. Εκτέλεσε όλους τους κανόνες που ενεργοποιούνται μαζί με όποιες δεσμεύσεις είναι ενεργές από προηγούμενους κύκλους, δηλαδή Μάζεψε όλα τα επακόλουθα κανόνων που είναι ενεργοποιημένοι στον τωρινό κύκλο και όλα τα επακόλουθα κανόνων που ήταν ενεργοποιημένοι σε προηγούμενους κύκλους αλλά δεν εκτελέστηκαν. Αυτό έχει σαν αποτέλεσμα ο πράκτορας να καλείται να ικανοποιήσει μια λογική πρόταση που έχει τη μορφή της διάζευξης. Από τη διάζευξη ο πράκτορας θα επιλέξει μια ενέργεια. Όσες ενέργειες δεν εκτελεστούν στον τρέχοντα κύκλο μεταφέρονται στον επόμενο κύκλο.
Παράδειγμα λειτουργίας πράκτορα στη MetateM
Πράκτορες πρακτικού συλλογισμού
Πρακτικός συλλογισμός Ο συλλογισμός των ανθρώπων βασίζεται ασφαλώς στη λογική αλλά υπάρχουν διάφορες διεργασίες που συμβαίνουν όταν λαμβάνουμε μια απόφαση, πέρα από την επαγωγή, δηλαδή την απόδειξη θεωρημάτων. Ο πρακτικός συλλογισμός είναι συλλογισμός που προσανατολίζεται στην πράξη, δηλαδή στο να αποφασίσουμε τι να κάνουμε. Ο πρακτικός συλλογισμός συνίσταται στο να ζυγίζουμε συγκρουόμενα επιχειρήματα υπέρ και κατά διαφόρων επιλογών δράσης. Τα συγκρουόμενα επιχειρήματα αφορούν τις επιθυμίες, τις αξίες, τις επιδιώξεις, τις πεποιθήσεις ενός πράκτορα. (Bratman 1990). Πρακτικός συλλογισμός θεωρητικός συλλογισμός. Ο δεύτερος επηρρεάζει τις πεποιθήσεις του πράκτορα. Ο πρώτος καθορίζει τις ενέργειες του πράκτορα. Σύμφωνα με τον θεωρητικό συλλογισμό, αν πιστεύω ότι όλοι οι άνθρωποι είναι θνητοί, και ότι ο Σωκράτης είναι άνθρωπος, τότε συμπεραίνω ότι και ο Σωκράτης είναι θνητός. Σύμφωνα με τον πρακτικό συλλογισμό συμπεραίνω ότι πρέπει να πάρω το τραίνο και όχι το λεωφορείο όταν μαθαίνω ότι είναι κλειστή η εθνική οδός.
Σκέψη και στόχευση Ο ανθρώπινος πρακτικός συλλογισμός φαίνεται ότι συνίσταται σε δύο διεργασίες Αποφασίζουμε τι στόχο θέλουμε να πετύχουμε. (διεργασία σκέψης, deliberation) Αποφασίζουμε πώς θα πετύχουμε το στόχο που επιλέξαμε. (διεργασία στόχευσης ή συλλογισμού μέσων-σκοπού, means-ends reasoning) Η διεργασία σκέψης έχει σκοπό να καταλήξει ο πράκτορας (ανθρωπος ή τεχνητός) στην επιλογή κάποιου σκοπού προς επίτευξη (π.χ επιλογή σκοπού μετά την αποφοίτηση). Η διεργασία στόχευσης έχει σκοπό να καταστρώσει ο πράκτορας ένα σχέδιο δράσης για να πετύχει το στόχο που έθεσε σαν αποτέλεσμα της διεργασίας σκέψης (π.χ. Αν έχω επιλέξει να βρώ δουλειά μετά την αποφοίτηση, η διεργασία στόχευσης επιστρέφει ένα σχέδιο, π.χ να δω τις αγγελίες, να κάνω αιτήσεις, να παω σε συνεντεύξεις, κλπ).
Υπολογιστικοί περιορισμοί για τις διεργασίες σκέψης και στόχευσης Ένας πράκτορας (άνθρωπος ή τεχνητός) εκτελεί τις διεργασίες σκέψης και στόχευσης με πεπερασμένους πόρους μνήμης και (υπολογιστικού) χρόνου. Η ικανότητα του πράκτορα να πετύχει στο περιβάλλον του καθορίζεται εν μέρει από την ικανότητά του να χρησιμοποιήσει αποτελεσματικά τους διαθέσιμους πόρους. Ο πράκτορας πρέπει να ελέγχει αποτελεσματικά το μηχανισμό συλλογισμού του. Οι πράκτορες δεν μπορεί να σκέφτονται επ’άπειρο. Κάποια στιγμή θα πρέπει η διεργασία σκέψης να τελειώσει και ο πράκτορας να έχει επιλέξει κάποιο στόχο προς επίτευξη. Ο στόχος αυτός ίσως δεν είναι ο βέλτιστος, δηλαδή αν ο πράκτορας είχε περισσότερο χρόνο στη διάθεσή του για σκέψη, τότε μπορεί να επέλεγε καλύτερο στόχο. Οι στόχοι τους οποίους επιλέγει ένας πράκτορας με την ολοκλήρωση της διεργασίας σκέψης λέγονται προθέσεις (intentions).
Προθέσεις στον πρακτικό συλλογισμό Οι προθέσεις αφορούν καταστάσεις που θέλει ένας πράκτορας να πετύχει στο μέλλον. Αποτέλεσμά τους είναι κάποια δράση εκ μέρους του πράκτορα. Δεν πρέπει να συγχέονται με τις επιθυμίες, οι οποίες χαλαρά χαρακτηρίζουν πιθανή δράση ενός πράκτορα. (π.χ. Επιθυμώ να πάω για ψώνια έχω πρόθεση να πάω για ψώνια). Οι προθέσεις έχουν διάρκεια, επιμένουν. Αν ειλικρινά ένας πράκτορας που σκεπτεται ορθολογικά έχει μια πρόθεση τότε προσπαθεί να κάνει κάτι να την πετύχει, δεν την εγκαταλείπει αμέσως. Φυσικά ο πράκτορας επιμένει στην πρόθεσή του όσο αυτή φαίνεται δυνατή και όσο υπάρχουν τρόποι δράσης για να την πετύχει. Η επιλογή μιας πρόθεσης σε μια χρονική στιγμή περιορίζει τον πρακτικό συλλογισμό του πράκτορα μετά από αυτή τη χρονική στιγμή, δηλαδή ο πράκτορας δεν κάνει επιλογές (προθέσεων ή δράσης) που είναι ασυνεπείς με την πρόθεσή του. Η επιλογή μιας πρόθεσης συνεπάγεται ότι ο πράκτορας πιστεύει ότι η κατάσταση που θέλει να πετύχει είναι δυνατή, δηλαδή πως αν καταστρώσει κατάλληλο σχέδιο δράσης για την πρόθεσή του και το περιβάλλον του είναι συνεργάσιμο, τότε θα την πραγματοποιήσει.
Η θέση ασυμμετρίας (Bratman 1987) Οι πεποιθήσεις και οι προθέσεις ενός πράκτορα αλληλεπιδρούν. Ασυνέπεια πρόθεσης-πεποίθησης (intention-belief inconsistency): Ο πράκτορας έχει την πρόθεση να επιφέρει την κατάσταση περιβάλλοντος φ και ταυτόχρονα πιστεύει ότι δεν θα επιφέρει την κατάσταση περιβάλλοντος φ. Αυτό δεν είναι ορθολογικό. Μη-πληρότητα πρόθεσης-πεποίθησης (intention-belief incompleteness): Ο πράκτορας έχει την πρόθεση να επιφέρει την κατάσταση περιβάλλοντος φ χωρίς να πιστεύει ότι η φ θα είναι αληθής. Αυτό είναι αποδεκτό για ορθολογικούς πράκτορες (δηλαδή πράκτορες που αναγνωρίζουν ότι η δράση τους δεν είναι πάντα, εγγυημένα, επιτυχής).
BDI μοντέλο πρακτόρων Υποθέτουμε ότι ένας πράκτορας έχει στη διάθεσή του μια αναπαράσταση των πεποιθήσεων, προθέσεων και επιθυμιών του. Αυτή η αναπαράσταση μπορεί να είναι συμβολική σε κάποια κατάλληλη λογική. Β μεταβλητή που συμβολίζει το σύνολο Bel των πεποιθήσεων του πράκτορα D μεταβλητή που συμβολίζει το σύνολο Des των επιθυμιών του πράκτορα Ι μεταβλητή που συμβολίζει το σύνολο Ιnt των προθέσεων του πράκτορα. Η διεργασία σκέψης αναπαρίσταται μέσω δύο συναρτήσεων: Συνάρτηση δημιουργίας επιλογών που με βάση τις τρέχουσες προθέσεις και πεποιθήσεις του πράκτορα δημιουργεί ένα σύνολο επιθυμιών options:(Bel) x (Int) (Des) Συνάρτηση φιλτραρίσματος επιλογών που με βάση τις τρέχουσες πεποιθήσεις, επιθυμίες και προθέσεις του πράκτορα επιλέγει ως νέες προθέσεις τις καλύτερες από τις επιλογές του (δηλαδή τις καλύτερες από τις επιθυμίες του) filter: (Bel) x (Des) x (Int) (Int) Η αναθεώρηση των πεποιθήσεων του πράκτορα αναπαρίσταται από τη συνάρτηση brf: (Bel) x Per (Bel)
Συλλογισμός μέσων-σκοπού (ή διεργασία στόχευσης) Συλλογισμός μέσων-σκοπού είναι η διεργασία με την οποία αποφασίζουμε πώς να πετύχουμε ένα σκοπό χρησιμοποιώντας τα διαθέσιμα μέσα, δηλαδή τις ενέργειες που μπορούμε να κάνουμε. Στην ΤΝ είναι γνωστή και ώς διεργασία κατάστρωσης σχεδίου δράσης ή σχεδιασμός (planning). Ο σχεδιασμός είναι ουσιαστικά αυτόματος προγραμματισμός. Ένας πράκτορας σχεδιασμού παίρνει σαν είσοδο Ένα στόχο (ή μια πρόθεση ή μια εργασία). Αυτό αφορά μια εργασία εκπλήρωσης ώστε να δημιουργηθεί μια κατάσταση περιβάλλοντος ή μια εργασία συντήρησης ώστε να διατηρηθεί μια κατάσταση περιβάλλοντος. Την τρέχουσα κατάσταση περιβάλλοντος που αποτελεί τις πεποιθήσεις του πράκτορα. Το ρεπερτόριο των ενεργειών που είναι διαθέσιμες στον πράκτορα. Και παράγει σαν έξοδο ένα σχέδιο δράσης, δηλαδή μια ακολουθία ενεργειών που αν εκτελεστούν σωστά το περιβάλλον του πράκτορα θα μεταβεί από την τρέχουσα κατάσταση στην κατάσταση του στόχου.
Σχεδιασμός στην Τεχνητή Νοημοσύνη Το πρώτο ΥΣ σχεδιασμού ήταν το STRIPS (Fikes & Nilsson 1971). Αποτελούνταν από δύο συστατικά Ένα μοντέλο του κόσμου αναπαριστάμενο με προτάσεις κατηγορηματικής λογικής πρώτης τάξης Ένα σύνολο από σχήματα ενεργειών που περιγράφουν τις προϋποθέσεις και τα αποτελέσματα όλων των ενεργειών που είναι διαθέσιμες στο ΥΣ. Συνήθως οι αλγόριθμοι σχεδιασμού στην ΤΝ δοκιμάζονται στο παράδειγμα του λεγόμενου κόσμου των κύβων (Blocks world) Έχουμε 3 ισομεγέθεις κύβους A, B, C, την επιφάνεια ενός τραπεζιού, κι ένα ρομπότ που μπορεί να σηκώνει και να μεταφέρει έναν κύβο τη φορά. Οι κύβοι μπορεί να είναι τοποθετημένοι στην επιφάνεια του τραπεζιού ή ο ένας πάνω στον άλλο σε διάφορους συνδυασμούς. Το ΥΣ σχεδιασμού (ρομπότ) ξεκινά με μια κατάσταση περιβάλλοντος στην οποία οι κύβοι βρίσκονται σε κάποιες θέσεις και προσπαθεί να επιφέρει μια νέα κατάσταση περιβάλλοντος.
STRIPS and the Blocks world (1) Αναπαράσταση τρέχουσας κατάστασης περιβάλλοντος: {Clear(A), On(A,B), OnTable(B), OnTable(C), Clear(C)} Αναπαράσταση κατάστασης περιβάλλοντος στόχου: {OnTable(A), OnTable(B), OnTable(C)}
STRIPS and the Blocks World (2) Οι ενέργειες αναπαρίστανται με βάση το ακόλουθο σχήμα: Όνομα της ενέργειας και οι παράμετροί της (αν έχει) Σύνολο προϋποθέσεων, δηλαδή σύνολο όλων των προτάσεων που πρέπει να είναι αληθείς για να μπορεί να εκτελεστεί η ενέργεια. Σύνολο αφαίρεσης, δηλαδή σύνολο όλων των προτάσεων που θα πάψουν να είναι αληθείς μετά την εκτέλεση της ενέργειας. Σύνολο πρόσθεσης, δηλαδή σύνολο όλων των προτάσεων που θα γίνουν αληθείς μετά την εκτέλεση της ενέργειας. Η ενέργεια Stack(x, y) συμβαίνει όταν το ρομπότ τοποθετεί το αντικείμενο x πάνω στο αντικείμενο y: Stack(x, y) pre {Clear(y), Holding(x)} del {Clear(y), Holding(x)} add {ArmEmpty, On(x,y)}
STRIPS and the Blocks World (3) Η ενέργεια Unstack(x,y) συμβαίνει όταν το ρομπότ αφαιρεί το αντικείμενο x πάνω από το αντικείμενο y. H ενέργεια Pickup(x) συμβαίνει όταν το ρομπότ σηκώνει ένα αντικείμενο x από το τραπέζι. Η ενέργεια Putdown(x) συμβαίνει όταν το ρομπότ αφήνει ένα αντικείμενο x πάνω στο τραπέζι.
Τυπικός ορισμός σχεδιασμού (1)
Τυπικός ορισμός σχεδιασμού (2)
Συμβολισμός για σχέδια
Υλοποίηση ενός πρακτικά συλλογιζόμενου πράκτορα