Διπλωματική Εργασία Πειραματική Αξιολόγηση της Μοναδιαίας Οκνηρής Συνέπειας Τόξου (Singleton Lazy Arc Consistency) Ιωαννίδης Γιώργος (ΑΕΜ: 491)
2 Σκοπός της Διπλωματικής Υλοποίηση του αλγορίθμου συνέπειας Lazy Arc Consistency-7 Συνδυασμός με τον αλγόριθμο μοναδιαίας συνέπειας τόξου (Singleton Arc Consistency ή SAC), οπότε προκύπτει ο SLAC Πειραματική αποτίμηση των ωφελειών που προκύπτουν σε σύγκριση με τον ευρέως χρησιμοποιούμενο αλγόριθμο συνέπειας AC-3
3 Προγραμματισμός με Περιορισμούς Πρόβλημα Ικανοποίησης Περιορισμών Αποτελείται από : – ένα σύνολο n μεταβλητών X = {x 1,..., x n } – για κάθε μεταβλητή x i, ένα πεδίων τιμών, D = {D 1, …, D n }, – και ένα σύνολο περιορισμών στις μεταβλητές Λύση είναι μία ανάθεση τιμών στις μεταβλητές τέτοιες που να ικανοποιείται το σύνολο όλων των περιορισμών. Τρεις προσεγγίσεις για την επίλυση των προβλημάτων – Συστηματική Αναζήτηση – Τεχνικές Συνέπειας – Διάδοση Περιορισμών (τεχνικές συνέπειας + αναζήτηση)
4 Προγραμματισμός με Περιορισμούς Αλγόριθμοι Αναζήτησης – Εξερευνούν συστηματικά ολόκληρο το διάστημα αναζήτησης – Κλασικός αλγόριθμος: η χρονολογική οπισθοδρόμηση – Μειονέκτημα : ο μεγάλος χώρος αναζήτησης κάνει την επίλυση των προβλημάτων εξαιρετικά χρονοβόρα Τεχνικές Συνέπειας – Απομακρύνουν τιμές από τα πεδία τιμών των μεταβλητών που δεν μπορούν να είναι μέρος μιας λύσης, καθώς είναι ασυνεπείς με ορισμένους περιορισμούς, μειώνοντας έτσι το χώρο αναζήτησης – Γνωστότεροι αλγόριθμοι συνέπειας είναι η σειρά των AC-n (από το Arc Consistency - AC) όπου n = 1,2,3 κλπ. – Μοναδιαία Συνέπεια
5 Προγραμματισμός με Περιορισμούς Διάδοση Περιορισμών – Συνδυασμός των τεχνικών συνέπειας με την αναζήτηση – Δύο σχήματα : έλεγχος συνέπειας μεταξύ ήδη εκτιμώμενων μεταβλητών (Look Back) και ανίχνευση μελλοντικών συγκρούσεων (Look Ahead) Βελτιστοποίηση Περιορισμών – Επιδιώκεται όχι μία ή όλες οι λύσεις, αλλά η καλύτερη (ή μία αρκετά καλή) λύση σύμφωνα με ένα κριτήριο. – Ο βασικός αλγόριθμος για την επίλυση προβλημάτων βελτιστοποίησης είναι η μέθοδος επέκτασης και οριοθέτησης (Βranch and Bound ή B&B)
6 Μοναδιαία Συνέπεια Η μοναδιαία συνέπεια ενισχύει άλλες καθαρές τεχνικές συνέπειας, όπως η συνέπεια τόξου (AC) Επιτυγχάνει υψηλότερο βαθμό διήθησης των τιμών των πεδίων Εξασφαλίζει ότι μετά από την ανάθεση μίας τιμής στη μεταβλητή είναι ακόμη δυνατό να γίνει το πρόβλημα συνεπές σε σχέση με τη βασική τεχνική συνέπεια Μοναδιαία Συνέπεια Τόξου (SAC) : Για κάθε τιμή a στο πεδίο της μεταβλητής Xi, o SAC θα εξετάσει εάν το υποπρόβλημα P Di ={a} μπορεί να γίνει συνεπές με την εφαρμογή της AC. Εάν όχι, τότε η a αφαιρείται από το πεδίο της Χi και εφαρμόζεται πάλι η AC. Μπορούμε να χρησιμοποιήσουμε μία οκνηρή (lazy) προσέγγιση στην εφαρμογή της σχετικής τοπικής συνέπειας
7 Οκνηρή Συνέπεια Τόξου Η οκνηρή συνέπεια τόξου (lazy arc-consistency ή LAC) προσπαθεί να αναπτύξει σταδιακά ένα τόξο-συνεπές υπο-πεδίο Η οκνηρία αναφέρεται στο ότι δεν προσπαθεί να αναπτύξει το μέγιστο υπο-πεδίο, αλλά αρκείται στο να ψάχνει για οποιοδήποτε τοξο- συνεπές υπο-πεδίο Mία έκδοση του αλγορίθμου οκνηρής συνέπειας τόξου είναι ο αλγόριθμος Lazy AC-7 – Βασίζεται στον αλγόριθμο συνέπειας τόξου AC-7 – Διατηρεί όλες τις επιθυμητές ιδιότητες του AC-7 – Εκμεταλλεύεται τη συμμετρία των περιορισμών: εάν η τιμή v1 υποστηρίζει μία άλλη τιμή v2, τότε η v2 υποστηρίζει επίσης τη v1
8 Υλοποίηση των LAC και SLAC Οι αλγόριθμοι LAC και SLAC έχουν υλοποιηθεί στη γλώσσα προγραμματισμού Java και συγκεκριμένα ως επέκταση της βιβλιοθήκης περιορισμών JCL (Java Constraint Library) Η JCL αποτελεί μια από τις πρώτες βιβλιοθήκες υποστήριξης περιορισμών σε Java, προσφέροντας ένα πλήθος αλγορίθμων συνέπειας και αναζήτησης H υλοποίηση έγινε σύμφωνα με την κλάση ACSolver (αντιστοιχεί στον AC-3) – ο σχετικός αλγόριθμος συνέπειας εφαρμόζεται ως ένα βήμα προεπεξεργασίας – για την αναζήτηση της λύσης χρησιμοποιείται η μέθοδος της οπισθοδρόμησης
9 Πειραματικά Αποτελέσματα Τυχαία Προβλήματα Περιορισμών : καθορίζονται από τέσσερις παραμέτρους : Ν, D, density και tightness. – Ν, ο αριθμός των μεταβλητών – D, το μέγεθος του πεδίου κάθε μεταβλητής – density, o λόγος του αριθμού των περιορισμών δια του μέγιστου δυνατού αριθμού περιορισμών – tightness, o λόγος του αριθμού των μη επιτρεπόμενων ζευγαριών των τιμών δια του αριθμού όλων των δυνατών ζευγαριών των τιμών Όλα τα προβλήματα που παράγονται χρησιμοποιώντας το ίδιο σύνολο παραμέτρων θεωρούνται της ίδιας κατηγορίας προβλημάτων
10 Πειραματικά Αποτελέσματα Μέτρηση απόδοσης – constraint checks – χρόνος CPU Παραγωγή ομάδων από κατηγορίες προβλημάτων: – διαφορετικές τιμές density και tightness ( με αύξηση 0.2 και με αύξηση 0.1 αντίστοιχα) – και διάφορους συνδυασμούς τιμών για τα Ν, D (Ν = {10, 15, 20, 25} και D = {10, 20} ) Πέντε στιγμιότυπα του προβλήματος για κάθε κατηγορία
11 Πειραματικά Αποτελέσματα
12 Πειραματικά Αποτελέσματα
13 Πειραματικά Αποτελέσματα
14 Πειραματικά Αποτελέσματα
15 Συμπεράσματα Ο SLAC αποδίδει καλά στα προβλήματα με χαμηλές τιμές tightness και density. Αύξηση της απόδοση του, καθώς αυξάνεται το μέγεθος των προβλημάτων. Ειδικότερα, όταν αυξάνουμε το μέγεθος του πεδίου κάθε μεταβλητής Ο SLAC εκτελεί περισσότερους ελέγχους περιορισμών στην προεπεξεργασία, ενώ οι AC και LAC στην οπισθοδρόμηση Μία δύσκολη κατηγορία προβλημάτων για τον AC είναι επίσης μία δύσκολη κατηγορία προβλημάτων για τον LAC, αλλά όχι απαραίτητα και για τον SLAC
16 Μελλοντική Εργασία Διερεύνηση της απόδοσης του SLAC σε προβλήματα με χαμηλές τιμές tightness και με αυξανόμενο μέγεθος προβλήματος Εξέταση της απόδοσης των αλγορίθμων σε μερικά πραγματικά προβλήματα Αύξηση του αριθμού των τυχαίων περιπτώσεων για κάθε κατηγορία προβλημάτων σε 20 έναντι σε 5 Εκτέλεση των πειραμάτων σε μία πιο κλειστή περιοχή: Αντί να πάρουμε αποτέλεσμα για κάθε αύξηση 0.2 της πυκνότητας, θα μειώναμε την αύξηση σε μία μικρότερη τιμή 0.1
17 ΤΕΛΟΣ