ΕΠΛ 434: Λογικός Προγραμματισμός και Τεχνητή Νοημοσύνη Επισκ. Λέκτορας Λοΐζος Μιχαήλ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου (Χειμερινό Εξάμηνο 2008 2009)
Εφαρμογή: Σχεδιασμός Δράσεως Σχεδιασμός Δράσεως: Η ανεύρεση μίας σειράς δράσεων προς επίτευξη μίας επιθυμητής τελικής κατάστασης, δεδομένης της αρχικής κατάστασης. Η χρήση δομών δεδομένων παρέχει την δυνατότητα κωδικοποίησης καταστάσεων. Η χρήση λογικών κανόνων παρέχει τη δυνατότητα κωδικοποίησης μεταβάσεων μεταξύ καταστάσεων ως αποτέλεσμα μίας δράσης. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 2
Γενική Στρατηγική Κωδικοποίηση καταστάσεων του προβλήματος. Ορισμός choose(a, (F, G), T) για «κατάλληλη» επιλογή δράσης A σε μία κατάσταση F, με άμεσο αποτέλεσμα T, και με τελικό στόχο την κατάσταση G. reachable(s, S, _V, []). reachable(s1, S2, V, [A P]) : choose(a, (S1, S2), S3), \+ member(s3, [S1 V]), reachable(s3, S2, [S1 V], P). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 3
Ο Κόσμος των Κύβων 4 4 3 5 6 7 5 2 6 2 3 1 1 7 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 4
Κωδικοποίηση Καταστάσεων on(b, P): Ο κύβος B βρίσκεται στη θέση P. P: είτε κάποιος κύβος, είτε το αντικείμενο table. Μία λίστα αναπαριστά πλήρως μία κατάσταση. [ on(6, 2), on(2, table), on(4, 7), on(7, 3), on(3, table), on(5, 1), on(1, table) ] Γενικεύσεις του προβλήματος: διάφορα μεγέθη και είδη κύβων, και θέσεις στο αντικείμενο table. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 5
1 η Κωδικοποίηση Δράσεων choose(move(b, P), (F, G), T): Έλεγχος συνθηκών και το αποτέλεσμα μετακίνησης ενός κύβου. valid(move(b, table), S1, S3) : block(b, S1), \+ member(on(_x, B), S1), execute_move(b, table, S1, S3). valid(move(b, P), S1, S3) : block(b, S1), \+ member(on(_x, B), S1), block(p, S1), \+ member(on(_y, P), S1), B \== P, execute_move(b, P, S1, S3). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 6
1 η Κωδικοποίηση Δράσεων choose(move(b, P), (F, G), T): Έλεγχος συνθηκών και το αποτέλεσμα μετακίνησης ενός κύβου. choose(a, (S1, _S2), S3) : valid(a, S1, S3). block(b, S1) : member(on(b, _X), S1). execute_move(b, P, S1, [on(b, P) S]) : delete(s1, on(b, _X), S). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 7
2 η Κωδικοποίηση Δράσεων choose(move(b, P), (F, G), T): Έλεγχος συνθηκών και το αποτέλεσμα μετακίνησης ενός κύβου. choose(a, (S1, S2), S3) : valid(a, S1, S3), useful(a, S1, S2). choose(a, (S1, _S2), S3) : valid(a, S1, S3). useful(move(b, P), S1, S2) : member(on(b, P), S2). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 8
3 η Κωδικοποίηση Δράσεων choose(move(b, P), (F, G), T): Έλεγχος συνθηκών και το αποτέλεσμα μετακίνησης ενός κύβου. choose(a, (S1, S2), S3) : valid(a, S1, S3), useful(a, S1, S2). choose(a, (S1, _S2), S3) : valid(a, S1, S3). useful(move(b, P), S1, S2) : member(on(b, P), S2), final_place(p, S1, S2). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 9
3 η Κωδικοποίηση Δράσεων choose(move(b, P), (F, G), T): Έλεγχος συνθηκών και το αποτέλεσμα μετακίνησης ενός κύβου. final_place(table, _S1, _S2). final_place(b, S1, S2) : B \== table, member(on(b, P), S2), member(on(b, P), S1), final_place(p, S1, S2). 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 10
Ελλειπείς Καταστάσεις Ελλειπής Κατάσταση: Μία κατάσταση η οποία δεν καθορίζει τιμές για όλες τις ιδιότητες. Απαιτείται αλλαγή της κωδικοποίησής μας. Ελλειπείς τελικές καταστάσεις κωδικοποιούν ένα σύνολο αποδεκτών τελικών καταστάσεων. Ελλειπείς αρχικές καταστάσεις κωδικοποιούν έλλειψη γνώσεων για την αρχική κατάσταση. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 11
Συνέπειες Ελλειπούς Γνώσης pos(on(b, P)): Ο κύβος B βρίσκεται στη θέση P. neg(on(b, P)): Ο κύβος B δε βρίσκεται στη θέση P. P: είτε κάποιος κύβος, είτε το αντικείμενο table. Μία λίστα αναπαριστά μερικώς μία κατάσταση. [ pos(on(5, 1)), pos(on(4, 7)), neg(on(6, table)) ] Υπόθεση του Ανοιχτού vs. Κλειστού Κόσμου: Καθορίζει τον τρόπο χειρισμού ελλειπούς γνώσης. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 12
Συνέπειες Ελλειπούς Γνώσης Δυνατόν να υπάρχουν αντικείμενα για τα οποία δεν έχουμε καμία γνώση για τις ιδιότητες τους σε ένα πρόβλημα σχεδιασμού δράσεως. block(b, S1) : member(on(b, _X), S1). ; ; ; Δεν γνωρίζουμε απαραίτητα εάν οι συνθήκες εκτέλεσης μίας δράσης ικανοποιούνται. από, \+ member(on(_x, B), S1), σε, \+ member(pos(on(_x, B), S1)), ή σε, member(neg(on(_x, B), S1)), 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 13
Συνέπειες Ελλειπούς Γνώσης Λύση ενός προβλήματος σχεδιασμού δράσεως με ελλειπή αρχική κατάσταση είναι η ανεύρεση μίας σειράς δράσεων προς επίτευξη μίας επιθυμητής τελικής κατάστασης, η οποία επιτυγχάνει ανεξαρτήτως της ελλειπούς γνώσης. Η ελλειπής γνώση συμπληρώνεται από δράσεις. Με δύο κύβους, το S1 = [neg(on(2, 1))] μετά το move(1, 2) είναι S2 = [neg(on(2, 1)), pos(on(1, 2))]. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 14
Συνέπειες Ελλειπούς Γνώσης Οι δράσεις δεν χρειάζεται απαραίτητα να έχουν αποτελέσματα στο περιβάλλον ενός πράκτορα. Δράση Παρατήρησης: Μία δράση που αλλάζει την κατάσταση γνώσης ενός πράκτορα. valid(sense(b), S1, S3) : έλεγχος του περιβάλλοντος για τη θέση του B, S3 = [pos(on(b, παρατηρηθήσα θέση)) S1]. 13/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 15