ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΕΥΡΙΣΤΙΚΩΝ ΜΕΘΟ ΩΝ ΜΕ ΤΗ ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ

Σχετικά έγγραφα
Κεφάλαιο 6. Ικανοποίηση Περιορισµών. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Επίλυση Προβλημάτων 1

Πρόβληµα ικανοποίησης περιορισµών

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 6: Προβλήματα ικανοποίησης περιορισμών. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης

Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Διαχείριση Έργων Πληροφορικής Ικανοποίηση Περιορισμών (Constraint Satisfaction)

Εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει την αξιολόγηση των καταστάσεων του χώρου αναζήτησης.

(50 μον.) πάντοτε Διατυπώστε

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Αλγόριθµοι και Πολυπλοκότητα

Δομές Δεδομένων & Αλγόριθμοι

Μεταβλητες: Q, NSW, V, T, SA, WA, NT. Πεδίο Ορισμού: Για κάθε μεταβλητη το ίδιο. D i ={R, G, B} όπου i= Q, NSW,., NT.

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ. Κεφάλαιο 3 Μορφοποίηση Προβλημάτων Ακέραιου Προγραμματισμού

4.4 Μετατροπή από μία μορφή δομής επανάληψης σε μία άλλη.

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

ΠΡΟΒΛΗΜΑΤΑ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗΣ

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

On line αλγόριθμοι δρομολόγησης για στοχαστικά δίκτυα σε πραγματικό χρόνο

===========================================================================

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Αλγόριθµοι Ευριστικής Αναζήτησης

ΕΘΝΙΚΟ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ

Υπολογιστικό Πρόβληµα

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Υπερπροσαρμογή (Overfitting) (1)

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

Χρονοπρογραµµατισµός Ωρολόγιου Προγράµµατος Μαθηµάτων Πανεπιστηµιακού

m 1 min f = x ij 0 (8.4) b j (8.5) a i = 1

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ

ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ

max 17x x 2 υπό 10x 1 + 7x 2 40 x 1 + x 2 5 x 1, x 2 0.

Τεχνολογίες Υλοποίησης Αλγορίθµων

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Δοµές Δεδοµένων και Αλγόριθµοι - Εισαγωγή

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΠΜΣ «ΜΑΘΗΜΑΤΙΚΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΤΩΝ ΑΠΟΦΑΣΕΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ η Σειρά Ασκήσεων ΑΠΑΝΤΗΣΕΙΣ

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Ακέραιος Γραμμικός Προγραμματισμός

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Αλγόριθµοι. Παράδειγµα. ιαίρει και Βασίλευε. Παράδειγµα MergeSort. Τεχνικές Σχεδιασµού Αλγορίθµων

Ακέραιος Γραμμικός Προγραμματισμός

Για παράδειγμα η αρχική και η τελική κατάσταση αναπαριστώνται ως εξής: (ένα λίτρο)

ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ

ΑΕΠΠ Ερωτήσεις θεωρίας

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Ακέραιος Γραμμικός Προγραμματισμός

Γραφική Λύση & Πρότυπη Μορφή Μαθηματικού Μοντέλου

4.3. Γραµµικοί ταξινοµητές

ιοίκηση Παραγωγής και Υπηρεσιών

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D.

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

Περί της Ταξινόμησης των Ειδών

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Κεφάλαιο 10 ο Υποπρογράµµατα

z = c 1 x 1 + c 2 x c n x n

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

min f(x) x R n b j - g j (x) = s j - b j = 0 g j (x) + s j = 0 - b j ) min L(x, s, λ) x R n λ, s R m L x i = 1, 2,, n (1) m L(x, s, λ) = f(x) +

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

Επιχειρησιακή Έρευνα I

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΑΚ. ΕΤΟΣ ΔΙΑΛΕΞΗ 6 η -Η ΔΥΙΚΗ ΜΕΘΟΔΟΣ SIMPLEX

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ

ΠΛΗ 405 Τεχνητή Νοηµοσύνη

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Οργάνωση Υπολογιστών

Σύνθεση Data Path. ιασύνδεσης. Μονάδες. Αριθµό Μονάδων. Τύπο Μονάδων. Unit Selection Unit Binding. λειτουργιών σε. Μονάδες. Αντιστοίχιση µεταβλητών &

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

9. Κόκκινα-Μαύρα Δέντρα

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Διαχείριση Έργων Πληροφορικής

Τεχνητή Νοημοσύνη. 4η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Προγραμματισμός ΙI (Θ)

Επεξεργασία Ερωτήσεων

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

Επίλυση Προβλημάτων 1

Αλγόριθµοι Εκτίµησης Καθυστέρησης και

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΕΥΡΙΣΤΙΚΩΝ ΜΕΘΟ ΩΝ ΜΕ ΤΗ ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ ιπλωµατική Εργασία του Καριπίδη Κωνσταντίνου (ΑΕΜ: 744) Επιβλέπων Καθηγητής: ΒΛΑΧΑΒΑΣ ΙΩΑΝΝΗΣ ΘΕΣΣΑΛΟΝΙΚΗ ΙΟΥΛΙΟΣ 2006 -i-

Πρόλογος Τα προβλήµατα ικανοποίησης περιορισµών (Constraint Satisfaction Problems) γίνονται όλο και ποιο διάσηµα στο χώρο του προγραµµατισµού και της Πληροφορικής. Ταυτόχρονα, δηµιουργείται και η ανάγκη δηµιουργίας και βελτίωσης των αλγορίθµων που χρησιµοποιούνται για τη λύση τους. Αλγόριθµοι ελέγχου συνέπειας, ευρετικές συναρτήσεις ανάθεσης τιµών, καθώς και γνωστοί αλγόριθµοι αναζήτησης, είναι τα εργαλεία επίλυσης τέτοιων προβληµάτων. Η εργασία αυτή πραγµατεύεται τη µελέτη της Μοναδιαίας Συνέπειας τόξου, που είναι αλγόριθµος ελέγχου συνέπειας, και των διάφορων ευρετικών συναρτήσεων. Επιλέχθηκε το πρόβληµα χρονοπρογραµµατισµού µηχανών Job-Shop Scheduling το οποίο υλοποιήθηκε έτσι ώστε να µπορεί να γίνει πειραµατική µελέτη. Απώτερος σκοπός ήταν η µελέτη των αποτελεσµάτων µε τη χρήση της Μοναδιαίας συνέπειας τόξου, των διάφορων ευρετικών µεθόδων, σε µεγάλη ποικιλία προβληµάτων. Η εργασία εκπονήθηκε µε την φιλοξενία και την υποστήριξη του εργαστηρίου Λογικού προγραµµατισµού και Ευφυών Συστηµάτων του τµήµατος Πληροφορικής του ΑΠΘ (http://lpis.csd.auth.gr). Ιδιαίτερες ευχαριστίες προς τον κ. Βλαχάβα που µου έδωσε την ευκαιρία να ασχοληθώ µε την εργασία αυτή, δείχνοντάς µου εµπιστοσύνη κατά την ανάθεση των διπλωµατικών εργασιών. Επίσης, θα ήθελα να ευχαριστήσω τον κ. Ηλία Σακελαρίου για την ουσιαστική του βοήθεια και υποστήριξη. Όλο το διάστηµα της εκπόνησης της εργασίας ήταν δίπλα µου σε ότι µου χρειάστηκε, µε διευκρινήσεις και επεξηγήσεις στις δυσκολίες που συνάντησα και µε ότι βιβλιογραφικό υλικό µπορούσε να µου προσφέρει. Η βοήθεια του αυτή ήταν πολύ σηµαντική και συντέλεσε στην τελική διαµόρφωση της διπλωµατικής εργασίας. Ευχαριστώ όλα τα παραπάνω πρόσωπα και ευελπιστώ στο µέλλον να µου δοθεί η ευκαιρία να συνεργαστώ ξανά µαζί σας. Καριπίδης Κωνσταντίνος 3-11-2006 -i-

-ii-

Περιεχόµενα ΠΡΟΛΟΓΟΣ...I ΠΕΡΙΕΧΟΜΕΝΑ...III 1 ΕΙΣΑΓΩΓΗ... 5 2 ΠΡΟΒΛΗΜΑΤΑ ΙΚΑΝΟΠΟΙΗΣΗΣ ΠΕΡΙΟΡΙΣΜΩΝ... 7 2.1 ΠΕΡΙΟΡΙΣΜΟΙ... 7 2.2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΠΕΡΙΟΡΙΣΜΟΥΣ / CONSTRAINT PROGRAMMING (CP). 8 2.3 ΑΛΓΟΡΙΘΜΟΙ ΠΡΟΒΛΗΜΑΤΩΝ ΠΕΡΙΟΡΙΣΜΩΝ... 9 2.3.1 Αναπαράσταση προβληµάτων... 9 2.3.2 Παραγωγή και οκιµή... 10 2.3.3 Κλασικοί Αλγόριθµοι αναζήτησης... 11 2.3.4 Αλγόριθµοι ελέγχου συνέπειας... 12 2.3.5 Συνδυασµός αλγορίθµων αναζήτησης και συνέπειας... 14 2.3.6 Συµπεράσµατα... 16 3 ΕΥΡΕΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΚΑΙ ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ... 17 3.1 ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ... 17 3.1.1 Περιγραφή αλγορίθµου... 17 3.1.2 Υλοποίηση αλγορίθµου... 18 3.1.3 Αξιολόγηση αλγορίθµου... 19 3.2 ΕΥΡΕΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ... 19 3.2.1 Αρχή της συντοµότερης αποτυχίας (Fail-First Principle)... 19 3.2.2 Αρχή των ελάχιστων συγκρούσεων (minimum conflicts)... 20 3.2.3 Ευρετικές συναρτήσεις µε χρήση υποπροβληµάτων... 21 3.3 ΣΥΜΠΕΡΑΣΜΑΤΑ... 24 4 ΕΦΑΡΜΟΓΗ ΤΗΣ ΜΟΝΑ ΙΑΙΑΣ ΣΥΝΕΠΕΙΑΣ ΤΟΞΟΥ ΣΤΟ ΠΡΟΒΛΗΜΑ JOB-SHOP SCHEDULING... 25 4.1 JOB-SHOP SCHEDULING... 25 -iii-

4.2 ΛΥΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΗΧΑΝΩΝ ΚΑΤΑΣΤΗΜΑΤΩΝ (JOB-SHOP SCHEDULING)...26 4.3 ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ...27 4.3.1 Προετοιµασία των δεδοµένων...28 4.3.2 Υλοποίηση των περιορισµών...29 4.3.3 Αναζήτηση της λύσης...30 4.4 ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ ΚΑΙ ΑΡΧΗ ΤΗΣ ΣΥΝΤΟΜΟΤΕΡΗΣ ΑΠΟΤΥΧΙΑΣ (FAIL-FIRST PRINCIPLE)...32 4.4.1 Μοναδιαία Συνέπεια Τόξου...32 4.4.2 Αρχή της συντοµότερης αποτυχίας (Fail-First Principle)...33 4.5 ΣΥΜΠΕΡΑΣΜΑΤΑ...34 5 ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ...35 5.1 ΑΠΟΤΕΛΕΣΜΑΤΑ ΠΕΙΡΑΜΑΤΩΝ...36 6 ΣΥΜΠΕΡΑΣΜΑΤΑ...67 6.1 CUMULATIVE ΚΑΙ DISJUNCTIVE...67 6.2 ΜΟΝΑ ΙΑΙΑ ΣΥΝΕΠΕΙΑ ΤΟΞΟΥ...69 6.3 ΑΡΧΗ ΤΗΣ ΣΥΝΤΟΜΟΤΕΡΗΣ ΑΠΟΤΥΧΙΑΣ (FAIL FIRST PRINCIPLE)...71 6.4 ΣΥΝΟΨΗ, ΠΡΟΒΛΗΜΑΤΑ ΚΑΙ ΜΕΛΛΟΝΤΙΚΗ ΕΡΓΑΣΙΑ...72 ΒΙΒΛΙΟΓΡΑΦΙΑ...73 ΠΑΡΑΡΤΗΜΑ...77 -iv-

1 Εισαγωγή Η εργασία αυτή πραγµατεύεται τη µελέτη της Μοναδιαίας Συνέπειας τόξου, που είναι αλγόριθµος ελέγχου συνέπειας, και των διάφορων ευρετικών συναρτήσεων. Επιλέχθηκε το πρόβληµα χρονοπρογραµµατισµού µηχανών Job-Shop Scheduling το οποίο υλοποιήθηκε έτσι ώστε να µπορεί να γίνει πειραµατική µελέτη. Απώτερος σκοπός ήταν η µελέτη των αποτελεσµάτων µε τη χρήση της Μοναδιαίας συνέπειας τόξου, των διάφορων ευρετικών µεθόδων, σε µεγάλη ποικιλία προβληµάτων. Ξεκινώντας από το δεύτερο κεφάλαιο, είναι απαραίτητη η αναφορά στο ευρύτερο επιστηµονικό πεδίο που ανήκει η εργασία. Γίνεται αναφορά δηλαδή, στα προβλήµατα ικανοποίησης περιορισµών και στους διάφορους αλγορίθµους που χρησιµοποιούνται για την επίλυσή τους. Επεξήγονται όροι όπως περιορισµοί, προγραµµατισµός µε περιορισµούς, αλγόριθµοι ελέγχου συνέπειας και ευρετικές συναρτήσεις ανάθεσης τιµών. Στη συνέχεια στο τρίτο κεφάλαιο, ορίζεται και αναλύεται ο αλγόριθµος ελέγχου συνέπειας, Μοναδιαία Συνέπεια Τόξου. Επίσης αναλύεται η έννοια και ο σκοπός των ευρετικών συναρτήσεων και αναλύονται µερικές όπως η Αρχή της συντοµότερης αποτυχίας (Fail - First Principle), η Αρχή των ελάχιστων συγκρούσεων (minimum conflicts) και οι Ευρετικές συναρτήσεις µε χρήση υποπροβληµάτων. Το αντικείµενο του τέταρτου κεφαλαίου είναι η υλοποίηση του προβλήµατος και τα εργαλεία που χρησιµοποιήθηκαν. Γίνεται αναφορά στην Eclipse Prolog που είναι η γλώσσα προγραµµατισµού που χρησιµοποιήθηκε, στις βιβλιοθήκες τις Prolog που ενσωµατώθηκαν και στην συνέχεια τα βήµατα που γίνανε για την ολοκλήρωση του κώδικα του προβλήµατος. Ταυτόχρονα γίνεται εκτενής αναφορά στο πρόβληµα Χρονοπρογραµµατισµού µηχανών καταστηµάτων, στους ανθρώπους που το έχουν επιλύσει και στους τρόπους που έχουν χρησιµοποιηθεί µέχρι τώρα. Στη συνέχεια, στο πέµπτο κεφάλαιο γίνεται η ανάλυση των αποτελεσµάτων που πήραµε από τα διάφορα πειράµατα. Καταγράφονται όλα τα πειράµατα που έχουν γίνει, µαζί µε τα αποτελέσµατα που πήραµε και ταυτόχρονα γίνεται µία προσπάθεια αξιολόγησης όλων αυτών. -5-

Τέλος κλείνοντας, στο έκτο κεφάλαιο γίνεται η καταγραφή κάποιων γενικών συ- µπερασµάτων µετά την ολοκλήρωση της εργασίας, καθώς και προοπτικές για µελλοντικές εργασίες πάνω στο ίδιο αντικείµενο. Στη συνέχεια υπάρχει η βιβλιογραφία που χρησιµοποιήθηκε και µελετήθηκε και όλος ο κώδικας του προβλήµατος στο παράρτηµα της εργασίας. -6-

2 Προβλήµατα ικανοποίησης περιορισµών Τα προβλήµατα ικανοποίησης περιορισµών (Constraint satisfaction problems) είναι µια κατηγορία προβληµάτων στα οποία είναι γνωστές µερικές ιδιότητες της τελικής κατάστασης και επιδιώκεται η εύρεση ενός πλήρους στιγµιότυπου της τελικής κατάστασης. 2.1 Περιορισµοί Ένας περιορισµός µπορεί να θεωρηθεί διαισθητικά ως περιορισµός σε ένα διάστηµα πιθανοτήτων. Οι µαθηµατικοί περιορισµοί είναι ακριβώς προσδιορισµένες σχέσεις µεταξύ αγνώστων ή µεταβλητών, κάθε µία εκ των οποίων παίρνει τιµές από ένα συγκεκριµένο πεδίο τιµών. Οι περιορισµοί περιορίζουν έτσι τις πιθανές τιµές που οι µεταβλητές µπορούν να πάρουν, αντιπροσωπεύοντας κάποιες πληροφορίες για τις µεταβλητές αυτές. Οι περιορισµοί προκύπτουν πλέον στους περισσότερους τοµείς της ανθρώπινης δραστηριότητας. Είναι το φυσικό µέσο έκφρασης για την τυποποίηση των τακτικοτήτων που κρύβονται στους υπολογιστικούς και φυσικούς κόσµους και στις µαθηµατικές αφαιρέσεις τους, µε µια παράδοση που ξεκινάει από τις ηµέρες της Ευκλείδειας Γεωµετρίας εάν όχι νωρίτερα. Οι περιορισµοί έχουν κάποιες ιδιότητες που θα ήταν ενδιαφέρον να αναφερθούν. Κατ αρχάς ένας περιορισµός µπορεί να διευκρινίσει µερικώς µια πληροφορία, αλλά δεν είναι απαραίτητο να διευκρινίσει µεµονωµένα την τιµή των µεταβλητών του. εύτερον είναι προσθετικοί δηλαδή πολλοί περιορισµοί µπορεί να αφορούν συγκεκριµένες µεταβλητές. Τότε δεν έχει σηµασία η σειρά των περιορισµών, αλλά η σύνθεση αυτών των περιορισµών. Τρίτο οι περιορισµοί είναι σπάνια ανεξάρτητοι. Τέταρτο είναι µη κατευθυντικοί. Πέµπτον είναι δηλωτικοί, δηλαδή διευκρινίζει τι σχέση πρέπει να κρατηθεί και όχι την υπολογιστική διαδικασία που θα οδηγήσει σε αυτή τη σχέση. Όλες αυτές οι ιδιότητες πρέπει να λαµβάνονται υπόψη από οποιοδήποτε υπολογιστικό σύστηµα ασχολείται µε περιορισµούς. Με την πάροδο του χρόνου και την εξέλιξη της πληροφορικής δηµιουργήθηκαν α- νάγκες να δηµιουργηθούν προγράµµατα όλο και πιο πολύπλοκα. Έτσι σιγά σιγά δηµι- -7-

ουργήθηκε η ανάγκη να χρησιµοποιηθούν οι περιορισµοί στον προγραµµατισµό. Αυτό συνέβη γιατί σε ορισµένα προβλήµατα το φαινόµενο τις συνδυαστικής έκρηξης ουσιαστικά απαγόρευε τη χρήση των κλασικών µεθόδων αναζήτησης. Για αυτό το λόγο άρχισαν να χρησιµοποιούνται οι περιορισµοί στον προγραµµατισµό οι οποίοι βοηθούν στην µείωση του χώρου (και κατά συνέπεια του χρόνου) αναζήτησης. [1],[3],[6] 2.2 Προγραµµατισµός µε περιορισµούς / Constraint Programming (CP) Ο προγραµµατισµός µε περιορισµούς είναι ένα πλαίσιο εργασίας για τη λύση συνδυαστικών (βελτιστοποίησης) προγραµµάτων. Η βασική ιδέα είναι να µοντελοποιηθεί το πρόβληµα σε ένα σύνολο µεταβλητών µε πεδία (οι τιµές των µεταβλητών) και σε ένα σύνολο περιορισµών που µειώνουν τους πιθανούς συνδυασµούς των τιµών των µεταβλητών. Συνήθως τα πεδία είναι πεπερασµένα και τότε µιλάµε για τα προβλήµατα ικανοποίησης περιορισµών (Constraint Satisfaction Problems). Ο στόχος σε αυτά είναι να βρεθούν κάποιες τιµές των µεταβλητών οι οποίες ικανοποιούν όλους τους περιορισµούς. Σε κάποιες περιπτώσεις υπάρχει µία αντικειµενική συνάρτηση οι οποία καθορίζεται από τις µεταβλητές του προβλήµατος. Σε αυτές τις περιπτώσεις ο σκοπός είναι να βρεθεί ένα εφικτό σύνολο τιµών των µεταβλητών το οποίο να ελαχιστοποιεί/µεγιστοποιεί την τιµή της αντικειµενικής συνάρτησης. Αυτά τα προβλήµατα αναφέρονται ως προβλήµατα ικανοποίησης, βελτιστοποίησης περιορισµών (Constraint Satisfaction Optimization Problems CSOP). Πρέπει εδώ να σηµειωθεί ότι µοντελοποίηση προβληµάτων στον προγραµµατισµό µε περιορισµούς είναι φυσική αφού οι περιορισµοί µπορούν να περιγράψουν σωστά αυθαίρετες σχέσεις και πολλοί διαφορετικοί περιορισµοί να συνδυαστούν σε ένα ενιαίο σύστηµα. Σε αντίθεση µε πλαίσια προγραµµατισµού όπως αυτά του γραµµικού, οι περιορισµοί δεν χρησιµοποιούν αναγκαστικά γραµµικές ισότητες και ανισότητες, αλλά µπορούν να εκφράσουν πολύπλοκες και αυθαίρετες µαθηµατικές και λογικές σχέσεις. Η τεχνολογία προγραµµατισµού ικανοποίησης περιορισµών πρέπει να λάβει υπόψη της την παραπάνω γενικότητα στον ορισµό των προβληµάτων. Συνήθως χρησιµοποιείται ένας συνδυασµός αναζήτησης (απαρίθµησης) µαζί µε τη διάδοση περιορισµών (Constraint Propagation), ενώ επίσης µπορούν να εφαρµοστούν και άλλες τεχνικές ό- πως η τοπική αναζήτηση. -8-

Η διάδοση περιορισµού (Constraint Propagation) είναι βασισµένη στην ιδέα να χρησιµοποιούνται οι περιορισµοί ώστε το διάστηµα αναζήτησης να «κλαδεύεται» δυναµικά. Κάθε περιορισµός έχει ορίσει έναν αλγόριθµο φιλτραρίσµατος ο οποίος µπορεί να µειώσει τα πεδία των µεταβλητών που εµπλέκονται στον περιορισµό, αφαιρώντας κάθε φορά τις τιµές που δεν µπορούν να πάρουν µέρος σε καµία εφικτή λύση. Ο αλγόριθµος αυτός επικαλείται κάθε φορά που αλλάζει το πεδίο µίας µεταβλητής µέσα σε ένα περιορισµό, ώστε αυτή η αλλαγή να διαδοθεί στα πεδία των υπόλοιπων µεταβλητών µέσω των υπόλοιπων περιορισµών.[1],[4],[7],[8] 2.3 Αλγόριθµοι προβληµάτων περιορισµών Τα προβλήµατα περιορισµών µπορούν να λυθούν µε τους κλασικούς αλγόριθµους αναζήτησης. Παρ όλα αυτά στα περισσότερα προβλήµατα λόγω του φαινοµένου της συνδυαστικής έκρηξης εµποδίζει και ίσως απαγορεύει την χρήση τέτοιων µεθόδων. Για αυτό το λόγο έγινε µελέτη και χρήση άλλων αλγορίθµων που µειώνουν το εύρος των πεδίων τιµών κατά πολύ ώστε να είναι εφικτή η αναζήτηση. Τις περισσότερες φορές βέβαια χρησιµοποιούνται συνδυασµοί των µεθόδων για βέλτιστη απόδοση. [1] 2.3.1 Αναπαράσταση προβληµάτων Η αναπαράσταση προβληµάτων ικανοποίησης περιορισµών αναπαριστώνται συνήθως από ένα σύνολο µεταβλητών κάθε µία από τις οποίες µπορεί να πάρει τιµές από ένα συγκεκριµένο πεδίο τιµών, και από ένα σύνολο περιορισµών, δηλαδή σχέσεων, µεταξύ των µεταβλητών. Σύµφωνα µε αυτή την αναπαράσταση λύση είναι µια ανάθεση τιµών στις µεταβλητές του προβλήµατος, η οποία δεν παραβιάζει τους περιορισµούς. Έτσι συνοπτικά ένα πρόβληµα ικανοποίησης περιορισµών αποτελείται από τα εξής: Ένα σύνολο n µεταβλητών V1,V2,V3..,Vn Ένα σύνολο n πεδίων τιµών D1,..Dn που αντιστοιχούν σε κάθε µεταβλητή έτσι ώστε Vi Di. Ένα σύνολο σχέσεων (περιορισµών) C1, Cm όπου C1(Vk,.,Vn) µία σχέση µεταξύ των µεταβλητών του προβλήµατος. Ανάλογα µε το πόσες µεταβλητές περιλαµβάνει ένας περιορισµός χαρακτηρίζεται ως µοναδιαίος (Unary) όταν περιλαµβάνει µία µεταβλητή, δυαδικός (binary) -9-

όταν περιλαµβάνει δύο µεταβλητές ή ανώτερης τάξης (higher order) ό- ταν περιλαµβάνει περισσότερες. [1] 2.3.2 Παραγωγή και οκιµή Η απλούστερη µέθοδος επίλυσης προβληµάτων ικανοποίησης περιορισµών είναι η παραγωγή και δοκιµή (generate and test). Σύµφωνα µε αυτή, αρχικά παράγονται υποψήφιες λύσεις από µια γεννήτρια λύσεων (generator) και έπειτα ελέγχεται από τον ελεγκτή (tester) εάν η λύση που προέκυψε ικανοποιεί τους περιορισµούς του προβλήµατος. Θα πρέπει να σηµειωθεί ότι η µέθοδος αυτή είναι η πιο απλή, αλλά λιγότερο αποδοτική και δεν ενδείκνυται για επίλυση προβληµάτων ικανοποίησης περιορισµών. Η γεννήτρια παραγωγής λύσεων θα πρέπει να έχει ορισµένες ιδιότητες. Η πρώτη είναι η πληρότητα, δηλαδή να παράγει όλες τις πιθανές λύσεις. Η δεύτερη είναι να είναι απέριττη, δηλαδή να παράγει κάθε λύση µόνο µια φορά, έτσι ώστε να µην επιβαρύνεται το σύστηµα µε επανέλεγχο κάποιων λύσεων, µειώνοντας έτσι επιπλέον την απόδοση µεθόδου. Η τρίτη ιδιότητα ονοµάζεται ενηµέρωση και αφορά την ικανότητα µείωσης του αριθµού προτεινόµενων λύσεων χρησιµοποιώντας επιπρόσθετη πληροφορία για το συγκεκριµένο πρόβληµα. Επειδή ο αλγόριθµος παραγωγής και δοκιµής έχει πολύ µικρή απόδοση σε προβλή- µατα µε πολλές µεταβλητές (ή µεγάλα πεδία) έχουν χρησιµοποιηθεί και προταθεί διορθωτικοί αλγόριθµοι που αυξάνουν την αποδοτικότητα. Ένας από αυτούς είναι η οπισθοδρόµηση αντί της τυχαίας κάθε φορά ανάθεσης τιµών. ίνονται λοιπόν τυχαία αρχικές τιµές στις µεταβλητές και στην συνέχεια ελέγχονται οι συγκρούσεις µε τους περιορισµούς. Η τελευταία µεταβλητή που πήρε τιµή και παραβιάζει κάποιον περιορισµό (και φυσικά έχει εναλλακτικές τιµές) παίρνει µε την οπισθοδρόµηση καινούργια τιµή και γίνεται ξανά έλεγχος. Η διαδικασία αυτή αυξάνει κατά πολύ την απόδοση του αλγορίθµου αλλά δηµιουργείται εδώ το πρόβληµα της µη πληρότητας αφού µπορεί ο αλγόριθµος να εγκλωβιστεί σε τοπικό ελάχιστο. Άλλες παραλλαγές του αλγορίθµου παραγωγής και δοκιµής είναι η αναρρίχηση λόφων (Hill Climbing) και ο αλγόριθµος των ελάχιστων συγκρούσεων (min conflicts heuristic). Και για τους δύο αυτούς αλγόριθµους ισχύει ότι και για την οπισθοδρόµηση. ηλαδή και οι δύο έχουν πολύ καλύτερη απόδοση από τον αλγόριθµο παραγωγής και -10-

δοκιµής αλλά και οι δύο κινδυνεύουν να εγκλωβιστούν σε τοπικό ελάχιστο και έτσι χαρακτηρίζονται ως µη πλήρεις. [1],[4] 2.3.3 Κλασικοί Αλγόριθµοι αναζήτησης Στα προβλήµατα ικανοποίησης περιορισµών µπορούν να χρησιµοποιηθούν και οι κλασικοί αλγόριθµοι αναζήτησης όπως για παράδειγµα τον DFS και τον BFS. Στους κλασικούς αλγορίθµους αναζήτησης η κατάσταση του προβλήµατος αποτελείται από τις µεταβλητές του προβλήµατος και ο µοναδικός τελεστής που χρησιµοποιείται είναι η ανάθεση τιµής σε κάποια µη-δεσµευµένη-µεταβλητή (δηλαδή σε µία µεταβλητή στην οποία δεν έχει ανατεθεί ακόµα µια τιµή). Στην αρχική κατάσταση καµία µεταβλητή δεν έχει πάρει τιµή, ενώ στην τελική έχουν ανατεθεί τιµές σε όλες τις µεταβλητές και ικανοποιούνται όλοι οι περιορισµοί. Με τους απλούς αλγορίθµους «τυφλής» αναζήτησης η ανάθεση τιµών στις µεταβλητές γίνεται µε την ονοµαστική τους σειρά οπότε η απόδοση των αλγορίθµων είναι χαµηλή και σε κάποια προβλήµατα ίσως απαγορευτική για την χρήση τους. Η απόδοση µπορεί να βελτιωθεί µε τη χρήση ευριστικών αλγορίθµων αναζήτησης όπως για παράδειγµα ο αλγόριθµος χρήσης πρώτα στο καλύτερο (ΒestFS) µε την προϋπόθεση ότι θα βρεθεί µια ικανοποιητική ευριστική συνάρτηση. Η ευριστική συνάρτηση ουσιαστικά αφορά στην επιλογή της µεταβλητής στην ο- ποία θα ανατεθεί τιµή στο επόµενο βήµα. Μία από τις πλέον εφαρµοσµένες ευριστικές συναρτήσεις στα προβλήµατα επίλυσης περιορισµών βασίζεται στην αρχή της συντο- µότερης αποτυχίας (first fail principle). Σύµφωνα µε την αρχή αυτή, επιλέγεται σε κάθε εφαρµογή του τελεστή ανάθεσης τιµής η µη-δεσµευµένη-µεταβλητή η οποία είναι πιθανότερο να οδηγήσει συντοµότερα σε αποτυχηµένους κόµβους στην αναζήτηση. Με αυτόν τον τρόπο επιλέγεται η µεταβλητή µε το µικρότερο πεδίο τιµών, καθώς λιγότερες διαθέσιµες τιµές σηµαίνει και µεγαλύτερη πιθανότητα αποτυχίας. Σε περίπτωση που περισσότερες από µία µεταβλητές έχουν ίδιο αριθµό τιµών στα πεδία τους, τότε επιλέγεται η µεταβλητή που συµµετέχει σε περισσότερες περιορισµούς (most constrained principle). Η λογική στην οποία βασίζεται η αρχή είναι ότι όσο συντοµότερα ανακαλυφθούν οι αποτυχηµένες αναθέσεις τιµών σε ένα πρόβληµα, τόσο µικρότερο µέρος του δένδρου αναζήτησης θα εξεταστεί για την εύρεση των λύσεων, άρα τόσο γρηγορότερα θα βρεθεί η λύση. -11-

Αν και οι ευριστικοί αλγόριθµοι βελτιώνουν σε µεγάλο βαθµό την απόδοση των τυφλών αλγορίθµων αναζήτησης, εντούτοις δεν επιλύουν σε ικανοποιητικό χρόνο προβλήµατα µεγάλου µεγέθους. Το µεγάλο µειονέκτηµα των κλασσικών αυτών µεθόδων είναι ότι δεν εκµεταλλεύονται σε µεγάλο βαθµό τους περιορισµού που υπάρχουν σε τέτοιου είδους προβλήµατα. Ο λόγος είναι ότι ο έλεγχος για το αν η λύση ικανοποιεί τους περιορισµούς γίνεται µετά την παραγωγή της, δηλαδή πρώτα δηµιουργείται η λύση (έστω και µερική) και µετά ελέγχεται για το αν είναι ικανοποιητική. Το γεγονός αυτό σε συνδυασµό µε το φαινόµενο της συνδυαστικής έκρηξης που αναφέρθηκε παραπάνω, κάνει την επίλυση προβληµάτων µε τις µεθόδους αυτές εξαιρετικά χρονοβόρα.[1] 2.3.4 Αλγόριθµοι ελέγχου συνέπειας Η βασική ιδέα των αλγορίθµων της κατηγορίας αυτής είναι η απαλοιφή από τα αρχικά πεδία των µεταβλητών των τιµών οι οποίες δεν µπορεί να συµµετέχουν στην τελική λύση, Αυτό επιτυγχάνεται µέσω του ελέγχου συνέπειας (consistency check), δηλαδή της διαγραφής από το πεδίο κάθε µεταβλητής εκείνων των τιµών οι οποίες είναι ασυνεπείς ως προς κάποιο περιορισµό. Οι αλγόριθµοι της κατηγορίας αναφέρονται και ως αλγόριθµοι διήθησης τιµών (filtering algorithms) και αποτελούν ένα είδος διάδοσης περιορισµών (constraint propagation) καθώς τα αποτελέσµατα της µεταβολής του πεδίου τι- µών µιας µεταβλητής «διαδίδονται» στα πεδία των υπόλοιπων µεταβλητών µέσω των περιορισµών. Υπάρχουν πολλές τεχνικές ελέγχου συνέπειας αλλά οι περισσότερες από αυτές είναι µη πλήρεις και για αυτό σπάνια χρησιµοποιούνται µόνες του για να λυθεί ένα πρόβλη- µα ικανοποίησης περιορισµών. Τα ονόµατα των βασικών αλγορίθµων συνέπειας προέρχεται από τις έννοιες που περιέχονται στα γραφήµατα. Πολλές φορές τα προβλήµατα αυτά απεικονίζονται ως γραφήµατα περιορισµών (constraint graph) όπου οι κόµβοι (nodes) παριστάνουν τις µεταβλητές και οι ακµές ή αλλιώς τόξα (edges / arcs) παριστάνουν τους περιορισµούς. Για να συµβεί όµως αυτό θα πρέπει το πρόβληµα να έχει συγκεκριµένη µορφή η οποία αναφέρεται συνήθως ως δυαδικό πρόβληµα ικανοποίησης περιορισµών και πρέπει να περιέχει µόνον µοναδιαίους και δυαδικούς περιορισµούς. Υπάρχουν βέβαια τεχνικές να µετατρέπουν τα προβλήµατα σε δυαδικά αλλά δεν είναι πολύ δηµοφιλείς γιατί οι ίδιοι οι αλγόριθµοί µπορούν να επεκταθούν ώστε να επιλύουν και µη δυαδικά προβλήµατα.[1] -12-

Ο πιο απλός αλγόριθµος ελέγχου συνέπειας είναι ο αλγόριθµος συνέπειας κόµβου (node consistency -NC). O συγκεκριµένος αλγόριθµος χρησιµοποιείται µόνο σε προβλήµατα µε µοναδιαίους περιορισµούς δηλαδή µε περιορισµούς του τύπου Ci (Vk) δηλαδή περιορισµούς που αφορούν µόνο µία µεταβλητή για παράδειγµα C1 (V1<4). O Ο αλγόριθµος αυτός εξετάζει έναν έναν τους περιορισµούς και µειώνει συνεχώς τα πεδία τιµών όλων των µεταβλητών αφαιρώντας τις τιµές οι οποίες έρχονται σε σύγκρουση µε κάποιο περιορισµό, ώστε να καταλήξει σε µία πιθανή λύση. Γίνεται εύκολα κατανοητό ότι η χρήση του αλγορίθµου συνέπειας κόµβων είναι δύσκολο να εφαρµοστεί εξαιτίας της πολύ συγκεκριµένης µορφής που πρέπει να έχουν όλοι οι περιορισµοί. Ο πιο διαδεδοµένος αλγόριθµος ελέγχου συνέπειας είναι ο αλγόριθµος συνέπειας τόξου (arc consistency- AC). Ο αλγόριθµος αυτός αφαιρεί τιµές από τα πεδία τιµών µεταβλητών οι οποίες είναι ασυνεπείς ως προς δυαδικούς περιορισµούς. Συγκεκριµένα ένας περιορισµός / τόξο Ck (Vi,Vj) είναι συνεπείς αν και µόνο αν για κάθε τιµή χ του πεδίου τιµών της µεταβλητής Vi που ικανοποιεί τους περιορισµούς της µεταβλητής Vi, υπάρχει µία τιµή y στο πεδίο τιµών της Vj που ικανοποιεί τον περιορισµό µεταξύ των µεταβλητών Vi και Vj. Υπάρχουν αρκετοί αλγόριθµοι συνέπειας τόξου ξεκινώντας από τον AC-1 και φτάνοντας περίπου στον AC-7. Αυτοί οι αλγόριθµοι βασίζονται στην ε- παναλαµβανόµενη επανεξέταση των τόξων µέχρι να βρεθεί µία συνεπείς κατάσταση ή κάποιο πεδίο τιµών να µείνει άδειο. Οι πιο δηµοφιλείς αλγόριθµοι από τους παραπάνω είναι ο AC-3 και ο AC-4. Αναφέρθηκε προηγουµένως ότι για τους αλγορίθµους συνέπειας τόξου ότι για να εφαρµοστούν σε ένα πρόβληµα περιορισµών, πρέπει όλοι οι περιορισµοί να είναι δυαδικοί. Παρόλα αυτά εδώ πρέπει να σηµειωθεί ότι για προβλήµατα ανώτερης τάξης µπορούν να χρησιµοποιηθούν και οι αλγόριθµοι συνέπειας τόξου µετά από µία διαδικασία που µετατρέπει τους περιορισµούς σε δυαδικούς (binarization). Με αυτό τον τρόπο γίνεται δυνατή οι χρησιµοποίηση των αλγορίθµων συνέπειας τόξου και σε προβλήµατα περιορισµών ανώτερης τάξης. Όµως, όπως αναφέρθηκε παραπάνω οι περισσότεροι αλγόριθµοι είναι µη πλήρεις και αυτό ισχύει και για τους αλγορίθµους συνέπειας τόξου. Με λίγα λόγια ακόµα και αν όλοι οι περιορισµοί του προβλήµατος είναι δυαδικοί υπάρχει περίπτωση µετά την ολοκλήρωση του αλγορίθµου να υπάρχουν ακόµη τιµές στα πεδία των µεταβλητών οι οποίες δεν µπορούν να συµπεριληφθούν σε µία σωστή λύση. Εκτός από τους αλγορίθµου συνέπειας κόµβου και τόξου υπάρχουν και άλλοι αλγόριθµοι για προβλήµατα ικανοποίησης περιορισµών. Μια κατηγορία ακόµα είναι οι αλ- -13-

γόριθµοι συνέπειας µονοπατιού (path consistency algorithms - PC) που επιβάλλουν µεγαλύτερο βαθµό συνέπειας σε ένα γράφο περιορισµών, µε µεγαλύτερο φυσικά υπολογιστικό κόστος. Ο αλγόριθµος αυτός αξιώνει ότι για κάθε ένα ζευγάρι τιµών δύο µεταβλητών Χ και Υ που ικανοποιούν τους σχετικούς δυαδικούς περιορισµούς, υπάρχει µία τιµή για κάθε µεταβλητή που ανήκει σε µονοπάτι που ενώνει τις Χ και Υ µεταβλητές ώστε όλοι οι δυαδικοί περιορισµοί στο µονοπάτι να ικανοποιούνται. Υπάρχουν διάφοροι αλγόριθµοι συνέπειας µονοπατιού όπως οι PC1 και PC2. Όλοι οι αλγόριθµοι ελέγχου συνέπειας καλύπτονται από ένα γενικό όρο αυτόν της Κ-συνέπειας και ισχυρής Κ-συνέπειας. Κατά τον ορισµό ένας γράφος περιορισµών είναι Κ- συνεπής εάν για κάθε Κ-1 µεταβλητές που ικανοποιούν τους περιορισµούς του προβλήµατος, υπάρχει µία Κ µεταβλητή µε τέτοιο πεδίο ώστε να ικανοποιούνται ταυτόχρονα όλοι οι περιορισµοί που συνδέουν τις Κ µεταβλητές. Ισχυρά Κ-συνεπής είναι ένας γράφος για τον οποίο ισχύει ότι για κάθε Λ Κ είναι Λ συνεπής. Μετά την ανάλυση των αλγορίθµων συνέπειας τόξου και κόµβου καταλαβαίνουµε άµεσα ότι ο αλγόριθµος τόξου εξασφαλίζει ισχυρή 2-συνέπεια στο γράφο που εφαρµόζεται ενώ ο αλγόριθµος συνέπειας κόµβου εξασφαλίζει ισχυρή 1-συνέπεια. Υπάρχουν βέβαια και αλγόριθµοι που εξασφαλίζουν Κ-συνέπεια για γράφους περιορισµών ανώτερης τάξης. Παρόλα αυτά το υπολογιστικό κόστος αυτών των αλγορίθµων είναι αρκετά υψηλό και για αυτό δεν εφαρµόζονται. Στη θέση αυτών των αλγορίθµων χρησιµοποιούνται τις περισσότερες φορές συνδυασµοί αλγορίθµων συνέπειας και αλγορίθµων α- ναζήτησης. [1],[3],[4],[11] 2.3.5 Συνδυασµός αλγορίθµων αναζήτησης και συνέπειας Η χρήση των αλγορίθµων αναζήτησης µόνο σε ένα πρόβληµα ικανοποίησης περιορισµών, παρόλο που θα οδηγήσει σε λύση δηµιουργεί προβλήµατα λόγω της χαµηλής απόδοσης του αλγορίθµου. Σε αντίθεση, οι αλγόριθµοι ελέγχου συνέπειας ενώ είναι αποδοτικοί σε αρκετά καλό βαθµό, λόγω της µη πληρότητας τους δεν είναι σίγουρο ότι θα οδηγήσουν σε λύση. Για αυτό το λόγο έχουν γίνει πολλές προσπάθειες και αναπτύξεις τεχνικών που συνδυάζουν τα δύο παραπάνω είδη αλγορίθµων. Οι δύο βασικές προσεγγίσεις που έχουν γίνει µε πολλές παραλλαγές η κάθε µία είναι οι µέθοδοι έγκαιρης εξέτασης (Look Ahead) και οπισθοδροµικής εξέτασης (Look -14-

Back). Εντούτοις οι περισσότερες διαδοµένες είναι οι παραλλαγές τις έγκαιρης εξέτασης. Οι τρεις πιο βασικοί αλγόριθµοι από τους παραπάνω είναι ο προοπτικός έλεγχος (forward checking), η έγκαιρη πλήρης εξέταση (full look ahead) και η έγκαιρη µερική εξέταση (partial look ahead). Για όλους τους παραπάνω αλγορίθµους ισχύουν κάποια βασικά χαρακτηριστικά λειτουργίας που είναι κοινά. Ο σκοπός τους είναι µε τη βοήθεια ενός αλγορίθµου συνέπειας να γίνει ένα κλάδεµα του δένδρου αναζήτησης (a priori pruning) ούτως ώστε να στη συνέχεια µε έναν αλγόριθµο αναζήτησης να βρεθεί η λύση στο πρόβληµα µέσα σε επιτρεπτά χρονικά όρια. Η διαφορά των αλγορίθµων έγκειται στον τρόπο µε των οποίο γίνεται η διάδοση των περιορισµών (constraint propagation) δηλαδή στη σειρά µε την οποία θα εξεταστούν οι περιορισµοί και οι τιµές των αντίστοιχων µεταβλητών. Κατά τον προοπτικό έλεγχο δίνεται µία τιµή σε κάποια µεταβλητή και στη συνέχεια εξετάζονται όλοι οι περιορισµοί που αφορούν την µεταβλητή αυτή. Κατά αυτόν τον τρόπο αφαιρούνται συνεχώς ασυνεπείς τιµές. Παρόλα αυτά στο τέλους της διήθησης των τιµών παραµένουν στα πεδία των µεταβλητών αρκετές ασυνεπείς τιµές. Όµως λόγω του µικρού υπολογιστικού κόστους του αλγορίθµου η απόδοση του είναι αρκετά ικανοποιητική. Κατά την χρησιµοποίηση του αλγορίθµου πλήρους έγκαιρης εξέτασης (full look ahead) ή αλλιώς διατήρησης συνέπειας τόξου (Maintaining Arc Consistency) εφαρµόζεται ένας πλήρης αλγόριθµος συνέπειας τόξου αφαιρώντας την πλειοψηφία των ασυνεπών τιµών από τα πεδία των µεταβλητών. Έχοντας το µειονέκτηµα του ποιο απαιτητικού σε υπολογιστικό κόστος αλγορίθµου, ο αλγόριθµος πλήρους εξέτασης παράγει το πιο µικρό δένδρο αναζήτησης και έτσι µειώνεται ο απαιτούµενος χρόνος που απαιτείται από τον επιλεγµένο αλγόριθµο αναζήτησης ώστε να παραχθεί µία λύση. Γενικότερα όµως σε περιπτώσεις που συνδυάζονται αλγόριθµοι συνέπειας και αναζήτησης, η βασική ιδέα είναι να µειωθούν τα δένδρα αναζήτησης του προβλήµατος µέσω ενός αλγορίθµου συνέπειας ο οποίος θα αφαιρέσει όσες ασυνεπείς τιµές εντοπίσει. Με αυτόν τον τρόπο µειώνεται κατά πολύ το κόστος του αλγορίθµου αναζήτησης που θα χρησιµοποιηθεί, του οποίου το έργο θα είναι να δίνει στις ελεύθερες µεταβλητές τι- µές από τα πεδία τους ώστε να καταλήξει σε κάποια πιθανή λύση. [1],[4],[12] -15-

2.3.6 Συµπεράσµατα Οι διάφορες τεχνικές που χρησιµοποιούνται µπορεί να αποφέρουν µεγάλη βελτίωση στην απόδοση ενός αλγορίθµου πάνω σε ένα πρόβληµα περιορισµών. Παρόλα αυτά η χρήση των παραπάνω αλγορίθµων και τεχνικών βελτιστοποίησης δεν αποφέρει πάντα το ίδιο αποτέλεσµα. Ανάλογα µε το είδος του προβλήµατος, τον αριθµό των µεταβλητών και µε το µέγεθος των πεδίων των µεταβλητών αυτών, απαιτείται χρήση διαφορετικού αλγορίθµου ώστε να έχουµε την καλύτερη δυνατή απόδοση. Ένας πολύ διαδεδοµένος αλγόριθµος για την αντιµετώπιση προβληµάτων περιορισµών µε µεγάλο αριθµό τιµών που πρέπει να φιλτραριστούν, είναι η µοναδιαία συνέπεια τόξου. Η χρήση της βοηθάει απορρίπτοντας τιµές από τα πεδία των µεταβλητών γρήγορα ελέγχοντας τους περιορισµούς και αφαιρώντας τις τιµές οι οποίες παρουσιάζουν ασυνέπεια ως προς κάποιον περιορισµό. -16-

3 Ευρετικές συναρτήσεις και µοναδιαία συνέπεια τόξου Τα προβλήµατα περιορισµών είναι συνήθως σύνθετα προβλήµατα και απαιτητικά. Για αυτό το λόγο ο εντοπισµός αλγορίθµων, είτε ελέγχου συνέπειας, είτε συναρτήσεις ανάθεσης τιµών, είναι πολύ σηµαντικός. Παρακάτω θα αναλυθεί η λειτουργία του αλγορίθµου της Μοναδιαίας Συνέπειας τόξου, καθώς και ένα πλήθος ευρετικών συναρτήσεων. 3.1 Μοναδιαία συνέπεια τόξου Η Μοναδιαία συνέπεια τόξου είναι ένας σχετικά πρόσφατος αλγόριθµος ελέγχου συνέπειας, ο οποίος αποσκοπεί στον εντοπισµό και στην αφαίρεση ασυνεπών τιµών από τα πεδία των µεταβλητών. Η χρήση της πριν από οποιοδήποτε αλγόριθµο αναζήτησης λύσης ή κάποιας ευριστικής συνάρτησης, µπορεί να µειώσει το χρόνο αναζήτησης και να βελτιώσει την απόδοση του προβλήµατος. 3.1.1 Περιγραφή αλγορίθµου Η λειτουργία της µοναδιαίας συνέπειας τόξου είναι απλή. Επιλέγεται καταρχήν µία µεταβλητή και στην συνέχεια γίνεται ψευτο-ανάθεση τιµών. Κατά την ανάθεση αυτή, επιλέγονται µία-µία οι τιµές της µεταβλητής και για κάθε µία από αυτές γίνεται έλεγχος συνέπειας. Αν µέσω των περιορισµών εντοπιστεί κάποια ασυνέπεια για µία τιµή της µεταβλητής, τότε η τιµή αυτή αφαιρείται από το πεδίο της αντίστοιχης µεταβλητής. Αφού ελεγχθούν όλες οι τιµές τις µεταβλητής που αρχικά επιλέχθηκε, ο αλγόριθµος προχωράει επιλέγοντας µία νέα µεταβλητή. Η διαδικασία που ακολουθείται είναι η ίδια, και ολοκληρώνεται όταν έχουν ελεγχθεί όλες οι µεταβλητές του προβλήµατος. -17-

Ψευδοκώδικας του αλγορίθµου: Procedure Singleton AC (P) P AC (P); Repeat Changed false; for all (I, a) D do if the propagation of the deletion of {b D i s.t. b a} in P leads to a wipe out (*) then D ι D i \{a}; Propagate the deletion of (I, a) in P to achieve AC; Changed true_ until Changed = false; (*) This test only determines if achieving AC in P D = { a} leads to a domain wipe out. i [12],[13],[14] 3.1.2 Υλοποίηση αλγορίθµου Η υλοποίηση του αλγορίθµου έγινε µε Eclipse Prolog και έχει ως εξής: sac(_task,[]). sac(task,[first_value REST_VALUES]):- not(not(call(task=first_value))),!, sac(task,rest_values). sac(task,[first_value REST_VALUES]):- dvar_remove_element(task,first_value),!, sac(task,rest_values). Η µεταβλητή TASKS που δέχεται η συνάρτηση είναι µία µεταβλητή ορισµένου πεδίου τιµών και είναι µία λίστα που περιέχει όλες τις πιθανές τιµές της µεταβλητής TASKS. Με µία αναδροµή ελέγχουµε µια-µια τις τιµές τις µεταβλητής και κατόπιν και τις τιµές των υπόλοιπων µεταβλητών. Οποιαδήποτε τιµή που δεν είναι συνεπής αφαιρείται από το πεδίο τιµών της αντίστοιχης µεταβλητής. Με την εντολή not(not(call(task=first_value))) επιτυγχάνουµε τον έλεγχο τις αντίστοιχης τιµής της µεταβλητής χωρίς να γίνει ταυτόχρονα και ανάθεση αυτής τις τιµής σε αυτήν την µεταβλητή. Η εντολή αυτή αντιστοιχεί στην TASK=FIRST_VALUE µε την διαφορά ότι η δεύτερη θα αναγκάσει την PROLOG να κάνει ανάθεση της τιµής αυτής στην µεταβλητή. -18-

3.1.3 Αξιολόγηση αλγορίθµου Είναι προφανές πως η µοναδιαία συνέπεια τόξου είναι ένας αλγόριθµος ο οποίος, πιθανότατα, δεν µπορεί να οδηγήσει σε λύση, και κυρίως σε προβλήµατα βελτιστοποίησης. Παρόλα αυτά, σε πολλές περιπτώσεις µειώνει κατά πολύ τον χώρο αναζήτησης, και βοηθά στο να βελτιωθεί η απόδοση του αλγορίθµου λύσης. Όπως στους περισσότερους αλγορίθµους, έτσι και στην µοναδιαία συνέπεια τόξου, η απόδοση του ποικίλει ανάλογα µε το είδος του προβλήµατος. Ταυτόχρονα, η απόδοση της µπορεί να διαφοροποιηθεί και ανάλογα µε ποιον αλγόριθµο αναζήτησης ή ευρετική συνάρτηση θα χρησιµοποιηθεί. Σκοπός αυτής της εργασίας είναι η παραγωγή συµπερασµάτων, ως προς την απόδοση του αλγορίθµου, σε διαφορετικού µεγέθους προβλήµατα και µε χρήσης κάποιων ευρετικών συναρτήσεων.[12] 3.2 Ευρετικές συναρτήσεις Στην προσπάθεια να βελτιωθεί η απόδοση και η ταχύτητα εύρεσης λύσης των αλγορίθ- µων, έγινε φανερό ότι µεγάλο ρόλο διαδραµατίζει η σειρά µε την οποία επιλέγονται οι µεταβλητές στις οποίες ανατίθεται η επόµενη τιµή, καθώς και η ίδια η τιµή που θα επιλεγεί. Έτσι αναπτύχθηκαν συναρτήσεις οι οποίες προσπαθούν να µειώσουν το χρόνο αναζήτησης δίνοντας µε στρατηγική τις τιµές στις µεταβλητές. 3.2.1 Αρχή της συντοµότερης αποτυχίας (Fail-First Principle) Μια αρκετά διαδεδοµένη προσέγγιση είναι αυτή κατά την οποία επιλέγεται σαν επόµενη µεταβλητή στην οποία θα ανατεθεί τιµή, η µεταβλητή που είναι ποιο πιθανό να αποτύχει. Η αρχή αυτή ονοµάστηκε fail-first principle δηλαδή αρχή της γρήγορης αποτυχίας. Η αρχική σκέψη ήταν το να αποτύχει όσο το δυνατόν συντοµότερα η ανάθεση τι- µών ώστε να αυξηθεί η απόδοση του αλγορίθµου. Έτσι ανατίθεται πάντα τιµή στην µεταβλητή που εµπλέκεται στους περισσότερους περιορισµού ή στην µεταβλητή που έχει τις λιγότερες εναποµένουσες τιµές στο πεδίο της. Στην συνέχεια επιχειρείται οπισθοδρόµηση σε προηγούµενη ανάθεση ώστε να αλλάξει το πεδίο τιµών της µεταβλητής που προκάλεσε αποτυχία. Υπάρχουν πολλές παραλλαγές της αρχής της γρήγορης αποτυχίας, οι οποίες διαφέρουν στον τρόπο που επιλέγεται τελικά η επόµενη προς ανάθεση τιµής µεταβλητή. Οι βασικές είναι οι: -19-

Smallest domain SD(p+d) επιλέγεται για ανάθεση η µεταβλητή µε το µικρότερο πεδίο τιµών, είτε δυαδική είτε πρωτογενής. Primal smallest domain SD(p), επιλέγεται για ανάθεση η πρωτογενής µεταβλητή µε το µικρότερο πεδίο τιµών. Dual smallest domain SD(d), επιλέγεται για ανάθεση η δυαδική µεταβλητή µε το µικρότερο πεδίο τιµών. Οι διαφορές που έχουν οι παραπάνω παραλλαγές είναι λεπτές και µπορούν να µειώσουν το χρόνο αναζήτησης αν χρησιµοποιηθούν στο σωστό πρόβληµα. Ο λόγος για τον οποίο η ευριστική της γρήγορης αποτυχίας είναι πολλές φορές αποδοτική, µπορεί να περιγράφει µε λίγα λόγια. εδοµένου ενός προβλήµατος µε µεγάλο βάθος, εάν για παράδειγµα χρησιµοποιηθεί ένας κλασσικός αλγόριθµος είναι πολύ πιθανό η αποτυχία που θα οδηγήσει σε µία οπισθοδρόµηση να συµβεί µετά από πολλές αναθέσεις τιµών. Έτσι προέκυψε η ιδέα για την Fail-first principle, που θα βοηθούσε στο κλάδεµα του συνόλου αναζήτησης. Εφόσον η ασυνεπής µεταβλητή δοκιµάζεται πρώτη (ή έστω από τις πρώτες) ένα µεγάλο µέρος από το σύνολο αναζήτησης θα αποκλειστεί γρήγορα κι έτσι θα αυξήσουµε την απόδοση του προβλήµατος. Έχει αποδειχτεί ότι η χρήση της Fail-first Principle είναι πολύ αποδοτική σε ορισµένα είδη προβλήµατος. Παρόλα αυτά, έχει οδηγήσει και σε λύσεις µε µικρή σχετικά απόδοση και για αυτό το λόγο, όπως και όλες οι ευριστικές συναρτήσεις, πρέπει να χρησιµοποιείται σε συγκεκριµένα είδη προβληµάτων, µε συγκεκριµένες µορφές και µεγέθη των πεδίων που έχουν οι µεταβλητές. [17],[19],[20] 3.2.2 Αρχή των ελάχιστων συγκρούσεων (minimum conflicts) Μία άλλη προσέγγιση για την ανάθεση των τιµών στις µεταβλητές και µάλιστα αντιδιαµετρική στην τακτική της από την προηγούµενη, είναι η αρχή των ελαχίστων συγκρούσεων. Θεµελιώδης διαφορά εδώ είναι ότι βάρος δίνεται στην τιµή που θα παίρνουν οι µεταβλητές και όχι σε ποια µεταβλητή θα δοθεί τιµή. Η λειτουργία της επικεντρώνεται στην επιλογή της τιµής µιας τυχαίας µεταβλητής η οποία θα ελαχιστοποιήσει τις ασυνέπειες µε τους περιορισµούς. Ο αλγόριθµος λειτουργεί µε τρόπο απλό και όχι ιδιαιτέρως πολύπλοκο. Αρχικά δίνονται τιµές σε όλες τις µεταβλητές, στάδιο πολύ σηµαντικό για την απόδοση του αλγορίθµου. -20-

Η απόδοση που έχει η συγκεκριµένη συνάρτηση είναι απροσδόκητα πολύ καλή, παρόλο που το σκεπτικό που ακολουθεί είναι σχετικά απλό. Πολύ σηµαντικό ρόλο στην αποδοτικότητα του αλγορίθµου αυτού διαδραµατίζει η αρχική κατάσταση που θα πάρει το πρόβληµα. Όσο ποιο προσεκτική γίνει η απόδοση των αρχικών τιµών στις µεταβλητές, τόσο ποιο µικρό θα είναι το δέντρο αναζήτησης. Εφόσον δοθεί αρχική τιµή στις µεταβλητές, στη συνέχεια ο αλγόριθµος επιλέγει τυχαία µία µεταβλητή και της αποδίδει την τιµή η οποία ελαχιστοποιεί τις συγκρούσεις που δηµιουργούνται µε τους περιορισµούς που αφορούν την µεταβλητή αυτή. Εφόσον δοθεί η τιµή αυτή στη συνέχεια ο αλγόριθµος αναθέτει τιµή µε τον ίδιο τρόπο, σε µία από τις µεταβλητές η οποία έρχεται σε σύγκρουση µε την προηγούµενη µέσω κάποιου περιορισµού. Η αρχή των ελαχίστων συγκρούσεων δεν εξαρτάται σε µεγάλο βαθµό από το µέγεθος των πεδίων τιµών των µεταβλητών, ούτε από τον αριθµό τους. Είναι δηλαδή ένας αλγόριθµος ο οποίος µπορεί να δώσει λύσεις µε πολύ ικανοποιητική απόδοση σε προβλήµατα µε πολλές µεταβλητές. Ωστόσο, βασική προϋπόθεση για να συµβεί αυτό είναι να επιλεγεί µία αρκετά καλή αρχική κατάσταση, για παράδειγµα να γίνει ένα φιλτράρισµα µέσω ενός αλγορίθµου συνέπειας. Ο συγκεκριµένος αλγόριθµος µπορεί να βοηθήσει πάρα πολύ σε περιπτώσεις βελτιστοποίησης κάποιου ήδη υπάρχοντος προβλήµατος, γιατί ακριβώς θα έχει µία πάρα πολύ καλή αρχική κατάσταση και έτσι µπορεί µε ελάχιστα βήµατα να βελτιώσει κατά πολύ την ήδη υπάρχουσα λύση. Θα πρέπει να σηµειωθεί, όπως και για όλες τις ευρετικές συναρτήσεις, ότι η απόδοση και αυτού του αλγορίθµου εξαρτάται από το είδος του προβλήµατος και την πολυπλοκότητα των περιορισµών του. Παρόλα αυτά λόγω της απλής τακτικής που ακολουθεί έχει χρησιµοποιηθεί σε πολλές εφαρµογές και εργασίες, κυρίως σε αυτές που χρειάζονταν βελτίωση της παρούσας κατάστασης.[15],[18] 3.2.3 Ευρετικές συναρτήσεις µε χρήση υποπροβληµάτων Πολλές φορές η φύση ενός προβλήµατος περιορισµών µπορεί να βοηθήσει πολύ στην γρηγορότερη και ευκολότερη λύση. Το πρόβληµα δηµιουργείται όταν υπάρχουν πολλές µεταβλητές οι οποίες ανεβάζουν εκθετικά το χρόνο επίλυσης ενός προβλήµατος. Για αυτό το λόγο αναπτύχθηκαν τεχνικές οι οποίες εκµεταλλευόµενες την δοµή ενός προβλήµατος και των περιορισµών του, καταφέρνουν να βελτιώσουν κατά πολύ την απόδοση του αλγορίθµου. -21-

Ποιο συγκεκριµένα, η προσέγγιση των αλγορίθµων αυτών επικεντρώνεται στο να κοµµατιάζει το παρών πρόβληµα σε µικρότερα υποπροβλήµατα, των οποίων ο χρόνος επίλυσης θα είναι προφανώς µικρότερος. Ωστόσο, αυτό δεν εξασφαλίζει ότι η λύση του συνολικού προβλήµατος θα είναι αποδοτικότερη µε αυτόν τον τρόπο. Το σηµαντικό για την διαδικασία αυτή είναι να δηµιουργηθούν υποπροβλήµατα µε τον ποιο απλό και σύντοµο τρόπο, αλλά προφανώς αυτό εξαρτάται από την ίδια την δοµή του αρχικού προβλήµατος. Αν σε ένα πρόβληµα υπάρχουν ήδη προβλήµατα τα οποία είναι ανεξάρτητα µεταξύ τους, τότε είναι πολύ πιθανό η χρήση της παραπάνω µεθόδου να βοηθήσει ση- µαντικά στην επίλυσή του. Σε περίπτωση που δεν υπάρχουν υποπροβλήµατα ήδη ανεξάρτητα µεταξύ τους, υπάρχει τρόπος να δηµιουργηθούν. Το κλειδί είναι να βρεθούν κοινά στοιχεία στον γράφο περιορισµών. Κάθε τέτοιο στοιχείο αποτελεί και ένα υποπρόβληµα και ταυτόχρονα το σύνολο των λύσεων αυτών των υποπροβληµάτων είναι και η λύση του αρχικού προβλήµατος. Η ποιο εύκολη περίπτωση είναι αυτή στην οποία ο γράφος περιορισµών αποτελεί ένα δέντρο, στο οποίο κάθε φύλο έχει το πολύ ένα γονέα. Βέβαια, αυτή η περίπτωση είναι πολύ σπάνια, ωστόσο ένα πρόβληµα µπορεί να χωριστεί σε υποπροβλήµατα των οποίων ο γράφος να αποτελεί ένα δέντρο. Σε περίπτωση που ο γράφος του προβλήµατος είναι όντως ένα δέντρο, η λύση µπορεί να βρεθεί πολύ εύκολα µε εφαρµογή αλγορίθµου συνέπειας. [16],[19] 3.2.3.1 Custset conditioning Όπως αναλύθηκε παραπάνω, ένα πρόβληµα µπορεί να χωριστεί σε υποπροβλήµατα, των οποίων οι γράφοι περιορισµών να αποτελούν δέντρα. Όσο ποιο κοντά είναι ο γράφος ενός προβλήµατος σε µορφή δέντρου, τόσο ποιο αποδοτικός είναι ο αλγόριθµος. Για να δηµιουργηθούν λοιπόν τα υποπροβλήµατα αυτά, όποιες µεταβλητές εµποδίζουν τον γράφο να έχει µορφή δέντρου, δηλαδή συνδέονται µε περιορισµούς µε πολλές µεταβλητές. ίνοντας τιµές στις µεταβλητές αυτές και αφαιρώντας τις ασυνεπείς τιµές από τα πεδία των υπόλοιπων µεταβλητών, έχουµε πλέον 2 προβλήµατα. Το ένα είναι οι µεταβλητές που έχουν πάρει ήδη τιµή (το σύνολό τους ονοµάζεται Cycle-cutset) και το άλλο οι µεταβλητές του αρχικού προβλήµατος οι οποίες πλέον αποτελούν πρόβληµα µε γράφο µορφής δέντρου. -22-

Σε περίπτωση που µία µεταβλητή δεν µπορεί πλέον να πάρει τιµή από το πεδίο τι- µών της, γιατί όλες είναι ασυνεπείς (ή έχουν ήδη αφαιρεθεί), τότε αποδίδεται στις µεταβλητές του συνόλου cycle-cutset µία διαφορετική τιµή. Αν βρεθεί σύνολο τιµών για τις µεταβλητές του κυρίως υποπροβλήµατος, τότε µαζί µε το σύνολο τιµών του cyclecutset αποτελούν τη λύση του προβλήµατος. Προφανώς όσο µικρότερο είναι το σύνολο cycle-cutset τόσο αποδοτικότερος είναι ο αλγόριθµος, αφού το σύνολο αναζήτησης είναι κατά πολύ µικρότερο. [20],[21] Ο αλγόριθµος cycle conditioning αποτελείται από τα εξής βήµατα: Επιλέγεται ένα σύνολο µεταβλητών C ώστε ο γράφος περιορισµών να µετατραπεί σε µορφή δέντρου. Το σύνολο C ονοµάζεται cycle-cutset. Για κάθε τιµή των µεταβλητών του συνόλου C που ικανοποιεί τους περιορισµούς των µεταβλητών αυτών: o Αφαιρούνται από τις τιµές των υπόλοιπων µεταβλητών οι οποίες είναι ασυνεπείς µε τις τιµές που έχουν αποδοθεί στις µεταβλητές του συνόλου C. o Εφόσον το κυρίως πρόβληµα έχει λύση, η λύση αυτή µαζί µε τις τιµές των µεταβλητών του C, αποτελούν και τη λύση του αρχικού προβλήµατος. Σε αντίθεση, γίνεται οπισθοδρόµηση και επιλέγονται διαφορετικές τιµές για το σύνολο C. 3.2.3.2 Tree decomposition Κάποιες φορές είναι πολύ δύσκολο λόγω πολυπλοκότητας του αλγορίθµου, αφαιρώντας κάποιες µεταβλητές να δηµιουργήσουµε γράφο σε µορφή δέντρου. Παρόλα αυτά, µπορούµε να δηµιουργήσουµε πολλά υποπροβλήµατα τα οποία να έχουν µορφή δέντρου. Η µέθοδος αυτή λέγεται ανάλυση σε δέντρα (Tree decomposition) και µπορεί να βοηθήσει σε ορισµένες µορφές προβληµάτων. Χωρίζοντας το αρχικό πρόβληµα σε µικρά προβλήµατα, τα οποία µάλιστα έχουν γράφο µορφής δέντρου, µειώνει κατά πολύ την πολυπλοκότητα του προβλήµατος, αυξάνοντας την απόδοση του αλγορίθµου. Για να λειτουργήσει σωστά ο παραπάνω αλγόριθµος, πρέπει να ισχύσουν κάποιες προϋποθέσεις: -23-

Κάθε µεταβλητή του αρχικού προβλήµατος πρέπει να υπάρχει σε τουλάχιστον ένα υποπρόβληµα. Αν δύο µεταβλητές συνδέονται µε έναν περιορισµό, τότε πρέπει τουλάχιστον σε ένα υποπρόβληµα να εµφανιστούν µαζί, καθώς και µε τον περιορισµό τους. Εφόσον τα υποπροβλήµατα δηµιουργούν στο σύνολό τους έναν µεγάλο δέντρο, που ουσιαστικά αποτελεί και το αρχικό πρόβληµα, πρέπει κάθε µεταβλητή που εµφανίζεται σε δύο υποπροβλήµατα, να υπάρχει και σε όλα τα υποπροβλήµατα που βρίσκονται ανάµεσα σε αυτά τα δύο στο µονοπάτι του δέντρου. Οι δύο πρώτες συνθήκες εξασφαλίζουν ότι όλοι οι περιορισµοί και οι µεταβλητές υπάρχουν µετά τη διάσπαση του αρχικού προβλήµατος και δεν έχουµε απώλειες. Η τρίτη συνθήκη εξασφαλίζει ότι η κάθε µεταβλητή θα έχει την ίδια τιµή σε όλα τα υποπροβλήµατα. Για να υπάρξει λύση στο αρχικό πρόβληµα πρέπει όλα τα υποπροβλήµατα να έχουν λύση και προφανώς αν έστω και ένα από τα υποπροβλήµατα δεν έχει λύση, τότε και το αρχικό πρόβληµα δεν έχει λύση. Η τελική λύση είναι το σύνολο των λύσεων ό- λων των υποπροβληµάτων. [18],[21] 3.3 Συµπεράσµατα Στο κεφάλαιο παρουσιάστηκε η Μοναδιαία Συνέπεια Τόξου και ο τρόπος που υλοποιήθηκε. Ταυτόχρονα αναλύθηκαν και κάποιες πολύ γνωστές ευρετικές συναρτήσεις και ο τρόπος λειτουργίας τους. Είναι φανερό ότι η χρήση των διαφόρων αλγορίθµων πρέπει να γίνεται ανάλογα µε το είδος, το µέγεθος και τη µορφή του κάθε προβλήµατος, αφού η απόδοση τους αλλάζει δραµατικά όταν εφαρµόζονται σε διαφορετικά προβλήµατα. -24-

4 Εφαρµογή της Μοναδιαίας Συνέπειας τόξου στο πρόβληµα Job-Shop Scheduling Η υλοποίηση της µοναδιαίας συνέπειας τόξου και η µελέτη της, έγινε πάνω στο γνωστό πρόβληµα χρονοπρογραµµατισµού µηχανών καταστηµάτων (Job-shop Scheduling). Το πρόβληµα αυτό αφορά στην ανάθεση εργασιών µε συγκεκριµένη διάρκεια σε κάποιο αριθµό µηχανών, και σκοπός του είναι η εύρεση της συντοµότερης λύσης. 4.1 Job-Shop Scheduling ίνεται ένας συγκεκριµένος αριθµός µηχανών Μ οι οποίες πρέπει να υλοποιήσουν συγκεκριµένο αριθµό εργασιών TASKS. Σκοπός είναι να βρεθεί ο συντοµότερος χρόνος υλοποίησης των εργασιών αυτών από τις µηχανές. Ταυτόχρονα υπάρχουν και κάποιοι περιορισµοί στο πρόβληµα οι οποίοι αναλύονται παρακάτω. Η κάθε µηχανή µπορεί κάθε χρονική στιγµή να επεξεργάζεται έναν συγκεκριµένο αριθµό εργασιών. Υπάρχουν εργασίες που για να εκτελεστούν θα πρέπει πρώτα να έχουν ολοκληρωθεί άλλες εργασίες. Παρακάτω δίνεται ένα ολοκληρωµένο παράδειγµα ορισµού ενός προβλήµατος Job- Shop Scheduling: Πλήθος µηχανών: 10 Αριθµός εργασιών για κάθε µηχανή: 10 Σχεδιάγραµµα: (Με M i αναπαρίστανται οι µηχανές, µε T i η διάρκεια της κάθε εργασίας) (Μ 3,Τ 1 ), (Μ 7,Τ 2 ), (Μ 6,Τ 3 ), (Μ 1,Τ 4 ), (Μ 2,Τ 5 ), (Μ 10,Τ 6 ), (Μ 9,Τ 7 ), (Μ 4,Τ 8 ), (Μ 8,Τ 9 ), (Μ 5,Τ 10 ) (Μ 4,Τ 11 ), (Μ 3,Τ 12 ), (Μ 1,Τ 13 ), (Μ 8,Τ 14 ), (Μ 2,Τ 15 ), (Μ 9,Τ 16 ), (Μ 10,Τ 17 ), (Μ 5,Τ 18 ), (Μ 7,Τ 19 ), (Μ 6,Τ 20 ) (Μ 3,Τ 21 ), (Μ 7,Τ 22 ), (Μ 6,Τ 23 ), (Μ 1,Τ 24 ), (Μ 2,Τ 25 ), (Μ 10,Τ 26 ), (Μ 9,Τ 27 ), (Μ 4,Τ 28 ), (Μ 8,Τ 29 ), (Μ 5,Τ 30 ) (Μ 9,Τ 31 ), (Μ 7,Τ 32 ), (Μ 2,Τ 33 ), (Μ 1,Τ 34 ), (Μ 3,Τ 35 ), (Μ 10,Τ 36 ), (Μ 4,Τ 37 ), (Μ 5,Τ 38 ), (Μ 8,Τ 39 ), (Μ 6,Τ 40 ) κ.ο.κ. -25-

Για να γίνουν ποιο κατανοητοί οι περιορισµοί που έχει αυτό το πρόβληµα, θα χρησιµοποιήσουµε τις µεταβλητές του παραδείγµατος, έχοντας υπόψη ότι οι µηχανές σε αυτό το παράδειγµα µπορούν να εκτελέσουν µόνο µία εργασία την κάθε χρονική στιγµή. Έτσι για την πρώτη κατηγορία περιορισµών µπορούµε να πούµε το εξής: Η εργασία Τ 1 δεν µπορεί να εκτελείται ταυτόχρονα µε τις εργασίες Τ 12, Τ 21, Τ 35, αφού όλες υλοποιούνται από την µηχανή Μ 3. Το ίδιο ισχύει για τις εργασίες Τ 2, Τ 19,Τ 22, Τ 32 που εκτελούνται από την Μ 7. Βλέπουµε ότι το σχεδιάγραµµα χωρίζει τις εργασίες σε σειρές. Οι σειρές αυτές δηλώνουν την προτεραιότητα των εργασιών, αφού κάθε εργασία για να εκτελεστεί, προϋποθέτει να έχουν εκτελεστεί όλες εργασίες που βρίσκονται αριστερά της στην σειρά που βρίσκεται. Έτσι για παράδειγµα η εργασία Τ 16, για να ξεκινήσει, θα πρέπει πρώτα να έχουν ολοκληρωθεί οι εργασίες Τ 11, Τ 12, Τ 13, Τ 14, Τ 15. Μία αποδεκτή λύση του προβλήµατος είναι να δοθούν οι χρόνοι εκκίνησης της κάθε εργασίας T i. Στη συνέχεια επιθυµητό είναι να βρεθούν καλύτερες λύσεις, δηλαδή λύσεις που να µειώνουν τον συνολικό χρόνο εκτέλεσης των εργασιών. [21],[24] 4.2 Λύση του προβλήµατος Χρονοπρογραµµατισµού Μηχανών Καταστηµάτων (Job-Shop Scheduling) Με το Job-Shop Scheduling έχουν ασχοληθεί πολλοί επιστήµονες εδώ και πάρα πολλά χρόνια και για αυτό το λόγο έχουν γίνει ήδη πολλές προσπάθειες για την επίλυση του. Ως εκ τούτου έχουν εφαρµοστεί διάφοροι αλγόριθµοι µε διάφορες αποδόσεις ο καθένας. Ενδεικτικά να αναφέρουµε τις ποιο σηµαντικές προσπάθειες επίλυσης. Πρώτα από όλες τις µεθόδους εφαρµόστηκαν ακριβείς µέθοδοι από τους Giffler και Thompson (1960), Carlier και Pinson (1989, 1990), Applegate και Cook (1991), Brucker (1994), Williamson (το 1997)). Οι µέθοδοι αυτοί είναι επιτυχείς στην επίλυση των µικρών προβληµάτων, συµπεριλαµβανοµένου του πασίγνωστου προβλήµατος 10Χ10 των Fisher και Thompson που προτάθηκε το 1963 και επιλύθηκε είκοσι έτη αργότερα. Παρόλα αυτά, τα προβλήµατα διαστάσεων 15Χ15 θεωρούνται ακόµα πέρα από τις δυνατότητες των σηµερινών ακριβών µεθόδων. Για τέτοια προβλήµατα υπάρχει ανάγκη για καλές ευρετικές (heuristics) µεθόδους. Οι έρευνες για τις ευρετικές µεθόδους για το Job-Shop Scheduling δίνονται από τους Pinson (1995), Vaessens (1996) και Cheng -26-

(1999). Οι παραπάνω περιλαµβάνουν τους κανόνες αποστολής που αναθεωρούνται στα κείµενα French (1982), Gray και Hoesada (1991), Goncalves και Mendes (1994), η µετατοπιζόµενη προσέγγιση δυσχερειών (the shifting Bottleneck approach) Adams (1988) και Applegate και Cook 1991, τοπική αναζήτηση (Vaessens (1996), Lourenco (1995) και Lourenco και Zwijnenburg 1996) και γενετικοί αλγόριθµοι Davis (1985), Storer (1992), Aarts (1994). Πρόσφατα, ο Binato (2002) περιέγραψε µια άπληστη τυχαία προσαρµοστική διαδικασία αναζήτησης (GRASP), ο Aiex (2001) περιέγραψε έναν παράλληλο έλεγχο (GRASP) µε την επανασύνδεση µονοπατιού, και οι Wang και Zheng (2001) περιέγραψαν µια υβριδική στρατηγική βελτιστοποίησης για το Job-Shop Scheduling. Τέλος, µια περιεκτική έρευνα για τις τεχνικές του Job-Shop Scheduling µπορεί να βρεθεί στους Jain και Meeran (1999). Τα παραπάνω ονόµατα και οι προσπάθειες επίλυσης του προβλήµατος δεν είναι οι µόνες, αλλά είναι οι ποιο σηµαντικές. Με τις προσπάθειες αυτές δόθηκαν ιδέες και υ- ποδοµή σε νεότερους επιστήµονες και προγραµµατιστές να δοκιµάσουν νέες µεθόδους και αλγορίθµους ώστε να βρεθούν καλύτερα αποτελέσµατα. [22],[23] 4.3 Υλοποίηση του προβλήµατος Η επίλυση του Job-Shop Scheduling έγινε µε χρήση της γλώσσας λογικού προγραµµατισµού PROLOG. Χρησιµοποιήθηκαν οι παρακάτω βιβλιοθήκες: :-use_module(library(fd)). :-use_module(library(edge_finder)). :-use_module(library(fd_global)). Οι παραπάνω βιβλιοθήκες περιέχουν χρήσιµες συναρτήσεις για την επεξεργασία µεταβλητών και των πεδίων τιµών τους. Προτού εφαρµοστεί η Μοναδιαία Συνέπεια Τόξου και οι διάφορες ευρετικές συναρτήσεις, έπρεπε να υλοποιηθεί µία απλή λύση για το πρόβληµα Χρονοπρογραµµατισµού Καταστηµάτων. Η λύση αυτή περιγράφεται α- ναλυτικά στην επόµενη ενότητα. -27-

4.3.1 Προετοιµασία των δεδοµένων Για την εφαρµογή των πειραµάτων χρησιµοποιήθηκαν έτοιµα αρχεία *.txt τα οποία περιείχαν προβλήµατα µε συγκεκριµένες τιµές των µεταβλητών όπως το παρακάτω. 6 6 2 1 0 3 1 6 3 7 5 3 4 6. 1 8 2 5 4 10 5 10 0 10 3 4. 2 5 3 4 5 8 0 9 1 1 4 7. 1 5 0 5 2 5 3 3 4 8 5 9. 2 9 1 3 4 5 5 4 0 3 3 1. 1 3 3 3 5 9 0 10 4 4 2 1. Οι παραπάνω τιµές για να γίνουν κατανοητές πρέπει να χωριστούν σε ζευγάρια: (6 6) (2 1) (0 3) (1 6) (3 7) (5 3) (4 6). (1 8) (2 5) (4 10) (5 10) (0 10) (3 4). (2 5) (3 4) (5 8) (0 9) (1 1) (4 7). (1 5) (0 5) (2 5) (3 3) (4 8) (5 9). (2 9) (1 3) (4 5) (5 4) (0 3) (3 1). (1 3) (3 3) (5 9) (0 10) (4 4) (2 1). Έτσι παρατηρούµε ένα ζεύγος στην αρχή (6 6) το οποίο δηλώνει τον αριθµό των µηχανών και του αριθµού των εργασιών για κάθε µηχανή αντίστοιχα. Στη συνέχεια τα ζευγάρια που εµφανίζονται, δηλώνουν την µηχανή, και την διάρκεια της κάθε εργασίας αντίστοιχα. Έτσι το πρώτο ζεύγος (2 1) δηλώνει ότι αυτή η εργασία διαρκεί 1 χρονική στιγµή και υλοποιείται από την µηχανή 2. Τα στοιχεία αυτά διαβάζονται από το αρχείο και µετατρέπονται σε λίστες για να µπορέσει η Prolog να τις χρησιµοποιήσει. jobs(6). machines(6,[0,1,2,3,4,5]). data([ [2, 1, 0, 3, 1, 6, 3, 7, 5, 3, 4, 6], [1, 8, 2, 5, 4, 10, 5, 10, 0, 10, 3, 4], [2, 5, 3, 4, 5, 8, 0, 9, 1, 1, 4, 7], [1, 5, 0, 5, 2, 5, 3, 3, 4, 8, 5, 9], [2, 9, 1, 3, 4, 5, 5, 4, 0, 3, 3, 1], [1, 3, 3, 3, 5, 9, 0, 10, 4, 4, 2, 1]]). -28-

Αυτή είναι και η τελική µορφή των δεδοµένων µετά το διάβασµα από το αρχείο. Η µετατροπή αυτή γίνεται κατά την εκκίνηση του προγράµµατος όπως φαίνεται στο Μέρος Α του παραρτήµατος. Στη συνέχεια αναζητούµε ένα ανώτατο όριο για τα πεδία τιµών των µεταβλητών. Ένας πρόχειρος υπολογισµός είναι να αθροίσουµε τις διάρκειες όλων των εργασιών και να κρατήσουµε το άθροισµά τους ως το ανώτατο όριο που αναζητούµε. Παρόλα αυτά ένα τέτοιο όριο σε µεγάλα προβλήµατα θα δυσχέραινε την εκτέλεση του προβλήµατος, α- φού τα πεδία τιµών των µεταβλητών θα γίνονταν πολύ µεγάλα. Η λύση σε αυτό το πρόβληµα δόθηκε, µε έναν πολύ απλό τρόπο. Χρησιµοποιούµαι το παραπάνω ανώτατο όριο (άθροισµα όλων των εργασιών) και βρίσκουµε µία λύση γρήγορα, χωρίς να µας ενδιαφέρει αν είναι καλή ή όχι. Στη συνέχεια αυτή την πρώτη λύση την χρησιµοποιούµαι ως ανώτατο όριο, αφού ξέρουµε πλέον ότι η λύση είναι εφικτή. Η διαδικασία αυτή ακόµα και σε µεγάλα προβλήµατα διαρκεί κάποια δευτερόλεπτα οπότε το κέρδος που έχουµε είναι πολύ µεγάλο. Η διαδικασία για την εύρεση του ανώτατου ορίου υλοποιείται, όπως παρουσιάζεται στο Μέρος Β του παραρτήµατος. 4.3.2 Υλοποίηση των περιορισµών Στη συνέχεια, καθορίζονται οι περιορισµοί του προβλήµατος, που αφορούν τις µεταβλητές Tasks. Όπως αναφέρθηκε και προηγουµένως, υπάρχουν δύο είδη περιορισµών. Το πρώτο είναι ότι, δεν µπορούν οι µηχανές να εκτελέσουν περισσότερες από µία εργασίες την ίδια χρονική στιγµή, και το δεύτερο είδος περιορισµών είναι ότι κάποιες διεργασίες προϋποθέτουν κάποιες άλλες για να ξεκινήσουν. Οι περιορισµοί αυτοί υλοποιούνται µε έναν πολύ απλό τρόπο. Η βασική σκέψη είναι ότι ελέγχουµε τους χρόνους εκκίνησης των διεργασιών και δεν επιτρέπουµε ασυνέπειες. Αυτό επιτυγχάνεται, µε απλές µαθηµατικές ανισώσεις, δηλώνοντας για παράδειγµα για τις διεργασίες που προϋποθέτουν κάποιες άλλες για να ξεκινήσουν, ότι ο χρόνος έναρξής τους πρέπει να είναι µεγαλύτερος από το άθροισµα του χρόνου έναρξης και της διάρκειας της προηγούµενης διεργασίας. Έστω Τ 1 και Τ 2 οι χρόνοι έναρξης των δύο διεργασιών, και D 1 ο χρόνος διάρκειας της πρώτης. Ο περιορισµός που περιγράψα- -29-