ΕΠΛ 434: Λογικός Προγραμματισμός και Τεχνητή Νοημοσύνη Επισκ. Λέκτορας Λοΐζος Μιχαήλ Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου (Χειμερινό Εξάμηνο 2008 2009)
Εφαρμογή: Σχεδιασμός Δράσεως Σχεδιασμός Δράσεως: Η ανεύρεση μίας σειράς δράσεων προς επίτευξη μίας επιθυμητής τελικής κατάστασης, δεδομένης της αρχικής κατάστασης. Η χρήση δομών δεδομένων παρέχει την δυνατότητα κωδικοποίησης καταστάσεων. Η χρήση λογικών κανόνων παρέχει τη δυνατότητα κωδικοποίησης μεταβάσεων μεταξύ καταστάσεων ως αποτέλεσμα μίας δράσης. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 2
Ο Λύκος, το Πρόβατο, και το Λάχανο 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 3
1 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Έλεγχος εγκυρότητας μετάβασης λόγω δράσης. reachable(s, S). reachable(s1, S2) : ground_state(s3), move(s1, S3), safe_state(s3), reachable(s3, S2). 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 4
1 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Έλεγχος εγκυρότητας μετάβασης λόγω δράσης. ground_state(state(w, S, C, F)) : member(w, [s, f]), member(s, [s, f]), member(c, [s, f]), member(f, [s, f]). safe_state(state(w, S, C, F)) : W \= S, S \= C. safe_state(state(w, S, C, F)) : F = S. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 5
1 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Έλεγχος εγκυρότητας μετάβασης λόγω δράσης. move(state(w, S, C, F1), state(w, S, C, F2)) : F1 \= F2. move(state(w1, S, C, F1), state(w2, S, C, F2)) : W1 =F1, F1 \= F2, W2 = F2. move(state(w, S1, C, F1), state(w, S2, C, F2)) : S1 = F1, F1 \= F2, S2 =F2. move(state(w, S, C1, F1), state(w, S, C2, F2)) : C1 = F1, F1 \= F2, C2 =F2. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 6
2 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Το αποτέλεσμα μίας δράσης σε μία κατάσταση. reachable(s, S). reachable(s1, S2) : move(s1, S3), safe_state(s3), reachable(s3, S2). switch(χ, Υ) : member(y, [s, f]), X \= Y. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 7
2 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Το αποτέλεσμα μίας δράσης σε μία κατάσταση. move(state(w, S, C, F1), state(w, S, C, F2)) : switch(f1, F2). move(state(w1, S, C, F1), state(w2, S, C, F2)) : W1 = F1, switch(f1, F2), W2 = F2. move(state(w, S1, C, F1), state(w, S2, C, F2)) : S1 = F1, switch(f1, F2), S2 = F2. move(state(w, S, C1, F1), state(w, S, C2, F2)) : C1 = F1, switch(f1, F2), C2 = F2. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 8
3 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(a, state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Το αποτέλεσμα της δράσης A σε μία κατάσταση. reachable(s, S, []). reachable(s1, S2, [A P]) : move(a, S1, S3), safe_state(s3), reachable(s3, S2, P). 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 9
3 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(a, state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Το αποτέλεσμα της δράσης A σε μία κατάσταση. move(cross, state(w, S, C, F1),state(W, S, C, F2)) : switch(f1, F2). move(take_wolf, state(w1, S, C, F1), state(w2, S, C, F2)) : W1 = F1, switch(f1, F2), W2 = F2. move(take_sheep, state(w, S1, C, F1), state(w, S2, C, F2)) : S1 = F1, switch(f1, F2), S2 = F2. move(take_cabbage, state(w, S, C1, F1), state(w, S, C2, F2)) : C1 = F1, switch(f1, F2), C2 = F2. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 10
4 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. move(a, state(w1, S1, C1, F1), state(w2, S2, C2, F2)): Το αποτέλεσμα της δράσης A σε μία κατάσταση. reachable(s, S, _V, []). reachable(s1, S2, V, [A P]) : move(a, S1, S3), \+ member(s3, [S1 V]), safe_state(s3), reachable(s3, S2, [S1 V], P). 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 11
5 η Κωδικοποίηση Προβλήματος state(w, S, C, F): Οι θέσεις των πρωταγωνιστών. choose(a, state(w1, S1, C1, F1), state(w2, S2, C2, F2)): «Κατάλληλη» επιλογή μίας ασφαλούς δράσης A. reachable(s, S, _V, []). reachable(s1, S2, V, [A P]) : choose(a, S1, S3), \+ member(s3, [S1 V]), reachable(s3, S2, [S1 V], P). 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 12
Γενική Στρατηγική Κωδικοποίηση καταστάσεων του προβλήματος. Ορισμός choose(a, F, T) για «κατάλληλη» επιλογή δράσης A σε μία κατάσταση F, με αποτέλεσμα T. reachable(s, S, _V, []). reachable(s1, S2, V, [A P]) : choose(a, S1, S3), \+ member(s3, [S1 V]), reachable(s3, S2, [S1 V], P). 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 13
Ιεραπόστολοι και Κανίβαλοι 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 14
Κωδικοποίηση Προβλήματος state(m, C, B): Ο αριθμός των ιεραποστόλων και κανιβάλων στην πρώτη όχθη, και η θέση της βάρκας. choose(cross(m, C), state(m1, C1, s), state(m2, C2, f)) : Mmax is min(m1, 2), between(0, Mmax, M), Cmax is min(c1, 2 M), Cmin is max(0, 1 M), between(cmin, Cmax, C), M2 is M1 M, C2 is C1 C, safe_side(m2, C2), safe_side(3 M2, 3 C2). choose(back(m, C), state(m1, C1, f), state(m2, C2, s)) : safe_side(0, C) : C > 0. safe_side(m, C) : M >= C. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 15
Ζωολογικός Κήπος 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 16
Κωδικοποίηση Καταστάσεων state( chimpanzee(xc, Yc, Zc), elephant(xe, Ye), bananas((xb, Yb), Sb), door(((x1d, Y1d), (X2d, Y2d)), Sd), wall([((x1w, Y1w), (X2w, Y2w)), ]) ) Περιγράφει τις θέσεις και καταστάσεις όλων των οντοτήτων εντός του ζωολογικού κήπου. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 17
Κωδικοποίηση Δράσεων Όνομα δράσης: climp_up Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, και βρίσκεται δίπλα στον ελέφαντα Αποτέλεσμα εκτέλεσης: ανεβαίνει στον ελέφαντα, και είναι στην ίδια θέση με τον ελέφαντα. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 18
Κωδικοποίηση Δράσεων Όνομα δράσης: descent_to(x, Y) Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, βρίσκεται πάνω στον ελέφαντα, και θα κατέβει δίπλα Αποτέλεσμα εκτέλεσης: κατεβαίνει στην επιλεγμένη θέση 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 19
Κωδικοποίηση Δράσεων Όνομα δράσης: walk_to(x, Y) Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, βρίσκεται στο έδαφος, θα μετακινηθεί δίπλα, και δε θα διασχίσει τοίχο / κλειστή πόρτα Αποτέλεσμα εκτέλεσης: εάν καταλήξει στη θέση του ελέφαντα, πεθαίνει, διαφορετικά, καταλήγει στην επιλεγμένη θέση 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 20
Κωδικοποίηση Δράσεων Όνομα δράσης: steer_to(x, Y) Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, βρίσκεται πάνω στον ελέφαντα, οι δύο θα μετακινηθούν δίπλα, και δε θα διασχίσουν τοίχο / κλειστή πόρτα Αποτέλεσμα εκτέλεσης: και οι δύο καταλήγουν στην επιλεγμένη θέση, εάν είναι στη θέση των μπανάνων, τις λιώνουν 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 21
Κωδικοποίηση Δράσεων Όνομα δράσης: open_door Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, βρίσκεται πάνω στον ελέφαντα, και βρίσκεται δίπλα στην πόρτα Αποτέλεσμα εκτέλεσης: εάν η πόρτα είναι κλειστή, ανήγει 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 22
Κωδικοποίηση Δράσεων Όνομα δράσης: eat_bananas Συνθήκες εκτέλεσης: ο χιμπαντζής είναι ζωντανός, βρίσκεται στο έδαφος, και βρίσκεται στη θέση των μπανάνων Αποτέλεσμα εκτέλεσης: εάν οι μπανάνες δεν είναι λιωμένες, καταλήγουν να είναι φαγωμένες 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 23
Γενική Στρατηγική Συνθήκες εκτέλεσης: Το σύνολο των περιορισμών που πρέπει να ικανοποιεί η παρούσα κατάσταση, ώστε να είναι δυνατή η εκτέλεση μίας δράσης. Αποτέλεσμα εκτέλεσης: Το σύνολο των αλλαγών που επιφέρει η (επιτυχής) εκτέλεση μίας δράσης. Το αποτέλεσμα δυνατόν να είναι υπό συνθήκη. Π.χ., πάτημα κουμπιών στο τηλεχειριστήριο. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 24
Αναζήτηση vs. Σχεδιασμός Δράσεως Πρόβλημα Αναζήτησης Πιθανή λύση. Λύση η οποία ικανοποιεί τους περιορισμούς του δεδομένου προβλήματος. Κατασκευή λύσης. Έλεγχος για τοπική εγκυρότητα της λύσης. Κωδικοποίηση γνώσης για περιορισμό των πιθανών λύσεων. Σχεδιασμός Δράσεως Σειρά δράσεων. Σειρά δράσεων η οποία οδηγεί στην επιθυμητή τελική κατάσταση. Επιλογή δράσεων. Επιλογή της επόμενης ασφαλούς δράσης. Κωδικοποίηση γνώσης για «κατάλληλη» επιλογή δράσεων. 06/10/2008 Λοΐζος Μιχαήλ ΕΠΛ 434 (Χειμερινό Εξάμηνο 2008 2009) 25