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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Χρονοπρογραµµατισµός Ωρολόγιου Προγράµµατος Μαθηµάτων Πανεπιστηµιακού Τµήµατος ιπλωµατική Εργασία της Αθανασίας Παπότη (ΑΕΜ: 434) Επιβλέπων Καθηγητής: Ιωάννης Βλαχάβας Θεσσαλονίκη 2003

2 Στους γονείς µου

3 Πρόλογος Στα πλαίσια αυτής της διπλωµατικής εργασίας παρουσιάζεται η ανάπτυξη ενός χρονοπρογράµµατος για τη δηµιουργία του προγράµµατος διδασκαλίας των µαθηµάτων του Τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης. Ο χρονοπρογραµµατισµός (scheduling) είναι ένα πρόβληµα που αντιµετωπίζεται συχνά σε εκπαιδευτικά ιδρύµατα, δηλαδή σε σχολεία και πανεπιστήµια και αναφέρεται στην εύρεση ενός εβδοµαδιαίου προγράµµατος µαθηµάτων ή ενός προγράµµατος εξετάσεων. Τουλάχιστον µία φορά το χρόνο συντάσσεται ένα πρόγραµµα διδασκαλίας για τα µαθήµατα ενός σχολείου και συνήθως δύο και τρεις φορές το χρόνο συντάσσονται τα προγράµµατα διδασκαλίας και εξέτασης των µαθηµάτων ενός πανεπιστηµιακού τµήµατος αντίστοιχα. Ακόµη και σήµερα σε κάποια σχολεία και τµήµατα πανεπιστηµίων η δηµιουργία των προγραµµάτων τους δεν γίνεται από υπολογιστές αλλά µε παραδοσιακές µεθόδους (από τον άνθρωπο). Τα τελευταία χρόνια όµως γίνεται σηµαντική προσπάθεια για την αυτόµατη κατασκευή των προγραµµάτων των µαθηµάτων ενός ιδρύµατος. Τα προβλήµατα χρονοπρογραµµατισµού ανήκουν στην περιοχή των συνδυαστικών προβληµάτων βελτιστοποίησης και εποµένως µπορούν να περιγραφούν σαν Προβλήµατα Ικανοποίησης Περιορισµών (CSP). Η απεικόνιση των προβληµάτων αυτών στηρίζεται στον προσδιορισµό ενός συνόλου µεταβλητών και µεταξύ αυτών ενός συνόλου περιορισµών ενώ η λύση τους καθορίζεται από την ανάθεση τιµών στις µεταβλητές, τέτοιων που να ικανοποιούν όλους τους περιορισµούς. Στην εργασία αυτή το πρόβληµα της δηµιουργίας των προγραµµάτων διδασκαλίας των µαθηµάτων του Τµήµατος Πληροφορικής προσεγγίζεται χρησιµοποιώντας Προγραµµατισµό µε Περιορισµούς (Constraint Programming ή CP) και υλοποιείται στην αντικειµενοστραφή γλώσσα προγραµµατισµού Java. Το πρόγραµµα "JU_Schedule" που αναπτύχθηκε συντάσσει τα προγράµµατα διδασκαλίας των µαθηµάτων των χειµερινών και εαρινών εξαµήνων του Τµήµατος Πληροφορικής και ανταποκρίνεται σε πραγµατικά δεδοµένα και περιορισµούς. Η εκπόνηση της εργασίας έγινε στο εργαστήριο Προγραµµατισµού (PcLab) του Τµήµατος Πληροφορικής σε συνεργασία µε τον καθηγητή κ. Ιωάννη Βλαχάβα και την οµάδα Λογικού Προγραµµατισµού και Ευφυών Συστηµάτων ( LPIS group).

4 Θα ήθελα να ευχαριστήσω θερµά τους κ. Ιωάννη Βλαχάβα και κ. Ηλία Σακελλαρίου για την πολύτιµη βοήθεια και συµπαράστασή τους. Ιούλιος 2003

5 Περιεχόµενα Κεφάλαιο 1 : Εισαγωγή Κεφάλαιο 2 : Χρονοπρογραµµατισµός Βασισµένος Σε Περιορισµούς Εισαγωγή Προβλήµατα Ικανοποίησης Περιορισµών Παρουσίαση του Μοντέλου CSP Στρατηγικές Χρονοπρογραµµατισµού Τεχνικές Επίλυσης Ικανοποίηση Περιορισµών Συστηµατική Αναζήτηση Τεχνικές Επίλυσης ιάδοση Περιορισµών Βελτιστοποίηση Περιορισµών Προγραµµατισµός Με Περιορισµούς και Λογικός Προγραµµατισµός Με Περιορισµούς Εφαρµογές του CP και του CLP Προβλήµατα Ανάθεσης Προβλήµατα Χρονοπρογραµµατισµού Ανάθεση Προσωπικού Προβλήµατα Μεταφοράς Γλώσσες Προγραµµατισµού για CSP Προβλήµατα Η Γλώσσα CHIP Ο Περιορισµός among Ο Περιορισµός diffn Ο Περιορισµός cycle Η Βιβλιοθήκη ILOG Χρονοπρογραµµατισµός και ILOG Προκαθορισµένοι Περιορισµοί της ILOG..30

6 2.7 Κατηγορίες Προβληµάτων Χρονοπρογραµµατισµού Χρονοπρογραµµατισµός Σχολείου Απλοποιηµένο Πολυωνυµικό Πρόβληµα Βασικό Πρόβληµα Αναζήτησης Πρόβληµα Βελτιστοποίησης Χρονοπρογραµµατισµός των Μαθηµάτων Πανεπιστηµίου Βασικό Πρόβληµα Αναζήτησης Πρόβληµα Βελτιστοποίησης Χρονοπρογραµµατισµός Εξετάσεων Βασικό Πρόβληµα Αναζήτησης Πρόβληµα Βελτιστοποίησης Παράδειγµα Προβλήµατος Χρονοπρογραµµατισµού Με Περιορισµούς Περιγραφή του Προβλήµατος Παρουσίαση του Προβλήµατος Αντικειµενικός Στόχος Περιορισµοί εδοµένα Αναπαράσταση του Προβλήµατος Περιγραφή του Μοντέλου CSP Το Πρόβληµα σαν CSP Αλγόριθµος Υλοποίησης Αξιοπιστία και Αποτελέσµατα Γενικά 42 Κεφάλαιο 3 : Χρονοπρογραµµατισµός Πανεπιστηµιακού Τµήµατος Εισαγωγή Περιγραφή του Προβλήµατος Προγράµµατα Μαθηµάτων Προγράµµατα Εξετάσεων Αντικειµενικός Στόχος εδοµένα του Προβλήµατος..50

7 3.5 Αναπαράσταση του Προβλήµατος Περίληψη 53 Κεφάλαιο 4 : JCL Βιβλιοθήκη Επίλυσης Περιορισµών Εισαγωγή Η Βιβλιοθήκη JCL Χρήση της JCL σε πρόβληµα CSP Οργάνωση του CSP Προβλήµατος υαδικοί Περιορισµοί Μοναδιαίοι Περιορισµοί Λύση του CSP Προβλήµατος Παράδειγµα Επεκτάσεις της Βιβλιοθήκης JCL Γενικά.69 Κεφάλαιο 5 : Επίλυση του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής Εισαγωγή Περιγραφή Γραφικού Περιβάλλοντος Πεδίο "ΜΑΘΗΜΑΤΑ" Πεδίο "ΚΑΘΗΓΗΤΕΣ" Πεδίο "ΑΙΘΟΥΣΕΣ" Αναπαράσταση των εδοµένων του Προβλήµατος Καταχώρηση των εδοµένων του Προβλήµατος Αναπαράσταση του Προβλήµατος Υλοποίηση του Προβλήµατος Εισαγωγή των εδοµένων του Προβλήµατος Πρόσθεση Περιορισµών Μέθοδος addconstraints Βοηθητικές Μέθοδοι Μέθοδος Solve_Problem.88

8 5.7 Λύση Εκτύπωση των Αποτελεσµάτων Συµπεράσµατα.89 Κεφάλαιο 6 : Περιγραφή του Προγράµµατος Επίλυσης του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής Εισαγωγή Εισαγωγή εδοµένων Έξοδος Προγράµµατος Συµπεράσµατα.97 Κεφάλαιο 7 : Κριτική του Προγράµµατος Επίλυσης του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής Εισαγωγή Χρόνος Εκτέλεσης ιεπιφάνεια Χρήστη υναµικότητα του Προγράµµατος Μελλοντικοί Στόχοι Επίλογος..102 Παράρτηµα Ι : Κώδικας του Προγράµµατος Επίλυσης του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής 103 ΒΙΒΛΙΟΓΡΑΦΙΑ..115

9 Κεφάλαιο 1 Εισαγωγή Το αντικείµενο εξέτασης αυτής της διπλωµατικής εργασίας είναι η περιοχή του Χρονοπρογραµµατισµού Βασισµένου σε Περιορισµούς (Constraint Based Scheduling), η οποία αποτελεί µία προσέγγιση για την επίλυση πραγµατικών προβληµάτων χρονοπρογραµµατισµού. Το πρόγραµµα "JU_Schedule" που έχει αναπτυχθεί δηµιουργεί το πρόγραµµα µαθηµάτων των χειµερινών και εαρινών εξαµήνων του Τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης. Αναπαρίσταται ως Πρόβληµα Ικανοποίησης Περιορισµών (Constraint Satisgaction Problem ή CSP) και υλοποιείται στην αντικειµενοστραφή γλώσσα προγραµµατισµού Java. Η σύνταξη προγραµµάτων διδασκαλίας και εξέτασης µαθηµάτων είναι ένα πρόβληµα που εµφανίζεται συχνά σε σχολεία, πανεπιστηµιακά τµήµατα και άλλου είδους εκπαιδευτικά ιδρύµατα. Το πρόβληµα αφορά την εύρεση των ηµερών, ωρών και αιθουσών διδασκαλίας ή εξέτασης ενός συγκεκριµένου συνόλου µαθηµάτων ενώ παράλληλα πρέπει να ικανοποιούνται ορισµένοι περιορισµοί. Συνηθισµένοι περιορισµοί που πρέπει να τηρούνται είναι ότι δύο µαθήµατα δεν πρέπει να διδάσκονται ταυτόχρονα, οι καθηγητές και οι αίθουσες των µαθηµάτων πρέπει να είναι διαθέσιµες κατά την διδασκαλία τους, οι καθηγητές δεν πρέπει να διδάσκουν ταυτόχρονα δύο µαθήµατα, οι αίθουσες πρέπει να έχουν κατάλληλη χωρητικότητα, και άλλοι που ποικίλλουν ανάλογα µε το πρόβληµα χρονοπρογραµµατισµού το οποίο περιγράφουν. Στην εργασία αυτή χρησιµοποιείται η τεχνολογία περιορισµών για την προσέγγιση του προβλήµατος. Η κατασκευή χρονοπρογραµµάτων µαθηµάτων είναι ένα σύνθετο και χρονοβόρο πρόβληµα µε µεγάλο χώρο αναζήτησης. Για την αντιµετώπισή του λοιπόν χρησιµοποιείται ο

10 Προγραµµατισµός µε Περιορισµούς (Constraint Programming ή CP) ο οποίος είναι κατάλληλος για την επίλυση προβληµάτων µε τα παραπάνω χαρακτηριστικά. Η βασική ιδέα στην οποία στηρίζεται είναι η µοντελοποίηση του προβλήµατος σαν ένα σύνολο µεταβλητών, σε κάθε µία από τις οποίες αντιστοιχεί ένα πεδίο τιµών, και ένα σύνολο περιορισµών για τους πιθανούς συνδυασµούς τιµών των µεταβλητών. Με τον τρόπο αυτό η επίλυση ενός προβλήµατος που προσεγγίζεται από τον CP είναι η ανάθεση τιµών στις µεταβλητές τέτοιες που να ικανοποιείται το σύνολο όλων των περιορισµών. Η υλοποίηση του προγράµµατος έγινε µε τη χρήση της αντικειµενοστραφούς γλώσσας προγραµµατισµού Java για την οποία έχουν αναπτυχθεί εργαλεία κατάλληλα για την επίλυση Προβληµάτων Χρονοπρογραµµατισµού. Πιο συγκεκριµένα χρησιµοποιήθηκε η βιβλιοθήκη επίλυσης περιορισµών JCL (Java Constraint Library) η οποία αποτελεί ένα σηµαντικό εργαλείο της Java για την απεικόνιση των αντικειµένων ενός προβλήµατος στις µεταβλητές και τους περιορισµούς του Προβλήµατος Ικανοποίησης Περιορισµών (CSP). Συνοψίζοντας η εργασία αυτή επιλύει το πρόβληµα της δηµιουργίας των προγραµµάτων διδασκαλίας των µαθηµάτων του Τµήµατος Πληροφορικής ενώ παράλληλα θέτει τις βάσεις για τη δηµιουργία των προγραµµάτων εξέτασης µαθηµάτων. Το θεωρητικό υπόβαθρο και η υλοποίηση της εργασίας αυτής περιγράφονται στα ακόλουθα κεφάλαια : Στο δεύτερο κεφάλαιο γίνεται µία γενική αναφορά στον Χρονοπρογραµµατισµό Βασισµένο σε Περιορισµούς (Constraint Based Scheduling) ενώ παρουσιάζονται τα προβλήµατα χρονοπρογραµµατισµού µέσα από την περιοχή των Προβληµάτων Ικανοποίησης Περιορισµών. Επίσης περιγράφονται οι στρατηγικές χρονοπρογραµµατισµού που χρησιµοποιούνται σε τέτοια προβλήµατα, οι τεχνικές επίλυσης των προβληµάτων αυτών καθώς και ένας κλάδος του Προγραµµατισµού µε Περιορισµούς, ο Λογικός Προγραµµατισµός µε Περιορισµούς. Στο τελευταίο κοµµάτι του κεφαλαίου γίνεται εκτεταµένη αναφορά στο Πρόβληµα του Χρονοπρογραµµατισµού αναφέροντας τις κατηγορίες Προβληµάτων µε Περιορισµούς και ένα παράδειγµα εφαρµογής τους. Στο τρίτο κεφάλαιο περιγράφεται το πρόβληµα χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής, δηλαδή τα προγράµµατα µαθηµάτων που χρειάζεται να συνταχθούν, ο αντικειµενικός στόχος και τα δεδοµένα του προβλήµατος, καθώς επίσης και οι περιορισµοί που πρέπει να ικανοποιούνται για την επίλυση αυτού. Στο τέταρτο κεφάλαιο παρουσιάζεται αναλυτικά η βιβλιοθήκη επίλυσης περιορισµών της Java JCL, ο τρόπος εφαρµογής της, παραδείγµατα χρήσης των κλάσεων αυτής, καθώς και επιπλέον

11 επεκτάσεις που έγιναν προκειµένου να καλυφθούν οι ανάγκες αναπαράστασης και επίλυσης του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής. Στο πέµπτο κεφάλαιο αναλύεται η υλοποίηση του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής που παρουσιάστηκε στο τρίτο κεφάλαιο. Συγκεκριµένα περιγράφεται η µορφή της Γραφικής ιεπαφής Χρήστη (GUI ή Graphical User Interface) για το συγκεκριµένο πρόβληµα, ο τρόπος αναπαράστασης των δεδοµένων του προβλήµατος, ο τρόπος αναπαράστασης του ίδιου του προβλήµατος, η επίλυση αυτού και η µορφή των αποτελεσµάτων. Στο έκτο κεφάλαιο παρουσιάζεται ένα παράδειγµα εκτέλεσης του προγράµµατος επίλυσης του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής ενώ παράλληλα παρατίθενται ορισµένες εικόνες (screenshots) που παρουσιάζουν το γραφικό περιβάλλον της εφαρµογής και τον τρόπο χρήσης αυτού. Στο έβδοµο κεφάλαιο γίνεται κριτική στα πεπραχθέντα της εργασίας και αναφέρονται οι δυσκολίες και τα προβλήµατα που αντιµετωπίστηκαν όπως επίσης και τα θέµατα που δε λύθηκαν και θα αποτελέσουν µελλοντικό στόχο άλλων εργασιών. Τέλος στο Παράρτηµα δίνονται ορισµένα ενδιαφέροντα σηµεία του κώδικα του προγράµµατος "JU_Schedule", το οποίο συντάσσει τα προγράµµατα µαθηµάτων του Τµήµατος Πληροφορικής.

12 Κεφάλαιο 2 Χρονοπρογραµµατισµός Βασισµένος Σε Περιορισµούς 2.1 Εισαγωγή Ο Χρονοπρογραµµατισµός Βασισµένος Σε Περιορισµούς (Constraint Based Scheduling) αποτελεί µια προσέγγιση για την επίλυση πραγµατικών προβληµάτων χρονοπρογραµµατισµού µε τη χρήση περιορισµών στις µεταβλητές του προβλήµατος. Η ανάπτυξη γενικών και εξειδικευµένων τεχνικών ικανοποίησης περιορισµών, καθιστούν το χρονοπρογραµµατισµό µε περιορισµούς πολύ δηµοφιλή στην επίλυση Συνδυαστικών Προβληµάτων Βελτιστοποίησης (Combinatorial Optimization Problems) καθώς επιτυγχάνει γενικότητα, αποδοτικότητα και διαφάνεια των µεθόδων που χρησιµοποιεί. Ένας περιορισµός (constraint) είναι µία λογική σχέση µεταξύ των διαφόρων µεταβλητών του προβλήµατος, σε κάθε µία από τις οποίες ανατίθεται µία τιµή από ένα δοθέν σύνολο τιµών. Κάθε περιορισµός εποµένως περιορίζει τον αριθµό των πιθανών τιµών που κάθε µεταβλητή µπορεί να πάρει, αντιπροσωπεύοντας έτσι µία µερική πληροφορία για τις µεταβλητές του προβλήµατος. Ένα σηµαντικό χαρακτηριστικό των περιορισµών είναι ο δηλωτικός τρόπος χρήσης τους, δηλαδή

13 καθορίζουν τη σχέση µεταξύ των µεταβλητών δηλωτικά αποφεύγοντας τη χρήση οποιασδήποτε υπολογιστικής διαδικασίας για το σκοπό αυτό. Γενικά τα προβλήµατα χρονοπρογραµµατισµού µε περιορισµούς βασίζονται στη µοντελοποίηση και επίλυση πραγµατικών προβληµάτων στα οποία ένα σύνολο δραστηριοτήτων πρέπει να καταναλώσει έναν περιορισµένο αριθµό πόρων (resources) και σε περιορισµένο χρονικό διάστηµα. Ένα τέτοιο πρόβληµα περιλαµβάνει εποµένως την κατανοµή των πόρων στις δραστηριότητες του προβλήµατος και τη διάταξη των δραστηριοτήτων σε κάθε περιορισµό. Στις επόµενες ενότητες θα παρουσιαστούν τα Προβλήµατα Χρονοπρογραµµατισµού Με Περιορισµούς µέσα από την περιοχή των Προβληµάτων Ικανοποίησης Περιορισµών, οι στρατηγικές χρονοπρογραµµατισµού που χρησιµοποιούνται σε τέτοια προβλήµατα, οι τεχνικές επίλυσης των προβληµάτων αυτών καθώς και ένας άλλος κλάδος του Προγραµµατισµού Με Περιορισµούς, ο Λογικός Προγραµµατισµός Με Περιορισµούς. Στο τελευταίο κοµµάτι θα γίνει εκτεταµένη αναφορά στο Πρόβληµα του Χρονοπρογραµµατισµού, αναφέροντας τις κατηγορίες των Προβληµάτων Χρονοπρογραµµατισµού Με Περιορισµούς και ένα παράδειγµα εφαρµογής τους. 2.2 Προβλήµατα Ικανοποίησης Περιορισµών Ο Προγραµµατισµός Με Περιορισµούς (Constraint Programming ή CP) αποτελεί ένα πλαίσιο εργασιών για την επίλυση συνδυαστικών προβληµάτων βελτιστοποίησης. Η βασική ιδέα στην οποία στηρίζεται είναι η µοντελοποίηση του προβλήµατος σαν ένα σύνολο µεταβλητών, σε κάθε µια από τις αντιστοιχεί ένα πεδίο τιµών, και ένα σύνολο περιορισµών για τους πιθανούς συνδυασµούς τιµών των µεταβλητών. Καθώς τα πεδία τιµών είναι συνήθως πεπερασµένα, τα προβλήµατα αυτά αναφέρονται γενικά σαν Προβλήµατα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problems ή CSP). Σκοπός των προβληµάτων αυτών είναι η εύρεση των τιµών των µεταβλητών, τέτοιων ώστε να ικανοποιούνται όλοι οι περιορισµοί του προβλήµατος. Σε µερικές περιπτώσεις επίσης χρησιµοποιείται και µία Αντικειµενική Συνάρτηση (Objective Function) στις µεταβλητές του προβλήµατος και δηλώνει την ποιότητα της λύσης. Στις περιπτώσεις αυτές σκοπός είναι να βρεθεί µια ανάθεση τιµών στις µεταβλητές που να ελαχιστοποιούν ή να µεγιστοποιούν την αντικειµενική συνάρτηση. Τέτοια προβλήµατα αναφέρονται γενικά ως Προβλήµατα Βελτιστοποίησης Ικανοποίησης Περιορισµών (Constraint Satisfaction Optimization Problems ή CSOP).

14 Tα Προβλήµατα Χρονοπρογραµµατισµού (Scheduling Problems) ανήκουν στην περιοχή των συνδυαστικών προβληµάτων βελτιστοποίησης, εποµένως µπορούν να περιγραφούν σαν Προβλήµατα Ικανοποίησης Περιορισµών (CSP). Για να µοντελοποιηθεί ένα πρόβληµα χρονοπρογραµµατισµού σε CSP πρέπει να αποφασιστεί πώς θα απεικονιστούν τα αντικείµενα του προβλήµατος στις µεταβλητές και τους περιορισµούς του προβλήµατος CSP. Μία τυπική προσέγγιση µοντελοποίησης χρησιµοποιεί τις µεταβλητές για να περιγράψει τις δραστηριότητες του προβλήµατος. Συγκεκριµένα υπάρχουν τρεις µεταβλητές που προσδιορίζουν τη θέση µιας δραστηριότητας στο χρόνο και οι οποίες είναι : start(a) : καθορίζει τη στιγµή έναρξης (start time) της δραστηριότητας Α end(a) : καθορίζει τη στιγµή λήξης (end time) της δραστηριότητας Α p(a) : καθορίζει τη διάρκεια επεξεργασίας (processing time) της δραστηριότητας Α Για τις παραπάνω µεταβλητές περιµένουµε τα πεδία τιµών να περιέχουν διακριτές τιµές, για παράδειγµα φυσικούς αριθµούς. Αν σε ένα πρόβληµα χρονοπρογραµµατισµού περιλαµβάνεται η κατανοµή των πόρων του προβλήµατος τότε υπάρχει µια επιπλέον µεταβλητή για τη δραστηριότητα που προσδιορίζει, και η οποία είναι η εξής : source(a) : περιγράφει τον πόρο (resource) τον οποίο η δραστηριότητα Α καταναλώνει Παρουσίαση του Μοντέλου CSP Τα στοιχεία που χαρακτηρίζουν ένα πρόβληµα CSP (Constraint Satisfaction Problem) είναι ένα σύνολο µεταβλητών, ένα σύνολο τιµών κάθε µία από τις οποίες ανατίθεται σε µια µεταβλητή και ένα σύνολο περιορισµών, οι οποίοι περιγράφουν τη λογική σχέση µεταξύ των µεταβλητών. Επίσης σαν λύση ενός CSP προβλήµατος χαρακτηρίζεται η ανάθεση τιµών σε όλες τις µεταβλητές µε τρόπο ώστε να ικανοποιούνται όλοι οι περιορισµοί του προβλήµατος. Σύµφωνα µε τα παραπάνω ένα πρόβληµα CSP µπορεί να αναπαρασταθεί σαν ένας γράφος P=(V, D, C) όπου : V={v 1,, v n } είναι το σύνολο των µεταβλητών, όπου κάθε µεταβλητή αντιστοιχεί σε έναν κόµβο του γράφου.

15 D={d 1,, d n } είναι το σύνολο των πεδίων, όπου κάθε τιµή του πεδίου αντιπροσωπεύει και ένα χρώµα στο γράφο. C={c 1,, c n } είναι το σύνολο των περιορισµών, όπου η σχέση C=C {i,j} D i *D j περιγράφει τον περιορισµό µεταξύ των µεταβλητών (v i,v j ) όταν έχουν τις ίδιες τιµές και (i,j) είναι δύο κοντινοί κόµβοι (µεταβλητές) του γράφου. Τότε ισχύει ότι v i v j αν (i,j) είναι κοντινοί κόµβοι. Για να γίνει περισσότερο ευκρινής ο παραπάνω τρόπος αναπαράστασης του προβλήµατος CSP δίνεται το εξής παράδειγµα : V 0 {6,4} v 0 v 1 V 1 {6,4} v 1 < v 2 v 1 < v 3 V 2 V 3 {5,1,2} {7,8,5} Εξετάζοντας τον συγκεκριµένο γράφο τα συµπεράσµατα που εξάγονται είναι τα ακόλουθα : V={V 0,V 1,V 2,V 3 } είναι οι κόµβοι του γράφου και οι οποίοι απεικονίζουν τις µεταβλητές του προβλήµατος. D v0 = {6,4} είναι οι πιθανές τιµές της µεταβλητής V 0. D v1 = {6,4} είναι οι πιθανές τιµές της µεταβλητής V 1. D v2 = {5,1,2} είναι οι πιθανές τιµές της µεταβλητής V 2. D v3 = {7,8,5} είναι οι πιθανές τιµές της µεταβλητής V 3. C = {c {v0,v1}, c {v1,v2}, c {v1,v3} } αντιστοιχούν στους περιορισµούς όπου : c {v0,v1} = {V 0 V 1 }. c {v1,v2} = {V 1 > V 2 }. c {v1,v3} = {V 1 < V 3 }.

16 2.9.2 Στρατηγικές Χρονοπρογραµµατισµού Η αναπαράσταση ενός Προβλήµατος Χρονοπρογραµµατισµού (Scheduling Problem) σαν Πρόβληµα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problems ή CSP), επιτρέπει την χρήση τεχνικών απαρίθµησης. Αυτές στηρίζονται στη δοκιµή µίας τιµής στη µεταβλητή του προβλήµατος, δηλαδή τίθεται ένας περιορισµό της µορφής : X = h, όπου Χ η µεταβλητή και h η τιµή που ανατίθεται στη µεταβλητή αυτή. Aν το νέο πρόβληµα δεν έχει λύση τότε αυτός ο περιορισµός αντικαθίσταται από άλλον τον X h και η απαρίθµηση συνεχίζεται. Μία τέτοια τεχνική είναι χρήσιµη για την κατανοµή πόρων, δηλαδή την ανάθεση τιµών στις µεταβλητές πόρων. Επιπλέον καθώς η πραγµατική σηµασία της µεταβλητής είναι γνωστή µπορούµε να χρησιµοποιήσουµε κάποιες ευριστικές µεταβλητές και τιµές που προέρχονται από το αρχικό πρόβληµα. Για παράδειγµα η δραστηριότητα µε τον ελάχιστο αριθµό εναλλακτικών πόρων πρέπει πρώτα να κατανεµηθεί (the first-fail principle) και συγκεκριµένα στον λιγότερο χρησιµοποιηµένο πόρο (succeed-first principle). Για χρονοπρογραµµατισµό µε χρήση πόρων, όπως για παράδειγµα για τον καθορισµό του χρόνου επεξεργασίας µιας δραστηριότητας, είναι προτιµότερο να χρησιµοποιηθεί ένα διαφορετικό σχήµα περιορισµών και το οποίο διατυπώνεται ως εξής : X < h ή X >= h. Συγκεκριµένα µπορεί να αποφασιστεί η διευθέτηση δύο δραστηριοτήτων που δεν έχουν ακόµα διευθετηθεί για επεξεργασία. Για το σκοπό αυτό αρχικά τίθεται ο περιορισµός Α << Β που µε τις µεταβλητές end(a) και start(b) παίρνει τη µορφή end(a)=<start(b). Στην περίπτωση που ο χρονοπρογραµµατισµός αποτύχει τίθεται µία άρνηση στον περιορισµό, δηλαδή αν οι δύο δραστηριότητες Α και Β δεν µπορούν να επεξεργαστούν παράλληλα τότε ο περιορισµός γίνεται της µορφής : Β << Α ή διαφορετικά Α << Β. Η ερώτηση που προκύπτει στο σηµείο αυτό είναι ποιες δραστηριότητες πρέπει να διευθετηθούν πρώτες. Και πάλι µπορεί να χρησιµοποιηθεί γνώση και εµπειρία από τη λύση προβληµάτων χρονοπρογραµµατισµού µε την υποστήριξη ότι οι καθυστερηµένοι πόροι πρέπει να χρονοπρογραµµατιστούν πρώτοι. Τέτοιοι πόροι µπορούν να προσδιοριστούν είτε από το χρήστη είτε αυτόµατα.

17 2.10 Τεχνικές Επίλυσης Ο Προγραµµατισµός Με Περιορισµούς (Constraint Programming ή CP) µπορεί να διακριθεί σε δύο κλάδους και οι οποίοι είναι : Ικανοποίηση Περιορισµών (Constraint Satisfaction) Επίλυση Περιορισµών (Constraint Solving) Και οι δύο παραπάνω κλάδοι χρησιµοποιούν την ίδια ορολογία αλλά διαφέρουν στην εφαρµογή τους και στις τεχνικές επίλυσης που χρησιµοποιούν. Συγκεκριµένα ο κλάδος της Ικανοποίησης Περιορισµών ασχολείται µε προβλήµατα που µοντελοποιούνται µε µεταβλητές πεπερασµένων τιµών και συνήθως περισσότερο από το 95 % των εφαρµογών µε περιορισµούς χρησιµοποιούν πεπερασµένα σύνολα για τις µεταβλητές τους. Από την άλλη ο κλάδος της Επίλυσης Περιορισµών στηρίζεται στην ιδέα του Προγραµµατισµού Με Περιορισµούς (CP), δηλαδή περιγράφει το πρόβληµα σαν ένα σύνολο περιορισµών και λύνει τους περιορισµούς αυτούς. Στην περίπτωση αυτή οι περιορισµοί καθορίζονται κυρίως πάνω σε µηπεπερασµένα ή περισσότερο σύνθετα σύνολα τιµών. Αντί των συνδυαστικών µεθόδων που χρησιµοποιούνται στην Ικανοποίηση Περιορισµών, ο κλάδος της Επίλυσης Περιορισµών βασίζεται σε µαθηµατικές τεχνικές όπως είναι για παράδειγµα η αυτόµατη διάκριση, οι σειρές Taylor και η µέθοδος Newton Ικανοποίηση Περιορισµών Τα Προβλήµατα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problems ή CSP) έχουν αποτελέσει ένα σηµαντικό θέµα έρευνας στον τοµέα της Τεχνητής Νοηµοσύνης (Artificial Intelligence ή AI) τα τελευταία χρόνια. Ένα πρόβληµα CSP αποτελείται από : ένα σύνολο µεταβλητών X = { x 1, x 2,..., x n }, για κάθε µεταβλητή x i, ένα πεπερασµένο σύνολο D i των δυνατών τιµών της (domain) D = { D 1, D 2,, D n } µε x i D i, ένα σύνολο περιορισµών (constraints) που περιορίζουν τις τιµές που µπορούν οι µεταβλητές να πάρουν ταυτόχρονα.

18 Πρέπει να σηµειωθεί ότι οι τιµές των µεταβλητών δε χρειάζεται να είναι σύνολο συνεχόµενων ακεραίων, και µπορούν να είναι συµβολικές (µη-αριθµητικές). Λύση σε ένα πρόβληµα CSP είναι η ανάθεση µίας τιµής από το σύνολο τιµών σε κάθε µεταβλητή, µε τέτοιο τρόπο ώστε όλοι οι περιορισµοί να ικανοποιούνται. Είναι δυνατόν να βρεθεί : µία µόνο λύση χωρίς προτίµηση στο ποια θα είναι αυτή, όλες οι λύσεις του προβλήµατος, η βέλτιστη ή τουλάχιστον µια καλή λύση, από µία δοθείσα αντικειµενική συνάρτηση και η οποία καθορίζεται στα άκρα των τιµών όλων ή µερικών από τις µεταβλητές. Οι λύσεις σε ένα πρόβληµα CSP µπορούν να βρεθούν µε συστηµατική αναζήτηση στις δυνατές αναθέσεις τιµών στις µεταβλητές. Οι µέθοδοι αναζήτησης διακρίνονται σε δύο κλάσεις σε αυτές που ψάχνουν την περιοχή των µερικών λύσεων, και σε αυτές που αναζητούν λύσεις στις αναθέσεις τιµών όλων των µεταβλητών στοχαστικά. Παρακάτω περιγράφονται οι πιο σηµαντικές τεχνικές επίλυσης που χρησιµοποιούνται στον κλάδο της Ικανοποίησης Περιορισµών Συστηµατική Αναζήτηση Από θεωρητικής πλευράς, η επίλυση ενός CSP είναι τετριµµένη χρησιµοποιώντας συστηµατική εξέταση του διαστήµατος λύσης, όχι όµως και από πρακτικής πλευράς αν εξεταστεί η αποτελεσµατικότητα της µεθόδου. Ο πλέον βασικός αλγόριθµος ικανοποίησης περιορισµών που εξετάζει το χώρο των λύσεων καλείται Παραγωγή-και- οκιµή (Generate- and -Taste ή GT). Η ιδέα του αλγορίθµου είναι απλή : πρώτα γίνεται µια πλήρης ανάθεση τιµών σε όλες τις µεταβλητές, και αν αυτή η εκτίµηση ικανοποιεί όλους τους περιορισµούς του προβλήµατος τότε η λύση έχει βρεθεί. ιαφορετικά µια άλλη ανάθεση τιµών στις µεταβλητές ακολουθεί µέχρι να βρεθεί µια εφικτή λύση. Μια άλλη τεχνική επίλυσης προβληµάτων CSP είναι η µέθοδος της Οπισθοδρόµησης (Backtracking ή BT). Η µέθοδος αυτή στηρίζεται στη διαδοχική επέκταση µιας µερικής λύσης που καθορίζει εφικτές τιµές για κάποιες µεταβλητές σε µια πλήρη λύση, επιλέγοντας επανειληµµένα µια τιµή για µια άλλη µεταβλητή εφικτή προς τις τιµές των µεταβλητών της τρέχουσας µερικής λύσης. Μπορεί να υποτεθεί ότι η µέθοδος της Οπισθοδρόµησης (BT) αποτελεί µια συγχώνευση των δύο φάσεων του αλγορίθµου Παραγωγή-και- οκιµή (GT). Οι µεταβλητές του προβλήµατος

19 εκτιµούνται ακολουθιακά, δηλαδή ανατίθενται τιµές σε αυτές, και όταν όλες οι µεταβλητές οι σχετικές µε έναν περιορισµό γίνουν τρέχουσες ελέγχεται η ορθότητα αυτού του περιορισµού. Αν η µερική λύση παραβιάζει κάποιον από τους περιορισµούς τότε η οπισθοδρόµηση παίρνει µέρος στην πιο πρόσφατη τρέχουσα µεταβλητή που διαθέτει ακόµα εναλλακτικές τιµές Τεχνικές Συνέπειας Μία άλλη προσέγγιση στην επίλυση των προβληµάτων CSP στηρίζεται στην αποµάκρυνση των µησυνεπών τιµών από τα πεδία τιµών των µεταβλητών, µέχρι να βρεθεί η λύση του προβλήµατος. Αυτές οι µέθοδοι καλούνται τεχνικές συνέπειας (consistency techniques) και παρουσιάστηκαν αρχικά στο πρόβληµα της ανίχνευσης ακµών σε εικόνες (scene labeling). Μία σηµαντική παρατήρηση είναι ότι οι τεχνικές συνέπειας είναι ντετερµινιστικές, σε αντίθεση µε τις µηντετερµινιστικές µεθόδους αναζήτησης. Τα ονόµατα των βασικών τεχνικών συνέπειας προέρχονται από τις έννοιες των γράφων. Το Πρόβληµα Ικανοποίησης Περιορισµών (CSP) παρουσιάζεται συνήθως σαν ένας γράφος περιορισµών, στον οποίο οι κόµβοι αντιστοιχούν στις µεταβλητές και οι ακµές στους περιορισµούς του προβλήµατος. Αυτός ο τρόπος αναπαράστασης απαιτεί το CSP να είναι σε ειδική µορφή που συνήθως αναφέρεται σαν υαδικό CSP, και περιλαµβάνει µόνο µοναδιαίους και δυαδικούς περιορισµούς. Η τεχνική της Συνέπειας Κόµβου αναφέρεται σαν Node Consistency ή NC, και βασίζεται στην αποµάκρυνση από τα πεδία τιµών εκείνων των τιµών των µεταβλητών που είναι ασυνεπείς µε τους µοναδιαίους περιορισµούς των αντίστοιχων µεταβλητών. Μία επίσης διαδεδοµένη τεχνική συνέπειας είναι η Συνέπεια Τόξου γνωστή και ως Arc Consistency ή AC. Η τεχνική αυτή στηρίζεται στην αποµάκρυνση εκείνων των τιµών των µεταβλητών που είναι ασυνεπείς µε τους δυαδικούς περιορισµούς. Συγκεκριµένα η σχέση arc(v i,v j ) χαρακτηρίζεται ως arc consistent αν και µόνο αν για κάθε τιµή x στο τρέχον σύνολο τιµών του V i υπάρχει µία τιµή y στο σύνολο τιµών του V j τέτοια ώστε οι σχέσεις V i =x και V j =y να επιτρέπονται από τον δυαδικό περιορισµό µεταξύ του V i και του V j. Ακόµη περισσότερες ασυνεπείς τιµές µπορούν να αποµακρυνθούν από τα πεδία τιµών των µεταβλητών µε µία τρίτη τεχνική που ονοµάζεται Συνέπεια Μονοπατιού (Path Consistency ή PC). Η

20 τεχνική αυτή απαιτεί για κάθε ζεύγος τιµών δύο µεταβλητών X και Y που ικανοποιούν τον αντίστοιχο δυαδικό περιορισµό, να υπάρχει µία τιµή για κάθε µεταβλητή κατά µήκος ενός µονοπατιού µεταξύ των X και Y έτσι ώστε όλοι οι δυαδικοί περιορισµοί κατά µήκος αυτού του µονοπατιού να ικανοποιούνται. Έχει αποδειχθεί από τον Montanary (βλ. βιβλιογραφία [8]) ότι ένα πρόβληµα CSP είναι path consistent αν και µόνο αν όλα τα µονοπάτια µήκους δύο είναι path consistent. Οι παραπάνω τεχνικές συνέπειας καλύπτονται από τη γενική έννοια της K-consistency και Strong K-consistency. Συγκεκριµένα ένας γράφος περιορισµών είναι Κ-consistent αν για κάθε σύστηµα τιµών Κ-1 µεταβλητών που ικανοποιούν όλους τους περιορισµούς µεταξύ των µεταβλητών, υπάρχει µία τιµή για την αυθαίρετη Κ-οστή µεταβλητή τέτοια ώστε οι περιορισµοί µεταξύ όλων των µεταβλητών να ικανοποιούνται. Αντίστοιχα ένας γράφος περιορισµών είναι Strong K-consistent αν είναι J-consistent για όλα τα σύνολα µεταβλητών J και K, µε J<=K ιάδοση Περιορισµών Οι δύο τεχνικές επίλυσης, συστηµατική αναζήτηση και τεχνικές συνέπειας που αναπτύχθηκαν παραπάνω, µπορούν να εφαρµοστούν µόνες τους για την επίλυση ενός προβλήµατος CSP αλλά σπάνια συµβαίνει αυτό. Συνήθως ένας συνδυασµός των δύο προσεγγίσεων αποτελεί έναν περισσότερο κοινό τρόπο επίλυσης ενός CSP. Το σχήµα Εξέταση Προς τα Πίσω (Look Back) χρησιµοποιεί ελέγχους συνέπειας µεταξύ των ήδη τρεχουσών µεταβλητών, ενώ οι τεχνικές που χρησιµοποιεί προσπαθούν να αντιµετωπίσουν τα µειονεκτήµατα της τεχνικής της Οπισθοδρόµησης (Backtracking ή BT). Μία τέτοια τεχνική είναι η Backjumping ή BJ. Ο αλγόριθµος αυτός, όπως και ο ΒΤ, επιλέγει µια µεταβλητή κάθε στιγµή και ψάχνει για την τιµή που θα της ανατεθεί εξασφαλίζοντας η ανάθεση αυτή να είναι συµβατή µε τις µέχρι τώρα αναθέσεις τιµών στις υπόλοιπες µεταβλητές. Η βασική διαφορά µεταξύ των αλγορίθµων BJ και BT είναι ότι όταν όλες οι τιµές ενός πεδίου τιµών έχουν ελεγχθεί, ο αλγόριθµος BJ οπισθοδροµεί στην πιο πρόσφατη ασύµβατη µεταβλητή ενώ ο BT οπισθοδροµεί στην τελευταία µεταβλητή στην οποία έγινε ανάθεση. ύο άλλες τεχνικές του σχήµατος Look Back είναι οι Backchecking ή BC και η Backmarking ή BM. Οι αλγόριθµοι αυτοί αποφεύγουν το σηµαντικό µειονέκτηµα των περιττών ελέγχων των τιµών

21 των µεταβλητών του αλγορίθµου ΒΤ µειώνοντας τον αριθµό των ελέγχων συµβατότητας των τιµών αυτών. Επιπλέον ο αλγόριθµος BM αποτελεί µια βελτίωση του BC καθώς µειώνει των αριθµό των ελέγχων συµβατότητας κρατώντας στη µνήµη για όλες τις αναθέσεις τιµών στις µεταβλητές τις πρόσφατες ασυµβατότητες τιµών, και αποφεύγοντας τους ελέγχους εκείνους που έχουν προηγηθεί. Ένα σηµαντικό µειονέκτηµα του σχήµατος Look Back είναι ότι αδυνατεί να αποτρέψει οποιαδήποτε ασυµβατότητα τιµών αν και µπορεί να την επιλύσει όταν αυτή παρουσιαστεί. Για το λόγο αυτό προτάθηκε το σχήµα Εξέταση Προς τα Εµπρός (Look Ahead). Ένα απλό παράδειγµα της στρατηγικής αυτής είναι η µέθοδος Forward Checking ή FC, η οποία χρησιµοποιεί την τεχνική Arc Consistency ή AC, αποµακρύνοντας κάθε τιµή από το πεδίο τιµών µιας µεταβλητής που συγκρούεται µε την τιµή που έχει ανατεθεί στην τρέχουσα µεταβλητή. Ακόµη περισσότερες συγκρούσεις αποτρέπονται µε τη µέθοδο Partial Look Ahead ή PLA καθώς επεκτείνει τους ελέγχους συµβατότητας σε µεταβλητές που δεν έχουν άµεση σχέση µε τις τρέχουσες µεταβλητές και τις αναθέσεις τιµών σε αυτές. ύο παραλλαγές της µεθόδου PLA είναι οι τεχνικές Full Look Ahead ή LA και Maintaining Arc Consistency ή MAC οι οποίες χρησιµοποιούν την τεχνική της πλήρης Arc Consistency αντί της κατευθυνόµενης που χρησιµοποιεί η PLA Βελτιστοποίηση Περιορισµών Ένα Πρόβληµα Βελτιστοποίησης Ικανοποίησης Περιορισµών (Constraint Satisfaction Optimization Problems ή CSOP) αποτελείται από ένα τυπικό πρόβληµα CSP και µία συνάρτηση βελτιστοποίησης (optimization function), η οποία αντιστοιχεί κάθε λύση του προβλήµατος σε µια αριθµητική τιµή. Ο πιο ευρέως χρησιµοποιούµενος αλγόριθµος για την εύρεση βέλτιστων λύσεων ονοµάζεται Επέκταση και Οριοθέτηση (Branch and Bound ή B&B) και µπορεί να εφαρµοστεί σε προβλήµατα CSOP επίσης ικανοποιητικά όπως σε προβλήµατα Τεχνητής Νοηµοσύνης (ΤΝ ή Artificial Intelligence ή AI). Ο αλγόριθµος B&B χρειάζεται µία ευριστική συνάρτηση για να αντιστοιχίσει στην µερική λύση µια αριθµητική τιµή, ενώ για την εύρεση λύσεων χρησιµοποιεί Αναζήτηση Πρώτα σε Βάθος (Depth-First Search ή DFS). Σύµφωνα µε τον αλγόριθµο αυτό µόλις µια τιµή ανατίθεται σε µια µεταβλητή υπολογίζεται η τιµή της ευριστικής συνάρτησης και αν η τιµή αυτή υπερβαίνει ένα όριο τότε το υποδένδρο που βρίσκεται κάτω από την τρέχουσα µερική λύση κλαδεύεται (µέθοδος γνωστή ως prunning).

22 Η αποδοτικότητα του αλγορίθµου B&B για την εύρεση βέλτιστων λύσεων καθορίζεται από δύο παράγοντες : την ποιότητα της ευριστικής συνάρτησης και την καταλληλότητα του ορίου που δίνεται για την τιµή της συνάρτησης αυτής. Η µελέτη όµως των πραγµατικών προβληµάτων χρονοπρογραµµατισµού έδειξε ότι πολλές φορές αρκεί µία λύση ικανοποιητική, κοντά στη βέλτιστη λύση καθώς µειώνει την υπολογιστική πολυπλοκότητα της διαδικασίας επίλυσης. Για το λόγο αυτό ο αλγόριθµος B&B µπορεί να χρησιµοποιηθεί για την εύρεση υπο-βέλτιστων λύσεων ορίζοντας ένα διαφορετικό πλην όµως αποδεκτό όριο για την τιµή της ευριστικής συνάρτησης. 2.5 Προγραµµατισµός µε Περιορισµούς και Λογικός Προγραµµατισµός µε Περιορισµούς Τα προγράµµατα µε περιορισµούς είναι δηλωτικά, επιτρέποντας την ακριβή περιγραφή πολλών πραγµατικών προβληµάτων και τη χρήση ενός δηλωτικού παραδείγµατος προγραµµατισµού, όπως είναι ο λογικός προγραµµατισµός. Για το λόγο αυτό στα πλαίσια του Προγραµµατισµού µε Περιορισµούς (Constraint Programming ή CP) ο Λογικός Προγραµµατισµός Με Περιορισµούς (Constraint Logic Programming ή CLP) καθίσταται ικανό σύστηµα για τη µοντελοποίηση και επίλυση συνδυαστικών προβληµάτων. Ο Λογικός Προγραµµατισµός Με Περιορισµούς (ΛΠΠ ή Constraint Logic Programming ή CLP) αποτελεί γενίκευση και βελτίωση του Λογικού Προγραµµατισµού (ΛΠ ή Logic Programming ή LP), ενώ η περιοχή έρευνάς του τοποθετείται ανάµεσα στην Τεχνική Νοηµοσύνη (Artificial Intelligence ή AI) και στις γλώσσες προγραµµατισµού. Ασχολείται µε προβλήµατα µοντελοποίησης και επίλυσης όπως επίσης και µε πραγµατικά προβλήµατα, τα οποία µπορούν να περιγραφούν σαν ένα σύνολο περιορισµών ορίζοντας έτσι σχέσεις µεταξύ των µεταβλητών του προβλήµατος. Γενικά τα προγράµµατα CLP έχουν την ίδια µορφή µε τα προγράµµατα LP, δηλαδή αποτελούνται από ένα σύνολο προτάσεων οι οποίες όµως περιέχουν περιορισµούς. Το χαρακτηριστικό που διαφοροποιεί τον CLP από τον LP είναι ο µηχανισµός εύρεσης λύσης που χρησιµοποιούνται στα προγράµµατά τους. Συγκεκριµένα η ταυτοποίηση των όρων (term unification) η οποία αποτελεί µέθοδο εύρεσης λύσης στα προγράµµατα LP αντικαθίσταται από την επίλυση περιορισµών (constraint solving) στα προγράµµατα CLP.

23 Το γεγονός ότι τα συστήµατα περιορισµών και ο λογικός προγραµµατισµός αποτελούν δηλωτικά πλαίσια εργασιών, που βασίζονται στις σχέσεις των µεταβλητών του προβλήµατος, κατέστησε το Λογικό Προγραµµατισµό Με Περιορισµούς ικανό σύστηµα για τη µοντελοποίηση και επίλυση συνδυαστικών προβληµάτων Εφαρµογές του CP και του CLP Στις επόµενες υπο-ενότητες θα παρουσιαστούν οι κύριες περιοχές εφαρµογών στις οποίες η τεχνολογία CP, αλλά και η CLP, έδειξε ότι είναι ικανοποιητική και ταυτόχρονα ανταγωνιστική τόσο στην ελαστικότητα της µοντελοποίησης των προβληµάτων όσο και στην αποδοτικότητα των λύσεων Προβλήµατα Ανάθεσης Τα Προβλήµατα Ανάθεσης (Assignment Problems) αποτελούν τον πρώτο τύπο βιοµηχανικών εφαρµογών που αντιµετωπίστηκαν µε τη χρήση του Λογικού Προγραµµατισµού Με Περιορισµούς. Τα προβλήµατα αυτά συνήθως χειρίζονται δύο τύπους πόρων και περιορισµών, και προσπαθούν να αναθέσουν έναν πόρο του πρώτου τύπου σε έναν άλλο του δεύτερου τύπου µε τρόπο ώστε όλοι οι περιορισµοί να ικανοποιούνται. Ένα παράδειγµα προβλήµατος ανάθεσης αποτελεί η διάταξη των αεροπλάνων στους διαδρόµους της πίστας του αεροδροµίου. Σύµφωνα µε το πρότυπο αυτό τα αεροπλάνα, που αποτελούν τον πρώτο τύπο πόρων, πρέπει να σταθµεύσουν στις διαθέσιµες θέσεις, οι οποίες αποτελούν τον δεύτερο τύπο πόρων, κατά τη αναµονή τους στο αεροδρόµιο. Η πρώτη βιοµηχανική εφαρµογή του CLP αναπτύχθηκε για το αεροδρόµιο του Hong Kong µε χρήση της γλώσσας προγραµµατισµού CHIP και ενός συστήµατος βασισµένο σε περιορισµούς για το χειρισµό των βιβλιοθηκών ILOG Προβλήµατα Χρονοπρογραµµατισµού

24 Ίσως η πιο επιτυχηµένη περιοχή εφαρµογών του CP, και ειδικότερα του CLP, είναι τα Προβλήµατα Χρονοπρογραµµατισµού (Scheduling Problems). Τα προβλήµατα αυτά αποτελούνται από ένα σύνολο πόρων, ένα σύνολο δραστηριοτήτων µε δοθείσες απαιτήσεις πόρων, και ένα σύνολο περιορισµών µεταξύ των ενεργειών του προβλήµατος. Συνεπώς ο µηχανισµός εύρεσης λύσης σε ένα πρόβληµα χρονοπρογραµµατισµού αντιστοιχεί στον προγραµµατισµό των ενεργειών µε τρόπο ώστε να ικανοποιούνται όλοι οι περιορισµοί. Ένα παράδειγµα εφαρµογής των προβληµάτων χρονοπρογραµµατισµού αναπτύχθηκε για τη σχολή Charité Medical Faculty του πανεπιστηµίου Humboldt του Βερολίνου και σαν γλώσσα υλοποίησης χρησιµοποιήθηκε η γλώσσα Λογικού Προγραµµατισµού Με Περιορισµούς CHIP. Για την επίλυση του προβλήµατος καθορίστηκαν αρχικά τρία είδη χρονοδιαγραµµάτων : πρόγραµµα για τις διαλέξεις των µαθηµάτων, πρόγραµµα για τα σεµινάρια, πρόγραµµα για τις πρακτικές εξασκήσεις των αντίστοιχων µαθηµάτων, µε τον περιορισµό ότι όλοι οι φοιτητές της σχολής πρέπει να παρακολουθούν µαθήµατα που να καλύπτουν και τα τρία παραπάνω πεδία. Πρόσθετοι περιορισµοί για τις ώρες έναρξης και λήξης των µαθηµάτων, τις διαθέσιµες αίθουσες και τις χωρητικότητες αυτών, τους διαθέσιµους καθηγητές για κάθε είδος µαθηµάτων, και άλλες απαιτήσεις που καθορίζουν το χρονοπρογραµµατισµό της εφαρµογής µπορούν να µοντελοποιηθούν δηλωτικά αλλά και µε τη χρήση αριθµητικών εκφράσεων. Η λύση του προβλήµατος είναι ένα χρονοδιάγραµµα και των τριών πεδίων µαθηµάτων που να ικανοποιεί όλους τους περιορισµούς. Στην περίπτωση που µία βέλτιστη, ή και ικανοποιητική λύση, δεν µπορεί να βρεθεί µόνο ο χρήστης της εφαρµογής µπορεί να τροποποιήσει τους περιορισµούς καθώς δεν επιτρέπεται αυτόµατη αποµάκρυνση των περιορισµών από το σύνολό τους. Συγκρίνοντας τον τρόπο µε τον οποίο ένα πρόβληµα χρονοπρογραµµατισµού υλοποιείται µε τη χρήση αντικειµενοστραφών γλωσσών προγραµµατισµού, όπως η γλώσσα C++ και η Java, ή µε χρήση ειδικών γλωσσών Λογικού Προγραµµατισµού Με Περιορισµούς, όπως η γλώσσα CHIP, µια έρευνα έδειξε ότι η προσέγγιση CLP είναι εξίσου αποδοτική όπως και η CP από πολλές απόψεις. Σύµφωνα µε την έρευνα αυτή η επιτυχία του CLP στα προβλήµατα χρονοπρογραµµατισµού στηρίζεται στη χρήση της µεθόδου διάδοσης περιορισµών καθώς συµβάλλει στη µείωση του χρόνου ανάπτυξης και εκτέλεσης του προβλήµατος, όταν ειδικοί αλγόριθµοι επίλυσης δεν είναι κατάλληλοι.

25 Ανάθεση Προσωπικού Τα προβλήµατα Ανάθεσης Προσωπικού (Personnel Assignment) αποτελούν µια ακόµη τυπική περιοχή εφαρµογών του Προγραµµατισµού Με Περιορισµούς. Οι αλλαγές στους κανονισµούς εργασίας, οι οποίες θέτουν πολύπλοκους περιορισµούς, και οι απαιτήσεις για ισοκατανοµή των εργασιών ανάµεσα σε διαφορετικά άτοµα αποτελούν πολλές φορές δύσκολα προβλήµατα βελτιστοποίησης. Ένα παράδειγµα προβλήµατος Ανάθεσης Προσωπικού είναι το σύστηµα Gymnaste, το οποίο δηµιουργεί καταλόγους εργασιών για τις νοσοκόµες ενός νοσοκοµείου και χρησιµοποιείται από πολλά νοσοκοµεία της Γαλλίας. Επίσης οι εργασίες περίπου 250 τεχνικών και δηµοσιογράφων της Γαλλικής τηλεόρασης και του ραδιοφωνικού σταθµού RFO χρονοπρογραµµατίζονται µε χρήση του συστήµατος OPTI-SERVICE, το οποίο δηµιουργεί εβδοµαδιαία πλάνα εργασιών που πρέπει να εφαρµόζονται από διαφορετικά άτοµα µε διαφορετικές ειδικότητες Προβλήµατα Μεταφοράς Μία ποικιλία Προβληµάτων Μεταφοράς (Transport Problems) υλοποιούνται µε τη χρήση περιορισµών. Τέτοια προβλήµατα είναι συνήθως αρκετά πολύπλοκα λόγω του µεγέθους τους, του αριθµού και της ποικιλίας των περιορισµών που χρησιµοποιούν, και της ύπαρξης πολύπλοκων περιορισµών στις πιθανές κατευθύνσεις µεταφοράς. Συνήθως τα προβλήµατα µεταφοράς αποτελούνται και από ένα υπο-πρόβληµα Ανάθεσης Προσωπικού (Personnel Assignment) καθώς ορισµένα προβλήµατα CLP απαιτούν το συνδυασµό αυτών των εφαρµογών. Ένα παράδειγµα Προβλήµατος Μεταφοράς είναι το σύστηµα COBRA,το οποίο δηµιουργεί διαγράµµατα που αντιπροσωπεύουν τις εργασίες των οδηγών τραίνων της εταιρίας North Western Trains στην Αγγλία. Συγκεκριµένα στο σύστηµα αυτό, κάθε εβδοµάδα περίπου δραστηριότητες πρέπει να χρονοπρογραµµατιστούν σε σχεδόν διαγράµµατα, λαµβάνοντας υπόψη τις σύνθετες περιπτώσεις που µπορεί να δηµιουργηθούν από τους περιορισµούς. Αντίθετα τα συστήµατα DAYSY Esprit και SAS-Pilot αναπτύχθηκαν για το πρόβληµα της ανάθεσης των πληρωµάτων µιας αεροπορικής εταιρίας στις πτήσεις που προγραµµατίζονται. Το ίδιο πρόβληµα

26 µπορεί να υλοποιηθεί και από ένα διαφορετικό σύστηµα το οποίο χρησιµοποιεί ένα συνδυασµό των τεχνικών CLP και OR. 2.6 Γλώσσες Προγραµµατισµού για CSP Προβλήµατα Η υλοποίηση και επίλυση ενός Προβλήµατος Ικανοποίησης Περιορισµών (Constraint Satisfaction Problem ή CSP) µπορεί να γίνει είτε µε τη χρήση αντικειµενοστραφών γλωσσών προγραµµατισµού όπως Java, C++, είτε γλωσσών λογικού προγραµµατισµού, όπως η γλώσσα CHIP η οποία περιγράφεται παρακάτω. Επίσης στη συνέχεια γίνεται αναφορά και στη βιβλιοθήκη ILOG η οποία αποτελεί µία ευρείας χρήσης βιβλιοθήκη της γλώσσας C Η Γλώσσα CHIP Η γλώσσα Λογικού Προγραµµατισµού Με Περιορισµούς CHIP (Constraint Handling in Prolog), σχεδιάστηκε για την επίλυση πραγµατικών προβληµάτων µε περιορισµούς και µε σκοπό την καλή απόδοση και το µειωµένο χρόνο ανάπτυξης του προβλήµατος. Αντίθετα µε τις συµβατικές γλώσσες προγραµµατισµού που χρησιµοποιούν συγκεκριµένους αλγορίθµους και δοµές δεδοµένων προσαρµοσµένες στο πρόβληµα, όλες οι γλώσσες CLP προσφέρουν ένα περιορισµένο σύνολο βασικών περιορισµών και δοµές ελέγχου κατάλληλες για τη διατύπωση νέων περιορισµών. Η γλώσσα CHIP συνδυάζει το δηλωτικό τρόπο έκφρασης της γλώσσας προγραµµατισµού Prolog και την αποδοτικότητα των τεχνικών επίλυσης περιορισµών. Επιπλέον επεκτείνει τις συµβατικές γλώσσες Λογικού Προγραµµατισµού εισάγοντας τρία νέα πεδία υπολογισµών : το πεπερασµένο πεδίο (finite domain), το λογικό πεδίο (Boolean), και το αριθµητικό πεδίο (rational), χρησιµοποιώντας για κάθε ένα από τα πεδία αυτά ειδικές τεχνικές επίλυσης περιορισµών. Συγκεκριµένα εφαρµόζει τεχνικές ελέγχου συνέπειας για το πεπερασµένο πεδίο, µεθόδους επίλυσης εξισώσεων της άλγεβρας Boolean για το λογικό πεδίο, και συµβολικούς αλγορίθµους για το αριθµητικό πεδίο. Για την αντιµετώπιση περισσότερο αποδοτικά των προβληµάτων χρονοπρογραµµατισµού και χωροπρογραµµατισµού, ένας νέος συµβολικός περιορισµός προσαρµόστηκε στη γλώσσα CHIP και

27 ο οποίος ονοµάζεται αθροιστικός περιορισµός (cumulative constraint). Η σύνταξη του περιορισµού αυτού είναι η ακόλουθη : cumulative ([O 1,,O m ], [D 1,,D m ], [R 1, R m ], L) όπου [O 1,,O m ], [D 1,,D m ] και [R 1, R m ] λίστες των µεταβλητών οι οποίες έχουν το ίδιο µήκος m, και L ένας φυσικός αριθµός. Ο αθροιστικός περιορισµός ισχύει όταν η παρακάτω συνθήκη είναι αληθής : i N R j L Στις επόµενες υπο-ενότητες θα παρουσιαστούν τρεις βασικοί περιορισµοί που εφαρµόζονται στα πεδία της CLP γλώσσας προγραµµατισµού CHIP Ο Περιορισµός among Ο περιορισµός among αναπτύχθηκε στη γλώσσα CHIP για να καθορίσει τον τρόπο µε τον οποίο οι τιµές µπορούν να ανατεθούν στις µεταβλητές του προβλήµατος, ενώ µπορεί να θεωρηθεί ότι αποτελεί µια επέκταση των περιορισµών at least και at most (at least ή at most Ν µεταβλητές παίρνουν την τιµή V). Ένα σηµαντικό χαρακτηριστικό του περιορισµού αυτού είναι ότι επιτρέπει τη διατύπωση ενός συνόλου επικαλυπτόµενων περιορισµών at least και at most. Επίσης χρησιµοποιείται συχνά σε προβλήµατα χρονοπρογραµµατισµού, καθώς οι περιορισµοί at least και at most πρέπει να επαληθευτούν για κάθε περίοδο των n συνεχόµενων µονάδων χρόνου. ηλωτικά ο περιορισµός among εκφράζεται ως εξής : among ( N, [X 1,,X s ], [C 1,,C s ], [V 1,,V m ] ) όπου Ν µια µεταβλητή πεδίου (domain variable), [X 1,,X s ] µια λίστα µεταβλητών πεδίου, [C 1,,C s ] και [V 1,,V m ] λίστες φυσικών αριθµών. Ο περιορισµός ισχύει αν οι ακόλουθες συνθήκες αληθεύουν : (1) i [1, m-1] : V i < V i+1 (2) ακριβώς Ν όροι µεταξύ των X 1 + C 1,..., X s + C s παίρνουν την τιµή τους από τη λίστα τιµών [V 1,,V m ] Ένα από τα πλεονεκτήµατα του τρόπου αυτού διατύπωσης του περιορισµού among είναι ότι η πρώτη παράµετρος αντιστοιχεί σε µία µεταβλητή πεδίου και µπορεί να χρησιµοποιηθεί για να γίνει

28 γνωστό πόσες φορές ένα σύνολο τιµών ανατέθηκε σε ένα σύνολο µεταβλητών. Υπάρχουν και άλλοι τρόποι διατύπωσης του περιορισµού, µε διαφορετικό αριθµό και τύπο παραµέτρων ανάλογα µε τις απαιτήσεις των προβληµάτων Ο Περιορισµός diffn Ο περιορισµός diffn αναπτύχθηκε στη γλώσσα CHIP προκειµένου να αντιµετωπίσει πολυδιάστατα προβλήµατα χρονοπρογραµµατισµού και γεωµετρικού χωροπρογραµµατισµού. έχεται σαν ορίσµατα µία λίστα n-διάστατων τετραγώνων, κάθε ένα από τα οποία αντιστοιχεί σε ένα σύνολο µεταβλητών πεδίου της µορφής : (O 1,,O n, L 1,,L n ), όπου O i και L i η αρχή και το µήκος αντίστοιχα του προηγούµενου n-διάστατου τετραγώνου στην i-στη διάσταση. Συνεπώς ο περιορισµός diffn διατυπώνεται ως εξής : diffn ([[O 11,,O 1n, L 11,,L 1n ],, [O m1,,o mn,, L m1,,l mn ]]) Ο περιορισµός ισχύει όταν µία λίστα αδειάσει ή όταν οι ακόλουθες συνθήκες είναι αληθείς : (1) i [1, m], j [1, n] : O ij είναι µία µεταβλητή πεδίου ή ένας φυσικός αριθµός, (2) i [1, m], j [1, n] : L ij είναι µία µεταβλητή πεδίου ή ένας φυσικός αριθµός, (3) i [1, m], j [1, n] : L ij 0, (4) i [1, m], j [1, m] j i, k [1, n] O ik O jk +L jk O jk O ik + L ik Ο Περιορισµός cycle Ο περιορισµός cycle εισήχθηκε στη γλώσσα CHIP για την αντιµετώπιση σύνθετων προβληµάτων ρουτίνας, τα οποία δεν µπορούσαν να εκφραστούν µε τα ισχύοντα συστήµατα CLP. Επίσης η εµπειρία από την επίλυση σύνθετων προβληµάτων απόφασης έδειξε ότι η χρήση των περιορισµών cycle και cumulative µαζί σε προβλήµατα χρονοπρογραµµατισµού συµβάλλει στην εύρεση ικανοποιητικής, αν όχι βέλτιστης, λύσης. Η δηλωτική έκφραση του περιορισµού είναι η ακόλουθη : cycle (N, [S 1,, S m ]) όπου N η µεταβλητή πεδίου, και [S 1,, S m ] µία µη κενή λίστα των µεταβλητών πεδίου. Ο περιορισµός ισχύει όταν οι επόµενες συνθήκες είναι αληθείς :

29 (1) i [1, m] : 1 S i m (2) i [1, m], j i [1, m] : S i S j (3) i [1, m] : ας είναι C i το σύνολο των ακεραίων που καθορίζονται ως εξής : i C i, αν j C i τότε S j C i ; εποµένως το παραπάνω σχήµα καθορίζει ακριβώς Ν διακριτά σύνολα Η Βιβλιοθήκη ILOG Η βιβλιοθήκη ILOG είναι µία ευρείας χρήσης βιβλιοθήκη της Αντικειµενοστραφούς Γλώσσας Προγραµµατισµού C++ για την επίλυση χρονοπρογραµµάτων βασισµένα σε περιορισµούς. Ένα χρονοπρόγραµµα στηρίζεται σε έναν Επιλυτή (Solver) ο οποίος είναι ένα γενικό εργαλείο του αντικειµενοστραφή προγραµµατισµού µε περιορισµούς και περιλαµβάνει τρεις κατηγορίες προκαθορισµένων περιορισµών: χρονικοί περιορισµοί (temporal constraints), περιορισµοί χωρητικότητας (capacity constraints) και περιορισµοί χρήσης πόρων (resource utilization constraints). Για την επίλυση της τρίτης κατηγορίας περιορισµών έχουν αναπτυχθεί συγκεκριµένα τρεις διακριτοί µηχανισµοί. Από αυτούς ο πρώτος µηχανισµός στηρίζεται σε ρητούς χρονοπίνακες (timetables) οι οποίοι διατηρούν πληροφορίες σχετικά µε τις παραλλαγές της χρήσης των πόρων και της διαθεσιµότητας αυτών στο χρόνο. Ο δεύτερος βασίζεται σε έναν γενικό διαζευκτικό περιορισµό που επιβεβαιώνει ότι µη συµβατές ενέργειες (για παράδειγµα ενέργειες που απαιτούν έναν κοινό πόρο χωρητικότητας µίας µονάδας) δεν επικαλύπτονται χρονικά ενώ ο τρίτος, γνωστός ως edge-finding, στηρίζεται αυθαίρετα σε οµάδες (tuples) δραστηριοτήτων, της µορφής {Α 1 Α n }, για να αποδείξει ότι µία δραστηριότητα Α i πρέπει να εκτελεστεί πρώτη ή τελευταία ανάµεσα στο σύνολο {Α 1 Α n }. Αν και ο τρίτος περιορισµός επιτυγχάνει την ανάθεση περισσότερο ακριβών χρόνων έναρξης και λήξης στις δραστηριότητες είναι ο πιο "δαπανηρός" σε χρόνο επεξεργασίας αλλά ταυτόχρονα και ο πιο αποτελεσµατικός στο κλάδεµα (prunning) του χώρου αναζήτησης.

30 Χρονοπρογραµµατισµός και ILOG Ο χρονοπρογραµµατισµός είναι ουσιαστικά η διαδικασία της χρονικής ανάθεσης ενεργειών σε πόρους. Για το σκοπό αυτό οι τρεις βασικές ιδέες που πρέπει να ληφθούν υπ όψη κατά τη δηµιουργία ενός συστήµατος χρονοπρογραµµατισµού είναι οι ακόλουθες : o Η πολυπλοκότητα του προβλήµατος χρονοπρογραµµατισµού. Τα περισσότερα προβλήµατα χρονοπρογραµµατισµού είναι γνωστά ως NP-hard προβλήµατα υπό την έννοια ότι δεν υπάρχουν αλγόριθµοι που να επιτρέπουν τη βέλτιστη επίλυση ενός προβλήµατος που να καθορίζεται χρονικά από το µέγεθος των δεδοµένων. o Η ιδιαιτερότητα των προβληµάτων. ιαφορετικά περιβάλλοντα κατασκευής και επίλυσης προβληµάτων χρονοπρογραµµατισµού εισάγουν διαφορετικούς περιορισµούς, ορισµένοι από τους οποίους είναι πολύ ιδιαίτεροι για το πρόβληµα που περιγράφουν. o Η ενσωµάτωση σε όλο το σύστηµα κατασκευής. Ένα σύστηµα χρονοπρογραµµατισµού πρέπει να λαµβάνει τα δεδοµένα του από το σύστηµα πληροφοριών και παράλληλα να επιστρέφει τα αποτελέσµατα προς έλεγχο. Τα παραπάνω σε συνδυασµό µε το πλήθος και τη διαφορετικότητα των προβληµάτων χρονοπρογραµµατισµού κατέστησαν τη βιβλιοθήκη ILOG σηµαντικό εργαλείο για την επίλυση τους καθώς επιτρέπει την περιγραφή περιορισµών στα πλαίσια των πόρων και των ενεργειών αυτών. Επιπλέον το εργαλείο Solver (Επιλυτής) στο οποίο βασίζεται η ILOG περιλαµβάνει ένα σύνολο µηντετερµινιστικών κανόνων που επιτρέπουν στο χρήστη την υλοποίηση "backtracking" αλγορίθµων αναζήτησης. Συγκεκριµένα οι κανόνες αυτοί στηρίζονται στην έννοια του στόχου (goal) που µπορεί να διασπάται σε µία σύζευξη ή σε µία διάζευξη από υπό-στόχους (subgoals). Για παράδειγµα το ακόλουθο πρόγραµµα εκφράζει ότι για να επιτευχθεί ο στόχος f πρέπει να ικανοποιείται είτε η σύζευξη των στόχων f 1 και f 2 είτε η σύζευξη των f 3 και f 4. CTGOAL0 (f) { CtOr (CtAnd ( f 1 (), f 2 () ), CtAnd ( f 3 (), f 4 () ) ) ); }

31 Οι στόχοι (goals) στην ILOG µπορεί να λαµβάνουν παραµέτρους σαν ορίσµατα, ενώ η σύνταξη της κλήσης ενός στόχου είναι όµοια µε την σύνταξη που χρησιµοποιείται για την κλήση συναρτήσεων στη C Προκαθορισµένοι Περιορισµοί της ILOG Όπως αναφέρθηκε προηγούµενα ένα χρονοπρόγραµµα στην ILOG περιλαµβάνει τις τρεις παρακάτω κατηγορίες προκαθορισµένων περιορισµών. Χρονικοί Περιορισµοί (Temporal Constraints). Οι χρήστες µπορούν να συνδέσουν οποιεσδήποτε δύο ενέργειες µε κάθε τύπο περιορισµών προτεραιότητας. Για παράδειγµα οι ενέργειες Α και Β συνδέονται ως εξής: η Α αρχίζει µετά την ΕΝΑΡΞΗ(Β), η Α αρχίζει µετά την ΛΗΞΗ(Β), η Α τερµατίζει µετά την ΕΝΑΡΞΗ(Β), η Α τερµατίζει µετά την ΛΗΞΗ(Β). Επίσης είναι δυνατή η επιβολή ελάχιστων και µέγιστων καθυστερήσεων µεταξύ των ενεργειών ενώ όταν ορίζονται µόνο χρονικοί περιορισµοί η διάδοση περιορισµών είναι πλήρης. Αυτό σηµαίνει ότι η διάδοση περιορισµών αρκεί : (a) για να καθορίσει αν ένα σύνολο χρονικών περιορισµών είναι συνεπές, και (b) για να υπολογίσει τις στιγµές έναρξης και λήξης των ενεργειών. Περιορισµοί Χωρητικότητας (Capacity Constraints). Ο χρονοπρογραµµατισµός προσφέρει πλήθος διαφορετικών τρόπων για να εκφράσει ότι ένας πόρος είναι διαθέσιµος σε πεπερασµένες ποσότητες στο χρόνο. Υπό την έννοια αυτή υπάρχουν οι : (a) µοναδιαίοι πόροι που συµβολίζουν πόρους χωρητικότητας µιας µονάδας, (b) ογκοµετρικοί πόροι που εκφράζουν σύνολα περιορισµών που δεν µπορούν να διακριθούν µεταξύ τους και (c) πόροι κατάστασης οι οποίοι συµβολίζουν καταστάσεις όπου µία ενέργεια χρησιµοποιεί έναν πόρο µόνο υπό ειδικές συνθήκες. Περιορισµοί Χρήσης Πόρων (Resource Utilization Constraints). Μία ενέργεια µπορεί να χρειαστεί, να καταναλώσει, να παρέχει και να παράγει πόρους σε µια ποσότητα που καθορίζεται από µία σταθερά ή µία µεταβλητή. Στην περίπτωση αυτή η διάρκεια µιας ενέργειας ποικίλει ανάλογα µε το πλήθος των πόρων που της έχει ανατεθεί. Η διάδοση αυτού του είδους των περιορισµών έχει ως αποτέλεσµα την προσαρµογή των αρχικών και των τελικών χρόνων έναρξης και λήξης (χρονικά όρια) των ενεργειών.

32 Για την επίλυση των περιορισµών αυτών σε προβλήµατα χρονοπρογραµµατισµού έχουν αναπτυχθεί ειδικοί µηχανισµοί που στηρίζονται σε γρήγορους χρόνους επεξεργασίας και σε αποδοτικούς αλγορίθµους αναζήτησης. 2.7 Κατηγορίες Προβληµάτων Χρονοπρογραµµατισµού Ένα πρόβληµα χρονοπρογραµµατισµού (timetabling problem) αναφέρεται στον προγραµµατισµό ενεργειών σε συγκεκριµένες χρονικές περιόδους και βάσει ορισµένων προϋποθέσεων, οι οποίες αφορούν τους πόρους που είναι διαθέσιµοι. Κλασσικό πρόβληµα χρονοπρογραµµατισµού αποτελεί η εύρεση ενός ωρολογίου προγράµµατος µαθηµάτων, που παραδίδουν καθηγητές σε ένα σύνολο µαθητών η φοιτητών. Είναι ένα πρόβληµα που συναντάται αρκετά συχνά σε εκπαιδευτικά ιδρύµατα, όπως σε σχολεία και πανεπιστήµια, καθώς τουλάχιστον µια φορά το χρόνο κατασκευάζεται ένα πρόγραµµα µαθηµάτων σε ένα σχολείο και αρκετές σε ένα πανεπιστήµιο. Ένας µεγάλος αριθµός παραλλαγών του προβλήµατος χρονοπρογραµµατισµού έχει προταθεί, ανάλογα µε τον τύπο του ιδρύµατος που αφορά ένα πρόβληµα (πανεπιστήµιο ή σχολείο) και το είδος των περιορισµών που περιλαµβάνει. Συγκεκριµένα διακρίνονται τρεις κατηγορίες προβληµάτων χρονοπρογραµµατισµού : χρονοπρογραµµατισµός σχολείου (school timetabling), χρονοπρογραµµατισµός µαθηµάτων πανεπιστηµίου (university course timetabling) και χρονοπρογραµµατισµός εξετάσεων (examination timetabling), οι οποίες θα περιγραφούν αναλυτικότερα ακολούθως Χρονοπρογραµµατισµός Σχολείου Ο χρονοπρογραµµατισµός σχολείου (school timetabling) αναφέρεται στο εβδοµαδιαίο πρόγραµµα όλων των τάξεων ενός σχολείου µε σκοπό την αποφυγή οι καθηγητές να διδάσκουν σε δύο τµήµατα την ίδια χρονική στιγµή, και αντίστροφα. Αρχικά το µοντέλο αυτό, το οποίο αναφέρεται σαν µοντέλο «τάξη / καθηγητής», περιγράφεται σαν ένα απλοποιηµένο πολυωνυµικό πρόβληµα που µπορεί να επιλυθεί σε πολυωνυµικό χρόνο, ενώ στη συνέχεια περιγράφεται σαν ένα βασικό πρόβληµα αναζήτησης και πρόβληµα βελτιστοποίησης ακολούθως.

33 Απλοποιηµένο Πολυωνυµικό Πρόβληµα Το απλοποιηµένο πολυωνυµικό πρόβληµα (simplified polynomial problem) διατυπώνεται ως εξής. Έστω ότι υπάρχουν m τάξεις c 1,,c m, n καθηγητές t 1,,t n και p χρονικές περίοδοι 1, p. Επίσης υποθέτουµε ότι δίνεται ο µη-αρνητικός πίνακας ακεραίων R mxn, ο οποίος ονοµάζεται πίνακας απαιτήσεων (Requirement matrix) µε στοιχεία r ij που αντιπροσωπεύουν τον αριθµό των διαλέξεων που δίνονται από τον καθηγητή t j στο τµήµα c i. Η µαθηµατική διατύπωση του προβλήµατος είναι η εξής : TPP1 find x ijk (i=1,,m ; j=1,,n ; k=1, p) p x ijk = k=1 r ij (i=1,,m ; j=1,,n) (1) n j= 1 x 1 (i=1,,m ; k=1, p) (2) ijk m x ijk i= 1 1 (j=1,,n ; k=1, p) (3) x ijk = 0 or 1 (i=1,,m ; j=1,,n ; k=1, p) (4) και x ijk = 0 όταν ο καθηγητής t j διδάσκει στην τάξη c i τη χρονική στιγµή k, ενώ x ijk = 1 διαφορετικά. Οι περιορισµοί τύπου (1) εξασφαλίζουν ότι κάθε καθηγητής διδάσκει το σωστό αριθµό µαθηµάτων σε κάθε τµήµα, ενώ οι περιορισµοί (2) (και αντίστοιχα (3)) εξασφαλίζουν ότι κάθε καθηγητής (αντίστοιχα κάθε τµήµα) αντιστοιχεί σε µία διάλεξη κάθε χρονική περίοδο. Έχει αποδειχθεί ότι πάντα υπάρχει λύση για το παραπάνω πρόβληµα, εκτός από την περίπτωση όπου ένας καθηγητής ή ένα τµήµα απαιτείται να συµπεριληφθεί σε περισσότερες από p διαλέξεις. Συγκεκριµένα υπάρχει λύση αν και µόνο αν : m i= 1 r ij p (j = 1,,n) (5)

34 n j= 1 r ij p (i = 1,,m) (6) Βασικό Πρόβληµα Αναζήτησης Το βασικό πρόβληµα αναζήτησης (basic search problem) αποτελεί µια επέκταση του πολυωνυµικού προβλήµατος καθώς λαµβάνει υπόψη την πιθανότητα ένας καθηγητής (ή µια τάξη) να µην είναι διαθέσιµος σε µια δοθείσα χρονική στιγµή. Το µοντέλο αυτό εισάγει δύο δυαδικούς πίνακες T mxp και C nxp τέτοιους ώστε, t ik =1 (αντίστοιχα c jk =1) αν ο καθηγητής t i (αντίστοιχα η τάξη c j ) είναι διαθέσιµος την περίοδο k, και t jk =0 (αντίστοιχα c ik =0) διαφορετικά. Η διατύπωση του προβλήµατος αναζήτησης διαφέρει από αυτή του πολυωνυµικού ως προς τους περιορισµούς (2) και (3), δηλαδή αυτοί αντικαθίστανται από τους (2 ) και (3 ) όπως περιγράφεται παρακάτω : TTP2 find x ijk (i=1,,m ; j=1,,n ; k=1, p) p x ijk = k=1 r ij (i=1,,m ; j=1,,n) (1) n xijk j=1 t ik (i=1,,m ; k=1, p) (2 ) m i= 1 x ijk c jk (j=1,,n ; k=1, p) (3 ) x ijk = 0 or 1 (i=1,,m ; j=1,,n ; k=1, p) (4) Εκτός από τους περιορισµούς που δηµιουργούνται από τις πιθανές µη-διαθεσιµότητες των καθηγητών και των τάξεων, µπορεί να υπάρξουν και άλλοι περιορισµοί λόγω των απαιτήσεων για προκαθορισµό των πόρων σε δοσµένη χρονική στιγµή. ηλαδή ένας καθηγητής µπορεί να ζητήσει ένα συγκεκριµένο πρόγραµµα των µαθηµάτων του για κάποια χρονική περίοδο. Σε αυτήν την περίπτωση το σύνολο των περιορισµών που προστίθεται έχει την ακόλουθη µορφή : x ijk p ijk (i=1,,m ; j=1,,n ; k=1,,p) (5) όπου p ijk =0 αν δεν υπάρχει κανένας προκαθορισµός απαιτήσεων, ενώ p ijk =1 όταν το µάθηµα του καθηγητή t j στην τάξη c i έχει προκαθοριστεί για την περίοδο k.

35 Πρόβληµα Βελτιστοποίησης Το πρόβληµα βελτιστοποίησης (optimization problem) αναπτύχθηκε µε σκοπό την εύρεση µίας βέλτιστης λύσης αντί µίας εφικτής για το πρόβληµα του χρονοπρογραµµατισµού ενός σχολείου. Συνεπώς για την υλοποίηση ενός τέτοιου προβλήµατος προστίθεται στο βασικό πρόβληµα αναζήτησης TΤP2 η ακόλουθη αντικειµενική συνάρτηση : m min i= 1 n j= 1 p k= 1 d ijk x ijk (6) όπου το d ijk ανατίθεται στις περιόδους k στις οποίες το µάθηµα του καθηγητή t j στην τάξη c i είναι λιγότερο επιθυµητό Χρονοπρογραµµατισµός των Μαθηµάτων Πανεπιστηµίου Ο χρονοπρογραµµατισµός των µαθηµάτων ενός πανεπιστηµίου (university course timetabling) αναφέρεται στο εβδοµαδιαίο πρόγραµµα όλων των διαλέξεων κάθε µαθήµατος, όταν δίνεται ο αριθµός των διαθέσιµων αιθουσών και των χρονικών περιόδων. Η κύρια διαφορά της κατηγορίας αυτής από τα προβλήµατα που αφορούν το χρονοπρογραµµατισµό ενός σχολείου είναι ότι τα µαθήµατα του πανεπιστηµίου µπορούν να έχουν κοινούς φοιτητές, ενώ σε ένα σχολείο τα τµήµατα είναι ανεξάρτητα σύνολα µαθητών. Συγκεκριµένα αν δύο µαθήµατα έχουν κοινούς φοιτητές, τότε αυτά «συγκρούονται» και δεν µπορούν να προγραµµατιστούν την ίδια περίοδο. Επιπλέον οι καθηγητές των σχολείων συνήθως διδάσκουν σε περισσότερα από ένα τµήµατα, ενώ ένας καθηγητής πανεπιστηµίου µπορεί να διδάσκει ένα µόνο µάθηµα. Σηµαντικό παράγοντα επίσης σε ένα πρόβληµα χρονοπρογραµµατισµού των µαθηµάτων ενός πανεπιστηµίου αποτελεί η διαθεσιµότητα των αιθουσών και η χωρητικότητά τους, σε αντίθεση µε το χρονοπρογραµµατισµό ενός σχολείου όπου συνήθως σε κάθε αίθουσα αντιστοιχεί ένα τµήµα Βασικό Πρόβληµα Αναζήτησης

36 Το πρόβληµα του χρονοπρογραµµατισµού των µαθηµάτων ενός σχολείου διατυπώνεται σαν πρόβληµα αναζήτησης (basic search problem) µε τον ακόλουθο τρόπο. Υποθέτουµε ότι υπάρχουν q µαθήµατα K 1,,K q, και για κάθε i το µάθηµα K i αποτελείται από k i διαλέξεις. Επίσης έστω ότι υπάρχουν r σύνολα µαθηµάτων S 1,,S r που έχουν κοινούς φοιτητές, ενώ p είναι ο αριθµός των περιόδων και l k ο µέγιστος αριθµός διαλέξεων που µπορεί να προγραµµατιστούν για την περίοδο k. Η µαθηµατική διατύπωση περιγράφεται ως εξής : TΤP3 find y ik (i =1,,q ; k =1,,p) p k= 1 q i 1 y ik = k i y ik l k (i =1,,q) (1) (k =1,,p) (2) i S i y 1 (l =1,,r ; k =1,,p) (3) ik y ik =0 or 1 (i =1,,q ; k =1,,p) (4) όπου y ik =1 αν η διάλεξη του µαθήµατος K i έχει προγραµµατιστεί για την περίοδο k, ενώ y ik =0 διαφορετικά. Μία ισοδύναµη διατύπωση του προβλήµατος TΤP3 βασίζεται σε έναν πίνακα συγκρούσεων αντί των συνόλων των µαθηµάτων S 1,,S r µε κοινούς φοιτητές. Συγκεκριµένα ο πίνακας συγκρούσεων C qxq είναι ένας δυαδικός πίνακας µε στοιχεία c ij, τέτοια ώστε c ij =1 αν τα µαθήµατα K i και K j έχουν κοινούς φοιτητές και c ij =0 διαφορετικά Πρόβληµα Βελτιστοποίησης Το πρόβληµα βελτιστοποίησης (optimization problem) αποτελείται από το πρόβληµα αναζήτησης TPP3 και µια αντικειµενική συνάρτηση της οποίας η µαθηµατική διατύπωση είναι η ακόλουθη : q max i= 1 p k= 1 d ik y ik όπου d ik αντιπροσωπεύει την επιθυµία η διάλεξη του µαθήµατος K i να προγραµµατιστεί για την περίοδο k. (5)

37 Στην περίπτωση των προβληµάτων βελτιστοποίησης εισάγονται οι έννοιες των σκληρών απαιτήσεων (hard requirements) και των ήπιων απαιτήσεων (soft requirements). Συγκεκριµένα οι hard απαιτήσεις περιέχονται στους περιορισµούς του προβλήµατος και προσδιορίζουν την περιοχή αναζήτησης, ενώ οι soft απαιτήσεις περιέχονται στην αντικειµενική συνάρτηση και περιλαµβάνουν περιορισµούς διαθεσιµότητας και χωρητικότητας των αιθουσών Χρονοπρογραµµατισµός Εξετάσεων Ο χρονοπρογραµµατισµός εξετάσεων (examination timetabling) αναφέρεται στο πρόγραµµα εξετάσεων όλων των µαθηµάτων ενός πανεπιστηµίου για δοθέν χρονικό διάστηµα. Η κατηγορία αυτή είναι όµοια µε το χρονοπρογραµµατισµό των µαθηµάτων ενός πανεπιστηµίου, γεγονός που καθιστά δύσκολη τη διάκριση µεταξύ των δύο προβληµάτων Βασικό Πρόβληµα Αναζήτησης Το βασικό πρόβληµα αναζήτησης (basic search problem) µπορεί να διατυπωθεί µε τρόπο όµοιο προς τη διατύπωση του προβλήµατος χρονοπρογραµµατισµού των µαθηµάτων του πανεπιστηµίου. Συγκεκριµένα έστω ότι υπάρχουν q µαθήµατα K 1,,K q και µια εξέταση για κάθε µάθηµα K i. Επίσης υποθέτουµε ότι r είναι τα σύνολα των εξετάσεων S 1,,S r τέτοια ώστε σε κάθε S l υπάρχουν φοιτητές που δίνουν όλες τις εξετάσεις του συνόλου S l, ενώ p είναι ο αριθµός των χρονικών περιόδων και l k ο µέγιστος αριθµός εξετάσεων που µπορούν να προγραµµατιστούν για την περίοδο k. Εποµένως η διατύπωση του προβλήµατος αναζήτησης είναι η εξής : TΤP4 find y ik (i =1,,q ; k =1,,p) p y ik k= 1 = 1 (i =1,,q) (1) q i= 1 y ik l k (k =1,,p) (2) i S i y 1 (l =1,,r ; k =1,,p) (3) ik y ik =0 or 1 (i =1,,q ; k =1,,p) (4)

38 όπου y ik =1 αν η εξέταση του µαθήµατος K i έχει προγραµµατιστεί για την περίοδο k και y ik =0 διαφορετικά Πρόβληµα Βελτιστοποίησης Στο πρόβληµα βελτιστοποίησης (optimization problem) του χρονοπρογραµµατισµού εξετάσεων, ο τύπος των ήπιων περιορισµών (soft constraints) αναφέρεται σαν περιορισµοί δεύτερης τάξης (second order constraints). Συγκεκριµένα το σύστηµα πρέπει να αποφεύγει την περίπτωση ένας φοιτητής να δίνει δύο εξετάσεις σε συνεχόµενες χρονικές περιόδους. Για την ικανοποίηση του περιορισµού αυτού στο πρόβληµα αναζήτησης TTP4 προστίθεται η ακόλουθη αντικειµενική συνάρτηση : q 1 k= 1 r l= 1 i, j S l y y (5) ik k+ 1 όπου ο παράγοντας y ik y k+1 ισούται µε 1, µόνο αν το y ik και το y k+1 ισούνται µε Παράδειγµα Προβλήµατος Χρονοπρογραµµατισµού Με Περιορισµούς Περιγραφή του Προβλήµατος Κάθε χρόνο το γαλλικό σχολείο École des Mines de Nantes οργανώνει εισαγωγικές εξετάσεις για την επιλογή των σπουδαστών του. Μετά το πρώτο βήµα των γραπτών εξετάσεων επιλέγονται περίπου 1500 υποψήφιοι, και οι οποίοι καλούνται για το επόµενο βήµα που είναι µια σειρά προφορικών εξετάσεων. Κάθε µέρα ένας συγκεκριµένος αριθµός υποψηφίων εξετάζεται προφορικά. Επιπλέον ένα σηµαντικό σηµείο του χρονοδιαγράµµατος των εξετάσεων πρέπει να δηµιουργηθεί on-line, ενώ ο διαθέσιµος χρόνος για το σκοπό αυτό είναι λιγότερος από ένα λεπτό.

39 Το πρόβληµα αυτό αποτελεί ένα πρόβληµα χρονοπρογραµµατισµού µε περιορισµούς και θα εκφραστεί σαν Πρόβληµα Ικανοποίησης Περιορισµών (CSP). Καθώς επίσης ο χρονοπρογραµµατισµός είναι ένα NP-hard πρόβληµα, δεν υπάρχει εγγύηση ότι οποιαδήποτε πλήρης µέθοδος µπορεί να βρει λύση ή να αποδείξει ότι δεν υπάρχει λύση στη χρονική διάρκεια του ενός λεπτού Παρουσίαση του Προβλήµατος Για κάθε µάθηµα υπάρχουν διαφορετικοί εξεταστές και οι οποίοι είναι γενικά καθηγητές λυκείου. Επίσης για κάθε δοθείσα µέρα ένας αριθµός υποψηφίων (έστω n c ) πρέπει να εξεταστεί σε όλα τα µαθήµατα, τα οποία συγκροτούν τις ακόλουθες οµάδες : µαθηµατικά (n m εξεταστές για τη συγκεκριµένη µέρα), φυσική και χηµεία (n p εξεταστές), ξένη γλώσσα : είτε αγγλικά (n e εξεταστές), είτε γερµανικά (n g εξεταστές), είτε ισπανικά (n s εξεταστές), συζήτηση σχετικά µε ένα κείµενο (n d εξετάσεις). Επίσης ο συνολικός αριθµός των εξεταστών, για συγκεκριµένη µέρα, συµβολίζεται µε n exa, ενώ η ηµέρα αποτελείται από p συνεχόµενες περιόδους (κάθε περίοδος είναι η διάρκεια εξέτασης), όπου οι ρ=15 περίοδοι συµβολίζονται ως : #1, #2,, # Αντικειµενικός Στόχος Ο στόχος του προβλήµατος είναι η εύρεση ενός χρονοδιαγράµµατος εξετάσεων για µια µέρα, δηλαδή σε κάθε µάθηµα να ανατεθεί κάθε υποψήφιος σε έναν εξεταστή κατά τη διάρκεια µίας περιόδου, έτσι ώστε να ικανοποιείται ένας αριθµός περιορισµών Περιορισµοί

40 Υπάρχουν δύο τύποι περιορισµών : οι υποχρεωτικοί περιορισµοί που πρέπει να ικανοποιούνται µε κάθε τρόπο, και οι δευτερεύοντες που µπορεί να ικανοποιούνται αλλά δεν είναι αναγκαίο. Υποχρεωτικοί περιορισµοί (1) κάθε υποψήφιος πρέπει να εξεταστεί σε κάθε µάθηµα, (2) κάθε υποψήφιος επιλέγει να εξεταστεί σε µία από τις τρεις ξένες γλώσσες, ενώ ο εξεταστής πρέπει να είναι καθηγητής αυτής της γλώσσας, (3) σε δοθείσα χρονική περίοδο τουλάχιστον ένας υποψήφιος ανατίθεται σε έναν εξεταστή, (4) κάθε υποψήφιος δεν µπορεί να εξεταστεί σε δύο διαφορετικά µαθήµατα την ίδια περίοδο, (5) οι υποψήφιοι δικαιούνται κάποιο χρόνο να προετοιµαστούν για κάθε εξέταση : πρέπει να έχουν τουλάχιστον µια ελεύθερη περίοδο πριν κάθε εξέταση, δηλαδή δεν µπορούν να εξεταστούν σε δύο µαθήµατα σε κοντινές περιόδους. ευτερεύοντες περιορισµοί (6) δεν πρέπει οι υποψήφιοι να συναντήσουν τους εξεταστές που είναι από το ίδιο σχολείο, (7) αν ο αριθµός των υποψηφίων είναι µικρότερος από τον µέγιστο αριθµό των εξετάσεων, τότε οι ελεύθερες περίοδοι πρέπει να είναι οι τελευταίες από το σύνολο των 15 περιόδων, (8) οι εξεταστές δεν πρέπει να έχουν ελεύθερες περιόδους κατά τη διάρκεια της µέρας, (9) όλοι οι εξεταστές πρέπει να εξετάσουν τον ίδιο περίπου αριθµό υποψηφίων. Στη συνέχεια όλοι οι παραπάνω περιορισµοί θα συµβολίζονται µε C 1, C 2,, C εδοµένα Οι εξεταστές Υπάρχουν γενικά επτά εξεταστές για κάθε µάθηµα, ενώ οι τρεις ξένες γλώσσες θεωρούνται σαν ένα µάθηµα µε αποτέλεσµα να ισχύει : n e + n g + n s = 7. Στις περισσότερες περιπτώσεις κάθε εξεταστής είναι παρών όλη την ηµέρα, δηλαδή κατά τη διάρκεια και των 15 περιόδων, αλλά µπορεί να υπάρχουν δύο εξεταστές την ηµέρα, ο πρώτος κατά τις 7 πρώτες περιόδους (το πρωί) και ο άλλος κατά τις επόµενες 8 περιόδους (το απόγευµα). Επίσης υπάρχει περίπτωση ο πρώτος εξεταστής να

41 είναι παρών τις περιόδους #1, #2, #14, #15 και ο δεύτερος κατά τις περιόδους #3 µέχρι #13. Γενικά όλοι οι συνδυασµοί είναι πιθανοί, όπως επίσης και να υπάρχουν 15 διαφορετικοί εξεταστές. Οι υποψήφιοι Κατά τη διάρκεια µιας ηµέρας τουλάχιστον 105 υποψήφιοι πρέπει να εξεταστούν, καθώς αυτός ο αριθµός προκύπτει από την πράξη : αριθµός εξεταστών * αριθµός περιόδων για κάθε εξεταστή, δηλαδή 105 = 7 * 15. Επίσης οι υποψήφιοι, όπως και οι εξεταστές, έρχονται από διαφορετικά σχολεία της Γαλλίας αλλά µπορεί να συµβεί µερικοί υποψήφιοι και εξεταστές να προέρχονται από το ίδιο σχολείο Αναπαράσταση του Προβλήµατος Το πρόβληµα αυτό παρουσιάζεται και επιλύεται µε µια προσέγγιση βασισµένη σε περιορισµούς. Αρχικά παρουσιάζεται το γενικό µοντέλο CSP ενώ στη συνέχεια περιγράφεται το συγκεκριµένο πρόβληµα χρονοπρογραµµατισµού σαν πρόβληµα CSP Περιγραφή του Μοντέλου CSP Ένα πρόβληµα CSP µπορεί να προσδιοριστεί σαν ένα πεπερασµένο σύνολο Χ των n µεταβλητών X 1,X 2,,X n, ένα σύνολο D των πεδίων τιµών των αντίστοιχων µεταβλητών domain(x 1 ),domain(x 2 ),,domain(x n ) και ένα σύνολο C των περιορισµών που καθορίζουν τους επιτρεπτούς συνδυασµούς τιµών. Η επίλυση εποµένως ενός CSP προβλήµατος αποτελείται από την ανάθεση µίας τιµής σε κάθε µεταβλητή από τα αντίστοιχα πεδία τιµών, µε τρόπο ώστε να ικανοποιούνται όλοι οι περιορισµοί Το Πρόβληµα σαν CSP

42 Για την παρουσίαση του προβλήµατος χρονοπρογραµµατισµού των εξετάσεων σαν πρόβληµα CSP χρησιµοποιείται µια µεταβλητή για την αναπαράσταση κάθε ζεύγους (εξεταστής, περίοδος). Για παράδειγµα αν ο εξεταστής m 1 είναι παρών τις περιόδους #8 µέχρι #15, τότε λαµβάνονται υπόψη οι εξής 8 µεταβλητές : X 8 m1,, X 15 m1. Επιπλέον τα πεδία ορισµού για κάθε εξεταστή αποτελούν το σύνολο των πεδίων τιµών όλων των µεταβλητών που σχετίζονται µε το συγκεκριµένο εξεταστή. ηλαδή τα πεδία ορισµού για τον εξεταστή m 1 είναι τα ακόλουθα : domain(x 8 m1),, domain(x 15 m1). Ένας ορισµός που χρησιµοποιείται συχνά στην αναπαράσταση του συγκεκριµένου προβλήµατος χρονοπρογραµµατισµού σε πρόβληµα CSP είναι αυτός της µη διαθεσιµότητας ενός υποψηφίου. Συγκεκριµένα ένας υποψήφιος c χαρακτηρίζεται µη διαθέσιµος (unavailable) για έναν εξεταστή σε δοθείσα χρονική περίοδο αν ο υποψήφιος c έχει ήδη ανατεθεί σε άλλον εξεταστή την ίδια περίοδο ή σε µια κοντινή χρονικά προς αυτή Αλγόριθµος Υλοποίησης Το συγκεκριµένο πρόβληµα χρονοπρογραµµατισµού των εξετάσεων χαρακτηρίζεται σαν ένα NPhard πρόβληµα, δηλαδή δεν υπάρχει εγγύηση ότι θα βρεθεί λύση (ή θα αποδειχθεί ότι δεν υπάρχει λύση) µέσα σε ένα λεπτό. Για το λόγο αυτό και ύστερα από προσεκτική ανάλυση επιλέχθηκε ένας µη πλήρης αλγόριθµος για την υλοποίηση του προβλήµατος. Η διαδικασία επίλυσης του προβλήµατος µε έναν µη πλήρη αλγόριθµο πραγµατοποιείται σε δύο βήµατα : Το πρώτο βήµα ονοµάζεται προ-εκχώρηση (pre-assignment) και δηµιουργεί τα πεδία ορισµού : σε κάθε εξεταστή αντιστοιχεί µια λίστα υποψηφίων που ικανοποιεί ορισµένους περιορισµούς. Το δεύτερο βήµα καλείται τελική εκχώρηση (final assignment) και αναθέτει σε κάθε περίοδο τους υποψηφίους, για τον εξεταστή στον οποίο έχουν προ-εκχωρηθεί. Είναι προφανές ότι αν το πρώτο βήµα αποτύχει, το δεύτερο δεν εκτελείται Αξιοπιστία και Αποτελέσµατα

43 Ιδιαίτερο ενδιαφέρον υπήρξε για την αξιοπιστία του προγράµµατος λόγω των δύο χαρακτηριστικών του : η χρήση ενός µη πλήρους αλγορίθµου για την υλοποίηση του προβλήµατος, και η οποία εισάγει θεωρητικούς κινδύνους µη εύρεσης ορισµένων λύσεων, η ανάγκη για άµεση on-line εκτέλεση του προγράµµατος. Για την επίτευξη της αξιοπιστίας εκτελέστηκε το πρόγραµµα για 50 προβλήµατα, ειδικά σχεδιασµένα ώστε να καλύπτουν όλες τις περιπτώσεις που θα δηµιουργούσαν δυσκολίες στην εύρεση λύσης. Τέτοιες περιπτώσεις είναι για παράδειγµα, πολλοί υποψήφιοι και εξεταστές προερχόµενοι από το ίδιο σχολείο, αρκετοί εξεταστές διαθέσιµοι για ορισµένες µόνο περιόδους, περισσότεροι υποψήφιοι από τις περιόδους, η οποία οδηγεί προφανώς σε αποτυχία, και άλλες παρόµοιες περιπτώσεις. Όλες οι δοκιµές του προγράµµατος πραγµατοποιήθηκαν µε χρόνους εκτέλεσης µεταξύ των 0.2 και 0.75 δευτερολέπτων σε περιβάλλον SUN SPARC 5 µε 32 Mbytes µνήµης. Στις δεκατρείς µέρες εκτέλεσης του προγράµµατος µε πραγµατικά δεδοµένα, το αποτέλεσµα ήταν ένα χρονοδιάγραµµα, για κάθε πρόβληµα, ικανοποιητικό ως προς το είδος των απαιτήσεων. Γενικά το πρόγραµµα που υλοποιήθηκε για την επίλυση του προβλήµατος χρονοπρογραµµατισµού των εξετάσεων για το γαλλικό σχολείο École des Mines de Nantes χρησιµοποιείται αξιόπιστα, ενώ γίνεται προσπάθεια για την επέκτασή του και σε άλλα σχολεία της Γαλλίας. 2.9 Γενικά Ο Χρονοπρογραµµατισµός Βασισµένος Σε Περιορισµούς (Constraint Based Scheduling) αποτελεί ένα γενικό πλαίσιο εργασιών για την επίλυση συνδυαστικών προβληµάτων βελτιστοποίησης. Για το λόγο αυτό τα Προβλήµατα Χρονοπρογραµµατισµού µπορούν να περιγραφούν σαν Προβλήµατα Ικανοποίησης Περιορισµών (CSP) και η επίλυσή τους να ακολουθεί το γενικό πρότυπο των CSP προβληµάτων.

44 Κεφάλαιο 3 Χρονοπρογραµµατισµός Πανεπιστηµιακού Τµήµατος 3.1 Εισαγωγή Ο χρονοπρογραµµατισµός (scheduling) είναι ένα πρόβληµα που αντιµετωπίζεται συχνά σε εκπαιδευτικά ιδρύµατα, δηλαδή σε σχολεία και πανεπιστήµια, και αναφέρεται στην εύρεση ενός εβδοµαδιαίου προγράµµατος µαθηµάτων ή ενός προγράµµατος εξετάσεων. Για το χρονοπρογραµµατισµό του Τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης δηµιουργούνται πέντε προγράµµατα ετησίως, τα οποία ικανοποιούν διαφορετικές συνθήκες. Παρά το γεγονός ότι υπάρχουν αρκετές προσεγγίσεις για τη διατύπωση και επίλυση του προβλήµατος χρονοπρογραµµατισµού επιλέγεται να απεικονιστεί σαν Πρόβληµα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problem ή CSP), δηλαδή να προσδιοριστεί ένα σύνολο µεταβλητών και µεταξύ αυτών ένα σύνολο περιορισµών. Με τον τρόπο αυτό λύση του προβλήµατος CSP αποτελεί η ανάθεση τιµών σε όλες τις µεταβλητές, τέτοιες που να ικανοποιούν όλους του περιορισµούς του προβλήµατος χρονοπρογραµµατισµού. Στις επόµενες ενότητες περιγράφεται το πρόβληµα χρονοπρογραµµατισµού του τµήµατος Πληροφορικής δηλαδή τα προγράµµατα που χρειάζεται να συνταχθούν, ο αντικειµενικός στόχος και τα δεδοµένα του προβλήµατος, καθώς επίσης και οι περιορισµοί που πρέπει να ικανοποιούνται. Τέλος γίνεται αναφορά στον τρόπο αναπαράστασης του προβλήµατος χρονοπρογραµµατισµού που µας ενδιαφέρει βάσει της διαδικασίας που ακολουθείται για την αναπαράσταση ενός προβλήµατος CSP γενικότερα.

45 3.2 Περιγραφή του Προβλήµατος Η φοίτηση στο Τµήµα Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης αποτελείται από τέσσερα έτη ή διαφορετικά από οκτώ εξάµηνα, δηλαδή τέσσερα χειµερινά και τέσσερα εαρινά. Τα χειµερινά εξάµηνα αποτελούνται από το πρώτο, το τρίτο, το πέµπτο και το έβδοµο εξάµηνο, ενώ τα εαρινά εξάµηνα αποτελούνται από το δεύτερο, το τέταρτο, το έκτο και το όγδοο εξάµηνο. Ετησίως διδάσκονται 14 µαθήµατα στα δύο πρώτα έτη της σχολής (7 µαθήµατα στο χειµερινό και 7 στο εαρινό εξάµηνο), και 12 µαθήµατα στο τρίτο και τέταρτο έτος (6 µαθήµατα στο χειµερινό εξάµηνο και αντίστοιχα 6 στο εαρινό). Εκτός από τη διδασκαλία των µαθηµάτων τρεις φορές το χρόνο διεξάγονται εξετάσεις, τους µήνες Ιανουάριο, Ιούνιο και Σεπτέµβριο. Συγκεκριµένα η εξεταστική του Ιανουαρίου αφορά τα µαθήµατα µόνο των χειµερινών εξαµήνων όλων των ετών, του Ιουνίου µόνο τα µαθήµατα των εαρινών εξαµήνων ενώ το Σεπτέµβριο εξετάζονται τα µαθήµατα όλων των εξαµήνων. Σύµφωνα µε τα παραπάνω στο Τµήµα Πληροφορικής πρέπει να συνταχθούν δύο προγράµµατα µαθηµάτων, ένα για τα χειµερινά και ένα για τα εαρινά εξάµηνα, ενώ για τις περιόδους εξεταστικής πρέπει να συνταχθούν τρία προγράµµατα, ένα για την εξεταστική του Ιανουαρίου, ένα για του Ιουνίου και ένα για την περίοδο του Σεπτεµβρίου. Εποµένως διακρίνονται δύο κατηγορίες προγραµµάτων: των µαθηµάτων και των εξετάσεων αντίστοιχα. Στη συνέχεια περιγράφονται τα προγράµµατα µαθηµάτων και εξετάσεων µαζί µε τους περιορισµούς που πρέπει αυτά να ικανοποιούν Προγράµµατα Μαθηµάτων Τα προγράµµατα µαθηµάτων αναφέρονται στην εύρεση ενός προγράµµατος µαθηµάτων δοσµένου ενός συνόλου ηµερών, ωρών και αιθουσών διδασκαλίας. ηλαδή για κάθε µάθηµα οποιουδήποτε εξαµήνου καθορίζεται το εβδοµαδιαίο πρόγραµµα διδασκαλίας, το οποίο είναι σταθερό κατά τη διάρκεια του εξαµήνου, και περιλαµβάνει συγκεκριµένες ηµέρες της εβδοµάδας (εκτός Σαββατοκύριακου), συγκεκριµένα διαστήµατα ωρών και αίθουσες που απευθύνονται στις απαιτήσεις κάθε µαθήµατος. Για το Τµήµα Πληροφορικής χρειάζεται να δηµιουργηθούν δύο

46 προγράµµατα µαθηµάτων, ένα για τα µαθήµατα των τεσσάρων χειµερινών εξαµήνων και ένα για τα µαθήµατα των τεσσάρων εαρινών εξαµήνων. Τα µαθήµατα του τµήµατος Πληροφορικής διακρίνονται σε θεωρητικά και εργαστηριακά. Τα θεωρητικά µαθήµατα αποτελούνται µόνο από θεωρητικές ώρες διδασκαλίας, και συνήθως αυτές είναι δύο, τρεις ή τέσσερις εβδοµαδιαίως. Αντίθετα τα εργαστηριακά µαθήµατα αποτελούνται εκτός από θεωρητικές ώρες που συνήθως είναι τρεις ή τέσσερις εβδοµαδιαίως, και από τρεις ή δύο εργαστηριακές ώρες ανά εβδοµάδα. Για παράδειγµα το µάθηµα «Κατανεµηµένα Λειτουργικά Συστήµατα» του έκτου εξαµήνου είναι ένα τετράωρο θεωρητικό µάθηµα, που µπορεί να διδάσκεται είτε µία φορά την εβδοµάδα µε µία τετράωρη παράδοση είτε δύο φορές µε δύο δίωρες παραδόσεις, ενώ το µάθηµα «Γλώσσα Λογικού Προγραµµατισµού PROLOG» θεωρείται εργαστηριακό καθώς αποτελείται από ένα τετράωρο (ή δύο δίωρα) θεωρητικής διδασκαλίας και δύο εργαστηριακές ώρες εβδοµαδιαίως. Για πρακτικούς λόγους που καθορίζονται κυρίως από τους καθηγητές των µαθηµάτων η διδασκαλία ενός µαθήµατος, δηλαδή το σύνολο των ωρών παράδοσης ανά εβδοµάδα, µπορεί να διασπάται σε τµήµατα (µπλοκ). Συγκεκριµένα αν στον οδηγό σπουδών προσδιορίζεται ένα µάθηµα οποιουδήποτε εξαµήνου σαν ένα τετράωρο θεωρητικό, τότε στο πρόγραµµα µαθηµάτων µπορεί το µάθηµα αυτό να διδάσκεται είτε µία φορά την εβδοµάδα µε µια τετράωρη παράδοση είτε σε δύο µπλοκ των δύο ωρών, δηλαδή σε δύο διαφορετικές ηµέρες της εβδοµάδας. Συνήθως όµως και για το λόγο ότι µια συνεχόµενη διδασκαλία, περισσότερη των δύο ωρών, είναι κουραστική τόσο για τον καθηγητή του µαθήµατος όσο και για τους φοιτητές, οι ώρες διδασκαλίας των µαθηµάτων διασπώνται σε µπλοκ στα χρονοπρογράµµατα που δηµιουργούνται. Οι συνθήκες που πρέπει να ικανοποιούνται για τα µπλοκ κάθε µαθήµατος είναι οι εξής : Οι ώρες διδασκαλίας κάθε µπλοκ πρέπει να είναι συνεχόµενες. Οι ηµέρες διδασκαλίας των µπλοκ ενός µαθήµατος πρέπει να έχουν κατάλληλη χρονική απόσταση µεταξύ τους. Αξίζει στο σηµείο αυτό να αναφερθεί η παραδοχή που γίνεται για τη χρονική απόσταση των ηµερών διδασκαλίας που πρέπει να έχουν τα µπλοκ κάθε µαθήµατος, και η οποία εξαρτάται από τον αριθµό των µπλοκ του µαθήµατος και τις διαθέσιµες ηµέρες διδασκαλίας. Συγκεκριµένα αν ο αριθµός των µπλοκ ενός µαθήµατος είναι µικρός (για παράδειγµα δύο µπλοκ των δύο ωρών εβδοµαδιαίως) και οι διαθέσιµες ηµέρες διδασκαλίας επαρκείς, τότε τα µπλοκ πρέπει να απέχουν µεταξύ τους τουλάχιστον δύο ηµέρες. Στην αντίθετη περίπτωση, οι ηµέρες διδασκαλίας των µπλοκ

47 ενός µαθήµατος απαιτείται να είναι τουλάχιστον διαφορετικές µεταξύ τους. Σαν παράδειγµα αναφέρεται η εξής περίπτωση: έστω ότι οι διαθέσιµες ηµέρες διδασκαλίας δύο µαθηµάτων είναι και οι πέντε ηµέρες της εβδοµάδας (εκτός Σαββατοκύριακου) και το πρώτο από τα µαθήµατα αυτά αποτελείται από 2 µπλοκ των δύο ωρών, ενώ το δεύτερο από 4 δίωρα µπλοκ. Σύµφωνα µε την παραπάνω παραδοχή τα 2 µπλοκ του πρώτου µαθήµατος µπορούν να απέχουν τουλάχιστον δύο ηµέρες, για παράδειγµα το ένα µπλοκ να διδάσκεται κάθε Τρίτη και το άλλο κάθε Πέµπτη. Αντίθετα για το δεύτερο µάθηµα τα 4 µπλοκ του δεν µπορούν να απέχουν τουλάχιστον δύο ηµέρες, καθώς τότε οι διαθέσιµες µέρες διδασκαλίας θα έπρεπε να είναι επτά και όχι πέντε. Εποµένως στην περίπτωση αυτή αρκεί τα 4 µπλοκ να διδάσκονται σε διαφορετικές ηµέρες, για παράδειγµα το πρώτο κάθε ευτέρα, το δεύτερο κάθε Τρίτη, το τρίτο κάθε Πέµπτη και το τέταρτο κάθε Παρασκευή. Εκτός από τις παραδοχές και τις συνθήκες που αναφέρθηκαν µέχρι τώρα θα πρέπει να ισχύουν και ορισµένοι περιορισµοί, η ικανοποίηση των οποίων συντελεί στην εύρεση λύσης του προβλήµατος χρονοπρογραµµατισµού. Για τα µαθήµατα οι περιορισµοί που πρέπει να ικανοποιούνται είναι οι παρακάτω : 1. Οι ηµέρες διδασκαλίας των µαθηµάτων είναι οι πέντε ηµέρες της εβδοµάδας, δηλαδή από ευτέρα έως και Παρασκευή, εκτός Σαββάτου και Κυριακής. 2. Το θεωρητικό µέρος ενός µαθήµατος πρέπει να διδάσκεται σε αίθουσα και το εργαστηριακό στο αντίστοιχο εργαστήριο. 3. ύο µαθήµατα ενός εξαµήνου δεν πρέπει να επικαλύπτονται, δηλαδή να διδάσκονται τις ίδιες ηµέρες, τις ίδιες ώρες και στις ίδιες αίθουσες ή εργαστήρια. 4. Για κάθε µάθηµα ο υπεύθυνος καθηγητής (ή οι καθηγητές) πρέπει να είναι διαθέσιµος κατά τις ώρες διδασκαλίας του µαθήµατος. 5. Για ένα µάθηµα η αίθουσα ή το κατάλληλο εργαστήριο πρέπει να είναι διαθέσιµα κατά τις ώρες διδασκαλίας του µαθήµατος, δηλαδή να µην έχουν προγραµµατιστεί για άλλα µαθήµατα του ίδιου ή διαφορετικών εξαµήνων. Για τους καθηγητές του τµήµατος Πληροφορικής πρέπει να ικανοποιούνται οι εξής περιορισµοί : 1. Ένας καθηγητής πρέπει να είναι διαθέσιµος κατά τις ώρες διδασκαλίας του µαθήµατος για το οποίο είναι υπεύθυνος. 2. Ένας καθηγητής δεν µπορεί να διδάσκει ταυτόχρονα δύο µαθήµατα, που έχει αναλάβει. Για τις αίθουσες και τα εργαστήρια διδασκαλίας πρέπει να ικανοποιούνται οι εξής τρεις περιορισµοί:

48 1. Μία αίθουσα ή ένα εργαστήριο πρέπει να είναι διαθέσιµα κατά τις ώρες διδασκαλίας ενός µαθήµατος. 2. Σε µία αίθουσα ή σε ένα εργαστήριο δεν µπορούν να διδάσκονται ταυτόχρονα δύο µαθήµατα οποιουδήποτε εξαµήνου. 3. Η χωρητικότητα µίας αίθουσας ή ενός εργαστηρίου πρέπει να είναι ανάλογη του αριθµού των φοιτητών που έχουν δηλώσει το µάθηµα που διδάσκεται στη συγκεκριµένη αίθουσα (ή εργαστήριο). Τέλος πρέπει να αναφερθεί ότι σε ένα µάθηµα µπορεί να είναι υπεύθυνοι για τη διδασκαλία του περισσότεροι από έναν καθηγητές. Στην περίπτωση αυτή γίνεται η παραδοχή ότι κατά τη διδασκαλία του µαθήµατος είναι παρόντες όλοι οι υπεύθυνοι καθηγητές, καθώς δεν µπορεί να καθοριστεί εκ των προτέρων ποιος καθηγητής θα αναλάβει το κάθε µπλοκ του µαθήµατος. Για το λόγο αυτό δεν προσδιορίζεται στο πρόγραµµα µαθηµάτων οι καθηγητές του κάθε µπλοκ αλλά αυτό γίνεται γνωστό στους φοιτητές από του καθηγητές του µαθήµατος, κατόπιν συµφωνίας µεταξύ τους Προγράµµατα Εξετάσεων Τα προγράµµατα εξετάσεων αναφέρονται στην εύρεση ενός προγράµµατος εξετάσεων δοσµένου ενός συνόλου ηµερών, ωρών και αιθουσών εξέτασης. ηλαδή για κάθε µάθηµα οποιουδήποτε εξαµήνου πρέπει να καθοριστεί η ηµέρα, η ώρα έναρξης και διάρκειας της εξέτασης όπως επίσης και η αίθουσα στην οποία θα διεξαχθούν οι εξετάσεις του µαθήµατος. Για το τµήµα Πληροφορικής χρειάζεται να συνταχθούν τρία προγράµµατα εξετάσεων, κάθε ένα για µία από τις τρεις εξεταστικές περιόδους, δηλαδή ένα για την εξεταστική του Ιανουαρίου, ένα για του Ιουνίου και ένα για την περίοδο του Σεπτεµβρίου. Παρά το γεγονός ότι ένα πρόγραµµα εξετάσεων είναι παρόµοιο επιφανειακά µε ένα πρόγραµµα µαθηµάτων, διαφέρει ουσιαστικά κατά τη σχεδίαση και υλοποίησή του. Η βασική διαφορά τους έγκειται στο ότι σε ένα πρόγραµµα εξετάσεων δηµιουργείται ένα πρόγραµµα για καθορισµένη χρονική διάρκεια, περίπου για το διάστηµα τεσσάρων εβδοµάδων, ενώ σε ένα πρόγραµµα µαθηµάτων δηµιουργείται ένα εβδοµαδιαίο πρόγραµµα µε διάρκεια όση είναι η διάρκεια του συγκεκριµένου εξαµήνου. Μία άλλη διαφορά τους είναι ότι η διάρκεια εξέτασης κάθε µαθήµατος είναι καθορισµένη, και συγκεκριµένα στο τµήµα Πληροφορικής η εξέταση κάθε

49 µαθήµατος διαρκεί τρεις ώρες, ενώ οι ώρες διδασκαλίας των µαθηµάτων διαφέρουν ανάλογα µε το είδος αυτών, καθώς τα εργαστηριακά µαθήµατα αποτελούνται από περισσότερα µπλοκ ωρών εβδοµαδιαίως σε σύγκριση µε τα θεωρητικά. Για τη σύνταξη των προγραµµάτων εξετάσεων του τµήµατος Πληροφορικής λαµβάνεται υπόψη ότι το θεωρητικό µέρος των µαθηµάτων εξετάζεται µόνο γραπτά, ενώ το εργαστηριακό µέρος σε όποια µαθήµατα υπάρχει εξετάζεται συνήθως µε εργασίες κατά τη διάρκεια του εξαµήνου. Στην περίπτωση που εξετάζεται γραπτά και το εργαστηριακό µέρος ενός µαθήµατος τότε η εξέτασή του δεν καθορίζεται από το πρόγραµµα εξετάσεων, αλλά από τον καθηγητή (ή τους καθηγητές) του εργαστηριακού µέρους του. Σύµφωνα µε τα προηγούµενα γίνεται η παραδοχή ότι ως εξεταστές κάθε µαθήµατος ορίζονται οι καθηγητές του θεωρητικού µέρους του, και οι οποίοι µπορεί να είναι υπεύθυνοι και του εργαστηριακού µέρους του µαθήµατος. Οι περιορισµοί που πρέπει να ισχύουν, εκτός των παραδοχών και των διαφόρων συνθηκών, είναι παρόµοιοι µε αυτούς που καθορίστηκαν στα προγράµµατα µαθηµάτων. Συγκεκριµένα για τα µαθήµατα κάθε εξαµήνου στα οποία οι φοιτητές θα εξεταστούν πρέπει να ικανοποιούνται οι εξής περιορισµοί : 1. Η ηµέρα εξέτασης κάθε µαθήµατος είναι µία από τις πέντε ηµέρες της εβδοµάδας, δηλαδή δεν µπορεί να δοθεί εξέταση το Σαββατοκύριακο. 2. Τα µαθήµατα του ίδιου έτους πρέπει να έχουν τη µέγιστη χρονική απόσταση µεταξύ τους. ηλαδή αν για 3 µαθήµατα του ίδιου έτους πρέπει να δοθούν εξετάσεις κατά τη διάρκεια µίας εβδοµάδας (πέντε ηµερών) τότε πρέπει να απέχουν δύο ηµέρες µεταξύ τους. Εποµένως το ένα µάθηµα πρέπει να δοθεί τη ευτέρα, το άλλο την Τετάρτη και το τελευταίο την Παρασκευή. 3. ύο µαθήµατα διαφορετικού έτους (στην περίπτωση της εξεταστικής Σεπτεµβρίου) µπορούν να δοθούν την ίδια ηµέρα αλλά οι ώρες εξέτασης δεν πρέπει να συµπίπτουν. 4. ύο µαθήµατα του ίδιου εξαµήνου δεν µπορούν να επικαλύπτονται, δηλαδή να εξετάζονται την ίδια ηµέρα, τις ίδιες ώρες και στην ίδια αίθουσα. 5. Για ένα µάθηµα οι υπεύθυνοι καθηγητές πρέπει να είναι διαθέσιµοι κατά τις ώρες εξέτασής του. 6. Για ένα µάθηµα η αίθουσα στην οποία θα δοθούν οι εξετάσεις αυτού πρέπει να είναι διαθέσιµη κατά τη διάρκεια της εξέτασης. Για τους αρµόδιους καθηγητές οι περιορισµοί που πρέπει να ικανοποιούνται δίνονται παρακάτω :

50 1. Ένας καθηγητής πρέπει να είναι διαθέσιµος κατά τη διάρκεια εξέτασης του µαθήµατος στο οποίο είναι υπεύθυνος. 2. Τα µαθήµατα ενός καθηγητή, τα οποία ανήκουν στο ίδιο εξάµηνο ή σε διαφορετικά, µπορούν να προγραµµατιστούν προς εξέταση την ίδια ηµέρα αλλά οι ώρες δεν πρέπει να συµπίπτουν. Τέλος για τις αίθουσες στις οποίες θα δοθούν οι εξετάσεις των µαθηµάτων πρέπει να ικανοποιούνται οι εξής τρεις περιορισµοί: 1. Μία αίθουσα πρέπει να είναι διαθέσιµη κατά τις ώρες εξέτασης ενός µαθήµατος. 2. Σε µία αίθουσα δεν µπορούν να δίνονται εξετάσεις ταυτόχρονα για δύο µαθήµατα. 3. Η χωρητικότητα µίας αίθουσας, στην οποία θα εξεταστεί ένα µάθηµα, πρέπει να είναι ανάλογη µε τον αριθµό των φοιτητών που έχουν δηλώσει το συγκεκριµένο µάθηµα στην αρχή του εξαµήνου, παρά το γεγονός ότι δεν είναι υποχρεωτικό να είναι όλοι παρόντες την ηµέρα της εξέτασης. Στο σηµείο αυτό πρέπει να αναφερθεί ότι ισχύει η ίδια παρατήρηση για τους καθηγητές µε τα προγράµµατα µαθηµάτων, εννοώντας ότι τα προγράµµατα εξετάσεων δεν καθορίζουν ποιοι από τους καθηγητές των διαφόρων µπλοκ ενός µαθήµατος πρέπει να είναι διαθέσιµοι την ηµέρα της εξέτασης καθώς αυτό προσδιορίζεται από τους ίδιους τους υπεύθυνους καθηγητές. 3.3 Αντικειµενικός Στόχος Ο στόχος του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής είναι η δηµιουργία προγραµµάτων που να καθορίζουν το εβδοµαδιαίο πρόγραµµα των µαθηµάτων κατά τη διάρκεια των εξαµήνων, όπως επίσης και το πρόγραµµα της εξεταστικής κάθε περιόδου. Όπως αναφέρθηκε κάθε ακαδηµαϊκό έτος αποτελείται από δύο εξάµηνα, το χειµερινό και το εαρινό, ενώ εξετάσεις δίνονται τους µήνες Ιανουάριο, Ιούνιο και Σεπτέµβριο. Για το λόγο αυτό χρειάζεται να συνταχθούν δύο προγράµµατα µαθηµάτων, ένα για κάθε εξάµηνο, και τρία προγράµµατα εξετάσεων, αντίστοιχα ένα για κάθε εξεταστική περίοδο. Επιπλέον η αναπαράσταση του προβλήµατος χρονοπρογραµµατισµού σαν πρόβληµα CSP απαιτεί να χρησιµοποιηθούν µέθοδοι και τεχνικές υλοποίησης τέτοιες ώστε η λύση του

51 προβλήµατος να ικανοποιεί όλους τους περιορισµούς, οι οποίοι αναφέρθηκαν στην προηγούµενη ενότητα. 3.4 εδοµένα του Προβλήµατος Σύµφωνα µε την περιγραφή του προβλήµατος χρονοπρογραµµατισµού γενικότερα και των δύο κατηγοριών προγραµµάτων ειδικότερα, τα δεδοµένα του προβλήµατος είναι εύκολο να περιγραφούν και να αναπαρασταθούν στη συνέχεια κατά τη διαδικασία της υλοποίησης. Συγκεκριµένα τα δεδοµένα του προβλήµατος και τα χαρακτηριστικά αυτών περιγράφονται παρακάτω. ΜΑΘΗΜΑΤΑ. Κάθε µάθηµα οποιουδήποτε εξαµήνου περιγράφεται από την Περίοδο στην οποία διδάσκεται δηλαδή στο χειµερινό ή εαρινό εξάµηνο, το Εξάµηνο στο οποίο ανήκει (1 ο, 2 ο, 3 ο, 4 ο, 5 ο, 6 ο, 7 ο ή 8 ο ), τους υπεύθυνους Καθηγητές του εργαστηριακού και του θεωρητικού τµήµατος του µαθήµατος, τον Αριθµό Φοιτητών που έχουν δηλώσει το συγκεκριµένο µάθηµα κατά την έναρξη του εξαµήνου, και τα Μπλοκ των θεωρητικών και εργαστηριακών ωρών. Όπως αναφέρθηκε, εργαστηριακά χαρακτηρίζονται τα µαθήµατα που αποτελούνται εκτός από το θεωρητικό µέρος και από εργαστηριακές παρακολουθήσεις. Σαν παράδειγµα αναφέρεται το µάθηµα «Έµπειρα Συστήµατα και Συστήµατα Γνώσης» που διδάσκεται στο εαρινό εξάµηνο του τρίτου έτους (δηλαδή στο 6 ο εξάµηνο), µε υπεύθυνο καθηγητή των θεωρητικών µαθηµάτων τον κ.ι.βλαχάβα και των εργαστηριακών τον κ.ν.βασιλειάδη, ενώ ο αριθµός των φοιτητών που έχουν δηλώσει το συγκεκριµένο µάθηµα είναι 76 και τα µπλοκ των ωρών είναι δύο δίωρα µπλοκ του θεωρητικού µέρους και ένα δίωρο µπλοκ του εργαστηριακού. ΙΑΘΕΣΙΜΕΣ ΜΕΡΕΣ. Οι διαθέσιµες ηµέρες διδασκαλίας και εξέτασης των µαθηµάτων είναι συγκεκριµένες και σταθερές. Εποµένως στα προγράµµατα µαθηµάτων καθορίζονται ως ηµέρες κατάλληλες για την παρακολούθηση των θεωρητικών και εργαστηριακών µαθηµάτων οι πέντε ηµέρες της εβδοµάδας, δηλαδή εκτός Σαββάτου και Κυριακής. Αντίστοιχα στα προγράµµατα εξετάσεων καθορίζονται ως διαθέσιµες ηµέρες για την εξέταση των µαθηµάτων επίσης οι πέντε ηµέρες της εβδοµάδας (εκτός Σαββατοκύριακου), ενώ για το Τµήµα Πληροφορικής η εξεταστική περίοδος διαρκεί σχεδόν πάντα τέσσερις εβδοµάδες.

52 ΙΑΘΕΣΙΜΕΣ ΩΡΕΣ. Οι ώρες διδασκαλίας και εξέτασης που λαµβάνονται υπόψη για τη δηµιουργία των προγραµµάτων µαθηµάτων και εξετάσεων είναι όλες οι ώρες της ηµέρας από τις 8:00 π.µ. µέχρι τις 9:00 µ.µ. Συγκεκριµένα ένα µάθηµα µπορεί να προγραµµατιστεί για οποιαδήποτε ώρα της ηµέρας µέσα στο παραπάνω διάστηµα, αλλά όταν το µπλοκ του είναι ένα δίωρο διδασκαλίας τότε η ώρα έναρξης του µαθήµατος µπορεί να είναι το αργότερο µέχρι τις 7:00 µ.µ., ενώ στην περίπτωση του τρίωρου µπλοκ το τελευταίο διάστηµα στο οποίο µπορεί να προγραµµατιστεί είναι 6:00-9:00 µ.µ. Το ίδιο ισχύει και για τις ώρες εξέτασης των µαθηµάτων. ΙΑΘΕΣΙΜΕΣ ΑΙΘΟΥΣΕΣ / ΕΡΓΑΣΤΗΡΙΑ. Οι διαθέσιµες αίθουσες για το θεωρητικό µέρος των µαθηµάτων και τα διαθέσιµα εργαστήρια για τα εργαστηριακά µαθήµατα περιγράφονται από το Όνοµα της συγκεκριµένης αίθουσας, την Ηµέρα και Ώρα που είναι δεσµευµένες για τη διδασκαλία µαθηµάτων ή τη διεξαγωγή εξετάσεων, και τη Χωρητικότητα αυτών, δηλαδή των αριθµό των ατόµων που µπορούν να δεχτούν. Έστω για παράδειγµα η αίθουσα Α η οποία έχει χωρητικότητα 80 ατόµων και είναι δεσµευµένη τη ευτέρα από τις 9:00 π.µ. µέχρι τις 11:00 π.µ., την Τρίτη από τις 13:00 µ.µ. έως τις 19:00 µ.µ., την Πέµπτη από τις 9:00 π.µ. µέχρι τις 15:00 µ.µ. και την Παρασκευή από τις 10:00π.µ. έως τις 16:00 µ.µ. Με τον ίδιο τρόπο περιγράφεται µία διαθέσιµη αίθουσα για την υλοποίηση των προγραµµάτων εξετάσεων. ΚΑΘΗΓΗΤΕΣ ΘΕΩΡΗΤΙΚΩΝ / ΕΡΓΑΣΤΗΡΙΩΝ. Οι υπεύθυνοι καθηγητές των θεωρητικών και των εργαστηριακών τµηµάτων των µαθηµάτων παριστάνονται από το Όνοµα τους, καθώς επίσης και τις Ηµέρες και Ώρες που είναι δεσµευµένοι για τη διδασκαλία των µαθηµάτων που έχουν αναλάβει ή την παρουσία τους κατά τη διάρκεια εξέτασης αυτών. Για παράδειγµα δηλώνεται ότι ο καθηγητής κ..πολίτης του Τµήµατος Πληροφορικής είναι δεσµευµένος την Πέµπτη από τις 10:00 π.µ. έως τις 16:00 µ.µ. και την Παρασκευή τις ώρες 9:00 π.µ. 13:00 µ.µ. και 17:00 µ.µ. 21:00 µ.µ. 3.5 Αναπαράσταση του Προβλήµατος Σύµφωνα µε το γενικό πρότυπο απεικόνισης ενός προβλήµατος CSP, το πρόβληµα χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής αναπαρίσταται µε τη βοήθεια του συνόλου

53 των δεδοµένων, του συνόλου των µεταβλητών και των περιορισµών που έχουν καθοριστεί για το συγκεκριµένο πρόβληµα. Επιπλέον για την υλοποίησή του γίνεται χρήση της ειδικής βιβλιοθήκης επίλυσης περιορισµών JCL της αντικειµενοστραφούς γλώσσας προγραµµατισµού Java, η οποία όµως θα περιγραφεί µε περισσότερη λεπτοµέρεια σε επόµενο κεφάλαιο. Καθώς ο χρονοπρογραµµατισµός του Τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του ΑΠΘ συνίσταται στα προγράµµατα µαθηµάτων του χειµερινού και εαρινού εξαµήνου και στα προγράµµατα εξετάσεων των περιόδων Ιανουαρίου, Ιουνίου και Σεπτεµβρίου αρκεί να εφαρµοστεί ο τρόπος αναπαράστασης του προβλήµατος CSP στις δύο αυτές κατηγορίες χρονοπρογραµµάτων. Γενικά όµως η φιλοσοφία που ακολουθείται είναι ίδια είτε πρόκειται για προγράµµατα µαθηµάτων, είτε για προγράµµατα εξετάσεων. Η αναπαράσταση και υλοποίηση εποµένως του προβλήµατος χρονοπρογραµµατισµού αποτελείται από τις ακόλουθες φάσεις : Απεικόνιση και κωδικοποίηση των δεδοµένων του προβλήµατος. Ορισµός των συνόλων των µεταβλητών και των αντίστοιχων πεδίων τους. Συγκεκριµένα για το πρόγραµµα µαθηµάτων ορίζονται έξι λίστες µεταβλητών πεπερασµένου πεδίου, όπου οι τρεις πρώτες αναπαριστούν τις ηµέρες, τις ώρες και τις αίθουσες διδασκαλίας του θεωρητικού µέρους των µαθηµάτων αντίστοιχα, ενώ οι υπόλοιπες τρεις παριστούν τις ηµέρες, τις ώρες και τα εργαστήρια διδασκαλίας του εργαστηριακού µέρους των µαθηµάτων. Αντίθετα για το πρόγραµµα εξετάσεων ορίζονται τρεις λίστες µεταβλητών πεδίου και οι οποίες αναπαριστούν τις ηµέρες, τις ώρες και τις αίθουσες διεξαγωγής των εξετάσεων αντίστοιχα. ήλωση και αναπαράσταση των περιορισµών που περιγράφηκαν σε προηγούµενη ενότητα. Ανάθεση τιµών στις µεταβλητές πεπερασµένου πεδίου των παραπάνω λιστών και οι οποίες αντιπροσωπεύουν τα προγράµµατα µαθηµάτων και εξετάσεων. Εύρεση λύσης που να ικανοποιεί όλους τους περιορισµούς. Παρά το γεγονός ότι η παραπάνω απεικόνιση του προβλήµατος χρονοπρογραµµατισµού φαίνεται σχετικά απλή είναι απαραίτητο να διενεργούνται και ορισµένες βοηθητικές εργασίες που απλοποιούν τη διαδικασία της εύρεσης λύσης και οι οποίες θα αναλυθούν σε επόµενο κεφάλαιο περιγραφής του τρόπου υλοποίησης του προγράµµατος.

54 3.6 Περίληψη Στο Τµήµα Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου συντάσσονται ετησίως δύο προγράµµατα µαθηµάτων και τρία εξετάσεων. Τα προγράµµατα αυτά πρέπει να ικανοποιούν ορισµένους περιορισµούς καθώς το πρόβληµα του χρονοπρογραµµατισµού του Πανεπιστηµιακού Τµήµατος απεικονίζεται σαν Πρόβληµα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problem ή CSP). Τα προγράµµατα µαθηµάτων και εξετάσεων µπορούν να χαρακτηριστούν γενικά όµοια, µε ουσιαστική διαφορά να εντοπίζεται στους περιορισµούς που ορίζονται κατά την επίλυσή τους.

55 Κεφάλαιο 4 JCL : Βιβλιοθήκη Επίλυσης Περιορισµών 4.1 Εισαγωγή Το πρόβληµα του Χρονοπρογραµµατισµού Πανεπιστηµιακού Τµήµατος προσεγγίζεται από τον Προγραµµατισµό Με Περιορισµούς (Constraint Programming ή CP) και υλοποιείται στη γλώσσα προγραµµατισµού Java. Η Java είναι µία αντικειµενοστραφής γλώσσα προγραµµατισµού που χρησιµοποιείται αποτελεσµατικά στη σχεδίαση λογισµικού που εργάζεται σε συνδυασµό µε το Internet, υποστηρίζοντας ταυτόχρονα γραφικές διασυνδέσεις χρηστών, δικτύωση, συνδεσιµότητα βάσεων δεδοµένων και άλλων ειδών λειτουργικότητες. Για την επίλυση Προβληµάτων Χρονοπρογραµµατισµού έχουν αναπτυχθεί αρκετά εργαλεία στη γλώσσα Java που περιλαµβάνουν µηχανισµούς αναπαράστασης περιορισµών. Η βιβλιοθήκη επίλυσης περιορισµών JCL είναι εργαλείο της Java, το οποίο αναπτύχθηκε από τους ερευνητές του εργαστηρίου Τεχνητής Νοηµοσύνης στην πόλη Laussane της Ελβετίας, για την απεικόνιση των αντικειµένων ενός προβλήµατος στις µεταβλητές και τους περιορισµούς του Προβλήµατος Ικανοποίησης Περιορισµών (Constraint Satisfaction Problem ή CSP). Στο παρόν κεφάλαιο θα παρουσιαστεί αναλυτικά η βιβλιοθήκη JCL, ο τρόπος εφαρµογής της, παραδείγµατα χρήσης των κλάσεων αυτής, καθώς και επιπλέον επεκτάσεις που έγιναν προκειµένου να καλυφθούν οι ανάγκες αναπαράστασης και επίλυσης του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής.

56 4.2 Η βιβλιοθήκη JCL Η βιβλιοθήκη επίλυσης περιορισµών JCL της γλώσσας προγραµµατισµού Java υποστηρίζει δυαδικούς περιορισµούς µεταξύ δύο µεταβλητών του προβλήµατος και µοναδιαίους µεταξύ µίας µεταβλητής και µίας σταθερής τιµής και επιτρέπει τον ορισµό των περιορισµών αυτών µεταξύ ακεραίων τιµών, αλφαριθµητικών και συνόλων όµοιων ή ανόµοιων στοιχείων (tuples). Στις επόµενες ενότητες θα περιγραφούν οι κλάσεις της βιβλιοθήκης, και θα δοθούν ορισµένα αντιπροσωπευτικά παραδείγµατα. Προηγουµένως όµως κρίνεται σκόπιµο να εξηγηθούν κάποιοι όροι οι οποίοι συναντώνται συχνά κατά τη χρήση του συγκεκριµένου εργαλείου. CSP πρόβληµα (CSP problem) είναι το σύνολο των µεταβλητών και των περιορισµών που ορίζονται µεταξύ αυτών. CSP µεταβλητή ( CSPVariable) είναι κάθε µεταβλητή του προβλήµατος για την οποία ορίζεται συγκεκριµένο πεδίο τιµών (domain) και στο οποίο ανήκουν οι τιµές που τις ανατίθενται. CSP πεδίο τιµών (CSPDomain) είναι το σύνολο τιµών κάθε µεταβλητής και το οποίο µπορεί να αποτελείται από ακέραιες τιµές, διαστήµατα ακεραίων τιµών, αλφαριθµητικά και σύνολα στοιχείων, για παράδειγµα δυάδες ή τριάδες όµοιων ή ανόµοιων στοιχείων. Λύση (Solution) είναι η απόδοση τιµών στις µεταβλητές του προβλήµατος µε τρόπο που να ικανοποιούνται όλοι οι περιορισµοί. Επίσης στον ορισµό των κλάσεων της JCL χρησιµοποιούνται ορισµένες συντοµογραφίες που εξηγούνται ακολούθως. BC (BinaryConstraint) είναι ο δυαδικός περιορισµός µεταξύ δύο µεταβλητών του προβλήµατος. UC (UnaryConstraint) είναι ο µοναδιαίος περιορισµός µεταξύ µίας µεταβλητής του προβλήµατος και µίας σταθερής τιµής. ID (IntegerDomain) είναι το πεδίο των ακεραίων τιµών. SD (StringDomain) είναι το πεδίο των αλφαριθµητικών. TD (TupleDomain) είναι το πεδίο των συνόλων όµοιων ή ανόµοιων στοιχείων.

57 4.3 Χρήση της JCL σε πρόβληµα CSP Η εφαρµογή της βιβλιοθήκης JCL σε Προβλήµατα Χρονοπρογραµµατισµού Βασισµένα Σε Περιορισµούς (Constraint-Based Scheduling Problems) είναι σε γενικά πλαίσια εύκολη καθώς η επίλυση των προβληµάτων αυτών µπορεί να χωριστεί σε δύο διακριτές φάσεις: στην οργάνωση του CSP προβλήµατος και στη λύση αυτού. Στις υποενότητες που ακολουθούν περιγράφονται οι διαδικασίες αυτές καθώς και οι χαρακτηριστικές κλάσεις της βιβλιοθήκης που χρησιµοποιούνται για την αναπαράσταση και επίλυση του προβλήµατος Οργάνωση του CSP Προβλήµατος Η πρώτη φάση της οργάνωσης του προβλήµατος περιλαµβάνει τον ορισµό του προβλήµατος ως Πρόβληµα CSP, των πεδίων τιµών, των µεταβλητών αυτού και των κατάλληλων δυαδικών και µοναδιαίων περιορισµών. Παρακάτω δίνονται οι αντίστοιχες κλάσεις της βιβλιοθήκης και οι τρόποι ορισµού των αντικειµένων αυτών. Κλάση CSP Το αντικείµενο CSP ορίζει ένα νέο CSP πρόβληµα ως σύνολο µεταβλητών και περιορισµών. Οι µέθοδοι ορισµού (Constructor Methods) του αντικειµένου είναι: CSP() : ορίζει νέο CSP αντικείµενο. CSP(int size) : ορίζει νέο CSP αντικείµενο µεγέθους size,δηλαδή το πλήθος των µεταβλητών του προβλήµατος είναι size. CSP(java.lang.String name, java.lang.string author, int size) : ορίζει νέο αντικείµενο µε όνοµα name, όνοµα συντάκτη του προβλήµατος author και µέγεθος size. Κλάση CSPDomain Το αντικείµενο CSPDomain ορίζει ένα πεδίο τιµών για µία µεταβλητή του προβλήµατος και προηγείται του ορισµού του αντίστοιχου αντικειµένου της CSP µεταβλητής. Οι υποκλάσεις της κλάσης CSPDomain είναι οι ακόλουθες τέσσερις : i. Κλάση IntegerDomain : για τον ορισµό πεδίων ακεραίων τιµών. ii. Κλάση IntervalDomain :για τον ορισµό πεδίων διαστηµάτων ακεραίων τιµών. iii. Κλάση StringDomain :για τον ορισµό πεδίων αλφαριθµητικών.

58 iv. Κλάση TupleDomain :για τον ορισµό πεδίων συνόλων στοιχείων (tuples). Κλάση CSPVariable Το αντικείµενο CSPVariable ορίζει µία νέα µεταβλητή του προβλήµατος CSP της οποίας το πεδίο τιµών δηλώνεται κατά τη δηµιουργία του αντικειµένου. Οι µέθοδοι ορισµού του αντικειµένου είναι οι εξής : CSPVariable() : ορίζει νέα CSP µεταβλητή. CSPVariable(CSPDomain d) :ορίζει νέα CSP µεταβλητή µε πεδίο τιµών d. CSPVariable(CSPDomain d, java.lang.string name) : ορίζει νέα CSP µεταβλητή µε πεδίο τιµών d και όνοµα name. CSPVariable(java.lang.String name) : ορίζει νέα CSP µεταβλητή µε όνοµα name. Μετά τη δηµιουργία κάθε µεταβλητής του προβλήµατος πρέπει να προστεθεί στο συγκεκριµένο CSP πρόβληµα µε µία από τις µεθόδους : setvariable(var,i) : προσθέτει τη µεταβλητή var στη θέση i του προβλήµατος. addvariable(var) : προσθέτει τη µεταβλητή var στο CSP πρόβληµα, αυξάνοντας το πλήθος των µεταβλητών του προβλήµατος κατά 1. Μετά την ολοκλήρωση του ορισµού των παραπάνω αντικειµένων, και για να ολοκληρωθεί η φάση της οργάνωσης του προβλήµατος, ακολουθεί η δήλωση των περιορισµών µεταξύ των µεταβλητών. Οι περιορισµοί διακρίνονται στους δυαδικούς και στους µοναδιαίους και µπορούν να οριστούν µεταξύ ακεραίων τιµών, αλφαριθµητικών και συνόλων όµοιων ή ανόµοιων στοιχείων (tuples) υαδικοί Περιορισµοί Στην περίπτωση που πρέπει να εκφραστούν σχέσεις ισότητας, ανισότητας, υπεροχής µεταξύ δύο CSP µεταβλητών χρησιµοποιούνται οι δυαδικοί περιορισµοί, ορίζοντας αντίστοιχα αντικείµενα της κλάσης BinaryConstraint. Οι υποκλάσεις αυτής, οι οποίες ορίζονται για τις διαφορετικές περιπτώσεις εφαρµογής των περιορισµών σε αναλογία µε τα πεδία τιµών των αντίστοιχων µεταβλητών, περιγράφονται παρακάτω. Επιπλέον πρέπει να αναφερθεί ότι µετά τον ορισµό κάθε περιορισµού πρέπει να προστεθεί στο CSP πρόβληµα χρησιµοποιώντας τη µέθοδο : setconstraint(cspvariable v1, CSPVariable v2, BinaryConstraint bc), όπου bc ο δυαδικός περιορισµός µεταξύ των CSP µεταβλητών v1 και v2.

59 Κλάση BC_ExplicitConstraint Το αντικείµενο της κλάσης BC_ExplicitConstraint χρησιµοποιείται για να ορίζονται δεκτοί (GoodList) και µη δεκτοί (NoGoodList) συνδυασµοί τιµών δύο µεταβλητών. Για το σκοπό αυτό οι υποκλάσεις που ορίστηκαν είναι οι εξής : o Κλάση BC_GoodList : για τον ορισµό δεκτών συνδυασµών διαφορετικού τύπου τιµών µεταξύ δύο µεταβλητών. Για παράδειγµα ο περιορισµός αυτός µπορεί να οριστεί µεταξύ µεταβλητών από τις οποίες το πεδίο τιµών της πρώτης περιέχει ακέραιες τιµές και της δεύτερης αλφαριθµητικά. o Κλάση BC_NoGoodList : για τον ορισµό µη δεκτών συνδυασµών διαφορετικού τύπου τιµών µεταξύ δύο µεταβλητών. o Κλάση BC_ID_GoodList : για τον ορισµό δεκτών συνδυασµών ακεραίων τιµών µεταξύ δύο µεταβλητών. o Κλάση BC_ID_NoGoodList : για τον ορισµό µη δεκτών συνδυασµών ακεραίων τιµών µεταξύ δύο µεταβλητών. o Κλάση BC_SD_GoodList : για τον ορισµό δεκτών συνδυασµών αλφαριθµητικών (strings) µεταξύ δύο µεταβλητών. o BC_SD_NoGoodList : για τον ορισµό µη δεκτών συνδυασµών αλφαριθµητικών (strings) µεταξύ δύο µεταβλητών. Κλάση BC_ID_Equals Το αντικείµενο της κλάσης BC_ID_Equals ορίζει τον περιορισµό της ισότητας µεταξύ δύο µεταβλητών των οποίων τα πεδία αποτελούνται από ακέραιες τιµές. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_ID_Equals(). Για παράδειγµα οι προτάσεις BC_ID_Equals bc_e = new BC_ID_Equals(); csp.setconstraint(v1,v2,new BC_ID_Equals()); ορίζουν το δυαδικό περιορισµό της ισότητας (bc_e) µεταξύ τον µεταβλητών ακεραίων τιµών v1 και v2 (δηλ. v1 = v2) και τον προσθέτουν στο CSP πρόβληµα (αντικείµενο csp). Κλάση BC_ID_NotEquals Το αντικείµενο της κλάσης BC_ID_NotEquals ορίζει τον περιορισµό της ανισότητας µεταξύ δύο µεταβλητών του προβλήµατος των οποίων τα πεδία αποτελούνται από ακέραιες τιµές. Η µέθοδος

60 ορισµού του αντικειµένου είναι η : BC_ID_NotEqulas(), και εφαρµόζεται σε CSP προβλήµατα µε τρόπο ανάλογο προς το αντικείµενο της κλάσης BC_ID_Equals. Κλάση BC_ID_GreaterThan Το αντικείµενο της κλάσης BC_ID_GreaterThan ορίζει το δυαδικό περιορισµό µεγαλύτερο από µεταξύ δύο µεταβλητών ακεραίων τιµών. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_ID_GreaterThan(), και ως παράδειγµα δίνονται οι ακόλουθες προτάσεις BC_ID_GreaterThan() bc_g = new BC_ID_GreaterThan(); csp.setconstraint(v1,v2,bc_g); οι οποίες ορίζουν αρχικά το δυαδικό περιορισµό bc_g µεταξύ των µεταβλητών v1 και v2, µε την έννοια ότι η ν1 είναι µεγαλύτερη από την ν2 (δηλ. ν1 > ν2), και τον προσθέτουν στη συνέχεια στο CSP αντικείµενο csp. Κλάση BC_ID_GreaterThanEquals Το αντικείµενο της κλάσης BC_ID_GreaterThanEquals ορίζει το δυαδικό περιορισµό µεγαλύτερο από ή ίσο µε µεταξύ δύο µεταβλητών του CSP προβλήµατος των οποίων τα πεδία περιέχουν ακέραιες τιµές. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_ID_GreaterThanEquals(), ενώ χρησιµοποιείται µε τρόπο όµοιο προς όλα τα αντικείµενα της κλάσης BinaryConstraint. Κλάση BC_ID_LessThan Το αντικείµενο της κλάσης BC_ID_LessThan ορίζει το περιορισµό µικρότερο από µεταξύ δύο µεταβλητών ακεραίων τιµών του CSP προβλήµατος. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_ID_LessThan(), και ο τρόπος χρήσης του σε προβλήµατα CSP είναι όµοιος µε τον τρόπο εφαρµογής των αντικειµένων των παραπάνω κλάσεων. Κλάση BC_ID_LessThanEquals Το αντικείµενο της κλάσης BC_ID_LessThanEquals ορίζει το δυαδικό περιορισµό µικρότερο από ή ίσο µε µεταξύ δύο CSP µεταβλητών ακεραίων τιµών. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_ID_LessThanEquals(), ενώ η µόνη διαφορά του αντικειµένου της κλάσης αυτής από την παραπάνω βρίσκεται στον περιορισµό της ισότητας. Άλλες υποκλάσεις της κλάσης BinaryConstraint είναι αυτές που χρησιµοποιούνται για τον ορισµό δυαδικών περιορισµών µεταξύ δύο CSP µεταβλητών του προβλήµατος και των οποίων τα πεδία

61 τιµών περιέχουν αλφαριθµητικά (strings). Στην περίπτωση αυτή τα αντικείµενα που χρησιµοποιούνται ορίζουν τους ίδιους περιορισµούς µε τους περιορισµούς που περιγράφηκαν για µεταβλητές ακεραίων τιµών. Για το λόγο αυτό θα γίνει απλή αναφορά των αντίστοιχων κλάσεων, υπενθυµίζοντας ότι η συντοµογραφία SD παραπέµπει στην κλάση StringDomain για τον ορισµό πεδίων αλφαριθµητικών. Κλάσεις BC_SD_Equals και BC_SD_NotEquals. Κλάσεις BC_SD_GreaterThan και BC_ SD_GreaterThanEquals. Κλάσεις BC_SD_LessThan και BC_SD_LessThanEquals. Τέταρτη κατηγορία υποκλάσεων της κλάσης BinaryConstraint είναι αυτή που περιλαµβάνει κλάσεις για τον ορισµό περιορισµών µεταξύ δύο µεταβλητών του CSP προβλήµατος των οποίων τα πεδία τιµών έχουν οριστεί ως αντικείµενα της κλάσης TupleDomain. Κλάσεις της κατηγορίας αυτής περιγράφονται παρακάτω : Κλάση BC_TD_BinaryConstraint Το αντικείµενο της κλάσης BC_TD_BinaryConstraint ορίζει έναν δυαδικό περιορισµό µεταξύ δύο στοιχείων, ένα από κάθε σύνολο στοιχείων (tuple) των δύο CSP µεταβλητών. Η µέθοδος ορισµού του αντικειµένου είναι η : BC_TD_BinaryConstraint(BinaryConstraint bc, int e1, int e2) όπου bc ένας από τους δυαδικούς περιορισµούς που αναπτύχθηκαν παραπάνω και ο οποίος ορίζεται µεταξύ του e1 στοιχείου κάθε tuple της πρώτης µεταβλητής και του e2 στοιχείου κάθε tuple της δεύτερης µεταβλητής. Για την κατανόηση εφαρµογής του αντικειµένου BC_TD_BinaryConstraint δίνονται οι ακόλουθες προτάσεις ως παράδειγµα. BC_ID_Equals bc_e = new BC_ID_Equals(); BC_TD_BinaryConstraint td_bc_e = new BC_TD_BinaryConstraint(bc_e, 1, 1); Συγκεκριµένα η πρώτη πρόταση ορίζει το δυαδικό περιορισµό της ισότητας µεταξύ ακεραίων, ενώ η δεύτερη ορίζει τον περιορισµό td_bc_e θέτοντας τον περιορισµό bc_e µεταξύ του πρώτου στοιχείου κάθε tuple της πρώτης µεταβλητής και του πρώτου στοιχείου κάθε tuple της δεύτερης µεταβλητής. Κλάση BC_TD_Equals Το αντικείµενο της κλάσης BC_TD_Equals ορίζει τον περιορισµό της ισότητας µεταξύ των συνόλων στοιχείων (tuples) δύο CSP µεταβλητών. Η µέθοδος ορισµού του αντικειµένου

62 είναι η : BC_TD_Equals(), ενώ η χρήση του σε πρόβληµα CSP ακολουθεί το γενικό πρότυπο εφαρµογής όλων των αντικειµένων της κλάσης BinaryConstraint. Κλάση BC_TD_NotEquals Το αντικείµενο της κλάσης BC_TD_NotEquals ορίζει το δυαδικό περιορισµό της ανισότητας µεταξύ των tuples δύο µεταβλητών µε την έννοια ότι τα στοιχεία των αντίστοιχων συνόλων είναι διαφορετικά µεταξύ τους. Η µέθοδος ορισµού του αντικειµένου είναι η εξής : BC_TD_NotEquals(). Σε γενικά πλαίσια τα αντικείµενα των παραπάνω υποκλάσεων της κλάσης BinaryConstraint επιτρέπουν τον ορισµό δυαδικών περιορισµών της µορφής : x = y, x!= z, z < w, z <= x, w > x, w >= y όπου x, y, z, w αναπαριστούν τις µεταβλητές ενός CSP προβλήµατος των οποίων τα πεδία τιµών µπορεί να περιέχουν είτε ακέραιες τιµές, είτε αλφαριθµητικά, είτε σύνολα όµοιων ή διαφορετικών µεταξύ τους στοιχείων Μοναδιαίοι Περιορισµοί Το δεύτερο είδος των περιορισµών που µπορούν να οριστούν στις µεταβλητές ενός CSP προβλήµατος είναι οι µοναδιαίοι περιορισµοί, και οι οποίοι εφαρµόζονται σε περιπτώσεις όπου πρέπει να οριστεί µία σχέση ανάµεσα σε µία µεταβλητή και σε µία σταθερή τιµή. Όπως και στην περίπτωση των δυαδικών περιορισµών τα αντικείµενα της κλάσης UnaryConstraint µπορούν να ορίσουν περιορισµούς σε CSP µεταβλητές, τα πεδία των οποίων περιέχουν ακέραιες τιµές, αλφαριθµητικά και σύνολα όµοιων ή ανόµοιων στοιχείων. Οι υποκλάσεις της κλάσης UnaryConstraint ορίζονται συνεπώς σε αναλογία µε τα είδη των πεδίων τιµών και αναφέρονται παρακάτω σε τρεις κατηγορίες χωρίς περαιτέρω διευκρινίσεις για το λόγο ότι ακολουθούν το γενικό πρότυπο των κλάσεων που περιγράφηκαν προηγούµενα. Επιπλέον είναι σκόπιµο να αναφερθεί ότι κάθε µοναδιαίος περιορισµός που ορίζεται προστίθεται στην αντίστοιχη µεταβλητή µε τη µέθοδο : setconstraint(uc), όπου uc ο µοναδιαίος περιορισµός. Μοναδιαίοι Περιορισµοί Ακεραίων Τιµών Στην κατηγορία αυτή ανήκουν όλες οι υποκλάσεις, τα αντικείµενα των οποίων χρησιµοποιούνται για τον ορισµό περιορισµών ανάµεσα σε µία µεταβλητή και σε µία ακέραια τιµή. Τέτοιες είναι οι εξής :

63 o Κλάσεις UC_ID_Equals και UC_ID_NotEquals o Κλάσεις UC_ID_GreaterThan και UC_ID_GreaterThanEquals o Κλάσεις UC_ID_LessThan και UC_ID_LessThanEquals Μοναδιαίοι Περιορισµοί Αλφαριθµητικών Στη δεύτερη κατηγορία ανήκουν όλες οι κλάσεις των οποίων τα αντικείµενα ορίζουν µοναδιαίους περιορισµούς ανάµεσα σε µία µεταβλητή και σε ένα αλφαριθµητικό. Είναι προφανές ότι οι µεταβλητές στις οποίες θα προστεθούν αυτού του είδους οι περιορισµοί αντιστοιχούν σε πεδία που είναι αντικείµενα της κλάσης StringDomain. Κλάσεις τις κατηγορίας αυτής είναι οι ακόλουθες : o Κλάσεις UC_SD_Equals και UC_SD_NotEquals o Κλάσεις UC_SD_GreaterThan και UC_SD_GreaterThanEquals o Κλάσεις UC_SD_LessThan UC_SD_LessThanEquals Μοναδιαίοι Περιορισµοί Συνόλων Στοιχείων Η τρίτη κατηγορία των υποκλάσεων περιλαµβάνει κλάσεις για τον ορισµό περιορισµών στα στοιχεία των πεδίων τιµών των µεταβλητών όταν αυτά αποτελούν αντικείµενα της κλάσης TupleDomain. Χαρακτηριστικές κλάσεις της κατηγορίας αυτής είναι οι εξής : o Κλάση UC_TD_BinaryConstraint Το αντικείµενο της κλάσης UC_TD_BinaryConstraint ορίζει ένα δυαδικό περιορισµό µεταξύ δύο στοιχείων κάθε tuple της µεταβλητής. Για παράδειγµα µπορεί να ορισθεί δύο στοιχεία των tuples να είναι άνισα µεταξύ τους, µε τις προτάσεις που ακολουθούν : BC_ID_NotEquals bc_ne = new BC_ID_NotEquals(); UC_TD_BinaryConstraint td_bc_ne = new UC_TD_BinaryConstraint(1,3,bc_ne); Συγκεκριµένα στην πρώτη πρόταση ορίζεται ο δυαδικός περιορισµός της ανισότητας bc_ne, ενώ στη δεύτερη ο µοναδιαίος περιορισµός td_bc_ne θέτοντας το πρώτο και το τρίτο στοιχείο κάθε tuple διαφορετικά µεταξύ τους. Επίσης µε την πρόταση : var.setconstraint(td_bc_ne); προσθέτουµε το µοναδιαίο περιορισµό td_bc_ne στη CSP µεταβλητή var. o Κλάση UC_TD_UnaryConstraint Το αντικείµενο της κλάσης UC_TD_UnaryConstraint ορίζει ένα µοναδιαίο περιορισµό σε ένα στοιχείο κάθε tuple της µεταβλητής. Για παράδειγµα µε τον τρόπο αυτό µπορούµε

64 να δηλώσουµε οποιαδήποτε σχέση µεταξύ ενός στοιχείου του tuple και µίας σταθερής τιµής. Η µέθοδος ορισµού του αντικειµένου της κλάσης αυτής είναι η εξής : UC_TD_UnaryConstraint(UnaryConstraint uc, int elementno), όπου uc οποιοσδήποτε µοναδιαίος περιορισµός από αυτούς που περιγράφηκαν παραπάνω και elementno το στοιχείο του tuple της µεταβλητής για την οποία ορίζεται ο περιορισµός. o Κλάσεις UC_TD_Equals και UC_TD_NotEquals Το αντικείµενο κάθε κλάσης ορίζει τον περιορισµό της ισότητας και ανισότητας αντίστοιχα µεταξύ κάθε tuple της CSP µεταβλητής και ενός δεύτερου που δίνεται από το χρήστη. Οι παρακάτω προτάσεις αποτελούν µεθόδους ορισµού των αντικειµένων αυτών : UC_TD_Equals(Tuple t1), UC_TD_NotEquals(Tuple t2) και χρησιµοποιούνται για να δηλώσουν ότι κάθε tuple του πεδίου µιας µεταβλητής είναι ίσο προς το tuple t1 και άνισο προς το tuple t2. Σύµφωνα µε τη περιγραφή των υποκλάσεων της κλάσης UnaryConstraint που προηγήθηκε, γίνεται εύκολα αντιληπτό ότι τα αντικείµενα αυτών επιτρέπουν τον ορισµό µοναδιαίων περιορισµών της µορφής : x = 1, x!= 4, y > 2, y <= 15, w >= 6, w < 9, z = a, z!= b όπου x, y, z, w είναι µεταβλητές ή στοιχεία των tuple CSP µεταβλητών, και οι τιµές που βρίσκονται δεξιά των τελεστών (=,!=, <, >, <=, >=) αποτελούν σταθερές ακέραιες τιµές ή αλφαριθµητικά Λύση του CSP Προβλήµατος Η φάση της επίλυσης του προβλήµατος προϋποθέτει την ύπαρξη της πρώτης φάσης δηλαδή του ορισµού του προβλήµατος και των µεταβλητών αυτού, των πεδίων τιµών και των κατάλληλων περιορισµών. Με τον όρο λύση ενός CSP προβλήµατος εννοούµε την ανάθεση τιµών στις µεταβλητές αυτού από τα αντίστοιχα πεδία τιµών, µε τρόπο που να ικανοποιούνται όλοι οι δυαδικοί περιορισµοί που προστέθηκαν στο πρόβληµα και µοναδιαίοι που προστέθηκαν σε ορισµένες από τις µεταβλητές. Η βασική κλάση για την επίλυση αλγορίθµων κατά την εύρεση λύσης ενός προβλήµατος είναι η κλάση Solver, ενώ ένας αριθµός υποκλάσεων έχει αναπτυχθεί στη βιβλιοθήκη JCL προκειµένου να αντιστοιχούν σε διαφορετικό είδος αλγορίθµου. Παρακάτω αναφέρονται ορισµένες από τις κλάσεις αυτές.

65 BJSolver : αντιστοιχεί στον αλγόριθµο BackJumping. BMSolver : ανάλογα προς τον αλγόριθµο BackMarking. BM_BJSolver : αναφέρεται στον υβριδικό αλγόριθµο BackMarking and BackJumping. FCSolver : σύµφωνα µε τον αλγόριθµο ForwardChecking. ACSolver : σε αναλογία µε τον αλγόριθµο Arc Consistency. FC_ARCSolver : αντιστοιχεί στον αλγόριθµο ForwardChecking with full Arc Consistency. CBJSolver : σύµφωνα µε τον αλγόριθµο Graph-Based BackJumping. Εκτός όµως από τον ορισµό του Επιλυτή (Solver) του προβλήµατος πρέπει να οριστεί και ο ιαχειριστής (Manager) αυτού ο οποίος θα έχει τον έλεγχο του αλγορίθµου που έχει επιλεγεί για το πρόβληµα και θα παρακολουθεί την πορεία εύρεσης λύσεων. Η βιβλιοθήκη JCL περιέχει ανάλογες κλάσεις, επιτρέποντας παράλληλα τον ορισµό από το χρήστη ενός νέου ιαχειριστή Λύσεων (SolutionManager), προκειµένου να ανταποκρίνεται στις απαιτήσεις του προβλήµατος που έχει να επιλύσει. Οι επόµενες προτάσεις αποτελούν το γενικό µοντέλο δηλώσεων που χρησιµοποιούνται κατά τη δεύτερη φάση της λύσης ενός CSP προβλήµατος. Solver solver = (Solver) new BJSolver(); solver.setproblem(csp); solver.setnumberofsolutionstofind(int sol); solver.setsolutionmanager(mysolutionmanager); solver.run(); Συγκεκριµένα ορίζεται αρχικά το αντικείµενο solver της κλάσης Solver να αναφέρεται στον αλγόριθµο BackJumping και προστίθεται στη συνέχεια το πρόβληµα csp στον επιλυτή µε τη µέθοδο setproblem(). Για τη δήλωση του αριθµού των λύσεων που είναι επιθυµητό να βρεθούν χρησιµοποιείται η µέθοδος setnumberofsolutionstofind(int sol) της κλάσης Solver παίρνοντας ως όρισµα τον αριθµό αυτό, ενώ αν έπρεπε να βρεθούν όλες οι λύσεις το όρισµα θα έπαιρνε την τιµή -1. Ακολουθεί ο ορισµός του SolutionManager, όπου στην περίπτωση αυτή τίθεται να είναι ο MySolutionManager της βιβλιοθήκης JCL και οι δηλώσεις ολοκληρώνονται µε τη µέθοδο run() για την εκτέλεση της αναζήτησης των λύσεων του προβλήµατος. 4.4 Παράδειγµα

66 Προκειµένου να γίνει δυνατή η κατανόηση του τρόπου εφαρµογής της βιβλιοθήκης JCL στην επίλυση Προβληµάτων Βασισµένα σε Περιορισµούς δίνεται ένα παράδειγµα χρήσης ορισµένων από τις κλάσεις που αναλύθηκαν προηγούµενα. Η επιλογή του συγκεκριµένου παραδείγµατος έγινε µε τρόπο που να αποτελεί πρότυπο ενός µικρού µέρους κώδικα του Προβλήµατος Χρονοπρογραµµατισµού που διαπραγµατεύεται η συγκεκριµένη διπλωµατική εργασία. Αρχικά θα δοθεί ο κώδικας του παραδείγµατος και στη συνέχεια θα διευκρινιστούν ορισµένα σηµεία αυτού. CSP csp = new CSP(); CSPDomain tuple_dom1=new TupleDomain(3); CSPDomain tuple_dom2=new TupleDomain(3); for(int x =1; x<6;x++) { for(int y=1;y<4;y++) { for(int z=0;z<3;z++) { Object values[] = new Object[3]; values[0] = new Integer(x); values[1] = new Integer(y); values[2] = new Integer(z); Tuple t = new Tuple(values,3); tuple_dom1.addelement(t); tuple_dom2.addelement(t); } } } CSPVariable v1=new CSPVariable(tuple_dom1,"var1"); csp.addvariable(v1); CSPVariable v2=new CSPVariable(tuple_dom2,"var2"); csp.addvariable(v2);

67 BC_ID_Equals bc1 = new BC_ID_Equals(); BC_ID_LessThanEquals bc2 = new BC_ID_LessThanEquals(); BC_TD_BinaryConstraint td_bc1 = new BC_TD_BinaryConstraint(bc1,1,2); csp.setconstraint(v1,v2,td_bc1); BC_TD_BinaryConstraint td_bc2 = new BC_TD_BinaryConstraint(bc2,1,3); csp.setconstraint(v1,v2,td_bc2); BC_TD_NotEquals td_bc3 = new BC_TD_NotEquals(); csp.setconstraint(v1,v2,td_bc3); UC_ID_NotEquals uc1 = new UC_ID_NotEquals(3); v1.setconstraint(new UC_TD_UnaryConstraint(uc1,1)); Solver s = (Solver) new FCSolver(csp); s.setsolutionmanager(new MySolutionManager()); s.setproblem(csp); s.setnumberofsolutionstofind(-1); System.out.println(problem.toString()); s.run(); Σύµφωνα µε τις παραπάνω εντολές του κώδικα αρχικά δηµιουργούνται δύο CSP µεταβλητές, v1 και v2, τα πεδία των οποίων αποτελούν τριάδες ακέραιων στοιχείων(tuples), µε πρώτο στοιχείο να παίρνει τιµές στο διάστηµα [1,5], δεύτερο στο διάστηµα [1,3] και τρίτο στο διάστηµα [0,2]. ίνοντας διαφορετικό όνοµα σε κάθε µία από τις µεταβλητές (var1 και var2) προστίθενται στο CSP πρόβληµα csp. Στη συνέχεια ορίζονται οι περιορισµοί ως αντικείµενα των αντίστοιχων κλάσεων, από τους οποίους οι δυαδικοί td_bc1 και td_bc2 αφορούν ζεύγη από τα στοιχεία των tuples των δύο

68 µεταβλητών, ο td_bc3 αναφέρεται στα στοιχεία των πεδίων των αντίστοιχων µεταβλητών ενώ ο µοναδιαίος uc1 αποδίδεται στη µεταβλητή v1. Οι τελευταίες γραµµές του κώδικα ορίζουν τον επιλυτή (Solver) του προβλήµατος και το διαχειριστή (SolutionManager) αυτού ενώ καθορίζεται να βρεθούν όλες οι λύσεις. Ως αποτέλεσµα του προγράµµατος αναµένεται να είναι για κάθε µεταβλητή τριάδες στοιχείων τέτοιες που να ικανοποιούν όλους τους περιορισµούς. 4.5 Επεκτάσεις της Βιβλιοθήκης JCL Σε γενικά πλαίσια οι δυνατότητες της βιβλιοθήκης JCL την καθιστούν σηµαντικό εργαλείο στη διαδικασία επίλυσης Προβληµάτων Βασισµένα σε Περιορισµούς. Το πλήθος των κλάσεων και µεθόδων που είναι ορισµένο επιτρέπουν την αναπαράσταση κάθε είδους περιορισµού µεταξύ των CSP µεταβλητών, των οποίων τα πεδία τιµών µπορεί να είναι οποιαδήποτε από τα τρία είδη που προαναφέρθηκαν. Παράλληλα όµως για τις απαιτήσεις του συγκεκριµένου Προβλήµατος Χρονοπρογραµµατισµού κρίθηκε απαραίτητο να γίνουν ορισµένες επεκτάσεις στη βιβλιοθήκη καθώς δεν ήταν δυνατή η αναπαράσταση όλων των σχέσεων µεταξύ των µεταβλητών µε τις ήδη υπάρχουσες κλάσεις. Οι επεκτάσεις έγιναν µε την έννοια του ορισµού νέων κλάσεων και της προσθήκης επιπλέον χαρακτηριστικών στις υπάρχουσες. Παρακάτω αναφέρονται οι επεκτάσεις που έλαβαν µέρος καθώς και ο σκοπός που υπηρετείται σε κάθε περίπτωση. Κλάση BC_ID_SCH_MOD Ο ορισµός της κλάσης "BC_ID_SCH_MOD" ως νέα κλάση της βιβλιοθήκης JCL έγινε προκειµένου να εκφραστεί ένας συγκεκριµένος περιορισµένος του προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής. Συγκεκριµένα στα πλαίσια του προγράµµατος µαθηµάτων τίθεται ο περιορισµός οι ηµέρες διδασκαλίας κάθε µαθήµατος να απέχουν µεταξύ τους τουλάχιστον δύο ηµέρες στην περίπτωση που το πλήθος των µπλοκ είναι µικρότερο ή ίσο µε το πλήθος των διαθέσιµων ηµερών διαιρεµένο µε το δύο, διαφορετικά η χρονική απόσταση να είναι ίση µε µία ηµέρα. Για παράδειγµα αν ο αριθµός των µπλοκ ενός µαθήµατος είναι 3 τότε ο περιορισµός µπορεί να εφαρµοστεί (εφόσον οι διαθέσιµες ηµέρες είναι 5) και οι ηµέρες διδασκαλίας του µαθήµατος να είναι η ευτέρα, η

69 Τετάρτη και η Παρασκευή. Κρίνεται επιπλέον απαραίτητο να αναφερθεί ότι οι ηµέρες και ώρες διδασκαλίας αναπαρίστανται µε έναν ακέραιο αριθµό που παίρνει τιµές από το 1 έως το 60 αντιστοιχίζοντας την τιµή 1 στην ηµέρα ευτέρα και ώρα το διάστηµα 9 µε 10 και συνεχίζοντας αυξητικά για όλα τα χρονικά διαστήµατα ηµερησίως (το τελευταίο είναι 20 µ.µ µε 21 µ.µ) και όλες τις ηµέρες της εβδοµάδας. Εποµένως για δύο µεταβλητές, d1 και d2, που αναπαριστούν την ηµέρα και ώρα ενός µπλοκ του ίδιου µαθήµατος η κάθε µια, και στις οποίες αντιστοιχούν τιµές από το σύνολο (1..60) η σχέση που τις συνδέει για να ικανοποιείται ο συγκεκριµένος περιορισµός είναι : d1 >= ((d2 mod 12)*12 +distance*12) όπου distance η απόσταση των ηµερών διδασκαλίας η οποία ισούται µε 2 στην πρώτη περίπτωση και 1 στη δεύτερη. Έστω για παράδειγµα ότι το πλήθος των µπλοκ του µαθήµατος Τεχνητή Νοηµοσύνη είναι 2 και η τιµή της µεταβλητής d1που αντιστοιχεί στο πρώτο µπλοκ είναι 7 δηλαδή αντιστοιχεί στην ηµέρα ευτέρα και στην ώρα 3-4 µ.µ. Για να ισχύει ο περιορισµός πρέπει να ανατεθεί στη µεταβλητή d2 (2 ο µπλοκ) τιµή µεγαλύτερη από ή ίση µε 24 δηλαδή το δεύτερο µπλοκ του µαθήµατος να διδάσκεται τη Τετάρτη, ή την Πέµπτη, ή την Παρασκευή, και σε οποιαδήποτε ώρα. Η µέθοδος ορισµού του αντικειµένου της κλάσης BC_ID_SCH_MOD είναι η εξής : BC_ID_SCH_MOD(int duration) δέχεται δηλαδή ως όρισµα έναν ακέραιο αριθµό που αντιστοιχεί στην απόσταση των ηµερών διδασκαλίας, όπου για το συγκεκριµένο περιορισµό του προβλήµατός µας δίνονται οι τιµές 1 και 2 για κάθε περίπτωση. Κλάση ScheduleSolutionManager Η κλάση "ScheduleSolutionManager" δηµιουργήθηκε για τον ορισµό ενός αντικειµένου που αναπαριστά τον ιαχειριστή Λύσης (Solution Manager) όµοιου µε αυτό της κλάσης MySolutionManager και διαφορά ως προς τον τρόπο παρουσίασης της λύσης. Συγκεκριµένα η µέθοδος "notifysolution(solution)" της κλάσης MySolutionManager επεκτάθηκε περιλαµβάνοντας το αντικείµενο current της κλάσης finalschedule και το οποίο καλώντας µεθόδους αυτής τοποθετεί σε πίνακα τα στοιχεία της λύσης Solution. Συγκεκριµένα κρατούνται στον πίνακα αυτόν το όνοµα κάθε µεταβλητής που αναπαριστά ένα µπλοκ µαθήµατος, η ηµέρα και ώρα διδασκαλίας αυτού καθώς και η κατάλληλη αίθουσα. Με τον τρόπο αυτό και µε µεθόδους που επιστρέφουν το εξάµηνο και τη διάρκεια κάθε µπλοκ

70 µαθήµατος (CSP µεταβλητή) γίνεται εύκολη η απεικόνιση της λύσης του προγράµµατος σε έναν πίνακα που αναπαριστά το πρόγραµµα µαθηµάτων χειµερινών ή εαρινών εξαµήνων. Κλάση UC_ID_NotEquals Η κλάση "UC_ID_NotEquals" είναι µία από τις υπάρχουσες κλάσεις της βιβλιοθήκης και εφαρµόζεται για να εκφραστεί ο περιορισµός: η τιµή µίας µεταβλητής είναι διάφορη µιας σταθερής ακέραιας τιµής. ηλαδή στην περίπτωση που πρέπει να αναπαρασταθεί µία σχέση της µορφής : x!=a, όπου x η µεταβλητή και a µια σταθερή τιµή, ορίζεται ένα αντικείµενο της κλάσης αυτής. Προκειµένου να εκφραστεί ο περιορισµός η τιµή µιας µεταβλητής συν µία σταθερή τιµή να είναι διάφορη µιας δεύτερης σταθερής ακέραιας τιµής έγινε επέκταση της κλάσης UC_ID_NotEquals προσθέτοντας τη µέθοδο ορισµού: UC_ID_NotEquals(int eq, int constant) όπου eq η σταθερή τιµή που βρίσκεται δεξιά του τελεστή!=, και constant η σταθερή τιµή που προστίθεται στη µεταβλητή. Στην περίπτωση αυτή το αντικείµενο της κλάσης εκφράζει σχέσεις της µορφής : x+ constant!= eq. Σκοπός της επέκτασης της συγκεκριµένης κλάσης αποτελεί η ανάγκη αναπαράστασης ενός περιορισµού του προβλήµατος Χρονοπρογραµµατισµού, και ο οποίος αναφέρεται στο γεγονός ότι η ώρα έναρξης κάθε µπλοκ µαθήµατος συν τη διάρκεια αυτού να µην υπερβαίνει το τελευταίο χρονικό διάστηµα (20-21 µ.µ) κάθε ηµέρας. Κλάση BC_ID_NotEquals Η κλάση "BC_ID_NotEquals" επεκτάθηκε µε τρόπο ανάλογο προς την επέκταση της παραπάνω κλάσης και σκοπός αυτής ήταν να εκφραστεί ο δυαδικός περιορισµός: η ακέραια τιµή µιας µεταβλητής συν µια σταθερή τιµή να είναι διάφορη της τιµής µίας δεύτερης µεταβλητής. Με τον τρόπο αυτό το αντικείµενο της κλάσης είναι δυνατό να αναπαριστά σχέσεις της µορφής : x+a!= y, όπου x και y δύο µεταβλητές και a µία σταθερή τιµή. Προκειµένου να εκφραστεί ο περιορισµός αυτής της µορφής προστέθηκε στην κλάση BC_ID_NotEquals η εξής µέθοδος ορισµού : BC_ID_NotEquals(int constant) µε constant να αντιστοιχεί στη σταθερά που προστίθεται στην πρώτη µεταβλητή. Σκοπός της συγκεκριµένης επέκτασης αποτελεί η ανάγκη αναπαράστασης ενός περιορισµού του προβλήµατος Χρονοπρογραµµατισµού που αναφέρεται στη µη επικάλυψη δύο

71 µαθηµάτων του ίδιου εξαµήνου. Συγκεκριµένα η σχέση που πρέπει να ισχύει είναι ότι η ώρα έναρξης του πρώτου µαθήµατος συν τη διάρκεια αυτού να µην υπερβαίνει την ώρα έναρξης του δεύτερου µαθήµατος. Οι παραπάνω επεκτάσεις έκαναν δυνατή την αναπαράσταση κάθε είδους σχέσης µεταξύ των µεταβλητών του προβλήµατος Χρονοπρογραµµατισµού που αναλύεται στα πλαίσια αυτής της διπλωµατικής εργασίας, χωρίς παράλληλα να περιορίζουν την εφαρµογή τους σε άλλα Προβλήµατα Ικανοποίησης Περιορισµών. 4.6 Γενικά Η Βιβλιοθήκη Επίλυσης Περιορισµών JCL αποτελεί ένα σηµαντικό εργαλείο της αντικειµενοστραφούς γλώσσας προγραµµατισµού Java καθιστώντας εύκολη την αναπαράσταση και επίλυση κάθε τύπου δυαδικών και µοναδιαίων περιορισµών µεταξύ των µεταβλητών ενός CSP προβλήµατος.

72 Κεφάλαιο 5 Επίλυση του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής 5.1 Εισαγωγή Το Κεφάλαιο 5 περιγράφει την υλοποίηση του προγράµµατος "JU_Schedule", το οποίο επιλύει το πρόβληµα του Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής της Σχολής Θετικών Επιστηµών του Αριστοτελείου Πανεπιστηµίου Θεσσαλονίκης. Συγκεκριµένα το πρόγραµµα "JU_Schedule" συντάσσει τα προγράµµατα µαθηµάτων των χειµερινών και εαρινών εξαµήνων και αποτελεί το βασικό πρότυπο για τη δηµιουργία των προγραµµάτων εξετάσεων περιόδων Ιανουαρίου, Ιουνίου και Σεπτεµβρίου. Το πρόγραµµα είναι υλοποιηµένο στη γλώσσα Αντικειµενοστραφούς Προγραµµατισµού Java και χρησιµοποιεί τη βιβλιοθήκη επίλυσης περιορισµών JCL, ενώ η σύνταξη του έγινε στο πλήρες πρόγραµµα Sun ONE Studio 4 CE. Επίσης για τη δηµιουργία του γραφικού περιβάλλοντος του προγράµµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής χρησιµοποιήθηκε το ενσωµατωµένο εργαλείο του Sun ONE Studio 4 CE που υποστηρίζει την κατασκευή MDI (Multiple Document Interface) εφαρµογών δηλαδή µοντέλων της µορφής των παραθυρικών συστηµάτων ενός παραδοσιακού υπολογιστή. Στις επόµενες ενότητες περιγράφεται η µορφή της Γραφικής ιεπιφάνειας Χρήστη (GUI ή Graphical User Interface) για το συγκεκριµένο πρόβληµα χρονοπρογραµµατισµού, ο τρόπος αναπαράστασης των δεδοµένων του προβλήµατος, ο τρόπος αναπαράστασης του ίδιου του προβλήµατος, η υλοποίηση αυτού και η µορφή των αποτελεσµάτων.

73 5.2 Περιγραφή Γραφικού Περιβάλλοντος Το γραφικό περιβάλλον του προγράµµατος που επιλύει το πρόβληµα χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής είναι το αρχείο GUIwindow.java και αποτελείται από ένα γενικό πλαίσιο (Frame) δηλαδή ένα παράθυρο, µία γραµµή µενού (Menu Bar) και εσωτερικά παράθυρα (Ιnternal Frame) για το διαχωρισµό των πεδίων που εξυπηρετούν στην εισαγωγή των δεδοµένων από τον χρήστη. Αρχικά ζητείται από το χρήστη να επιλέξει το είδος του προγράµµατος µαθηµάτων που επιθυµεί. Η επιλογή "Πρόγραµµα Χειµερινών Εξαµήνων" αντιστοιχεί στο πρόγραµµα µαθηµάτων του πρώτου, τρίτου, πέµπτου και έβδοµου εξαµήνου ενώ η επιλογή "Πρόγραµµα Εαρινών Εξαµήνων" στο πρόγραµµα του δεύτερου, τέταρτου, έκτου και όγδοου εξαµήνου αντίστοιχα. Η κάθε επιλογή του χρήστη συνοδεύεται από την εισαγωγή των απαραίτητων δεδοµένων που αφορούν τα µαθήµατα των εξαµήνων, τους καθηγητές του τµήµατος Πληροφορικής και τις αίθουσες της σχολής. Για κάθε ένα από τα πεδία αυτά δίνονται κάποιες φόρµες που πρέπει να συµπληρωθούν, ώστε τα στοιχεία αυτά να αποτελούν τα δεδοµένα του προβλήµατος. Συγκεκριµένα ο χρήστης επιλέγοντας ένα από τα κουµπιά "ΜΑΘΗΜΑΤΑ", "ΚΑΘΗΓΗΤΕΣ", "ΑΙΘΟΥΣΕΣ" κάθε φορά εµφανίζεται η κατάλληλη φόρµα που αποτελείται από πεδία κειµένου (TextField), λίστες (ComboBox), πίνακες (List), κουµπιά επιλογής (Button), τα οποία περιέχουν στοιχεία ανάλογα του πεδίου που έχει επιλεγεί. Μετά την εισαγωγή των δεδοµένων από το χρήστη η έξοδος του προγράµµατος δίνει τη λύση του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής επιλέγοντας ο χρήστης το κουµπί "ΑΠΟΤΕΛΕΣΜΑΤΑ". Ένα καινούργιο παράθυρο εµφανίζεται το οποίο περιέχει το πρόγραµµα µαθηµάτων που επέλεξε ο χρήστης µε τη µορφή πίνακα του οποίου οι γραµµές αντιστοιχούν στις ώρες διδασκαλίας των µαθηµάτων και οι στήλες στις πέντε ηµέρες της εβδοµάδας. Η θέση µέσα στον πίνακα κάθε µαθήµατος δίνει την ηµέρα και ώρα διδασκαλίας αυτού ενώ η αίθουσα στην οποία θα διεξαχθεί αναγράφεται κάτω από το όνοµα κάθε µαθήµατος. Στη συνέχεια περιγράφονται αναλυτικά τα τρία παραπάνω πεδία των οποίων τα στοιχεία αποτελούν τα δεδοµένα του προβλήµατος.

74 5.2.1 Πεδίο "ΜΑΘΗΜΑΤΑ" Το πεδίο "ΜΑΘΗΜΑΤΑ" αναπαριστά τα δεδοµένα για το κάθε µάθηµα περιέχοντας στοιχεία που χαρακτηρίζουν και διακρίνουν τα µαθήµατα όλων των εξαµήνων. Τέτοια στοιχεία είναι το όνοµα του µαθήµατος, το εξάµηνο, ο αριθµός των φοιτητών που έχει δηλώσει το µάθηµα, ο καθηγητής του θεωρητικού µέρους του µαθήµατος, ο καθηγητής του εργαστηριακού µέρους αυτού, το πλήθος των µπλοκ του κάθε τµήµατος και πιο συγκεκριµένα οι ώρες ανά µπλοκ. Τα αντίστοιχα πεδία τα οποία αποτελούν είτε λίστες επιλογής είτε περιοχές εισαγωγής κειµένου είναι τα : "ΜΑΘΗΜΑ", "ΕΞΑΜΗΝΟ", "ΑΡΙΘΜΟΣ ΦΟΙΤΗΤΩΝ", ΚΑΘΗΓΗΤΗΣ ΘΕΩΡΙΑΣ", "ΚΑΘΗΓΗΤΗΣ ΕΡΓΑΣΤΗΡΙΟΥ", "ΩΡΕΣ ΘΕΩΡΙΑΣ", "ΩΡΕΣ/Α BLOCK", "ΩΡΕΣ/Β BLOCK", "ΩΡΕΣ/Γ BLOCK", "ΩΡΕΣ ΕΡΓΑΣΤΗΡΙΟΥ", "ΩΡΕΣ/Α BLOCK", "ΩΡΕΣ/Β BLOCK". Μετά τη συµπλήρωση των πεδίων τα δεδοµένα προστίθενται στον κατάλληλο πίνακα, ο οποίος αποτελείται από υποπίνακες σε πλήθος ίσο µε το σύνολο των µαθηµάτων που εισήγαγε ο χρήστης και θα αναλυθεί στην ενότητα της καταχώρησης των δεδοµένων. Η διαδικασία της συµπλήρωσης της φόρµας γίνεται από το χρήστη για όλα τα µαθήµατα των εξαµήνων τα οποία αποτελούν το πρόγραµµα µαθηµάτων που επιθυµεί Πεδίο "ΚΑΘΗΓΗΤΕΣ" Το πεδίο "ΚΑΘΗΓΗΤΕΣ" αναπαριστά τα δεδοµένα για τους καθηγητές του τµήµατος Πληροφορικής και τα στοιχεία που εισάγει ο χρήστης αντιστοιχούν στο όνοµα του κάθε καθηγητή και στις ηµέρες και ώρες που αυτός δεν είναι διαθέσιµος. Τα στοιχεία αυτά εισάγονται στα πεδία µε ετικέτες "ΟΝΟΜΑ" και "ΗΜΕΡΕΣ ΚΑΙ ΩΡΕΣ ΠΟΥ ΕΝ ΕΙΝΑΙ ΙΑΘΕΣΙΜΟΣ" και τα οποία αποτελούν λίστες επιλογής µε τα ονόµατα όλων των καθηγητών του τµήµατος και τις διαθέσιµες ηµέρες και ώρες διδασκαλίας αντίστοιχα. Όταν ο χρήστης συµπληρώσει τα στοιχεία για κάθε καθηγητή προστίθενται τα δεδοµένα στον κατάλληλο πίνακα ο οποίος αποτελείται από υποπίνακες έναν για κάθε καθηγητή και για τον οποίο θα γίνει αναφορά στην ενότητα της καταχώρησης των δεδοµένων του προβλήµατος.

75 5.2.3 Πεδίο "ΑΙΘΟΥΣΕΣ" Το πεδίο "ΑΙΘΟΥΣΕΣ" αναπαριστά τα δεδοµένα των αιθουσών του Τµήµατος Πληροφορικής στις οποίες διδάσκονται τα µαθήµατα και διακρίνονται σε αυτές που είναι κατάλληλες για το θεωρητικό µέρος των µαθηµάτων και στις ειδικά εξοπλισµένες που αποτελούν τα εργαστήρια της σχολής. Ο χρήστης εισάγει για κάθε αίθουσα το όνοµά της, την χωρητικότητά της, τον τύπο της, δηλαδή αν είναι εργαστήριο ή όχι, και τις ηµέρες και ώρες που αυτή δεν είναι διαθέσιµη, στα πεδία µε ετικέτες "ΟΝΟΜΑ", "ΕΡΓΑΣΤΗΡΙΟ", "ΧΩΡΗΤΙΚΟΤΗΤΑ" και "ΗΜΕΡΕΣ ΚΑΙ ΩΡΕΣ ΠΟΥ ΕΝ ΕΙΝΑΙ ΙΑΘΕΣΙΜΗ" αντίστοιχα. Μετά τη συµπλήρωση των παραπάνω πεδίων τα δεδοµένα καταχωρούνται σε πίνακα ανάλογο µε τους πίνακες που δηµιουργούνται για την πρόσθεση των στοιχείων που αναπαριστούν τα µαθήµατα και τους καθηγητές που εισάγονται από το χρήστη. Πρέπει επίσης να σηµειωθεί ότι η καταχώρηση οποιουδήποτε µαθήµατος, καθηγητή ή αίθουσας περισσότερες από µία φορές είναι αδύνατη καθώς σε κάθε τέτοια περίπτωση ενηµερώνεται ο χρήστης µε κατάλληλο µήνυµα λάθους αποφεύγοντας µε τον τρόπο αυτό πιθανά προβλήµατα κατά την επίλυση του προβλήµατος. 5.3 Αναπαράσταση των εδοµένων του Προβλήµατος Την εισαγωγή των δεδοµένων από το χρήστη, µε τον τρόπο που περιγράφηκε προηγούµενα, ακολουθεί η καταχώρηση αυτών σε κατάλληλους πίνακες (Vectors) σε µορφή που αναλύεται στη συνέχεια. Τα δεδοµένα των µαθηµάτων, των καθηγητών και των αιθουσών αναπαριστώνται µε τον ίδιο τρόπο κάνοντας χρήση της κλάσης Vector της γλώσσας Java καθώς αυτή αντιστοιχεί σε µία από τις βασικές δοµές δεδοµένων και αποτελεί έναν επεκτάσιµο πίνακα αντικειµένων. Κάθε φορά που συµπληρώνεται το ανάλογο πεδίο δηµιουργείται ένας πίνακας που περιέχει τα στοιχεία που εισήγαγε ο χρήστης για ένα συγκεκριµένο µάθηµα, καθηγητή ή µία συγκεκριµένη αίθουσα. Η αναπαράσταση των δεδοµένων αυτών γίνεται για κάθε ένα από τα πεδία µε τους επόµενους πίνακες :

76 Πίνακας "Lesson" Αναπαριστά ένα µάθηµα όπου τα αντικείµενα που περιέχει αντιστοιχούν µε τη σειρά που αναφέρονται στο εξάµηνο στο οποίο ανήκει, στο όνοµα του, στο πλήθος των φοιτητών που το έχουν δηλώσει, στον καθηγητή του θεωρητικού τµήµατός του, στον καθηγητή του εργαστηριακού µέρους του, στις ώρες ανά θεωρητικό µπλοκ και στις ώρες ανά εργαστηριακό µπλοκ. Το εξάµηνο του µαθήµατος αναπαρίσταται µε ένα αλφαριθµητικό (string) και η τιµή του αντιστοιχεί σε ένα από τα εξάµηνα, πρώτο (µε τιµή "1ο"), δεύτερο (µε τιµή "2ο"), µέχρι την τιµή "8ο" για το όγδοο εξάµηνο. Το όνοµα του µαθήµατος, και οι καθηγητές των θεωρητικών και εργαστηριακών τµηµάτων είναι επίσης αλφαριθµητικά ενώ το πλήθος των φοιτητών είναι ένας ακέραιος στο διάστηµα [1,400]. Το έκτο και έβδοµο αντικείµενο του πίνακα Lesson είναι πίνακες που περιέχουν τις ώρες (εβδοµαδιαίως) κάθε µπλοκ του µαθήµατος, θεωρητικού και εργαστηριακού αντίστοιχα, και περιέχουν ακέραιες τιµές. Έστω ένα µάθηµα µε τέσσερις θεωρητικές και δύο εργαστηριακές ώρες την εβδοµάδα, του οποίου η θεωρία διασπάται σε δύο µπλοκ διάρκειας µίας και τριών ωρών αντίστοιχα ενώ το εργαστηριακό µάθηµα αποτελεί ένα δίωρο µπλοκ. Η αναπαράσταση των µπλοκ γίνεται µε τους εξής πίνακες: [3,1] για τα θεωρητικά µπλοκ και [2] για το εργαστηριακό. Σε περίπτωση που δεν υπάρχει κάποιο ή ορισµένα από τα µπλοκ οποιουδήποτε τµήµατος του µαθήµατος ο χρήστης εισάγει την τιµή µηδέν η οποία όµως κατά την αναπαράσταση των δεδοµένων δεν εισάγεται στους αντίστοιχους πίνακες. Εποµένως αν κάποιο µάθηµα δεν έχει εργαστηριακά µπλόκ ο αντίστοιχος πίνακας θα είναι κενός και το µέγεθος αυτού θα είναι µηδέν. Με τον τρόπο αυτό κάθε εισαγωγή µαθήµατος από το χρήστη θα έχει τη µορφή [εξάµηνο, όνοµα, αριθµός_φοιτητών, καθηγητής_θωρίας, καθηγητής_εργαστηρίου, [ώρες/µπλοκ_θεωρίας], [ώρες/µπλοκ_εργαστηρίου]]. Έστω για παράδειγµα το µάθηµα «ιαδίκτυα», το οποίο ανήκει στο έκτο εξάµηνο, έχει τέσσερις θεωρητικές και δύο εργαστηριακές ώρες µε διάρκεια ανά µπλόκ όπως στο παραπάνω παράδειγµα, καθηγητής του θεωρητικού µέρους είναι ο Γ.Παπαδηµητρίου και του εργαστηριακού η Α.Βακάλη ενώ το πλήθος των φοιτητών που το έχουν δηλώσει είναι 78. Σύµφωνα µε τα προηγούµενα το συγκεκριµένο µάθηµα αναπαρίσταται µε τη µορφή του πίνακα "Lesson" ως εξής: [ 1ο, ιαδίκτυα, 78, Γ.Παπαδηµητρίου, Α.Βακάλη, [3,1], [2] ].

77 Πίνακας "Professor" Αναπαριστά έναν καθηγητή ενώ τα αντικείµενα που περιέχει αντιστοιχούν µε τη σειρά στο όνοµα του καθηγητή και στις ηµέρες και ώρες που δεν είναι διαθέσιµος. Συγκεκριµένα το όνοµα είναι ένα αλφαριθµητικό ενώ το δεύτερο αντικείµενο του πίνακα είναι ένας πίνακας µε ακέραιες τιµές στο διάστηµα [1,60] καθώς κάθε διάστηµα µίας ώρας αντιστοιχεί σε έναν ακέραιο ξεκινώντας από την τιµή 1 για το διάστηµα 9-10 π.µ και ηµέρα ευτέρα και συνεχίζοντας αυξάνοντας κατά ένα για όλα τα διαστήµατα ηµερισίως (9π.µ. 9µ.µ.). Έστω για παράδειγµα ο καθηγητής Ι.Πήτας ο οποίος δεν είναι διαθέσιµος τη ευτέρα από τις 9 π.µ. έως τις 2 µ.µ και την Πέµπτη από τις 11 π.µ. έως τις 16 µ.µ. Σύµφωνα µε τα παραπάνω αναπαρίσταται µε τη µορφή του πίνακα "Professor" ως εξής : [ Ι.Πήτας, [1,2,3,4,5,39,40,41,42,43] ]. Πίνακας "Room" Αναπαριστά µία αίθουσα, ενώ τα στοιχεία που την χαρακτηρίζουν και αποτελούν τα αντικείµενα του πίνακα Room είναι µε τη σειρά, το όνοµα της αίθουσας, το είδος της, η χωρητικότητά της και οι ηµέρες και ώρες που δεν είναι διαθέσιµη. Το δεύτερο αντικείµενο µπορεί να πάρει µία από τις τιµές "YES" αν η αίθουσα του πρώτου αντικειµένου είναι εργαστήριο και "NO" στην αντίθετη περίπτωση. Η χωρητικότητα εκφράζεται µε έναν ακέραιο αριθµό στο διάστηµα [1,400] ενώ το τελευταίο αντικείµενο είναι ένας πίνακας όµοιος µε τον αντίστοιχο πίνακα που χρησιµοποιείται στην αναπαράσταση των δεδοµένων για κάθε καθηγητή. Για παράδειγµα αν ο χρήστης εισάγει την αίθουσα PcLab η οποία είναι εργαστήριο, είναι χωρητικότητας 40 ατόµων και δεν είναι διαθέσιµη κάθε µέρα από τις 15 µ.µ. µέχρι τις 17 µ.µ. θα αναπαρασταθεί µε τη µορφή του πίνακα "Room" ως εξής : [ PcLab, YES, 40, [7,8,19,20,31,32,43,44,55,56] ]. Γενικά, ο χρήστης συµπληρώνει τη φόρµα που αντιστοιχεί στην επιλογή ΜΑΘΗΜΑΤΑ τόσες φορές όσο είναι το πλήθος των µαθηµάτων του προγράµµατος που επιθυµεί δηµιουργώντας κάθε φορά έναν πίνακα "Lesson" για κάθε εισαγωγή µαθήµατος. Την ίδια διαδικασία ακολουθεί για τα δεδοµένα όλων των καθηγητών και των αιθουσών δηµιουργώντας τους αντίστοιχους πίνακες "Professor" και "Room" µετά την εισαγωγή κάθε καθηγητή και κάθε αίθουσας.

78 5.4 Καταχώρηση των εδοµένων του Προβλήµατος Στην προηγούµενη ενότητα περιγράφηκε η µορφή που παίρνουν τα δεδοµένα που εισάγει ο χρήστης στο γραφικό περιβάλλον της εφαρµογής δηµιουργώντας πίνακες για τα στοιχεία των µαθηµάτων, των καθηγητών και των αιθουσών. Για την οµαδοποίηση των δεδοµένων που αφορούν τα µαθήµατα που εισάγονται δηµιουργείται ο πίνακας "LessonsVector" του οποίου αντικείµενα είναι οι πίνακες που κρατούν τα στοιχεία κάθε µαθήµατος και δηµιουργούνται κατά την συµπλήρωση των αντίστοιχων πεδίων από το χρήστη. Με όµοιο τρόπο δηµιουργείται ο πίνακας "ProfessorsVector" ο οποίος αποτελείται από τόσους πίνακες "Professor" όσοι και οι καθηγητές για τους οποίους εισήγαγε ο χρήστης στοιχεία, ενώ οι πίνακες "Room" προσθέτονται στον πίνακα "RoomsVector". Οι τρεις πίνακες που αναφέρθηκαν ορίζονται µέσα στην κλάση " SCHproblem" και γίνεται προσπέλαση σε αυτούς µέσω ενός αντικειµένου της κλάσης που δηµιουργείται στο σηµείο ορισµού των περιορισµών του προγράµµατος. Ο λόγος που γίνεται χρήση αντικειµένων της κλάσης Vector είναι ότι αυτή υλοποιεί επεκτάσιµους πίνακες, σε αντίθεση µε τους παραδοσιακούς πίνακες της Java,και στους οποίους οµαδοποιούνται στοιχεία διαφορετικών µεταξύ τους τύπων. Κατά την υλοποίηση του προβλήµατος και για την επεξεργασία των δεδοµένων γίνεται προσπέλαση στους πίνακες "LessonsVector", "ProfessorsVector" και "RoomsVector" χρησιµοποιώντας βασικές µεθόδους της κλάσης Vector και οι τιµές που επιστρέφουν είναι επίσης αντικείµενα της ίδιας κλάσης. 5.5 Αναπαράσταση του Προβλήµατος Σύµφωνα µε τη Γραφική ιεπιφάνεια Χρήστη και τον τρόπο αναπαράστασης των δεδοµένων που εισάγει ο χρήστης η επίλυση του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής αποτελείται από τις ακόλουθες φάσεις : Εισαγωγή των δεδοµένων και κωδικοποίηση αυτών στους αντίστοιχους πίνακες "Lesson", "Professor" και "Room". ηµιουργία των πινάκων "LessonsVector", "ProfessorsVector" και "RoomsVector" στους οποίους οµαδοποιούνται οι αντίστοιχοι πίνακες που ορίστηκαν στο προηγούµενο βήµα.

79 Ορισµός του CSP προβλήµατος και των µεταβλητών αυτού (CSPVariables) µε τρόπο που περιγράφηκε στο προηγούµενο κεφάλαιο. Συγκεκριµένα δηµιουργούνται τόσες µεταβλητές όσα τα θεωρητικά και εργαστηριακά µπλοκ κάθε µαθήµατος και οι τιµές αυτών αναπαρίστανται ως δυάδες στοιχείων (tuples) όπου το πρώτο αντιστοιχεί στην ηµέρα και ώρα διδασκαλίας του κάθε µπλοκ και το δεύτερο στην κατάλληλη αίθουσα. ήλωση των περιορισµών, που περιγράφηκαν σε προηγούµενο κεφάλαιο, από τους οποίους οι δυαδικοί προστίθενται στο CSP πρόβληµα και οι µοναδιαίοι στις µεταβλητές αυτού. Ορισµός του Επιλυτή (Solver) και του ιαχειριστή Λύσεων (Solution Manager) του προβλήµατος σύµφωνα µε τον τρόπο που αναλύθηκε στο Κεφάλαιο 4, και οι οποίοι καθορίζουν το πλήθος των λύσεων που θα δώσει στην έξοδο το πρόγραµµα. Εµφάνιση των αποτελεσµάτων. Στις επόµενες ενότητες περιγράφεται αναλυτικά η κατασκευή των προγραµµάτων χειµερινών και εαρινών εξαµήνων τα οποία αποτελούν τη λύση του προβλήµατος χρονοπρογραµµατισµού δηλαδή τις τιµές των µεταβλητών που ικανοποιούν όλους του περιορισµούς που ορίσθηκαν για το συγκεκριµένο πρόβληµα. 5.6 Υλοποίηση του Προβλήµατος Η υλοποίηση του συγκεκριµένου προβλήµατος χρονοπρογραµµατισµού διακρίνεται στις φάσεις διαβάσµατος των δεδοµένων του προβλήµατος και επεξεργασίας αυτών µε την πρόσθεση των κατάλληλων περιορισµών. Στις υποενότητες που ακολουθούν περιγράφονται αναλυτικά οι λειτουργίες αυτές Εισαγωγή των εδοµένων του Προβλήµατος Τα βήµατα της κωδικοποίησης των δεδοµένων και της πρόσθεσης αυτών στους πίνακες LessonsVector, ProfessorsVector και RoomsVector γίνονται µε την εισαγωγή αυτών στις αντίστοιχες φόρµες του γραφικού περιβάλλοντος της εφαρµογής. Προκειµένου να είναι δυνατή η πρόσθεση κάθε πίνακα, που αντιστοιχεί στο µάθηµα, στον καθηγητή ή στην αίθουσα που εισήγαγε ο

80 χρήστης στον αντίστοιχο πίνακα από τους τρεις παραπάνω ορίζεται η κλάση SCHproblem στην οποία δηµιουργούνται οι πίνακες LessonsVector, ProfessorsVector, RoomsVector και οι κατάλληλες µέθοδοι για το σκοπό αυτό. Εποµένως στο πρόγραµµα GUIwindow ορίζεται το αντικείµενο Ρ της κλάσης αυτής και χρησιµοποιείται στις µεθόδους που περιγράφονται παρακάτω για την κλήση των µεθόδων της κλάσης SCHproblem. LessonsData Καλείται όταν ο χρήστης συµπληρώσει το πεδίο "ΣΤΟΙΧΕΙΑ ΜΑΘΗΜΑΤΩΝ" της εφαρµογής και ορίζει ένα αντικείµενο της κλάσης Lesson δηµιουργώντας τον αντίστοιχο πίνακα για το κάθε µάθηµα και του οποίου στοιχεία είναι αυτά που συµπλήρωσε ο χρήστης στη φόρµα. Ο πίνακας αυτός προστίθεται στον πίνακα LessonsVector καλώντας τη µέθοδο addlessons της κλάσης SCHproblem στο αντικείµενο Ρ. Επίσης στη µέθοδο αυτή γίνεται ο έλεγχος µη επιτρεπτών καταχωρήσεων και διπλών εγγραφών του ίδιου µαθήµατος εµφανίζοντας τα κατάλληλα µηνύµατα λάθους. Professors Data Καλείται µε την εισαγωγή των δεδοµένων στο πεδίο "ΣΤΟΙΧΕΙΑ ΚΑΘΗΓΗΤΩΝ" και ορίζει ένα αντικείµενο της κλάσης Professor το οποίο αναπαριστά τον πίνακα στοιχείων του καθηγητή που εισήγαγε ο χρήστης. Στη συνέχεια για την πρόσθεσή του στον πίνακα ProfessorsVector ο πίνακας αυτός δίνεται ως όρισµα στην κλήση της µεθόδου addprofs στο αντικείµενο Ρ της κλάσης SCHproblem. RoomsData Η µέθοδος αυτή καλείται όταν ο χρήστης συµπληρώνει τη φόρµα του πεδίου "ΣΤΟΙΧΕΙΑ ΑΙΘΟΥΣΩΝ" και δηµιουργεί ένα αντικείµενο της κλάσης Room που αναπαριστά τον πίνακα στοιχείων της αίθουσας που εισάγεται κάθε φορά. Για την πρόσθεση του πίνακα αυτού στον πίνακα RoomsVector καλείται η αντίστοιχη µέθοδος addrooms στο αντικείµενο Ρ της κλάσης SCHproblem. Σύµφωνα µε τα παραπάνω µετά τη διαδικασία της εισαγωγής των δεδοµένων από τον χρήστη βρίσκονται όλα οµαδοποιηµένα στους πίνακες LessonsVector, ProfessorsVector και RoomsVector της κλάσης SCHproblem, επιτρέποντας να γίνεται πρόσβαση σε αυτούς και στους πίνακες που περιέχουν µε τον ορισµό ενός αντικειµένου της κλάσης αυτής. Η επεξεργασία των δεδοµένων για τη υλοποίηση της επίλυσης του προβλήµατος χρονοπρογραµµατισµού το οποίο ανάγεται σε πρόβληµα

81 CSP γίνεται σε µία νέα κλάση που ορίζεται στο πρόγραµµα, και η οποία περιγράφεται στην επόµενη υποενότητα Πρόσθεση Περιορισµών Τα βήµατα του ορισµού του CSP προβλήµατος, των µεταβλητών αυτού και των κατάλληλων περιορισµών γίνονται στην κλάση "Schedule", της οποίας το αντικείµενο ορίζεται όταν ο χρήστης επιλέξει το κουµπί "ΑΠΟΤΕΛΕΣΜΑΤΑ" µετά την καταχώρηση όλων των δεδοµένων. Με τη σειρά οι λειτουργίες που εκτελούνται περιγράφονται παρακάτω : o Ορίζεται το αντικείµενο της κλάσης CSP µε όνοµα csp και το οποίο αναπαριστά το CSP πρόβληµα. o Ορίζεται η µέθοδος "addconstraints" στο σώµα της οποίας δηµιουργούνται οι CSP µεταβλητές και τα πεδία τιµών αυτών, ενώ ο ορισµός των περιορισµών γίνεται µε κλήση των αντίστοιχων µεθόδων που δηµιουργούνται κάτω από το σώµα της µεθόδου αυτής στον κώδικα. o Ορίζονται επιπλέον βοηθητικές µέθοδοι των οποίων οι τιµές επιστροφής χρησιµοποιούνται στις ενέργειες της µεθόδου addconstraints. o Ορίζεται η µέθοδος "Solve_Problem" στην οποία δηµιουργούνται τα αντικείµενα των κλάσεων "Solver" και "ScheduleSolutionManager" που αναπαριστούν τον Επιλυτή και τον ιαχειριστή Λύσεων του προβλήµατος CSP αντίστοιχα. Στη συνέχεια περιγράφονται αναλυτικά οι µέθοδοι της κλάσης Schedule ενώ τα ονόµατα που χρησιµοποιούνται είναι όπως αυτά έχουν οριστεί στον κώδικα του προγράµµατος Μέθοδος "addconstraints" Στη µέθοδο addconstraints της κλάσης "Schedule" ορίζονται τα στοιχεία που χαρακτηρίζουν το CSP πρόβληµα δηλαδή οι µεταβλητές και οι περιορισµοί αυτού. Η προσπέλαση στους πίνακες της κλάσης SCHproblem γίνεται µε τον ορισµό του αντικειµένου schp αυτής το οποίο περνάει σαν όρισµα στη µέθοδο addconstraints. Οι ενέργειες που γίνονται ακολουθούν το εξής µοντέλο :

82 ιαβάζεται ο πίνακας "LessonsVector" και για κάθε στοιχείο του που αναπαριστά ένα µάθηµα ορίζονται οι µεταβλητές και τα πεδία τιµών αυτών. Συγκεκριµένα ορίζονται τα πεδία τιµών να αποτελούνται από δυάδες στοιχείων (tuples) από τα οποία το πρώτο αναπαριστά την ηµέρα και ώρα διδασκαλίας του µαθήµατος και το δεύτερο την αίθουσα αυτού. ηµιουργούνται δύο τέτοια πεδία τιµών (TupleDomain) για τις µεταβλητές των θεωρητικών και των εργαστηριακών µπλοκ κάθε µαθήµατος µε ονόµατα subject_th_tuple και subject_lab_tuple αντίστοιχα. Για τη δηµιουργία των δυάδων που συγκροτούν τα πεδία τιµών διαβάζεται ο πίνακας "RoomsVector" και προσπελαύνεται κάθε στοιχείο αυτού (πίνακας Room) που αναπαριστά µία αίθουσα. Στη συνέχεια ελέγχεται ο τύπος της αίθουσας ώστε αν δεν είναι εργαστήριο να προστίθεται ως δεύτερο στοιχείο στις δυάδες του πεδίου τιµών subject_th_tuple. Στην περίπτωση που η αίθουσα είναι εργαστήριο προστίθεται αυτή στη δεύτερη θέση των tuples του πεδίου subject_lab_tuple. Πρέπει επίσης να σηµειωθεί ότι και στα δύο πεδία τιµών το πρώτο στοιχείο των δυάδων είναι ένας ακέραιος στο διάστηµα [1..60] για τον οποίο έχει εξηγηθεί η ερµηνεία του σε προηγούµενη ενότητα. Στη συνέχεια ορίζονται για κάθε µάθηµα τόσες µεταβλητές όσο και το πλήθος των µπλοκ θεωρίας και εργαστηρίου (εφόσον έχει) ενώ τα πεδία τιµών που τους ανατίθενται είναι το subject_th_tuple ή το subject_lab_tuple ανάλογα µε το αν οι µεταβλητές αναπαριστούν το θεωρητικό µέρος του µαθήµατος ή το εργαστηριακό. Επιπλέον το όνοµα κάθε µεταβλητής αποτελείται από το όνοµα του αντίστοιχου µαθήµατος, το χαρακτήρα "_", το συνθετικό "Theory" αν αυτή αντιστοιχεί σε θεωρητικό µπλοκ ή "Lab" αν αντιστοιχεί σε εργαστηριακό και έναν ακέραιο που δηλώνει ποιο µπλοκ αναπαριστά η µεταβλητή. Έστω για παράδειγµα το µάθηµα Prolong που αποτελείται από 2 θεωρητικά µπλοκ και 1 εργαστηριακό οι µεταβλητές αυτού όπως ορίζονται στη µέθοδο "addconstraints" είναι της µορφής Prolong_Theory1, Prolong_Theory2, Prolong_Lab1 από τις οποίες το πεδίο τιµών των δύο πρώτων είναι το subject_th_tuple ενώ της τρίτης το subject_lab_tuple. Εφόσον έχουν οριστεί οι µεταβλητές του µαθήµατος αυτές προστίθενται στο CSP πρόβληµα δηλαδή στο αντικείµενο "csp". Επιπλέον δηµιουργούνται τρεις πίνακες για τις µεταβλητές κάθε µαθήµατος από τους οποίους ο Theory_Blocks_Array περιέχει τις µεταβλητές που αντιστοιχούν στα θεωρητικά µπλοκ του µαθήµατος, ο Lab_Blocks_Array αυτές των εργαστηριακών µπλοκ και ο Blocks_Array το σύνολο των µεταβλητών που ορίζονται για κάθε µάθηµα.

83 Όταν έχει ολοκληρωθεί ο ορισµός των µεταβλητών κάθε µαθήµατος δηλώνονται οι µοναδιαίοι περιορισµοί που αφορούν τα µπλοκ του µαθήµατος, ενώ οι δυαδικοί περιορισµοί που τίθενται µεταξύ όλων των µαθηµάτων του πίνακα "LessonsVector" θα οριστούν στη συνέχεια και όταν όλες οι µεταβλητές (όλων των µαθηµάτων) έχουν προστεθεί στο πρόβληµα. Ο ορισµός των περιορισµών γίνεται σε µεθόδους (δηµιουργία µίας µεθόδου για κάθε περιορισµό), οι οποίες καλούνται στη µέθοδο "addconstraints" µε όρισµα τον πίνακα των µεταβλητών στις οποίες προστίθεται ο αντίστοιχος περιορισµός. Οι περιορισµοί που ορίζονται για τις µεταβλητές των µπλοκ κάθε µαθήµατος είναι οι παρακάτω : Κατάλληλη Χωρητικότητα Αιθουσών Η µέθοδος που δηµιουργείται για τον ορισµό του περιορισµού της Κατάλληλης Χωρητικότητας των Αιθουσών είναι η "proper_capacity (SCHproblem,int, CSPVariable[ ])", το πρώτο όρισµα της οποίας αντιστοιχεί στο αντικείµενο της κλάσης "SCHproblem", το δεύτερο στο πλήθος των φοιτητών που έχει δηλώσει το µάθηµα που αντιστοιχεί στις µεταβλητές του πίνακα που αναπαριστούν τα θεωρητικά και εργαστηριακά µπλοκ κάθε µαθήµατος και ο οποίος αποτελεί το τρίτο όρισµα της µεθόδου. Συγκεκριµένα γίνεται προσπέλαση στον πίνακα "RoomsVector", µέσω του αντικειµένου της κλάσης SCHproblem, και συγκρίνεται η χωρητικότητα κάθε αίθουσας µε την τιµή του δεύτερου ορίσµατος. Στην περίπτωση που η χωρητικότητα είναι µικρότερη του αριθµού των φοιτητών ορίζεται το δεύτερο στοιχείο των tuples των µεταβλητών διαφορετικό της τιµής που αντιστοιχεί στη συγκεκριµένη αίθουσα, µε τον UC_TD_UnaryConstraint περιορισµό "capacity_con" και σε συνδυασµό µε τον UC_SD_NotEquals περιορισµό. Κατά την κλήση της µεθόδου proper_capacity στην "addconstraints" δέχεται ως ορίσµατα το αντικείµενο schp της κλάσης SCHproblem, τον ακέραιο NumberOfStudents και τον πίνακα Blocks_Array[], ο οποίος περιέχει της µεταβλητές που αντιστοιχούν στα µπλοκ του µαθήµατος. ιαθεσιµότητα Καθηγητών Η γενική ιδέα που ακολουθείται στον περιορισµό της ιαθεσιµότητας των Καθηγητών είναι να αφαιρεθούν από τις δυάδες των πεδίων τιµών των µεταβλητών οι τιµές του πρώτου στοιχείου κάθε tuple που αντιστοιχούν στις ηµέρες και ώρες που ο καθηγητής του αντίστοιχου µπλοκ (θεωρίας ή εργαστηρίου) δεν είναι διαθέσιµός. Για τον ορισµό του περιορισµού αυτού

84 δηµιουργείται η µέθοδος "Professors_Availability(SCHproblem, String, CSPVariable[ ])",της οποίας το πρώτο όρισµα αντιστοιχεί στο αντικείµενο της κλάσης SCHproblem ενώ το δεύτερο στο όνοµα του καθηγητή των θεωρητικών ή εργαστηριακών µπλοκ του µαθήµατος που αναπαριστούν οι µεταβλητές του πίνακα και ο οποίος αποτελεί το τρίτο όρισµα της µεθόδου. Συγκεκριµένα διαβάζεται ο πίνακας "ProfessorsVector" (µέσω του αντικειµένου της κλάσης SCHproblem) και για κάθε στοιχείο αυτού (πίνακας Professor) ελέγχεται αν ο καθηγητής θεωρίας ή εργαστηρίου του µαθήµατος, δηλαδή η τιµή του δεύτερου ορίσµατος, συµπίπτει µε τον καθηγητή του πίνακα που προσπελαύνεται. Σε αυτήν την περίπτωση ορίζεται ο περιορισµός UC_TD_UnaryConstraint "uc_prof_avail" ο οποίος θέτει το πρώτο στοιχείο κάθε tuple διαφορετικό (UC_ID_NotEquals) από τις τιµές του πίνακα που αναπαριστά τις ηµέρες και ώρες όπου ο αντίστοιχος καθηγητής δεν είναι διαθέσιµος. Πρέπει επίσης να σηµειωθεί ότι οι παραπάνω περιορισµοί τίθενται στις µεταβλητές µε τρόπο ώστε η ώρα διδασκαλίας κάθε µπλοκ και όση διάρκεια αυτό έχει να µην συµπίπτει µε τις ώρες που ο αντίστοιχος καθηγητής δεν είναι διαθέσιµος. Στο σηµείο που ορίζεται ο περιορισµός της ιαθεσιµότητας των Καθηγητών η µέθοδος αυτή καλείται δύο φορές, την πρώτη µε δεύτερο όρισµα τον καθηγητή των θεωρητικών µπλοκ του µαθήµατος Theory_Prof και τρίτο τον πίνακα Theory_Blocks_Array[], ενώ τη δεύτερη µε όρισµα τον καθηγητή των εργαστηριακών µπλοκ Lab_Prof και πίνακα των µεταβλητών που αντιστοιχούν στα µπλοκ αυτά τον Lab_Blocks_Array. ιαθεσιµότητα Αιθουσών Η µέθοδος που δηµιουργείται για τον ορισµό του περιορισµού αυτού είναι η "Rooms_Availability (SCHproblem,CSPVariable[ ])" και της οποίας το πρώτο όρισµα αντιστοιχεί στο αντικείµενο της κλάσης SCHproblem ενώ το δεύτερο στον πίνακα των µεταβλητών που αναπαριστούν τα θεωρητικά και εργαστηριακά µπλοκ κάθε µαθήµατος. Ο ορισµός του περιορισµού της ιαθεσιµότητας των Αιθουσών γίνεται µε τρόπο όµοιο προς τον προηγούµενο περιορισµό µε τη διαφορά ότι σε αυτήν την περίπτωση διαβάζεται ο πίνακας "RoomsVector" ενώ δεν γίνεται έλεγχος αν κάθε στοιχείο αυτού συµπίπτει µε το δεύτερο στοιχείο των tuples των πεδίων τιµών καθώς ορίζονται λίστες µη επιτρεπτών δυάδων. Συγκεκριµένα ο περιορισµός αναπαρίσταται µε το αντικείµενο "list_not_avail" της κλάσης BC_NoGoodList και στο οποίο προστίθενται tuples που αντιστοιχούν σε όλες τις αίθουσες και στις ηµέρες και ώρες (τιµές στο διάστηµα [1..60]) που κάθε µία δεν είναι διαθέσιµη. Στη

85 συνέχεια ορίζεται το αντικείµενο "room_not_avail" της κλάσης UC_TD_BinaryConstraint για να δηλώσει ότι ο περιορισµός "list_not_avail" αναφέρεται στο πρώτο και δεύτερο στοιχείο των tuples των µεταβλητών κάθε µαθήµατος. Ισχύει η ίδια παρατήρηση µε τον περιορισµό της διαθεσιµότητας των καθηγητών δηλαδή ορίζεται µε τρόπο ώστε η ώρα έναρξης του αντίστοιχου µπλοκ και όσο διαρκεί αυτό να µην συµπίπτει µε τις ηµέρες και ώρες όπου η αίθουσα (δεύτερο στοιχείο των tuples) δεν είναι διαθέσιµη. Κατά την κλήση της µεθόδου Rooms_Availability() στην µέθοδο "addconstraints" δέχεται ως ορίσµατα το αντικείµενο schp της κλάσης SCHproblem και τον πίνακα Blocks_Array[] των µεταβλητών που αναπαριστούν τα θεωρητικά και εργαστηριακά µπλοκ του µαθήµατος που προσπελαύνεται κάθε φορά. Ώρες Γεύµατος Η µέθοδος που δηµιουργείται για τον ορισµό του περιορισµού της Ώρας Γεύµατος είναι η "Lunch_Nigth_Time(SCHproblem,CSPVariable[ ])" και δέχεται τα ίδια ορίσµατα µε την προηγούµενη µέθοδο. Ο περιορισµός αυτός τίθεται σε όλες τις µεταβλητές κάθε µαθήµατος και έχει την έννοια ότι οι ώρες διδασκαλίας (ώρα έναρξης και διάρκεια του µαθήµατος) των µπλοκ δεν πρέπει να συµπίπτουν µε τις ώρες γεύµατος. Όπως αναφέρθηκε στο Κεφάλαιο 3 το διάστηµα 1 µ.µ. έως 2 µ.µ. θεωρείται ελεύθερο διάστηµα και δεν γίνονται µαθήµατα αυτήν την ώρα, κάθε ηµέρα της εβδοµάδας. Για την υλοποίηση του περιορισµού αυτού ορίζονται τα αντικείµενα "lunch_time1", "lunch_time2", "lunch_time3", "lunch_time4", "lunch_time5" της κλάσης UC_TD_UnaryConstraint και τα οποία θέτουν το πρώτο στοιχείο των tuples διαφορετικό των τιµών 5, 17, 29, 41, 53 αντίστοιχα. Συγκεκριµένα οι τιµές αυτές αναπαριστούν το διάστηµα 1 µ.µ. 2 µ.µ. τις ηµέρες ευτέρα, Τρίτη, Τετάρτη, Πέµπτη και Παρασκευή. Ώρες ιδασκαλίας όχι Πέραν της Ώρας 9µ.µ Ο ορισµός του περιορισµού αυτού γίνεται στην ίδια µέθοδο µε τον ορισµό του παραπάνω περιορισµού και η ερµηνεία του είναι ότι οι ώρες διδασκαλίας κάθε µπλοκ µαθήµατος δεν πρέπει να υπερβαίνουν την ώρα 9 µ.µ. κάθε ηµέρας. Σύµφωνα µε την αναπαράσταση των ηµερών και ωρών διδασκαλίας στο διάστηµα [1..60] οι τιµές που αποκλείονται από το σύνολο τιµών που ανατίθεται στο πρώτο στοιχείο των tuples είναι οι : 12, 24, 36, 48, 60 και επιπλέον όσες προστιθέµενες της διάρκειας του µαθήµατος υπερβαίνουν τις τιµές αυτές. Η υλοποίηση του περιορισµού γίνεται µε τον ορισµό των αντικειµένων "end_time1", "end_time2", "end_time3",

86 "end_time4", "end_time5" της κλάσης UC_TD_UnaryConstraint σε συνδυασµό µε την κλάση UC_ID_NotEquals. Επιπλέον πρέπει να σηµειωθεί ότι η διάρκεια κάθε µπλοκ που χρησιµοποιείται στον ορισµό του περιορισµού αυτού και του προηγούµενου επιστρέφεται από τη µέθοδο "return_block", η οποία περιγράφεται στην ενότητα των Βοηθητικών Μεθόδων. Χρονική Απόσταση Ηµερών ιδασκαλίας Ο ορισµός του περιορισµού της Χρονικής Απόστασης των Ηµερών ιδασκαλίας γίνεται στη µέθοδο "Distance_Of_Days(CSPVariable[ ])" και της οποίας το όρισµα αντιστοιχεί στον πίνακα των µεταβλητών που αναπαριστούν τα µπλοκ κάθε µαθήµατος. Ο περιορισµός αυτός έχει την έννοια ότι οι ηµέρες διδασκαλίας των µπλοκ (θεωρητικών και εργαστηριακών) κάθε µαθήµατος πρέπει να απέχουν µεταξύ τους τουλάχιστον δύο ηµέρες, αν είναι εφικτό, και εξαρτάται από το πλήθος των µπλοκ του µαθήµατος. Συγκεκριµένα αν ο αριθµός των µπλοκ είναι µικρότερος ή ίσος µε το άνω όριο του πλήθους των διαθέσιµων ηµερών διδασκαλίας (δηλαδή 5) διαιρεµένο µε τη µέγιστη χρονική απόσταση, η οποία είναι δύο, τότε ο περιορισµός µπορεί να εφαρµοστεί. Στην περίπτωση που η προηγούµενη συνθήκη δεν ισχύει τότε οι ηµέρες διδασκαλίας των µπλοκ του µαθήµατος πρέπει τουλάχιστον να είναι διαφορετικές µεταξύ τους. Η υλοποίηση του περιορισµού γίνεται µε τον ορισµό των αντικειµένων "sch_mod_2" και "sch_mod_1" της κλάσης BC_ID_SCH_MOD για κάθε µία από τις παραπάνω περιπτώσεις αντίστοιχα, για την οποία έγινε αναφορά στο Κεφάλαιο 4. Αρχικά στη µέθοδο ελέγχεται αν το πλήθος των θεωρητικών και εργαστηριακών µπλοκ (Theory_Block και Lab_Block) του µαθήµατος είναι µικρότερο ή ίσο της τιµής 5/ Αν ισχύει η σχέση αυτή τότε ορίζεται το αντικείµενο "sch_mod_2" που θέτει τις τιµές που αντιστοιχούν στην ηµέρα και ώρα διδασκαλίας όλων των µπλοκ του µαθήµατος τέτοιες που να αναπαριστούν ηµέρες των οποίων η απόσταση είναι τουλάχιστον δύο. Αντίθετα ορίζεται το αντικείµενο "sch_mod_1" θέτοντας τον περιορισµό οι ηµέρες διδασκαλίας όλων των µπλοκ του µαθήµατος να είναι διαφορετικές µεταξύ τους. Μετά την ολοκλήρωση του ορισµού των µοναδιαίων περιορισµών στις µεταβλητές κάθε µαθήµατος υλοποιούνται οι δυαδικοί περιορισµοί και οι οποίοι τίθενται µεταξύ όλων των µεταβλητών που έχουν προστεθεί στο CSP πρόβληµα (δηλαδή στο αντικείµενο csp). Συγκεκριµένα προσπελαύνονται όλες οι µεταβλητές που έχουν οριστεί προηγούµενα στο σώµα

87 της µεθόδου "addconstraints" και οι περιορισµοί, που περιγράφονται στη συνέχεια, ορίζονται σε κάθε ζεύγος αυτών. Μη Επικάλυψη Μαθηµάτων Για τον ορισµό του περιορισµού αυτού καθώς και του περιορισµού της µη Επικάλυψης των Καθηγητών που ακολουθεί δηµιουργείται η µέθοδος "Teachers_Subjects_Overlap (SCHproblem)" µε όρισµα το αντικείµενο της κλάσης SCHproblem για την προσπέλαση των πινάκων αυτής. Ο περιορισµός της µη Επικάλυψης των Μαθηµάτων ισχύει για όλα τα µαθήµατα που ανήκουν στο ίδιο εξάµηνο καθώς το πρόγραµµα µαθηµάτων αναφέρεται είτε στα εξάµηνα 1 ο, 3 ο, 5 ο, 7 ο είτε στα εξάµηνα 2 ο, 4 ο, 6 ο, 8 ο. Η σηµασία του περιορισµού αυτού είναι ότι τα µπλοκ των µαθηµάτων ίδιου εξαµήνου δεν πρέπει να διδάσκονται την ίδια ώρα, ενώ για τα µαθήµατα διαφορετικών εξαµήνων δεν υφίσταται τέτοιος περιορισµός. Η υλοποίηση του γίνεται συγκρίνοντας τα εξάµηνα ενός ζεύγους µεταβλητών και τα ονόµατα αυτών, στοιχεία τα οποία επιστρέφουν βοηθητικές µέθοδοι που περιγράφονται παρακάτω. Σε περίπτωση που οι µεταβλητές αντιστοιχούν σε µπλοκ διαφορετικών µαθηµάτων και ίδιου εξαµήνου ορίζεται το αντικείµενο "td_duration_con1" της κλάσης BC_TD_BinaryConstraint για να θέσει την ώρα έναρξης του δεύτερου µαθήµατος διαφορετική της ώρας διδασκαλίας του πρώτου (ώρα έναρξης και διάρκεια αυτού). Στην ίδια περίπτωση ορίζεται και το αντικείµενο "td_duration_con2" που αναπαριστά τον περιορισµό η ώρα έναρξης του µπλοκ του πρώτου µαθήµατος να είναι διαφορετική της ώρας διδασκαλίας του δεύτερου µαθήµατος. Στον ορισµό των παραπάνω περιορισµών χρησιµοποιούνται τα αντικείµενα "duration_con1" και "duration_con2" αντίστοιχα, της κλάσης BC_ID_NotEquals (µε τη νέα µορφή µετά την επέκταση που της έγινε) για να δηλώσουν ότι τα πρώτα στοιχεία των tuples των δύο µεταβλητών είναι διαφορετικά µεταξύ τους µε τον τρόπο που εξηγήθηκε προηγούµενα. Πρέπει επίσης να σηµειωθεί ότι η διάρκεια κάθε µπλοκ που χρησιµοποιείται στον ορισµό των περιορισµών αυτών επιστρέφεται από τη βοηθητική µέθοδο "return_block()" που ορίζεται στην ίδια κλάση µετά τη µέθοδο "addconstraints" και περιγράφεται παρακάτω. Μη Επικάλυψη Καθηγητών Ο δεύτερος δυαδικός περιορισµός που ορίζεται στην ίδια µέθοδο (Teachers_Subjects_Overlap()) είναι ότι κάθε καθηγητής δεν πρέπει να διδάσκει ταυτόχρονα

88 δύο µαθήµατα. Η υλοποίησή του γίνεται µε τρόπο όµοιο προς την υλοποίηση του προηγούµενου περιορισµού καθώς στην ίδια συνθήκη if ελέγχεται αν ο καθηγητής του µπλοκ του µαθήµατος που αναπαριστά η πρώτη µεταβλητή συµπίπτει µε τον καθηγητή του µπλοκ του µαθήµατος που αναπαριστά η δεύτερη, αν τα εξάµηνά τους συµπίπτουν καθώς και αν αυτές αντιστοιχούν σε µπλοκ διαφορετικών µαθηµάτων. Όποια από τις δύο πρώτες συνθήκες ισχύει και µε την προϋπόθεση ότι τα µπλοκ ανήκουν σε διαφορετικά µαθήµατα (τρίτη συνθήκη) ορίζονται τα αντικείµενα "td_duration_con1" και "td_duration_con2" της κλάσης BC_TD_BinaryConstraint που θέτουν τους περιορισµούς η ώρα έναρξης του δεύτερου µαθήµατος να είναι διαφορετική της ώρας διδασκαλίας του πρώτου (ώρα έναρξης και διάρκεια αυτού) και η ώρα έναρξης του µπλοκ του πρώτου µαθήµατος να είναι διαφορετική της ώρας διδασκαλίας του δεύτερου µαθήµατος αντίστοιχα. Επίσης ο περιορισµός αυτός, όπως και ο προηγούµενος, δεν ελέγχει αν οι µεταβλητές του προβλήµατος αντιστοιχούν σε θεωρητικά ή εργαστηριακά µπλοκ αλλά µόνο αν διδάσκονται από τον ίδιο καθηγητή. Μη Επικάλυψη Αιθουσών Ο περιορισµός της µη Επικάλυψης των Αιθουσών ορίζει ότι δύο µαθήµατα ανεξαρτήτου εξαµήνων και καθηγητών, δεν πρέπει να διδάσκονται την ίδια ώρα στην ίδια αίθουσα. Η µέθοδος που δηµιουργείται για τον περιορισµό αυτό είναι η "Rooms_Overlap()" και στην οποία ορίζεται το αντικείµενο "overlap" της κλάσης BC_TD_NotEquals για να θέσει τα tuples όλων των µεταβλητών διαφορετικά µεταξύ τους. Με την ολοκλήρωση του ορισµού των περιορισµών του προβλήµατος τελειώνουν και οι λειτουργίες που λαµβάνουν µέρος στη µέθοδο "addconstraints". Ακολουθούν οι ορισµοί των βοηθητικών µεθόδων της ίδιας κλάσης των οποίων οι τιµές επιστροφής χρησιµοποιούνται στη διαδικασία υλοποίησης των παραπάνω περιορισµών και οι οποίες περιγράφονται στη συνέχεια.

89 Βοηθητικές Μέθοδοι Οι βοηθητικές µέθοδοι που ορίζονται εξυπηρετούν στο να επιστρέφουν στοιχεία που χαρακτηρίζουν µία µεταβλητή όπως το εξάµηνο του µπλοκ του µαθήµατος που αναπαριστά, τη διάρκεια αυτού και τον καθηγητή από τον οποίο διδάσκεται. Αυτές είναι οι ακόλουθες : o return_professor Η µέθοδος "return_professor(schproblem, String)" δέχεται ως όρισµα το αντικείµενο της κλάσης SCHproblem και το όνοµα της µεταβλητής που αναπαριστά το µπλοκ µαθήµατος ενώ επιστρέφει τον καθηγητή που διδάσκει το συγκεκριµένο µάθηµα. Συγκεκριµένα προσπελαύνει κάθε στοιχείο του πίνακα "LessonsVector" (µέσω του πρώτου ορίσµατος) µέχρι να εντοπίσει τον πίνακα Lesson που αντιστοιχεί στο µάθηµα του οποίου το µπλοκ αποτελεί το όρισµα της µεθόδου. Στη συνέχεια ελέγχει αν το µπλοκ που αναπαριστά η µεταβλητή είναι µπλοκ θεωρίας ή εργαστηρίου και ανάλογα επιστρέφει το όνοµα του αντίστοιχου καθηγητή καθώς στον πίνακα Lesson κάθε µαθήµατος καταγράφονται ο καθηγητής θεωρίας και εργαστηρίου αυτού. o return_semester Η µέθοδος αυτή δέχεται τα ίδια ορίσµατα µε τη µέθοδο "return_professor" ενώ η τιµή που επιστρέφει είναι το εξάµηνο στο οποίο ανήκει το µάθηµα του µπλοκ που περνάει σαν όρισµα κατά την κλήση της µεθόδου. Με τον ίδιο τρόπο όπως και στην προηγούµενη µέθοδο προσπελαύνεται κάθε στοιχείο του πίνακα "LessonsVector" µέχρι να βρεθεί ο πίνακας Lesson που αντιστοιχεί στο ζητούµενο µάθηµα όπου και επιστρέφεται το εξάµηνο αυτού. o return_block Η µέθοδος "return_block(schproblem, String)" ορίζεται µε τα ίδια ορίσµατα όπως και οι προηγούµενες και η τιµή που επιστρέφει είναι η διάρκεια του µπλοκ που αναπαριστά η µεταβλητή αυτή. Ακολουθείται η ίδια διαδικασία της προσπέλασης του πίνακα "LessonsVector" µέχρι να βρεθεί ο πίνακας Lesson που περιέχει τα στοιχεία του συγκεκριµένου µαθήµατος και ελέγχεται αν η µεταβλητή του ορίσµατος αντιστοιχεί σε µπλοκ θεωρίας ή εργαστηρίου. Ανάλογα µε το είδος του µπλοκ γίνεται προσπέλαση στον αντίστοιχο πίνακα (Theory_Hours ή Lab_Hours) που περιέχει τις ώρες κάθε µπλοκ (θεωρίας ή εργαστηρίου) και επιστρέφεται εκείνη η τιµή που αντιστοιχεί στη διάρκεια του συγκεκριµένου µπλοκ.

90 Μέθοδος "Solve_Problem Στο τέλος της κλάσης "Schedule" ορίζεται η µέθοδος "Solve_Problem(Vector)" στην οποία εκτελούνται οι λειτουργίες επίλυσης του προβλήµατος. Το όρισµα αυτής είναι ένας πίνακας στον οποίο εισάγονται τα αποτελέσµατα της λύσης µέσω της µεθόδου "setreturnvector" της κλάσης ScheduleSolutionManager. Αρχικά δηλώνεται το αντικείµενο "s" της κλάσης FC_ARCSolver (η οποία αποτελεί υποκλάση της Solver) και το οποίο αντιστοιχεί στον αλγόριθµο εύρεσης λύσεων "Forward Checking with Full Arc Consistency". Στη συνέχεια ορίζεται ως ιαχειριστής Λύσεων για το συγκεκριµένο πρόβληµα ο ScheduleSolutionManager, κλάση που αποτελεί επέκταση της βιβλιοθήκης JCL, και δηλώνεται ότι η επίλυση αυτού θα δώσει µια λύση, η οποία θα αποτελείται από όλες τις µεταβλητές του προβλήµατος µε τιµές που υπόκεινται στους περιορισµούς που έχουν οριστεί στη µέθοδο "addconstraints". Με τη µέθοδο αυτή ολοκληρώνονται οι λειτουργίες που εκτελούνται στην κλάση "Schedule" και η υλοποίηση του προβλήµατος χρονοπρογραµµατισµού ως Πρόβληµα Ικανοποίησης Περιορισµών (Constraint Satisfaction Problems ή CSP). Στην επόµενη ενότητα περιγράφονται τα αποτελέσµατα του προγράµµατος και η µορφή που παίρνουν στην έξοδο αυτού. 5.7 Λύση Εκτύπωση των Αποτελεσµάτων Η λύση του προβλήµατος περιλαµβάνει όλες τις µεταβλητές που έχουν οριστεί και αντιστοιχούν στα µπλοκ των µαθηµάτων ενώ οι τιµές που ανατίθενται σε αυτές υπακούουν στους περιορισµούς που ορίστηκαν στη µέθοδο addconstraints της κλάσης "Schedule". Με τον τρόπο αυτό στην έξοδο του προγράµµατος θα εµφανίζονται τα µπλοκ κάθε µαθήµατος που αποτελούν τις µεταβλητές του προβλήµατος, ενώ για κάθε ένα από αυτά θα τυπώνεται η ηµέρα, η ώρα και η αίθουσα διδασκαλίας αυτού. Τα αποτελέσµατα του προγράµµατος δίνονται όταν ο χρήστης επιλέξει το κουµπί "ΑΠΟΤΕΛΕΣΜΑΤΑ" και εφόσον προηγουµένως έχει συµπληρώσει τις κατάλληλες φόρµες για την εισαγωγή των δεδοµένων. Στην περίπτωση αυτή καλείται η µέθοδος jbutton6actionperformed στην οποία το αντικείµενο "SCH" της κλάσης Schedule προσπελαύνει αρχικά τη µέθοδο addconstraints µε όρισµα το αντικείµενο "Ρ" της κλάσης SCHproblem και στη συνέχεια τη µέθοδο Solve_Problem

91 για την επίλυση των περιορισµών και την εκτύπωση των αποτελεσµάτων. Το όρισµα της τελευταίας είναι ο πίνακας finsch του οποίου στοιχεία είναι οι τιµές της λύσης, δηλαδή το όνοµα κάθε µεταβλητής που αναπαριστά µπλοκ µαθήµατος, η ηµέρα και ώρα διδασκαλίας αυτού καθώς και η κατάλληλη αίθουσα. Η µορφή της εξόδου του προγράµµατος είναι ένας πίνακας που αποτυπώνει το πρόγραµµα µαθηµάτων χειµερινών ή εαρινών εξαµήνων, ανάλογα µε την επιλογή του χρήστη. Οι στήλες του πίνακα αντιστοιχούν στις πέντε ηµέρες της εβδοµάδας και στα χειµερινά ή εαρινά εξάµηνα ενώ οι γραµµές αυτού στις ώρες διδασκαλίας ηµερησίως (9 π.µ. 9 µ.µ.). Ανάλογα µε τις τιµές του πίνακα finsch και αυτές που βρίσκουµε για το εξάµηνο και τη διάρκεια κάθε µπλοκ µαθήµατος τοποθετείται αυτό στο κατάλληλο κελί του πίνακα ενώ µαθήµατα διαφορετικών εξαµήνων που διδάσκονται την ίδια ηµέρα τοποθετούνται σε διαφορετικές στήλες κάτω από την ετικέτα της ηµέρας. Με τον τρόπο αυτό συµπληρώνεται ο πίνακας του προγράµµατος µαθηµάτων και εµφανίζεται ως παράθυρο της εφαρµογής µε το πάτηµα του κουµπιού "ΑΠΟΤΕΛΕΣΜΑΤΑ". 5.8 Συµπεράσµατα Η αναπαράσταση και υλοποίηση του προβλήµατος χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής γίνεται µε τον τρόπο που περιγράφηκε παραπάνω και αποτυπώνεται στον κώδικα του προγράµµατος. Στα κεφάλαια που ακολουθούν δίνονται σε screenshots τα κύρια σηµεία του γραφικού περιβάλλοντος του προγράµµατος "JU_Schedule", και γίνεται µία κριτική σχετικά µε τη δυναµικότητα αυτού ενώ ο αντίστοιχος κώδικας στη γλώσσα Java παρατίθεται στο Παράρτηµα Ι.

92 Κεφάλαιο 6 Περιγραφή Εκτέλεσης του Προγράµµατος Επίλυσης του Προβλήµατος Χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής 6.1 Εισαγωγή Η υλοποίηση του προγράµµατος "JU_Schedule" που επιλύει το πρόβληµα χρονοπρογραµµατισµού του Τµήµατος Πληροφορικής περιγράφηκε στο Κεφάλαιο 5 όπως επίσης και η διεπιφάνεια χρήστη που αναπτύχθηκε για τη γραφική απεικόνιση της εφαρµογής. Η τελευταία εξυπηρετεί στην εισαγωγή των δεδοµένων από το χρήστη και την εµφάνιση των αποτελεσµάτων ενώ η οργάνωση των πλαισίων στο κεντρικό παράθυρο της διεπιφάνειας καθιστά απλή την επικοινωνία του χρήστη µε την εφαρµογή. Στη συνέχεια περιγράφεται ένα παράδειγµα εκτέλεσης του προγράµµατος για συγκεκριµένα δεδοµένα που εισάγει ο χρήστης συµπληρώνοντας τις φόρµες των αντίστοιχων πεδίων της εφαρµογής. Παράλληλα δίνονται ορισµένες αντιπροσωπευτικές εικόνες (screenshots) του γραφικού περιβάλλοντος και στις οποίες απεικονίζονται τα βήµατα που ακολουθεί ο χρήστης κατά την εισαγωγή των δεδοµένων όπως επίσης και η έξοδος του προγράµµατος δηλαδή το πρόγραµµα µαθηµάτων που αρχικά επέλεξε ο χρήστης να συνταχθεί.

93 6.2 Εισαγωγή εδοµένων Το πρόγραµµα µαθηµάτων που δηµιουργείται στο παράδειγµα που ακολουθεί ανταποκρίνεται στα δεδοµένα που εισάγει ο χρήστης κατά την επικοινωνία του µε το γραφικό περιβάλλον της εφαρµογής. Το παράθυρο της διεπιφάνειας που αποτελείται από τα πεδία που συµπληρώνει ο χρήστης απεικονίζεται παρακάτω. ΕΙΚΟΝΑ 1 ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑΤΩΝ Αρχικά ο χρήστης καθορίζει το είδος του προγράµµατος µαθηµάτων που επιθυµεί επιλέγοντας το αντίστοιχο κουµπί του πεδίου "ΕΠΙΛΟΓΗ ΠΡΟΓΡΑΜΜΑΤΟΣ". Στο παράδειγµά

94 µας κατασκευάζεται το πρόγραµµα µαθηµάτων χειµερινών εξαµήνων δηλαδή του 1 ου, 3 ου, 5 ου και 7 ου εξαµήνου. Ακολουθεί η εισαγωγή των δεδοµένων που αφορούν τα µαθήµατα των εξαµήνων αυτών και η οποία λαµβάνει µέρος στο πεδίο µε ετικέτα "ΣΤΟΙΧΕΙΑ ΜΑΘΗΜΑΤΩΝ". Συγκεκριµένα ο χρήστης εισάγει δεδοµένα για 12 µαθήµατα, τρία από κάθε εξάµηνο, και η επιλογή των στοιχείων "ΕΞΑΜΗΝΟ", "ΜΑΘΗΜΑ", "ΑΡΙΘΜΟΣ ΦΟΙΤΗΤΩΝ", "ΚΑΘΗΓΗΤΗΣ ΘΕΩΡΙΑΣ", "ΚΑΘΗΓΗΤΗΣ ΕΡΓΑΣΤΗΡΙΟΥ", "ΩΡΕΣ ΘΕΩΡΙΑΣ", "ΩΡΕΣ ΕΡΓΑΣΤΗΡΙΟΥ" από τις αντίστοιχες λίστες γίνεται µε όµοιο τρόπο για το καθένα από αυτά. Στο ακόλουθο σχήµα απεικονίζεται µία στιγµή της διαδικασίας αυτής. ΕΙΚΟΝΑ 2 Επαναλαµβάνοντας τη διαδικασία για όλα τα µαθήµατα τα στοιχεία αυτών που αποτελούν µέρος των συνολικών δεδοµένων του προβλήµατος εµφανίζονται µε την εξής σειρά παρακάτω : ΜΑΘΗΜΑ ΕΞΑΜΗΝΟ ΑΡ.ΦΟΙΤΗΤΩΝ ΚΑΘ.ΘΕΩΡΙΑΣ ΚΑΘ.ΕΡΓΑΣΤΗΡΙΟΥ [ΜΠΛΟΚ ΘΕΩΡΙΑΣ] [ΜΠΛΟΚ ΕΡΓΑΣΤΗΡΙΟΥ]

95 1. ΑΝΑΛΥΣΗ, 1 ο, 89, Ε.ΑΓΓΕΛΗΣ, κανένας, [1,1], [] 2. ΟΜΗΜΕΝΟΣ ΠΡΟΓΡ/ΣΜΟΣ, 1 ο, 93, Ι.ΒΛΑΧΑΒΑΣ, Ν.ΒΑΣΙΛΕΙΑ ΗΣ, [2,2], [2] 3. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ, 1 ο, 57,.ΠΟΛΙΤΗΣ, κανένας, [1,1], [] 4. ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 ο, 87, Γ.ΜΠΛΕΡΗΣ, κανένας, [2,1], [] 5. C++, 3 ο, 87,.ΠΟΛΙΤΗΣ,.ΠΟΛΙΤΗΣ, [2], [1] 6. ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ, 3 ο, 76, Π.ΛΙΝΑΡ ΗΣ, κανένας, [1,1,1], [] 7. ΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ, 5 ο, 76, Γ.ΠΑΠΑ ΗΜΗΤΡΙΟΥ, Α.ΒΑΚΑΛΗ, [2,2], [1,1] 8. ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ, 5 ο, 88, Ε.ΚΑΡΑΤΖΑ, κανένας, [1,1], [] 9. ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ, 5 ο, 93, Ι.ΣΤΑΜΕΛΟΣ, Ι.ΣΤΑΜΕΛΟΣ, [1,1], [1] 10. ΓΡΑΦΙΚΑ, 7 ο, 65, Ι.ΠΗΤΑΣ, Ν.ΝΙΚΟΛΑΙ ΗΣ, [2], [1] 11. ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-Η/Υ, 7 ο, 99,.ΠΟΛΙΤΗΣ, κανένας, [1,1], [] 12. ΟΠΤΙΚΕΣ ΕΠΙΚΟΙΝΩΝΙΕΣ, 7 ο, 71, Γ.ΠΑΠΑ ΗΜΗΤΡΙΟΥ, Α.ΜΗΛΙΟΥ, [2,2], [2] Σύµφωνα µε την παραπάνω µορφή των δεδοµένων το χαρακτηριστικό "κανένας" που αντιστοιχεί στο πεδίο "ΚΑΘΗΓΗΤΗΣ ΕΡΓΑΣΤΗΡΙΟΥ" όπως και µία κενή λίστα στο πεδίο "ΜΠΛΟΚ ΕΡΓΑΣΤΗΡΙΟΥ" υποδηλώνουν ότι το συγκεκριµένο µάθηµα αποτελείται µόνο από θεωρητικά µπλοκ. εν συµβαίνει το ίδιο για τα αντίστοιχα πεδία των θεωρητικών µπλοκ καθώς όλα τα µαθήµατα του Τµήµατος Πληροφορικής αποτελούνται από θεωρητική διδασκαλία πέραν του ότι ορισµένα από αυτά περιέχουν και ώρες εργαστηρίου. ΕΙΣΑΓΩΓΗ ΚΑΘΗΓΗΤΩΝ Τα δεδοµένα του προβλήµατος επεκτείνονται εισάγοντας ο χρήστης τα στοιχεία των καθηγητών όταν προηγούµενα επιλέξει το κουµπί "ΚΑΘΗΓΗΤΕΣ". Εµφανίζεται η αντίστοιχη φόρµα την οποία συµπληρώνει τόσες φορές όσο και το πλήθος των καθηγητών για τους οποίους εισάγει στοιχεία που αφορούν το όνοµα και τις ηµέρες και ώρες που ο αντίστοιχος καθηγητής δεν είναι διαθέσιµος. Στην Εικόνα 3 απεικονίζεται το παράθυρο της εφαρµογής που περιέχει το πλαίσιο µε ετικέτα "ΣΤΟΙΧΕΙΑ ΚΑΘΗΓΗΤΩΝ" και στο οποίο βρίσκονται τα παραπάνω πεδία που συµπληρώνει ο χρήστης.

96 ΕΙΚΟΝΑ 3 Τα δεδοµένα που εισάγονται στο συγκεκριµένο παράδειγµα αντιστοιχούν σε 13 καθηγητές, οι οποίοι είναι αυτοί που διδάσκουν τα θεωρητικά και εργαστηριακά µπλοκ των µαθηµάτων που προηγούµενα εισήγαγε ο χρήστης. Η αναπαράσταση των δεδοµένων αυτών δίνεται παρακάτω µε την εξής µορφή: ΟΝΟΜΑ [ΗΜΕΡΕΣ / ΩΡΕΣ ΠΟΥ Ο ΚΑΘΗΓΗΤΗΣ ΕΝ ΕΙΝΑΙ ΙΑΘΕΣΙΜΟΣ] 1. Ε.ΑΓΓΕΛΗΣ, [1, 2, 3, 4] 2. Ν.ΒΑΣΙΛΕΙΑ ΗΣ, [49, 50, 59, 60] 3. Ι.ΒΛΑΧΑΒΑΣ, [15, 16, 35, 36, 47, 48, 59, 60] 4..ΠΟΛΙΤΗΣ, [6, 7, 8] 5. Γ.ΜΠΛΕΡΗΣ, [13, 14, 25, 26] 6. Π.ΛΙΝΑΡ ΗΣ, [] 7. Γ.ΠΑΠΑ ΗΜΗΤΡΙΟΥ, [41, 42, 47, 48]

97 8. Α.ΒΑΚΑΛΗ, [] 9. Ε.ΚΑΡΑΤΖΑ, [9, 10, 11, 12] 10. Ι.ΣΤΑΜΕΛΟΣ, [] 11. Ι.ΠΗΤΑΣ, [1, 2, 13, 14, 32, 33, 34, 35, 36] 12. Ν.ΝΙΚΟΛΑΙ ΗΣ, [35, 44, 45, 52, 58] 13. Α.ΜΗΛΙΟΥ, [14, 26, 42, 43] Οι ηµέρες και ώρες που οι καθηγητές δεν είναι διαθέσιµοι αναπαρίστανται µε τους ακέραιους αριθµούς του διαστήµατος [1..60] και των οποίων η ερµηνεία δόθηκε σε προηγούµενο κεφάλαιο. Σε περίπτωση που ένας καθηγητής είναι διαθέσιµος όλες τις ηµέρες και ώρες διδασκαλίας των µαθηµάτων ο αντίστοιχος πίνακας είναι κενός (π.χ. περίπτωση 6, 8, 10 στο παράδειγµά µας). ΕΙΣΑΓΩΓΗ ΑΙΘΟΥΣΩΝ Το σύνολο των δεδοµένων που εισάγει ο χρήστης ολοκληρώνεται µε τα στοιχεία των αιθουσών όταν αυτός επιλέξει το κουµπί "ΑΙΘΟΥΣΕΣ". Συµπληρώνει τη φόρµα µε ετικέτα "ΣΤΟΙΧΕΙΑ ΑΙΘΟΥΣΩΝ" για όλες τις αίθουσες που τον ενδιαφέρουν, όπου στο συγκεκριµένο παράδειγµα αυτές είναι 5 και απεικονίζονται µε τη µορφή : ΑΙΘΟΥΣΑ ΕΙ ΟΣ ΧΩΡΗΤΙΚΟΤΗΤΑ [ΗΜΕΡΕΣ / ΩΡΕΣ ΠΟΥ ΕΝ ΕΙΝΑΙ ΙΑΘΕΣΙΜΗ] 1. Α, ΝΟ, 88, [] 2. Ι1, ΝΟ, 120, [1, 2, 33, 34, 35, 36] 3. Ι2, ΝΟ, 56, [29, 30, 41, 59, 60] 4. I3, YES, 56, [4, 5, 19, 20, 21, 22, 23, 35] 5. I4, YES, 93, [13, 14, 25, 26, 27, 39, 40, 41, 53, 54, 55] Από τις αίθουσες αυτές οι τρεις πρώτες αντιστοιχούν σε απλές αίθουσες διδασκαλίας, σε αντίθεση µε τις επόµενες δύο που είναι κατάλληλες για τη διδασκαλία των εργαστηριακών µπλοκ. Αυτό δηλώνεται µε το αναγνωριστικό "ΝΟ" στην πρώτη περίπτωση και "YES" στη δεύτερη. Στην Εικόνα 4 που ακολουθεί απεικονίζεται το παράθυρο της εφαρµογής που περιέχει το πλαίσιο για την εισαγωγή των στοιχείων των αιθουσών.

98 ΕΙΚΟΝΑ Έξοδος Προγράµµατος Τα στοιχεία που εισήγαγε ο χρήστης κατά την επικοινωνία του µε το γραφικό περιβάλλον της εφαρµογής αποτελούν τα δεδοµένα του προβλήµατος σύµφωνα µε τα οποία θα οριστούν τα πεδία τιµών, οι µεταβλητές, και οι περιορισµοί µεταξύ αυτών. Η επεξεργασία των δεδοµένων γίνεται βάσει της βιβλιοθήκης επίλυσης περιορισµών της γλώσσας Java JCL, ενώ τη λύση του προγράµµατος αποτελεί η ανάθεση τιµών στις µεταβλητές µε τρόπο που να ικανοποιούνται όλοι οι περιορισµοί του προβλήµατος. Η έξοδος του προγράµµατος εµφανίζεται όταν ο χρήστης επιλέξει το κουµπί "ΑΠΟΤΕΛΕΣΜΑΤΑ" και η οποία έχει τη µορφή ενός πίνακα µε στήλες τις ηµέρες διδασκαλίας και γραµµές τις διαθέσιµες ώρες αυτής. Στο συγκεκριµένο παράδειγµα εκτέλεσης του προγράµµατος

99 "JU_Schedule" κάθε µπλοκ µαθήµατος απεικονίζεται στο κελί του πίνακα που αντιστοιχεί στο κατάλληλο εξάµηνο και στην ηµέρα και ώρα διδασκαλίας αυτού. Η λύση του προγράµµατος για τα δεδοµένα εισόδου που περιγράφηκαν παραπάνω απεικονίζεται στο Σχήµα 5. ΕΙΚΟΝΑ Συµπεράσµατα Τα αποτελέσµατα του παραδείγµατος εκτέλεσης του προγράµµατος "JU_Schedule" είναι ικανοποιητικά για το πλήθος των πραγµατικών δεδοµένων που εισάγει ο χρήστης και αποτυπώνονται σε µορφή γνώριµη σε αυτόν, η οποία επιτρέπει τον έλεγχο της εγκυρότητας και της αξιοπιστίας τους.

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

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

Διαβάστε περισσότερα

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

ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ ΙΚΑΝΟΠΟΙΗΣΗ ΠΕΡΙΟΡΙΣΜΩΝ (ΜΕ ΒΑΣΗ ΤΟ ΚΕΦ. 6 ΤΟΥ ΒΙΒΛΙΟΥ «ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ» ΤΩΝ ΒΛΑΧΑΒΑ, ΚΕΦΑΛΑ, ΒΑΣΙΛΕΙΑ Η, ΚΟΚΚΟΡΑ & ΣΑΚΕΛΛΑΡΙΟΥ) Ι. ΧΑΤΖΗΛΥΓΕΡΟΥ ΗΣ ΠΡΟΒΛΗΜΑΤΑ ΙΚΑΝΟΠΟΙΗΣΗΣ ΠΕΡΙΟΡΙΣΜΩΝ Είναι γνωστές µερικές

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Ικανοποίηση Περιορισμών Κατηγορία προβλημάτων στα οποία είναι γνωστές μερικές

Διαβάστε περισσότερα

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

Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων 1 Επίλυση Προβλημάτων Περιγραφή Προβλημάτων Αλγόριθμοι αναζήτησης Αλγόριθμοι τυφλής αναζήτησης Αναζήτηση πρώτα σε βάθος Αναζήτηση πρώτα σε πλάτος (ΒFS) Αλγόριθμοι ευρετικής αναζήτησης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1 1 Βελτιστοποίηση Στην προσπάθεια αντιμετώπισης και επίλυσης των προβλημάτων που προκύπτουν στην πράξη, αναπτύσσουμε μαθηματικά μοντέλα,

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

Πρόβληµα ικανοποίησης περιορισµών Προβλήµατα ικανοποίησης περιορισµών Constraint Satisfaction Problems Πρόβληµα ικανοποίησης περιορισµών Μεταβλητές: X 1, X 2,, X n, Πεδία ορισµού: D 1, D 2, D n Περιορισµοί: C 1, C 2,, C m Ανάθεση τιµών:

Διαβάστε περισσότερα

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

ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΑΚΕΡΑΙΟΣ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ολοκληρωμένη μαθηματική τεχνική βελτιστοποίησης Ευρύτατο φάσμα εφαρμογών Εισαγωγή ακέραιων/λογικών/βοηθητικών μεταβλητών Δυνατότητα γραμμικοποίησης με 0-1 μεταβλητές

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 15 Ιουνίου 2009 1 / 26 Εισαγωγή Η ϑεωρία

Διαβάστε περισσότερα

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

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ ΜΕΡΟΣ ΙΙ ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ 36 ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΔΙΑΚΡΙΤΩΝ ΕΝΑΛΛΑΚΤΙΚΩΝ ΣΕ ΠΡΟΒΛΗΜΑΤΑ ΣΧΕΔΙΑΣΜΟΥ ΚΑΙ ΣΥΝΘΕΣΗΣ ΔΙΕΡΓΑΣΙΩΝ Πολλές από τις αποφάσεις

Διαβάστε περισσότερα

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

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

Το µαθηµατικό µοντέλο του Υδρονοµέα

Το µαθηµατικό µοντέλο του Υδρονοµέα Ερευνητικό έργο: Εκσυγχρονισµός της εποπτείας και διαχείρισης του συστήµατος των υδατικών πόρων ύδρευσης της Αθήνας Το µαθηµατικό µοντέλο του Υδρονοµέα Ανδρέας Ευστρατιάδης και Γιώργος Καραβοκυρός Τοµέας

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αλγόριθμοι Τυφλής Αναζήτησης Οι αλγόριθμοι τυφλής αναζήτησης εφαρμόζονται σε

Διαβάστε περισσότερα

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

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους

Β Ομάδα Ασκήσεων Λογικού Προγραμματισμού Ακαδημαϊκού Έτους Page 1 of 10 ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους 2018-19 Οι ασκήσεις της ομάδας αυτής πρέπει

Διαβάστε περισσότερα

max c 1 x 1 + c 2 x c n x n υπό a 11 x 1 + a 12 x a 1n x n b 1 a 21 x 1 + a 22 x a 2n x n b 2 a m1 x 1 + a m2 x a mn x n b m

max c 1 x 1 + c 2 x c n x n υπό a 11 x 1 + a 12 x a 1n x n b 1 a 21 x 1 + a 22 x a 2n x n b 2 a m1 x 1 + a m2 x a mn x n b m Υπολογιστικές Μέθοδοι στη Θεωρία Αποφάσεων Ενότητα 10 Εισαγωγή στον Ακέραιο Προγραμματισμό Αντώνης Οικονόμου Τμήμα Μαθηματικών Πανεπιστήμιο Αθηνών Προπτυχιακό πρόγραμμα σπουδών 29 Φεβρουαρίου 2016 Προβλήματα

Διαβάστε περισσότερα

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα.

Πιο συγκεκριμένα, η χρήση του MATLAB προσφέρει τα ακόλουθα πλεονεκτήματα. i Π Ρ Ο Λ Ο Γ Ο Σ Το βιβλίο αυτό αποτελεί μια εισαγωγή στα βασικά προβλήματα των αριθμητικών μεθόδων της υπολογιστικής γραμμικής άλγεβρας (computational linear algebra) και της αριθμητικής ανάλυσης (numerical

Διαβάστε περισσότερα

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) +

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) + KΕΦΑΛΑΙΟ 4 Κλασσικές Μέθοδοι Βελτιστοποίησης Με Περιορισµούς Ανισότητες 4. ΠΡΟΒΛΗΜΑΤΑ ΜΕ ΠΕΡΙΟΡΙΣΜΟΥΣ ΑΝΙΣΟΤΗΤΕΣ Ζητούνται οι τιµές των µεταβλητών απόφασης που ελαχιστοποιούν την αντικειµενική συνάρτηση

Διαβάστε περισσότερα

Μοντελοποίηση προβληµάτων

Μοντελοποίηση προβληµάτων Σχεδιασµός Αλγορίθµων Ακέραιος προγραµµατισµός Αποδοτικοί Αλγόριθµοι Μη Αποδοτικοί Αλγόριθµοι Σχεδιασµός Αλγορίθµων Ακέραιος προγραµµατισµός Αποδοτικοί Αλγόριθµοι Μη Αποδοτικοί Αλγόριθµοι Θεωρία γράφων

Διαβάστε περισσότερα

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

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Μηχανικών Πληροφορικής ΤΕ 2017-2018 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος Γραμμικός Προγραμματισμός Όταν για

Διαβάστε περισσότερα

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

Επιχειρησιακή Έρευνα ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Επιχειρησιακή Έρευνα Ενότητα #3: Ακέραιος Προγραμματισμός Αθανάσιος Σπυριδάκος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

Διαβάστε περισσότερα

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

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος Γραμμικός Προγραμματισμός Όταν για

Διαβάστε περισσότερα

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

Αλγόριθµοι Εκτίµησης Καθυστέρησης και Αλγόριθµοι Εκτίµησης Καθυστέρησης και Βελτιστοποίησης Εισαγωγή Το κύριο πρόβληµα στην σχεδίαση κυκλωµάτων είναι η επίτευξη της µέγιστης απόδοσης για την δεδοµένη τεχνολογία. Μεγιστοποίηση απόδοσης: (α)

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

Διαβάστε περισσότερα

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΜΑΘΗΜΑ 2 ΑΝΑΠΑΡΑΣΤΑΣΗ - ΤΕΧΝΙΚΕΣ ΤΝ (1)

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΜΑΘΗΜΑ 2 ΑΝΑΠΑΡΑΣΤΑΣΗ - ΤΕΧΝΙΚΕΣ ΤΝ (1) ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΜΑΘΗΜΑ 2 ΑΝΑΠΑΡΑΣΤΑΣΗ - ΤΕΧΝΙΚΕΣ ΤΝ (1) 2. ΑΝΑΠΑΡΑΣΤΑΣΗ ΠΡΟΒΛΗΜΑΤΟΣ H υλοποίηση ενός προβλήµατος σε σύστηµα Η/Υ που επιδεικνύει ΤΝ 1 απαιτεί: Την κατάλληλη περιγραφή του προβλήµατος

Διαβάστε περισσότερα

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας

215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας 215 Μηχανικών Η/Υ και Πληροφορικής Πάτρας Το Τμήμα ασχολείται με τη διδασκαλία και την έρευνα στην επιστήμη και τεχνολογία των υπολογιστών και τη μελέτη των εφαρμογών τους. Το Τμήμα ιδρύθηκε το 1980 (ως

Διαβάστε περισσότερα

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Αναζήτηση Δοθέντος ενός προβλήματος με περιγραφή είτε στον χώρο καταστάσεων

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Νοέμβριος 006 Αθήνα Κεφάλαιο ο Ακέραιος και μικτός προγραμματισμός. Εισαγωγή Μια από τις

Διαβάστε περισσότερα

Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Ορισµός του Προβλήµατος Ευθυγράµµιση : Εύρεση ενός γεωµετρικού µετασχηµατισµού που ϕέρνει κοντά δύο τρισδιάσ

Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Ορισµός του Προβλήµατος Ευθυγράµµιση : Εύρεση ενός γεωµετρικού µετασχηµατισµού που ϕέρνει κοντά δύο τρισδιάσ Εισαγωγή Αλγόριθµοι Αποτελέσµατα Επίλογος Αλγόριθµοι Ευθυγράµµισης Τρισδιάστατων Αντικειµένων Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό & Καποδιστριακό Πανεπιστήµιο Αθηνών 20 Οκτωβρίου 2005 Εισαγωγή

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΕΡΓΑΛΕΙΑ ΙΟΙΚΗΣΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΜΑΘΗΜΑ: ΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥ ΩΝ ΙΟΙΚΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΑΘΗΜΑ: ΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΡΓΑΛΕΙΑ ΙΟΙΚΗΣΗΣ ιδάσκων:

Διαβάστε περισσότερα

Chapter 9: NP-Complete Problems

Chapter 9: NP-Complete Problems Θεωρητική Πληροφορική Ι: Αλγόριθμοι και Πολυπλοκότητα Chapter 9: NP-Complete Problems 9.3 Graph-Theoretic Problems (Συνέχεια) 9.4 Sets and Numbers Γιώργος Αλεξανδρίδης gealexan@mail.ntua.gr Κεφάλαιο 9:

Διαβάστε περισσότερα

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

Τ.Ε.Ι. ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Τ.Ε.Ι. ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΙΣΗΓΗΤΗΣ: Δρ. Ιωάννης Σ. Τουρτούρας Μηχανικός Παραγωγής & Διοίκησης Δ.Π.Θ. Χρηματοδότηση Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

Διαβάστε περισσότερα

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

Επίλυση προβληµάτων. Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης Επίλυση προβληµάτων Περιγραφή προβληµάτων Αλγόριθµοι αναζήτησης Αλγόριθµοι τυφλής αναζήτησης Αλγόριθµοι ευρετικής αναζήτησης! Παιχνίδια δύο αντιπάλων Προβλήµατα ικανοποίησης περιορισµών Γενικά " Ντετερµινιστικά

Διαβάστε περισσότερα

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

(50 μον.) πάντοτε Διατυπώστε ΑΣΚΗΣΗ 1 Α. (50 μον.) Σας δίνεται ο ακόλουθος γράφος, το οποίο πρέπει να χρωματίσετε χρησιμοποιώντας 3 χρώματα (R,G,B), ώστε δύο γειτονικές κορυφές να μην έχουν το ίδιο χρώμα. Θεωρείστε ότι ο χρωματισμός

Διαβάστε περισσότερα

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

ΕΘΝΙΚΟ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΘΝΙΚΟ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Καθηγητής : Κουμπαράκης Μανόλης Ημ/νία παράδοσης: 11/01/2011 Ονομ/μο φοιτητή : Μπεγέτης Νικόλαος Α.Μ.:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΥΔΑΤΙΚΩΝ ΠΟΡΩΝ Συνδυασμένη χρήση μοντέλων προσομοίωσης βελτιστοποίησης. Η μέθοδος του μητρώου μοναδιαίας απόκρισης Νικόλαος

Διαβάστε περισσότερα

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD2670 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ Έκτο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Δομές Δεδομένων και Αλγόριθμοι ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 9 P vs NP 1 / 13 Δυσκολία επίλυσης υπολογιστικών προβλημάτων Κάποια προβλήματα είναι εύκολα να λυθούν με

Διαβάστε περισσότερα

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

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

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΠΕΡΣΕΦΟΝΗ ΠΟΛΥΧΡΟΝΙΔΟΥ ΤΜΗΜΑ ΛΟΓΙΣΤΙΚΗΣ ΤΕ ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΠΕΡΣΕΦΟΝΗ ΠΟΛΥΧΡΟΝΙΔΟΥ ΤΜΗΜΑ ΛΟΓΙΣΤΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται

Διαβάστε περισσότερα

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ (1) ΓΕΝΙΚΑ ΣΧΟΛΗ ΠΟΛΥΤΕΧΝΙΚΗ ΤΜΗΜΑ Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0145 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 4ο ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Εργαστήριο Προγράμματος

Διαβάστε περισσότερα

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

Διαβάστε περισσότερα

Κεφάλαιο 5ο: Ακέραιος προγραμματισμός

Κεφάλαιο 5ο: Ακέραιος προγραμματισμός Κεφάλαιο 5ο: Ακέραιος προγραμματισμός 5.1 Εισαγωγή Ο ακέραιος προγραμματισμός ασχολείται με προβλήματα γραμμικού προγραμματισμού στα οποία μερικές ή όλες οι μεταβλητές είναι ακέραιες. Ένα γενικό πρόβλημα

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 1 Εισαγωγή 1 / 14 Δομές Δεδομένων και Αλγόριθμοι Δομή Δεδομένων Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων

Διαβάστε περισσότερα

Αλγόριθµοι CSPs Κώδικας. Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο

Αλγόριθµοι CSPs Κώδικας. Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο Αλγόριθµοι CSPs Κώδικας Μάθηµα Τεχνητής Νοηµοσύνης ΥΣ02 Χειµερινό εξάµηνο 2008-2009 CSPLIB Βιβλιοθήκη µε ρουτίνες για την επίλυση δυαδικών προβληµάτων ικανοποίησης περιορισµών http://ai.uwaterloo.ca/~vanbeek/software.h

Διαβάστε περισσότερα

Μέθοδοι μονοδιάστατης ελαχιστοποίησης

Μέθοδοι μονοδιάστατης ελαχιστοποίησης Βασικές αρχές μεθόδων ελαχιστοποίησης Μέθοδοι μονοδιάστατης ελαχιστοποίησης Οι μέθοδοι ελαχιστοποίησης είναι επαναληπτικές. Ξεκινώντας από μια αρχική προσέγγιση του ελαχίστου (την συμβολίζουμε ) παράγουν

Διαβάστε περισσότερα

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

Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Βασίλειος Μαχαιράς Πολιτικός Μηχανικός Ph.D. Μη γραμμικός προγραμματισμός: βελτιστοποίηση με περιορισμούς Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής Διάλεξη 9-10 η /2017 Τι παρουσιάστηκε

Διαβάστε περισσότερα

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΑΔΙΕΞΟΔΑ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΑΔΙΕΞΟΔΑ 2 ΠΟΡΟΙ Υπάρχουν δύο τύποι πόρων σε υπολογιστικά συστήματα: Προεκτοπίσιμοι πόροι

Διαβάστε περισσότερα

ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ

ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ Τμήμα Ηλεκτρολόγων Μηχανικών Εργαστήριο Ενσύρματης Τηλεπικοινωνίας ΨΗΦΙΑΚΗ ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ Μάθημα 8: Σύγχρονα ακολουθιακά κυκλώµατα (µέρος Α ) Διδάσκων: Καθηγητής Ν. Φακωτάκης Κυκλώµατα οδηγούµενα από

Διαβάστε περισσότερα

2 η ΕΝΟΤΗΤΑ ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

2 η ΕΝΟΤΗΤΑ ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΧΟΛΗ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΕΜΠ ΕΙΣΑΓΩΓΗ ΣΤΗN ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΩΝ 2 η ΕΝΟΤΗΤΑ ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μ. Καρλαύτης Ν. Λαγαρός Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες Χρήσης Creative

Διαβάστε περισσότερα

Ανάλυση Χρόνου, Πόρων & Κόστους

Ανάλυση Χρόνου, Πόρων & Κόστους ΠΜΣ: «Παραγωγή και ιαχείριση Ενέργειας» ιαχείριση Ενέργειας και ιοίκηση Έργων Ανάλυση Χρόνου, Πόρων & Κόστους Επ. Καθηγητής Χάρης ούκας, Καθηγητής Ιωάννης Ψαρράς Εργαστήριο Συστημάτων Αποφάσεων & ιοίκησης

Διαβάστε περισσότερα

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

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση Κεφάλαιο ο: Δικτυωτή Ανάλυση. Εισαγωγή Η δικτυωτή ανάλυση έχει παίξει σημαντικό ρόλο στην Ηλεκτρολογία. Όμως, ορισμένες έννοιες και τεχνικές της δικτυωτής ανάλυσης είναι πολύ χρήσιμες και σε άλλες επιστήμες.

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 17: Λύση Προβλημάτων με Αναδρομή Οι πύργοι του Hanoi Δίνεται ένα χώρος με τρεις θέσεις αποθήκευσης. Δίνεται μια στοίβα από Ν πλάκες σε φθίνον μέγεθος, σε μια από τις τρεις

Διαβάστε περισσότερα

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1)

ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1) ΕΠΙΧΕΙΡΗΣΙΑΚΗ ΕΡΕΥΝΑ ΘΕΩΡΙΑ ΚΑΙ ΕΦΑΡΜΟΓΗ ΤΟΥ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΗ ΛΗΨΗ ΑΠΟΦΑΣΕΩΝ (1) 1 Προέλευση και ιστορία της Επιχειρησιακής Έρευνας Αλλαγές στις επιχειρήσεις Τέλος του 19ου αιώνα: βιομηχανική

Διαβάστε περισσότερα

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6)

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6) Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Πολιτικών Μηχανικών Τοµέας Υδατικών Πόρων Μάθηµα: Τυπικά Υδραυλικά Έργα Μέρος 2: ίκτυα διανοµής Άσκηση E0: Μαθηµατική διατύπωση µοντέλου επίλυσης απλού δικτύου διανοµής

Διαβάστε περισσότερα

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 10 ΟΥ ΚΕΦΑΛΑΙΟΥ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ 1. Πως ορίζεται ο τμηματικός προγραμματισμός; Τμηματικός προγραμματισμός

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΘΕΜΑ 1 ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις 17 Φεβρουαρίου 2004 ιάρκεια: 2 ώρες (15:00-17:00)

Διαβάστε περισσότερα

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής

ΗΥ Λογική. Διδάσκων: Δημήτρης Πλεξουσάκης Καθηγητής ΗΥ 180 - Λογική Διδάσκων: Καθηγητής E-mail: dp@csd.uoc.gr Ώρες διδασκαλίας: Δευτέρα, Τετάρτη 4-6 μμ, Αμφ. Β Ώρες φροντιστηρίου: Πέμπτη 4-6 μμ, Αμφ. Β Ώρες γραφείου: Δευτέρα, Τετάρτη 2-4 μμ, Κ.307 Web site:

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΘΕΜΑ 1 ο (2.5 µονάδες) ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Τελικές εξετάσεις Παρασκευή 28 Σεπτεµβρίου 2007 ιάρκεια: 13:00-16:00

Διαβάστε περισσότερα

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem)

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem) Το πρόβλημα μονοδρόμησης (The One-Way Street Problem) Το πρόβλημα Σχετίζεται με τη διαχείριση της κίνησης οχημάτων στους δρόμους Αν δεν υπήρχαν καθυστερήσεις στην κίνηση στις πόλεις Αποφυγή σπατάλης ενέργειας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι

ΗΜΥ 210: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο Ένα συνδυαστικό κύκλωµα µπορεί να περιγραφεί από: Φεβ-05. n-είσοδοι ΗΜΥ 2: Λογικός Σχεδιασµός, Εαρινό Εξάµηνο 25 Φεβ-5 ΗΜΥ-2: Λογικός Σχεδιασµός Εαρινό Εξάµηνο 25 Κεφάλαιο 3 -i: Σχεδιασµός Συνδυαστικών Κυκλωµάτων Περίληψη Αρχές σχεδιασµού Ιεραρχία σχεδιασµού Σχεδιασµός

Διαβάστε περισσότερα

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά και Πληροφορικής Μαθηματικά Πανεπιστήμιο ΙΙ Ιωαννίνων

Διαβάστε περισσότερα

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

ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ ΕΝΟΤΗΤΑ III ΒΑΣΙΚΕΣ ΜΕΘΟ ΟΙ ΑΝΑΛΥΣΗΣ Βασικός τελικός στόχος κάθε επιστηµονικής τεχνολογικής εφαρµογής είναι: H γενική βελτίωση της ποιότητας του περιβάλλοντος Η βελτίωση της ποιότητας ζωής Τα µέσα µε τα

Διαβάστε περισσότερα

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

Ακέραιος Γραμμικός Προγραμματισμός Τμήμα Πληροφορικής & Τηλεπικοινωνιών Πανεπιστήμιο Ιωαννίνων 2018-2019 Ακέραιος Γραμμικός Προγραμματισμός Γκόγκος Χρήστος- Γεωργία Φουτσιτζή Επιχειρησιακή Έρευνα τελευταία ενημέρωση: 12/01/2017 1 Ακέραιος

Διαβάστε περισσότερα

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

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή raniah@hua.gr 1 Περιγραφή Προβλημάτων Διαισθητικά, σε ένα πρόβλημα υπάρχει μια δεδομένη κατάσταση

Διαβάστε περισσότερα

Αριθμητική Ανάλυση και Εφαρμογές

Αριθμητική Ανάλυση και Εφαρμογές Αριθμητική Ανάλυση και Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 07-08 Αριθμητική Παραγώγιση Εισαγωγή Ορισμός 7. Αν y f x είναι μια συνάρτηση ορισμένη σε ένα διάστημα

Διαβάστε περισσότερα

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

Διαβάστε περισσότερα

Αναστασία Παπαρρίζου. Επιβλέπων Καθηγητής: Κώστας Στεργίου Τριμελής Επιτροπή: Κώστας Στεργίου, Νικόλαος Σαμαράς, Μανώλης Κουμπαράκης

Αναστασία Παπαρρίζου. Επιβλέπων Καθηγητής: Κώστας Στεργίου Τριμελής Επιτροπή: Κώστας Στεργίου, Νικόλαος Σαμαράς, Μανώλης Κουμπαράκης Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Πανεπιστήμιο Δυτικής Μακεδονίας Αναστασία Παπαρρίζου Επιβλέπων Καθηγητής: Κώστας Στεργίου Τριμελής Επιτροπή: Κώστας Στεργίου, Νικόλαος Σαμαράς, Μανώλης

Διαβάστε περισσότερα

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

ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ Μια αυστηρά καθορισµένη ακολουθία ενεργειών µε σκοπό τη λύση ενός προβλήµατος. Χαρακτηριστικά οθέν πρόβληµα: P= Επιλυθέν πρόβληµα: P s

Διαβάστε περισσότερα

Πρόταση για Ανασχηματισμό του Προγράμματος Προπτυχιακών Σπουδών της ΣΗΜΜΥ

Πρόταση για Ανασχηματισμό του Προγράμματος Προπτυχιακών Σπουδών της ΣΗΜΜΥ Πρόταση για Ανασχηματισμό του Προγράμματος Προπτυχιακών Σπουδών της ΣΗΜΜΥ Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών Περίληψη Τί προτείνουμε, πώς και γιατί με λίγα λόγια: 55 μαθήματα = 30 για ενιαίο

Διαβάστε περισσότερα

Ειδικής Υποδομής Υποχρεωτικό

Ειδικής Υποδομής Υποχρεωτικό ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ GD560 ΤΙΤΛΟΣ ΜΑΘΗΜΑΤΟΣ Ψηφιακά Συστήματα ΑΥΤΟΤΕΛΕΙΣ ΔΙΔΑΚΤΙΚΕΣ ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ σε περίπτωση που οι

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Ενότητα 1: Εισαγωγή. Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Ενότητα 1: Εισαγωγή Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια χρήσης Creative Commons

Διαβάστε περισσότερα

Μάθημα Επιλογής 8 ου εξαμήνου

Μάθημα Επιλογής 8 ου εξαμήνου EΘNIKO ΜEΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝΜΗΧΑΝΙΚΩΝ ΤΟΜΕΑΣ ΙΙ: Ανάλυσης, Σχεδιασμού & Ανάπτυξης Διεργασιών & Συστημάτων Υπολογιστικές Μέθοδοι Ανάλυσης και Σχεδιασμού Μάθημα Επιλογής 8 ου εξαμήνου Διδάσκων:

Διαβάστε περισσότερα

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Λογική Δημήτρης Πλεξουσάκης 3ο μέρος σημειώσεων: Μέθοδος της Επίλυσης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται στην άδεια

Διαβάστε περισσότερα

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

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

Διαβάστε περισσότερα

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

Διαβάστε περισσότερα

Δυναµικός Προγραµµατισµός (ΔΠ)

Δυναµικός Προγραµµατισµός (ΔΠ) Δυναµικός Προγραµµατισµός (ΔΠ) Περίληψη Δυναµικός Προγραµµατισµός Αρχή του Βέλτιστου Παραδείγµατα Δυναµικός Προγραµµατισµός ΔΠ (Dynamic Programming DP) Μέθοδος σχεδιασµού αλγορίθµων Είναι µια γενική µεθοδολογία

Διαβάστε περισσότερα

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

ΑΛΓΟΡΙΘΜΟΙ. Τι είναι αλγόριθμος ΑΛΓΟΡΙΘΜΟΙ Στο σηµείωµα αυτό αρχικά εξηγείται η έννοια αλγόριθµος και παραθέτονται τα σπουδαιότερα κριτήρια που πρέπει να πληρεί κάθε αλγόριθµος. Στη συνέχεια, η σπουδαιότητα των αλγορίθµων συνδυάζεται

Διαβάστε περισσότερα

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π

Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός συγκρίσεων π Περιορισμοί Αλγοριθμικής Ισχύος Κατηγοριοποίηση πολυπλοκοτήτων Κατώτερα φράγματα Κατώτερο φράγμα: εκτίμηση της ελάχιστης εργασίας που απαιτείται για την επίλυση ενός προβλήματος. Παραδείγματα: Αριθμός

Διαβάστε περισσότερα

ΣΥΣΤHΜΑΤΑ ΑΠΟΦAΣΕΩΝ ΣΤΗΝ ΠΑΡΑΓΩΓH

ΣΥΣΤHΜΑΤΑ ΑΠΟΦAΣΕΩΝ ΣΤΗΝ ΠΑΡΑΓΩΓH ΣΥΣΤHΜΑΤΑ ΑΠΟΦAΣΕΩΝ ΣΤΗΝ ΠΑΡΑΓΩΓH Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Διοίκηση Παραγωγής & Συστημάτων Υπηρεσιών ΕΡΓΑΣΤΗΡΙΟ ΣΥΣΤΗΜΑΤΩΝ ΑΠΟΦΑΣΕΩΝ ΚΑΙ ΔΙΟΙΚΗΣΗΣ Περιεχόμενα

Διαβάστε περισσότερα

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 8. NP και Υπολογιστική Δυσεπιλυσιµότητα. Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 8 NP και Υπολογιστική Δυσεπιλυσιµότητα Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 πρόβληµα αναζήτησης (search problem) Ένα πρόβληµα αναζήτησης είναι ένα πρόβληµα στο

Διαβάστε περισσότερα

Εισαγωγή στο Γραμμικό Προγραμματισμό. Χειμερινό Εξάμηνο

Εισαγωγή στο Γραμμικό Προγραμματισμό. Χειμερινό Εξάμηνο Εισαγωγή στο Γραμμικό Προγραμματισμό Χειμερινό Εξάμηνο 2016-2017 Εισαγωγή Ασχολείται με το πρόβλημα της άριστης κατανομής των περιορισμένων πόρων μεταξύ ανταγωνιζόμενων δραστηριοτήτων μιας επιχείρησης

Διαβάστε περισσότερα

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση

Διαβάστε περισσότερα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

Διαβάστε περισσότερα