Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Πληροφορικής Πρόγραμμα Μεταπτυχιακών Σπουδών Σχεδιασμός & Χρονοπρογραμματισμός Ενεργειών Χειμερινό Εξάμηνο 2006-2007
Κεφάλαιο 2 Αναπαράσταση Προβλημάτων Σχεδιασμού Εισαγωγή Αναπαράσταση Προβλημάτων -STRIPS ΗΓλώσσαPDDL Παραδείγματα Αναπαράστασης Προβλημάτων Αναπαράσταση Πλάνων
Εισαγωγή Ένα πρόβλημα σχεδιασμού ορίζεται από 3 περιγραφές <I,G,A> I: αρχική κατάσταση του κόσμου Initial state G: στόχοι Goals, που πρέπει να επιτευχθούν Δεν είναι υποχρεωτικά πλήρης. (πολλές τελικές καταστάσεις) A: ενέργειες Actions που μπορεί να εκτελέσει ο πράκτορας Μορφή αναπαράστασης των περιγραφών: Μεγάλο φάσμα γλωσσών, Η εκφραστικότητα μιας γλώσσας είναι αντιστρόφως ανάλογη με την ευκολία επίλυσης του προβλήματος από τους σχεδιαστές Παραδείγματα: προτασιακή λογική (δεν μπορεί να εκφράσει γενικότητα) κατηγορηματική λογική πρώτης τάξης (δεν μπορεί να περιγράψει ενέργειες με μη προκαθορισμένα αποτελέσματα)
Κεφάλαιο 2 Αναπαράσταση Προβλημάτων Σχεδιασμού Εισαγωγή Αναπαράσταση Προβλημάτων -STRIPS ΗΓλώσσαPDDL Παραδείγματα Αναπαράστασης Προβλημάτων Αναπαράσταση Πλάνων
Το Μοντέλο Strips Χρησιμοποιήθηκε από τον σχεδιαστή STRIPS (Stanford Research Institute Planning System) Το πιο χρησιμοποιημένο μοντέλο περιγραφής προβλημάτων σχεδιασμού. Προτάθηκε το 1971, από τους Fikes και Nilsson, για την καθοδήγηση ενός μικρού ρομπότ (Shakey) Γνώρισε μεγάλη απήχηση, κυρίως λόγω της απλότητας και της φυσικότητας του. Έχει στοιχεία προτασιακής λογικής και είναι κατάλληλο για προβλήματα όπου δεν εμφανίζεται αβεβαιότητα. Ακολουθήθηκε από πολλές επεκτάσεις με πιο πλούσιες εκφραστικές δυνατότητες (π.χ. χρονικοί περιορισμοί)
Μοντέλο STRIPS (Παραδοχές) Αδιαίρετες ενέργειες (indivisible actions): Δεν ενδιαφέρει η κατάσταση του κόσμου κατά τη διάρκεια εκτέλεσης μιας ενέργειας, παρά μόνο στην αρχή και στο τέλος αυτής. Επίσης δεν είναι δυνατή η διακοπή της εκτέλεσης μιας ενέργειας πριν την ολοκλήρωση της. Προκαθορισμένα αποτελέσματα (deterministic effects): Δεν υπάρχει καμιά αβεβαιότητα όσον αφορά τα αποτελέσματα της εφαρμογής μιας ενέργειας, τα οποία είναι γνωστά εκ των προτέρων. Πλήρης γνώση (omniscience): Το σύστημα σχεδιασμού έχει πλήρη γνώση για την τρέχουσα κατάσταση του κόσμου αλλά και για τις δικές του δυνατότητες. Υπόθεση κλειστού συστήματος (closed world assumption): Δεν υπάρχει δυνατότητα προσθήκης νέων ή διαγραφής υπαρχόντων αντικειμένων από τον κόσμο του συστήματος. Στατικός κόσμος (static world): Ο κόσμος αλλάζει μόνο από τις ενέργειες του συστήματος σχεδιασμού και όχι από μόνος του ούτε από τις ενέργειες κάποιας άλλης οντότητας.
Αναπαράσταση Καταστάσεων Στο μοντέλο Strips οι καταστάσεις ορίζονται σαν σύνολα από συγκεκριμένα γεγονότα (facts) που αληθεύουν. Παράδειγμα: a c a b b c Αρχική κατάσταση: block(a) block(b) block(c) on(a,table) on(c,a) on(b,table) clear(b) clear(c) Τελική κατάσταση: on(b,c) on(a,b) Αρχική κατάσταση Τελική κατάσταση
Μειονεκτήματα Δεν αναφέρει το χρόνο κατά τον οποίο ισχύουν τα γεγονότα θα χρειαζόταν χρονικοί προσδιορισμοί για κάθε γεγονός Δεν μπορεί να περιγράψει συνεχείς μεταβολές Θεωρεί πλήρη βεβαιότητα για την ισχύ των γεγονότων Για παράδειγμα, το γεγονός "Ο κύβοςc βρίσκεται πάνω στον κύβο A" θα μπορούσε να ισχύει με βεβαιότητα 80%. Ηβεβαιότητατωνγεγονότωνθαμπορούσεναοριστείμεσυντελεστές Δεν είναι πλήρης Δεν περιέχει γνώση για όλες τις παραμέτρους του προβλήματος αλλά μόνο για αυτές που θεωρείται ότι σχετίζονται με τη λύση του Για παράδειγμα, στην περιγραφή της αρχικής κατάστασης δεν δηλώνονται τα χρώματα των κύβων ούτε η εξωτερική θερμοκρασία Τα γεγονότα που συμπεριλαμβάνονται στην αναπαράσταση ενός προβλήματος αποτελούν το πλαίσιό του (frame)
Αναπαράσταση Ενεργειών (1/2) Μια ενέργεια a περιγράφεται με τρεις λίστες γεγονότων: Λίστα προϋποθέσεων (Precondition list, Pre(a)) Τα γεγονότα που πρέπει να περιλαμβάνονται σε μια κατάσταση, ώστε η ενέργεια να είναι εφαρμόσιμη στην κατάσταση αυτή. Λίστα προσθήκης (Add list, Add(a)) Τα γεγονότα που προσθέτει η ενέργεια στη νέα κατάσταση. Λίστα διαγραφής (Delete list, Del(a)) Τα γεγονότα της τρέχουσας κατάστασης που δε συμπεριλαμβάνονται στη νέα. Del(a) Pre(a), Pre(a) Add(a) =, Del(a) Add(a) =
Εφαρμογή Ενεργειών Για να είναι εφαρμόσιμη μια ενέργεια a σε μια κατάσταση S θα πρέπει: Pre(a) S Η κατάσταση S' που προκύπτει μετά την εφαρμογή της ενέργειας a στην κατάσταση S δίνεται από τον τύπο: S'=res(S,a)=S-Del(a) Add(a) Η κατάσταση S που προκύπτει μετά την εφαρμογή μιας ακολουθίας ενεργειών a 1, a 2,..., a N στην S: S'=res(S, a 1,a 2,..,a N )= res(res(s, a 1,a 2,..,a N-1 ),a N )
Σχεδιασμός Ενεργειών Παράδειγμα C C A B A B S ontable (A) ontable(b) on(c,a) clear(c) clear(b) move_c_from_a_to_b Precs Del clear(c) clear(b) clear(b) on(c,a) on(c,a) Add clear(a) on(c,b) S ontable (A) ontable(b) on(c,a) clear(c) clear(b) on(c,b) clear(a)
Τελεστές αντί Ενεργειών Λόγω του μεγάλου αριθμού ενεργειών στα συνήθη προβλήματα, προτιμάται η χρήση τελεστών Οι τελεστές (operators) ή σχήματα ενεργειών (action schemata) χρησιμοποιούν μεταβλητές και αποτελούν γενικές περιγραφές ομάδων ενεργειών Οι ενέργειες μπορούν να παραχθούν από τους τελεστές, δεσμεύοντας τις μεταβλητές σε συγκεκριμένες τιμές Π.χ. Στο πρόβλημα των κύβων, ένας τελεστής θα μπορούσε να μοντελοποιεί την μετακίνηση κύβων προς το τραπέζι move_to_table (X,Y) Precs clear(x) on(x,y) Del on(x,y) Add clear(y) on_table(x)
Κεφάλαιο 2 Αναπαράσταση Προβλημάτων Σχεδιασμού Εισαγωγή Αναπαράσταση Προβλημάτων -STRIPS Η Γλώσσα PDDL Παραδείγματα Αναπαράστασης Προβλημάτων Αναπαράσταση Πλάνων
Η γλώσσα PDDL Αποτελεί το πρότυπο για την περιγραφή προβλημάτων σχεδιασμού Δημιουργήθηκε το 1998 επεκτείνοντας το μοντέλο STRIPS Αποτελέσματα υπό συνθήκη Δυναμικά σύμπαντα Αξιώματα διαφόρων επιπέδων Περιορισμούς ασφαλείας Ιεραρχίες Προβλημάτων Ακολουθήθηκε πρόσφατα (2003) από τη 2η έκδοσημε επεκτάσεις για Χρόνο Αριθμητικά μεγέθη Πόρους
Πεδία και Προβλήματα Βασικό Χαρακτηριστικό της PDDL είναι ο διαχωρισμός σε Πεδία (Domains): Αφαιρετικές περιγραφές των κοινών στοιχείων που υπάρχουν σε μια οικογένεια προβλημάτων Προβλήματα (Problems): Ορισμός των τιμών του συγκεκριμένου στιγμιότυπου Πλεονεκτήματα διαχωρισμού Ευκολότερη περιγραφή λόγω ιεραρχικής προσέγγισης Επαναχρησιμοποίηση δομών Γρήγορη περιγραφή πολλαπλών παρόμοιων προβλημάτων Αποφυγή επαναλήψεων
Πεδία Στην περιγραφή των πεδίων σχεδιασμού περιλαμβάνονται οι ορισμοί των: Οντοτήτων (entities) ή κλάσεων (classes) που υπάρχουν στον κόσμο Π.χ. Άνθρωποι, Εργαλεία, Αντικείμενα (π.χ. κύβοι) Σχέσεων (Relations) ή κατηγορημάτων (predicates) ανάμεσα στις οντότητες Δηλώνουν ιδιότητες ή καταστάσεις των οντοτήτων (π.χ. On(B,A)) Κάθε οντότητα μεταφράζεται αυτόματα και σε μοναδιαία σχέση Τελεστών (Operators) που αποτελούνται από: Όνομα τελεστή, π.χ. Στρέψε_Βραχίονα, Μετακίνησε Παραμέτρους, που αντιστοιχούν στις επηρεαζόμενες οντότητες Λίστα Προϋποθέσεων Λίστα Διαγραφής Λίστα Προσθήκης
Προβλήματα Στην περιγραφή των προβλημάτων σχεδιασμού περιλαμβάνονται: Τα ονόματα των αντικειμένων που υπάρχουν στον πρόβλημα Ηπλήρηςπεριγραφήτηςαρχικής κατάστασης του κόσμου. Οι καταστάσεις αποτελούν λίστες γεγονότων: Στατικά γεγονότα: Ισχύουν σε όλες τις καταστάσεις του προβλήματος και περιγράφουν στατική γνώση (π.χ. City(Thessaloniki)) Δυναμικά γεγονότα: Αυτά μπορούν να διαγράφονται και να προστίθενται δυναμικά μέσω των ενεργειών (π.χ. at(truck1,thessaloniki)) Οι στόχοι του προβλήματος. Αποτελούνται μόνο από δυναμικά γεγονότα, τα οποία δεν αποτελούν οπωσδήποτε πλήρη πειγραφή κατάστασης
Κεφάλαιο 2 Αναπαράσταση Προβλημάτων Σχεδιασμού Εισαγωγή Αναπαράσταση Προβλημάτων -STRIPS ΗΓλώσσαPDDL Παραδείγματα Αναπαράστασης Προβλημάτων Αναπαράσταση Πλάνων
Παράδειγμα 1 - Gripper Στην οικογένεια του Gripper υπάρχουν ρομπότ που μετακινούνται σε ένα χώρο που περιλαμβάνει δωμάτια τα οποία συνδέονται όλα μεταξύ τους Στα δωμάτια υπάρχουν κάποιες μπάλες τις οποίες τα ρομπότ πρέπει να μεταφέρουν στις επιθυμητές τοποθεσίες (δωμάτια) Κάθε ρομπότ διαθέτει k βραχίονες, οπότε το πολύ k είναι και οι μπάλες που μπορεί να κρατάει ανά πάσα στιγμή. Τα δωμάτια μοντελοποιούνται ως σημεία
Κωδικοποίηση του πεδίου Gripper Οι οντότητες στο πεδίο Gripper είναι: Ρομπότ (Robot) Μπάλα (Ball) Δωμάτιο (Room) Βραχίονας (Gripper) Οι σχέσεις: Βρίσκεται (at) που συνδέει το Ρομπότ με το Δωμάτιο Βρίσκεται (at) που συνδέει τη Μπάλα με το Δωμάτιο Κρατά (has) που συνδέει τον Βραχίονα με την Μπάλα Ελεύθερος (free) που αναφέρεται στον Βραχίονα Ανήκει (belongs) που ορίζει σε ποιο ρομπότ ανήκει ο βραχίονας Οι τελεστές: Move (R, X, Y) robot(r) room(x) room(y) at(r,x) - at(r,x) + at(r,y) robot(r) gripper(g) belongs(g,r) ball(b) room(x) at(r,x) at(b,x) free(g) Pick_ball (R,G,B,X) - at(b,x) - free(r) + has(r,b) Drop_ball (R,G,B,X) robot(r) gripper(g) belongs(g,r) ball(b) room(x) at(r,x) has(r,b) - has(r,b) + at(b,x) + free(g)
Κωδικοποίηση ενός προβλήματος Gripper Έστω το διπλανό πρόβλημα όπου: Tορομπότέχει2 βραχίονες (left, right), Kινείται σε ένα χώρο 3 δωματίων (room1, room2, room3) Yπάρχουν 2 μπάλες (ball1, ball2) Αντικείμενα: Robot1,Ball1,Ball2,Room1,Room2,Room3,Left,Right Αρχική Κατάσταση I = {robot(robot1),room(room1),room(room2),room(room3), ball(ball1),ball(ball2),gripper(left),gripper(right), belongs(left,robot1),belongs(right,robot1),at(robot1,room1), at(ball1,room2),at(ball2,room3),free(left),free(right)} Στόχοι G = {at(ball1,room1), at(ball2,room1)}
Παράδειγμα 2 - Εφοδιαστική Στην οικογένεια της Εφοδιαστικής (Logistics) υπάρχει ένα σύνολο από πόλεις, όπου κάθε μία αποτελείται από ορισμένα σημεία. Στονχάρτηαυτόυπάρχουνορισμέναπακέταπουπρέπεινα μεταφερθούν στον προορισμό τους Για τις μεταφορές χρησιμοποιείται ένας στόλος από φορτηγά και αεροσκάφη Τα φορτηγά έχουν άπειρη χωρητικότητα και μπορούν να μετακινούνται ανάμεσα στα σημεία της ίδιας πόλης Τα αεροσκάφη έχουν επίσης άπειρη χωρητικότητα και μπορούν να μετακινούνται μόνο ανάμεσα στα σημεία που έχουν οριστεί ως αεροδρόμια
Κωδικοποίηση του πεδίου της Εφοδιαστικής (1/2) Οντότητες: Πόλη (City) Σημείο (Location) Φορτηγό (Truck) Αεροσκάφος (Airplane) Πακέτο (Package) Σχέσεις: Airport(Location): Το σημείο είναι αεροδρόμιο In_city(Location,City): Το σημείο ανήκει στην πόλη In(Package,Truck): Το πακέτο βρίσκεται στο φορτηγό In(Package,Airplane): Το πακέτο βρίσκεται στο αεροσκάφος At(Package,Location): Το πακέτο βρίσκεται στο σημείο At(Truck,Location): Το φορτηγό βρίσκεται στο σημείο At(Airplane,Location): Το αεροσκάφος βρίσκεται στο σημείο
Κωδικοποίηση του πεδίου της Εφοδιαστικής (2/2) Τελεστές: Drive(T,From,To,C) truck(t) location(from) location(to) city(c) in-city(from, C) in-city(to,c) at(t,from) package(o) plane(p) location(l) at(o,l) at(p,l) - at(t,from) + at(t,to) Load_plane(O,P,L) - at(o,l) + in(o,p) airplane(p) airport(from) airport(to) at (P,From) Unload_plane(O,P,L) package(o) plane(p) location(l) in(o,p) at(p,l) Fly(P,From,To) - at(p,from) + at(p,to) - in(o,p) + at(o,l) package(o) truck(t) location(l) at(o,l) at(t,l) Load_truck(O,T,L) - at(o,l) + in(o,t) Unload_truck(O,T,L) package(o) truck(t) location(l) in(o,t) at(t,l) - in(o,t) + at(o,l)
Ένα πρόβλημα Εφοδιαστικής Αρχική Κατάσταση Ι={package(P1),package(P2),truck(Tru1),truck(Tru2), truck(tru3),city(athens),city(milan),city(thessaloniki), location(omonoia),location(venizelos),,airport(venizelos), airport(malpensa),airport(macedonia),airplane(plane), In-city(Omonoia,Athens),In-city(Venizelos,Athens),.., at(plane,venizelos),at(tru1,venizelos),at(tru2,railway), at(tru3,toumpa),at(p1,neapoli),at(p2,malpensa)} Στόχοι G={at(P1,Omonoia),at(P2,Railway)} Omonoia Athens Venizelos Malpensa Railway Macedonia Toumpa Neapoli Milan Thessaloniki
Κεφάλαιο 2 Αναπαράσταση Προβλημάτων Σχεδιασμού Εισαγωγή Αναπαράσταση Προβλημάτων -STRIPS ΗΓλώσσαPDDL Παραδείγματα Αναπαράστασης Προβλημάτων Αναπαράσταση Πλάνων
Αναπαράσταση Πλάνων Μία ακολουθία ενεργειών που παράγεται από ένα πρόβλημα σχεδιασμού P=<I,G,A> ονομάζεται πλάνο (plan) Ένα πλάνο αναπαριστάται ως μία δυάδα <Αs,C>, όπου: As = <A 1,A 2,..,A L >, A k A είναι μία λίστα με ενέργειες C είναι μία λίστα με περιορισμούς διάταξης στο As Ανάλογα με τους περιορισμούς διάταξης, ένα πλάνο λέγεται: Γραμμικό (Linear) αν ορίζεται σειριακή ακολουθία εκτέλεσης στο As Παράλληλο (Parallel) ήμη-γραμμικό αν επιτρέπεται η ταυτόχρονη εκτέλεση δύο ή περισσοτέρων ενεργειών Τα πλάνα που εφαρμόζονται στην I ονομάζονται έγκυρα (valid) Ένα έγκυρο πλάνο που πετυχαίνει το G αποτελεί λύση του P Ένα πρόβλημα σχεδιασμού μπορεί να έχει μία ή περισσότερες ή καμία λύση, οπότε χαρακτηρίζεται ως άλυτο (unsolvable).
Διαγραμματική Αναπαράσταση Πλάνων Ι Ένα πρόβλημα με τρεις κύβους C Α B A B C Αρχική κατάσταση Τελική κατάσταση Ένα πλάνο λύση για το παραπάνω πρόβλημα με μορφή δικτύου ενεργειών move_c_from_a_to_table block(c) block(a) on(c,a) clear(c) - on(c,a) + on(c,table) + clear(a) move_b_from_table_to_c block(b) block(c) on(table,b) clear(b) clear(c) - on(table,b) - clear(c) + on(b,c) move_a_from_table_to_b block(a) block(b) on(table,a) clear(a) clear(b) - on(table,a) - clear(b) + on(a,b)
Διαγραμματική Αναπαράσταση Πλάνων ΙΙ Διαγραμματική αναπαράσταση πλάνου με ραβδόγραμμα (Gantt bar chart) Χρόνος σε ώρες 1 2 3 4 5 6 7 8 9 load_truck(truck1, package1, center1) move_truck(truck1, center1, airport1, city1) unload_truck(truck1, package1, airport1) fly_airplane(plane1, airport2, airport1)
Παράδειγμα Ένα πλάνο τριών ενεργειών, το οποίο μετακινεί το φορτίο package1 από τη θέση loc1_1 στη θέση loc1_2, με χρήση του φορτηγού truck1. load_truck(package1,truck1,loc1_1) move_truck(truck1,loc1_1, loc1_2,city1) unload_truck(package1,truck1,loc1_2) truck(truck1) package(package1) location(loc1_1) at(truck1,loc1_1) at(package1,loc1_1) - at(package1,loc1_1) + in(packag1,truck1) truck(truck1) location(loc1_1) location(loc1_2) city(city1) at_city(loc1_1,city1) at_city(loc1_2,city1) at(truck1,loc1_1) - at(truck1,loc1_1) + at(truck1,loc1_2) truck(truck1) package(package1) location(loc1_2) at(truck1,loc1_2) in(package1,truck1) - in(packag1,truck1) + at(package1,loc1_2) Στατικά Γεγονότα truck(truck1), truck(truck2) package(package1) location(loc1_1), location(loc1_2), location(loc2_1), location(loc2_2) at_city(loc1_1, city1), at_city(loc1_2, city1) at_city(loc2_1, city2), at_city(loc2_2, city2) plane(plane1) airport(loc1_2), airport(loc2_2) Δυναμικά Γεγονότα at(truck1,loc1_1) at(package1,loc1_1) Δυναμικά Γεγονότα at(truck1,loc1_1) in(package1,truck1) Δυναμικά Γεγονότα at(truck1,loc1_2) in(package1,truck1) Δυναμικά Γεγονότα at(truck1,loc1_2) at(package1,loc1_2)