Συγκριτική Υπολογιστική Μελέτη Αλγορίθµων Εξωτερικών Σηµείων Χαράλαµπος Τριανταφυλλίδης ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Επιβλέπων Καθηγητής: Νικόλαος Σαµαράς, Λέκτορας Εξεταστές: ηµήτριος Βαρσακέλης, Λέκτορας Κων/νος Παπαρρίζος, Καθηγητής Τµήµα Εφαρµοσµένης Πληροφορικής Πανεπιστήµιο Μακεδονίας Θεσσαλονίκη Απρίλιος, 2005
2005, Χαράλαµπος Τριανταφυλλίδης Η έγκριση της µεταπτυχιακής εργασίας από το Τµήµα Εφαρµοσµένης Πληροφορικής του Πανεπιστηµίου Μακεδονίας δεν υποδηλώνει απαραιτήτως και αποδοχή των απόψεων του συγγραφέα εκ µέρους του Τµήµατος (Ν.5343/32 αρ.202 παρ.2). 2
ΠΕΡΙΛΗΨΗ Ο Γραµµικός Προγραµµατισµός (Linear Programming) ή Γραµµική Βελτιστοποίηση (Linear Optimization) θεραπεύει ένα από τα πιο εφαρµοσµένα προβλήµατα των Μαθηµατικών, το Γραµµικό Πρόβληµα (Linear problem). Συγκεκριµένα, µελετάει τις ι- διότητές του, αναπτύσσει µεθόδους επίλυσης και ερευνά τους τρόπους µε τους οποίους τα αποτελέσµατα µπορούν να χρησιµοποιηθούν στον επιστηµονικό τρόπο λήψης πολύπλοκων οικονοµικών και διοικητικών αποφάσεων. Στην παρούσα Πτυχιακή εξετάζεται η υπολογιστική συµπεριφορά µιας σχετικά νέας οικογένειας αλγορίθµων για το γενικό γραµµικό πρόβληµα. Η οικογένεια αυτή ονο- µάζεται Αλγόριθµοι Εξωτερικών Σηµείων. Σε αντίθεση µε τον κλασικό αλγόριθµο simplex, ο οποίος κατασκευάζει µια ακολουθία από βασικά εφικτά σηµεία, οι αλγόριθµοι Εξωτερικών Σηµείων συγκλίνουν προς το βέλτιστο σηµείο (αν υπάρχει), ακολουθώντας και βασικά µη εφικτά σηµεία. Η υπολογιστική συµπεριφορά των αλγορίθµων Εξωτερικών Σηµείων εξετάστηκε πραγµατοποιώντας δυο είδη υπολογιστικών µελετών. Η πρώτη υπολογιστική µελέτη αφορά γενικά γραµµικά προβλήµατα τα ο- ποία δηµιουργήθηκαν τυχαία, ενώ η δεύτερη αφορά ορισµένα ειδικής µορφής γραµµικά προβλήµατα τα οποία ονοµάζονται µετροπρογράµµατα (benchmarks). Η σύγκριση των αλγορίθµων Εξωτερικών Σηµείων έγινε µε τον κλασικό αλγόριθµο simplex στην αναθεωρηµένη του µορφή. Συγκεκριµένα, σε τυχαία αραιά γραµµικά προβλήµατα διάστασης 000x000 και µε πυκνότητα 5% ο αλγόριθµος Εξωτερικών Σηµείων βρέθηκε 20.5 φορές ταχύτερος του κλασικού αλγορίθµου simplex σε επαναλήψεις και 20.83 φορές ταχύτερος σε cpu χρόνο. 3
ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή... 5. Μορφές γραµµικών προβληµάτων... 5.2 Μετασχηµατισµοί γραµµικών προβληµάτων... 6.2. Μετασχηµατισµός από κανονική σε τυποποιηµένη µορφή... 6.3 Αποθήκευση γραµµικών προβληµάτων σε Η/Υ... 8 2 Πρωτεύων Simplex... 0 2. Έννοιες-Ορισµοί... 0 2.2 Χαρακτηριστικά αλγορίθµων τύπου simplex... 2 2.3 Αναθεωρηµένος πρωτεύων αλγόριθµος simplex... 3 2.4 Επίλυση γενικών γραµµικών προβληµάτων... 8 3 Αλγόριθµος Εξωτερικών Σηµείων... 25 3. Χαρακτηριστικά αλγορίθµων εξωτερικών σηµείων... 25 3.2 Αναθεωρηµένος αλγόριθµος εξωτερικών σηµείων... 26 3.3 Επίλυση γενικών γραµµικών προβληµάτων... 29 3.4 Παραλλαγές αλγορίθµου εξωτερικών σηµείων... 3 4 Συγκριτική Υπολογιστική Μελέτη... 38 4. Μετροπροβλήµατα (Benchmarks)... 38 4.2 Τυχαία αραιά γραµµικά προβλήµτα... 44 4.3 Προλυτική διαδικασία... 44 4.4 Υπολογιστική µελέτη... 48 4.4. Τυχαία αραιά γραµµικά προβλήµατα... 49 4.4.2 Σύγκριση revised simplex µε έκδοση simplex MaTLab... 60 4.4.3 Επίλυση µετροπροβληµάτων... 6 5 Συµπεράσµατα... 69 Βιβλιογραφία... 70 4
ΚΕΦΑΛΑΙΟ ΕΙΣΑΓΩΓΗ. Μορφές Γραµµικών Προβληµάτων Yπάρχουν δυο µορφές γραµµικών προβληµάτων, οι οποίες χρησιµοποιούνται για την περιγραφή της συντριπτικής πλειοψηφίας των αλγορίθµων, η κανονική ή ανισοτική µορφή (canonical form) και η τυποποιηµένη ή ισοτική µορφή (standard form). Η κανονική µορφή είναι min (max) c x + c 2 x 2 + + c n x n µ.π. a x + a 2 x 2 + + a n x n b a 2 x + a 22 x 2 + + a 2n x n b 2... (Γ.Π.-) a m x + a m2 x 2 + + a mn x n b m x j 0, (j =,,n) όπου συµβολίζει τον τύπο των περιορισµών και µπορεί να είναι ένα από τα ανισοτικά σύµβολα,. Στην κανονική µορφή όλες οι µεταβλητές υπακούουν στους περιορισµούς µη αρνητικότητας και όλοι οι τεχνολογικοί περιορισµοί είναι ανισοτικοί. Σε µια πιο συµπαγής µορφή χρησιµοποιώντας µήτρες και διανύσµατα, η κανονική µορφή γράφεται min (ή max) z = c T x µ.π. Ax b x 0 όπου c, x R n, b R m και A R mxn. Η συνάρτηση z ονοµάζεται αντικειµενική συνάρτηση (objective function) και αποτελεί τον αντικειµενικό στόχο που πρέπει να βελτιστοποιηθεί (ελαχιστοποιηθεί ή µεγιστοποιηθεί). Το διάνυσµα στήλη c αποτελεί τους συντελεστές της αντικειµενικής συνάρτησης και ονοµάζεται διάνυσµα κόστους (cost vector). Το διάνυσµα στήλη b περιλαµβάνει τους σταθερούς όρους των περιορισµών και ονοµάζεται δεξιό µέρος (right hand side). Τέλος, η µήτρα Α διαστάσεων mxn περιλαµβάνει τους συντελεστές των περιορισµών και ονοµάζεται µήτρα συντελεστών (coefficient matrix) του γραµµικού προβλήµατος. Η τυποποιηµένη µορφή είναι min (max) c x + c 2 x 2 + + c n x n µ.π. a x + a 2 x 2 + + a n x n = b a 2 x + a 22 x 2 + + a 2n x n = b 2 5
... (Γ.Π.-2) a m x + a m2 x 2 + + a mn x n = b m x j 0, (j=,,n) και σε µορφή µητρών και διανυσµάτων min (ή max) {z = c T x : Ax = b, x 0} όπου c, x R n, b R m και A R mxn. Στην τυποποιηµένη µορφή όλες οι µεταβλητές υπακούουν στους περιορισµούς µη αρνητικότητας ενώ όλοι οι τεχνολογικοί περιορισµοί είναι ισοτικοί..2 Μετασχηµατισµοί Γραµµικών Προβληµάτων Για να µπορεί ένα γραµµικό πρόβληµα να λυθεί πρέπει να µετασχηµατιστεί σε µορφή κατάλληλη για τον αλγόριθµο που πρόκειται να χρησιµοποιηθεί. Ο µετασχηµατισµός αυτός, όταν εφαρµοστεί πρέπει να δώσει ένα ισοδύναµο γραµµικό πρόβληµα. Ορισµός. υο γραµµικά προβλήµατα είναι ισοδύναµα (equivalent), αν υπάρχει µία ένα προς ένα αντιστοιχία µεταξύ των εφικτών σηµείων των. Οι αλγόριθµοι που θα παρουσιαστούν στα επόµενα κεφάλαια της Πτυχιακής, εφαρ- µόζονται σε Γραµµικά Προβλήµατα ελαχιστοποίησης. Χρειάζεται λοιπόν κάθε γραµ- µικό πρόβληµα µεγιστοποίησης να µετατραπεί σε πρόβληµα ελαχιστοποίησης. Η µετατροπή αυτή γίνεται ως εξής: max {c T x+c 0 : x R n } = min { c T x c 0 : x R n } όπου c 0 είναι ο σταθερός όρος (constant term) της αντικειµενικής συνάρτησης. Από την παραπάνω σχέση προκύπτει ένα γραµµικό πρόβληµα µεγιστοποίησης µετατρέπεται σε ένα ισοδύναµο πρόβληµα ελαχιστοποίησης µε αντικατάσταση της αντικειµενικής του συνάρτησης από c T x σε - c T x. Επειδή δεν γίνεται καµιά αλλαγή στους περιορισµούς τα δυο προβλήµατα είναι ισοδύναµα και κάθε βέλτιστη λύση του ενός είναι και βέλτιστη λύση του άλλου. Ένα άλλο σηµείο το οποίο πρέπει να διασαφηνιστεί εδώ αφορά στην ύπαρξη σταθερών όρων στην αντικειµενική συνάρτηση. Σταθερός όρος στην αντικειµενική συνάρτηση µπορεί να προκύψει κυρίως µετά την εφαρµογή προλυτικών διαδικασιών στο γραµµικό πρόβληµα. Για περισσότερες πληροφορίες σχετικά µε τις προλυτικές διαδικασίες, δες Κεφ. 4..2.. Μετασχηµατισµός από την κανονική στην τυποποιηµένη µορφή Για να µετασχηµατιστεί ένα γραµµικό πρόβληµα από την ανισοτική µορφή στην τυποποιηµένη πρέπει όλοι οι ανισοτικοί τεχνολογικοί περιορισµοί να µετατραπούν σε ισοτικούς περιορισµούς. Η µετατροπή αυτή γίνεται µε εισαγωγή νέων µεταβλητών, µια για κάθε έναν ανισοτικό περιορισµό. 6
Ένας ανισοτικός περιορισµός της µορφής a x + a 2 x 2 +... + a n x n b µπορεί να µετατραπεί σε ισοτικό µε την προσθήκη µιας νέας µεταβλητής x n+ στο αριστερό της µέλος. Τότε η προηγούµενη ανισότητα είναι ισοδύναµη µε το σύστηµα των δύο περιορισµών a x + a 2x 2 +... + a nx n + x n+ = b και x n+ 0 Πράγµατι, από την προηγούµενη ισότητα προκύπτει ότι x n+ = b ( a x + a x +... + a x ) 0 2 2 n n Η νέα µη αρνητική µεταβλητή x n+ ονοµάζεται ελλειµµατική (deficit). Ένας ανισοτικός περιορισµός της µορφής ax + a 2x 2 +... + a nx n b µετατρέπεται σε ισοτικό µε την αφαίρεση µιας µεταβλητής x n+ από το αριστερό της µέλος. Τότε η προηγούµενη ανισότητα µετασχηµατίζεται στο ισοδύναµο σύστηµα a x + a 2x 2 +... + a nx n x n+ = b και x n+ 0 Η µεταβλητή x n+ ονοµάζεται τώρα πλεονασµατική (surplus) και είναι πάλι µη αρνητική, γιατί τώρα είναι x n+ = a x + a x +... + a x b 0 2 2 n n Στη συνέχεια της πτυχιακής οι ελλειµµατικές και οι πλεονασµατικές µεταβλητές θα ονοµάζονται χαλαρές µεταβλητές (slack variables). Παράδειγµα. ίνεται το παρακάτω γραµµικό πρόβληµα. Να µετατραπεί στην ισοδύναµη τυποποιηµένη µορφή. max 2x + x 2 8x 3 +30 µ.π. x + 8x 2 + 4x 3 5 5x x 2 2x 3 90 2x + 3x 2 x 3 25 x j 0, (j =, 2, 3) Λύση. Για να µετατρέψουµε την αντικειµενική συνάρτηση από µεγιστοποίησης σε ελαχιστοποίησης αρκεί να πολλαπλασιαστεί µε - το διάνυσµα c και ο σταθερός όρος c 0. Έτσι η αντικειµενική συνάρτηση της τυποποιηµένης µορφής είναι min 2x x 2 + 8x 3 30 Το γραµµικό πρόβληµα του παραδείγµατος έχει 3 µεταβλητές απόφασης και 6 περιορισµούς. Από αυτούς 3 είναι τεχνολογικοί περιορισµοί και 3 περιορισµοί µη αρνητι- 7
κότητας. Ο πρώτος τεχνολογικός περιορισµός είναι της µορφής. Με την αφαίρεση της πλεονασµατικής µεταβλητής x 4 από το δεξιό του µέρος µετατρέπεται στο ισοδύναµο σύστηµα x +8x 2 + x 3 x 4 = 5, x 4 0 Επειδή ο δεύτερος και τρίτος τεχνολογικός περιορισµός είναι της µορφής προσθέτουµε στα δεξιά τους µέρη τις ελλειµµατικές µεταβλητές x 5, x 6 αντίστοιχα οπότε µετασχηµατίζονται στα ισοδύναµα συστήµατα 5x x 2 2x 3 + x 5 = 90, x 5 0 2x + 3x 2 x 3 +x 6 = 25, x 6 0 Εποµένως, το τυποποιηµένο γραµµικό πρόβληµα έχει τη µορφή min - 2x x 2 + 4x 3 µ.π. x + 8x 2 + x 3 x 4 = 5 5x x 2 2x 3 + x 5 = 90 2x + 3x 2 x 3 + x 6 = 25 x j 0, (j =, 2, 3, 4, 5, 6).3 Αποθήκευση Γραµµικών Προβληµάτων σε Η/Υ Έστω το παρακάτω γραµµικό πρόβληµα σε µορφή µητρών min µ. π. z = c T x Ax (Γ.Π.-3) x b 0 όπου Α R mxn, c, x R n, b R m, Τ σηµαίνει αναστροφή και ένα διάνυσµα διαστάσεων mx. Τα στοιχεία του προσδιορίζουν το είδος της ανισότητας. Τα στοιχεία αυτά είναι, και =. Το ερώτηµα που προκύπτει είναι πως θα αποθηκευτεί το (Γ.Π.-3) σε ηλεκτρονικό υ- πολογιστή, έτσι ώστε να µπορεί να λυθεί εφαρµόζοντας έναν αλγόριθµο. Ο παρακάτω τρόπος αποθήκευσης χρησιµοποιήθηκε από τον (Σαµαράς 200). Τα διανύσµατα x και b αποθηκεύονται ως διανύσµατα στήλες, ενώ το διάνυσµα c ως διάνυσµα γραµµή. Το διάνυσµα c έχει διάσταση xn, το x έχει διάσταση nx ενώ το διάνυσµα b έχει διάσταση mx. Η µήτρα συντελεστών A αποθηκεύεται ως µήτρα διαστάσεων mxn. Σε περίπτωση που υπάρχει σταθερός όρος στην αντικειµενική συνάρτηση, αυτός αποθηκεύεται στη µεταβλητή c 0. Αν δεν υπάρχει σταθερός όρος τότε η µεταβλητή c 0 παίρνει την τιµή 0. Για την αποθήκευση του τύπου των τεχνολογικών περιορισµών χρησιµοποιείται το διάνυσµα στήλη Eqin το οποίο έχει διάσταση mx. Οι τιµές του Eqin προκύπτουν σύµφωνα µε τον παρακάτω τύπο 8
Eqin i, αν ο περιορισµος i ειναι της µορφης = 0, αν ο περιορισµος i ειναι της µορφης =, αν ο περιορισµος i ειναι της µορφης Τέλος, για να ολοκληρωθεί η αποθήκευση ενός γραµµικού προβλήµατος χρειάζεται να αποθηκευτεί και το είδος του. ηλαδή, αν είναι ελαχιστοποίησης ή µεγιστοποίησης. Για το σκοπό αυτό χρησιµοποιείται η µεταβλητή MinMaxLP η οποία παίρνει τιµές σύµφωνα µε το παρακάτω τύπο, αν το Γ.Π. ειναι min MinMaxLP =, αν το Γ.Π. ειναι max Η αποθήκευση του γραµµικού προβλήµατος του Παραδείγµατος σύµφωνα µε τη λογική που περιγράφηκε προηγουµένως θα δώσει τις παρακάτω µήτρες και διανύσµατα στο MaTLab. c = -2-8 c0 = 30 A = 8 4-5 - -2-2 3 - Eqin = - - b = 5 90 25 MinMaxLP = 9
ΚΕΦΑΛΑΙΟ 2 ΠΡΩΤΕΥΩΝ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX 2. Έννοιες - Ορισµοί Έστω το ακόλουθο γραµµικό πρόβληµα σε µορφή µητρών min µ. π. z = c T x Ax x b 0 (Γ.Π.-4) όπου Α R mxn, c, x R n, b R m, κα Τ σηµαίνει αναστροφή. Το πρόβληµα (Γ.Π.-4) βρίσκεται στην κανονική (canonical) µορφή γιατί περιλαµβάνει ισοτικούς και ανισοτικούς περιορισµούς. Για να µπορούν να επιλύσουν το (Γ.Π.-4) οι αλγόριθµοι τύπου simplex πρέπει αυτό να µετατραπεί στην τυποποιηµένη µορφή (standard form).η τυποποιηµένη µορφή του προβλήµατος (Γ.Π.-4) είναι min µ. π. z = c T x Ax + s s = b 0 (Γ.Π.-5) όπου c, x R n, b R m, A R mxn και s R m οι δυϊκές χαλαρές µεταβλητές (dual slack variables). Υποθέτουµε ακόµα ότι για τη µήτρα συντελεστών (coefficient matrix) Α του προβλήµατος (Γ.Π.-5) ισχύει rank(a) = m, m < n () Η σχέση () δηλώνει ότι η µήτρα Α είναι πλήρους βαθµού (full rank). εν υπάρχουν δηλαδή γραµµικώς εξαρτηµένες γραµµές (περιορισµοί) στο πρόβληµα (Γ.Π.-5). Στη συνέχεια της Πτυχιακής αντί του προβλήµατος (Γ.Π.-5), για λόγους απλότητας θα αναφερόµαστε στο ακόλουθο Γ.Π. min µ. π. z = c T x Ax x = b 0 (Γ.Π.-6) Το δυϊκό πρόβληµα του (Γ.Π.-6) είναι T max w b T µ. π. A w + s = 0 (Γ.Π.-7) s 0 0
ιαµερίζοντας τη µήτρα Α του προβλήµατος (Γ.Π.-6) ως Α = (Β Ν) (2) και τα διανύσµατα x και c αντίστοιχα ως x x = x Το γραµµικό πρόβληµα (Γ.Π.-6) γράφεται ως B N c, c = c B N min µ. π. z = c T B x Bx x B B B, x + + N c T N Nx 0 x N N = b (Γ.Π.-8) Το σύνολο δεικτών (set of indices) Β είναι βάση (basis) αν η αντίστοιχη µήτρα Β είναι βαθµού m, αν δηλαδή είναι αντιστρέψιµη (invertible). Η µήτρα Β, η οποία είναι διαστάσεων mxm ονοµάζεται βασική µήτρα (basic matrix). Οι στήλες της µήτρας Α, οι οποίες συµβολίζονται µε A.j, j =,..., n, που ανήκουν στο σύνολο δεικτών Β ονοµάζονται βασικές µεταβλητές (basic variables). Οι υπόλοιπες, στήλες της Α, Α~Β ονο- µάζονται µη βασικές µεταβλητές (non basic variables) και ανήκουν στο σύνολο δεικτών Ν. Η διαµέριση της µήτρας Α όπως προκύπτει από τη σχέση (2) ονοµάζεται και βασική διαµέριση (basic parition). Η λύση που αντιστοιχεί στη βασική διαµέριση (2), είναι x x = x B N = B b 0 (3) Η λύση (3) ονοµάζεται βασική λύση (basic solution). Η βασική λύση είναι εφικτή (feasible) αν ικανοποιεί όλους τους περιορισµούς του προβλήµατος (Γ.Π.-8). Ένα βασικό σηµείο ικανοποιεί όλους τους ισοτικούς περιορισµούς και οι µη βασικές µεταβλητές του ικανοποιούν τους αντίστοιχους φυσικούς περιορισµούς σαν ισότητες. Εποµένως, ένα βασικό σηµείο x είναι εφικτό αν ισχύει x B 0. Η λύση του δυϊκού προβλήµατος (Γ.Π.-7) που αντιστοιχεί στη βάση Β, δίνεται από τη σχέση s = c A T w (4) όπου w είναι πολλαπλασιαστές simplex (simplex multipliers) και υπολογίζονται από την σχέση w Τ = (c B ) T B - (5) Η αντίστοιχη βάση Β ονοµάζεται δυϊκά εφικτή αν ισχύει s 0. Είναι επίσης γνωστό ότι ισχύει s B = 0.
Όπως προκύπτει από τη σχέση (5) το w έχει m συνιστώσες, όσες δηλαδή και οι γραµ- µές της µήτρας Α, ενώ από τη σχέση (4) φαίνεται ότι οι δυϊκές χαλαρές µεταβλητές s έχουν n συνιστώσες όσες δηλαδή και οι στήλες της µήτρας Α. Μεταξύ των λύσεων x του πρωτεύοντος προβλήµατος του s του δυϊκού ισχύει η επόµενη ικανή συνθήκη βελτιστότητας που περιγράφεται στο Θεώρηµα. Θεώρηµα : Έστω Β µια βάση του προβλήµατος (Γ.Π.-6). Η αντίστοιχη βασική λύση (x B, x N ) είναι βέλτιστη, αν ισχύει x B 0 και s Ν 0. Απόδειξη αυτού του θεωρήµατος µπορεί να βρεθεί στο βιβλίο (Paparrizos 999). 2.2 Χαρακτηριστικά Αλγορίθµων τύπου Simplex Κάθε αλγόριθµος τύπου simplex κατασκευάζει µια πεπερασµένη ακολουθία βασικών λύσεων. Έστω Β η τρέχουσα βάση. Αν για αυτήν την βάση ισχύει (x B, s N ) 0 τότε αυτή είναι βέλτιστη (optimal) και οι υπολογισµοί των αλγορίθµων σταµατούν. ιαφορετικά, γίνεται προσπάθεια να βρεθούν οι δείκτες k B και l Ν. Αν δεν µπορεί να βρεθεί ο δείκτης k τότε το πρόβληµα (Γ.Π.-6) είναι απεριόριστο (unbounded) και οι υπολογισµοί σταµατούν. Σε περίπτωση που βρεθούν και οι δύο δείκτες τότε αλλάζουν µεταξύ τους θέση στα διανύσµατα δεικτών Β και Ν. Η αλλαγή πραγµατοποιείται χρησιµοποιώντας τις ακόλουθες σχέσεις και B Β \ {k} {l} (6) N Ν \ {l} {k} (7) Οι σχέσεις (6) και (7) δηλώνουν ότι η βασική µεταβλητή x k θα γίνει µη-βασική ενώ η µη-βασική x l θα γίνει βασική. Κατασκευάστηκε έτσι µια νέα βάση Β. Η διαδικασία αυτή εναλλαγής των δεικτών (k, l) ονοµάζεται περιστροφή (pivoting). H µεταβλητή x k που αφήνει τη βάση Β ονοµάζεται εξερχόµενη µεταβλητή (leaving variable) ενώ η µεταβλητή x l που µπαίνει στη βάση εισερχόµενη (entering variable). Σε κάθε επανάληψη λοιπόν, οι αλγόριθµοι τύπου simplex εναλλάσσουν µια στήλη του Β µε µια στήλη του Ν, κατασκευάζοντας έτσι µια νέα βάση. Γεωµετρικά αυτό σηµαίνει ότι κινούνται κατά µήκος των ακµών του πολυέδρου P = {x Ax b, x 0}. Ένας τέτοιος δρόµος είναι γνωστός ως µονοπάτι simplex (simplex path). Σε περίπτωση όµως που φτάσουν σε ένα εκφυλισµένο σηµείο x d είναι δυνατόν να κατασκευάσουν διαφορετικά βασικά σηµεία χωρίς όµως να µετακινούνται από το σηµείο x d. Αυτό σηµαίνει ότι δεν βελτιώνεται ανά επανάληψη η τιµή της αντικειµενικής συνάρτησης. Το φαινόµενο αυτό είναι ένα υπολογιστικό µειονέκτηµα των αλγορίθµων τύπου simplex και ονοµάζεται στασιµότητα (stalling). Είναι πολύ κρίσιµο για την πρακτική αποτελεσµατικότητα των αλγορίθµων τύπου simplex να λαµβάνεται υπόψιν κατά την υλοποίησή τους το φαινόµενο της στασιµό- 2
τητας και κατ επέκταση της κύκλωσης (cycling). Έχουν αναπτυχθεί πολλοί κανόνες περιστροφής αντικύκλωσης (anticycling pivoting rules) οι οποίοι αντιµετωπίζουν τα δύο παραπάνω φαινόµενα. Οι πιο διαδεδοµένοι από αυτούς µπορούν να βρεθούν στις εργασίες (Charnes 952), (Bland 977). 2.3 Αναθεωρηµένος Πρωτεύων Αλγόριθµος Simplex Ο αλγόριθµος θα περιγραφεί στο (Γ.Π.-6) και µε την υπόθεση ότι µια αρχική βασική εφικτή λύση υπάρχει. Ο αναθεωρηµένος αλγόριθµος simplex (revised simplex algorithm) κατασκευάζει σε κάθε επανάληψη το ακόλουθο ταµπλό (tableau) το οποίο ο- νοµάζεται και αναθεωρηµένο ταµπλό simplex (revised simplex tableau). Basis Inverse w = c Β Β - Β - RHS z = c B b b = Β - b Ο αναθεωρηµένος αλγόριθµος simplex ξεκινά τους υπολογισµούς µε το τµήµα Basis Inverse (αντίστροφη βάσης) του παραπάνω ταµπλό, έχοντας µηδενικά στη γραµµή κόστους, w = c B B - = 0 και τη µοναδιαία µήτρα (identity matrix) στις υπόλοιπες γραµµές (Β - = Ι mxm ). Κρατώντας στη µνήµη του Η/Υ τα αρχικά δεδοµένα του προβλήµατος αποθηκευµένα στις µήτρες Α, c και b µπορούµε υπολογίζοντας κάθε φορά τη βασική µήτρα Β - και τα σύνολα δεικτών Β και Ν, να αναπαράγουµε κάθε ποσότητα που είναι απαραίτητη για τον αναθεωρηµένο αλγόριθµο simplex. Στον Πίνακα. φαίνονται ποιες ποσότητες υπολογίζονται χρησιµοποιώντας την αντίστροφη της βάσης Β - και τη βασική διαµέριση (Β, Ν). Ποσότητα Τιµές βασικών µεταβλητών Τιµή αντικειµενικής συνάρτησης Υπολογισµός x Β = b = B - b z = c B B - b Στήλη περιστροφής x l = B - A.l υϊκές χαλαρές µεταβλητές s N = c N - c B B - A N Πίνακας : Υπολογισµός ποσοτήτων χρησιµοποιώντας την αντίστροφη της βάσης. Σε κάθε επανάληψη πρέπει να εντοπιστεί ένα ζεύγος µεταβλητών (x l, x k ), το οποίο αλλάζει θέσεις στα σύνολα δεικτών Β, Ν σύµφωνα µε τις σχέσεις (6) και (7). Για την επιλογή της εισερχόµενης µεταβλητής χρησιµοποιείται ο κανόνας περιστροφή του Dantzig. Συγκεκριµένα, το κριτήριο αυτό για την επιλογή της εισερχόµενης είναι s l { s :s < 0 j N} = min (8) j Η προσπάθεια αυτή όµως απαιτεί αυξηµένη υπολογιστική εργασία ανά επανάληψη. Η δεύτερη κατηγορία επιδιώκει να µειώσει τη µέση εργασία ανά επανάληψη σε βάρος κάποιας αύξησης του συνολικού αριθµού των επαναλήψεων. Για την επιλογή της εξερχόµενης µεταβλητής x k, υπάρχει πληθώρα στρατηγικών που µπορούν να εφαρµοστούν. Στη συνέχεια θα αναφέρουµε µόνο τον τρόπο επιλογής j. Έστω στην k επανάληψη αντιστοιχεί η βάση Β (k). Αν στην t επανάληψη, µε t > k, εµφανιστεί η βάση Β (t) για την οποία ισχύει Β (t) = B (k) τότε το φαινόµενο αυτό ονοµάζεται κύκλωση. 3
που χρησιµοποιείται από τον αλγόριθµος simplex. Ο τρόπος αυτός είναι γνωστός ως τεστ ελαχίστου λόγου (minimum ratio test) και υπολογίζεται από την ακόλουθη σχέση ( B b) ( B b) r i x k = x B[r] = = min :h rl > 0 i =,2,..,m (9) h rl h rl όπου h = B - A.l Σε περίπτωση που δεν υπάρχει h il > 0, ισχύει x k = και το (Γ.Π.-6) είναι απεριόριστο (unbounded). Ο αριθµός r ονοµάζεται δείκτης περιστροφής (pivot index) ενώ το στοιχείο h rl στοιχείο περιστροφής (pivot element). Στην περίπτωση που το τρέχων σηµείο είναι εκφυλισµένο το τεστ ελαχίστου λόγου (9) είναι ίσο µε µηδέν, x k = 0 και δεν υπάρχει καµία βελτίωση στην αντικειµενική συνάρτηση (objective function) σε σχέση µε την προηγούµενη επανάληψη. Είναι δυνατόν να υπάρχουν περισσότεροι από ένας βασικοί δείκτες που να ικανοποιούν τη σχέση (9). Στην περίπτωση αυτή υπάρχει δεσµός (tie). Τυχαία επιλογή ενός από αυτούς τους δείκτες ως δείκτη περιστροφής µπορεί να οδηγήσει σε κύκλωση τον αλγόριθµο simplex. Η εµφάνιση του φαινοµένου της κύκλωσης έχει ως αποτέλεσµα το µη τερµατισµό του αλγορίθµου. Υπάρχουν πολλές προγραµµατιστικές τεχνικές για να σπάνε οι δεσµοί. Στη συνέχεια αναφέρεται αυτή που χρησιµοποιήθηκε στην υλοποίηση (implementation) του αναθεωρηµένου αλγορίθµου simplex. Έστω ότι υπάρχουν περισσότερες από µια επιλέξιµες µεταβλητές για να εξέρθουν της βάσης. Στην περίπτωση αυτή θα επιλέγεται ως δείκτης περιστροφής εκείνος ο οποίος έχει τη µικρότερη τιµή. ηλαδή, k = min{k, k 2,..., k p } (0) µε p m. Η διαδικασία αυτή περιγράφεται στον ψευδοκώδικα 2.. Procedure Break_Tie mrt: = find(h > 0) [p r]: = min(x B[mrt] / h [mrt] ); tie: = find((x B[mrt] / h [mrt] ) = p); if tie > r: = mrt(tie); k: = B(r); [k col]: = min(k); r : =find(b = k); else r: = mrt(r); k: = B(r); end Ψευδοκώδικας : ιαδικασία εύρεσης εξερχόµενης µεταβλητής, δείκτη περιστροφής και σπάσιµο δεσµών. Όλοι οι αλγόριθµοι τύπου simplex υπολογιστικά υποφέρουν στην εύρεση της αντίστροφης της βάσης.. Για την βελτίωση του χρόνου υπολογισµού της αντίστροφης της βάσης έχουν αναπτυχθεί αρκετές τεχνικές. Οι τεχνικές αυτές έχουν ως στόχο το γρήγορο υπολογισµό της αντίστροφης της βάσης έτσι ώστε να ελαττωθεί το ποσοστό 4
5 συµµετοχής του υπολογισµού της στο συνολικό χρόνο επίλυσης. Στη συνέχεια θα αναφερθούµε στη µέθοδο εύρεσης της αντίστροφης της βάσης που χρησιµοποιήθηκε στην υλοποίηση του αναθεωρηµένου αλγορίθµου simplex. Λήµµα : Έστω τα διανύσµατα u, v R m και η µη οµαλή (non singular) µήτρα Α R mxm. Αν ισχύει v T A - u - τότε από τη σχέση ( ) u A v A uv A A uv A T T T + = + () υπολογίζεται η νέα αντίστροφη µήτρα Α + uv T η οποία διαφέρει από την Α - κατά τα διανύσµατα u και v. Μια µήτρα Ε ονοµάζεται στοιχειώδης (elementary) όταν διαφέρει από τη µοναδιαία µήτρα Ι κατά µια µόνο στήλη. Έστω ότι η µήτρα Ε διαφέρει από τη µοναδιαία στήλη µόνο στη στήλη j. Η Ε τότε συµβολίζεται ως εξής = a a a E m j (2) Η αντίστροφη της µήτρας Ε είναι j ( ) = = a / a a / a / a e e a a I E j m j j T j j j (3) Συµβολίζοντας την i-γραµµή της µήτρας Α µε Α i. την j-στήλη µε Α. j και το στοιχείο περιστροφής µε a pq η σχέση (3) µε όρους του γραµµικού προβλήµατος γράφεται ( ) = = / a a / a / a a e e a a I E pq mq pq pq q T q q q pq (4) Στην παραπάνω σχέση η στήλη q λέγεται στήλη περιστροφής και η γραµµή p γραµµή περιστροφής. Η νέα αντίστροφη µήτρα Β - σε κάθε επανάληψη των αλγορίθµων τύπου simplex µπορεί να υπολογιστεί από την προηγούµενη αντίστροφη Β - µε µια α-
πλή πράξη περιστροφής. Έχουµε δηλαδή, όπου το Ε - υπολογίζεται από τη σχέση (4). Β - = (ΒΕ) - = Ε - Β - (4) Procedure Basis_Inverse_Update g: = h r ; For i: =, 2,..., m E ir : = -a il /g; End E rr : = /g; B - : = E - B - ; Ψευδοκώδικας 2: ιαδικασία ανανέωσης της αντίστροφης της βάσης. Με τη νέα βάση B - µπορούµε τώρα να προσδιορίσουµε τα στοιχεία της στήλης περιστροφής από τα αρχικά δεδοµένα του Γ.Π. από τη σχέση (5) h l = B - A. l (5) και τα στοιχεία της γραµµής περιστροφής που αντιστοιχούν στους δείκτες των µη βασικών µεταβλητών από τη σχέση (6) H rn r. = B A (6) Στο τελευταίο βήµα των αλγορίθµων τύπου simplex πραγµατοποιείται εκτός από τον υπολογισµό της νέας βάσης και η ανανέωση των τιµών των βασικών µεταβλητών, x B και των τιµών των δυϊκών χαλαρών µεταβλητών s N. N Έχοντας όλες τις απαραίτητες πληροφορίες ακολουθεί η βηµατική περιγραφή του α- ναθεωρηµένου αλγορίθµου simplex. Αναθεωρηµένος Πρωτεύων Αλγόριθµος Simplex Βήµα 0 (Αρχικοποίηση). Ξεκινά µε µια εφικτή βασική διαµέριση (Β,Ν). Υπολόγισε τη µήτρα Β - και τα διανύσµατα x B, s N και w Τ από τις σχέσεις (3), (4) και (5) αντίστοιχα. Βήµα (Έλεγχος βελτιστότητας). Αν s N 0, STOP, το πρόβληµα (Γ.Π.-6) είναι βέλτιστο. Βήµα 2 (Επιλογή εισερχόµενης/εξερχόµενης µεταβλητής). α) Επέλεξε την εισερχόµενη µεταβλητή από τη σχέση (8). Η µεταβλητή x l είναι εισερχόµενη. β) Υπολόγισε τη στήλη περιστροφής από τη σχέση (5). Αν ισχύει h il 0, STOP, το πρόβληµα (Γ.Π.-6) είναι απεριόριστο. ιαφορετικά, επέλεξε την εξερχόµενη µεταβλητή από τη σχέση (9). Η µεταβλητή x k είναι εξερχόµενη. Βήµα 3 (Περιστροφή). Ανανέωση τα σύνολα δεικτών Β και Ν σύµφωνα µε τις σχέσεις (6) και (7). Υπολόγισε τη νέα αντίστροφη της βάσης, Β - από τη σχέση (4) και τα διανύσµατα x B και s N. Πήγαινε στο Βήµα. 6
Παράδειγµα 2: Να λυθεί µε τον πρωτεύοντα αλγόριθµο simplex το ακόλουθο Γ.Π. max µ. π. 5x 2x 4x 3x + + + + x 4x 3x x 4x,x Λύση. Το Γ.Π. θα επιλυθεί µε τη συνάρτηση revised_simplex η οποία προγραµµατίστηκε στο MATLAB [3]. Πληκτρολογώντας στο παράθυρο εντολών (command window) την εντολή 2 2 2 2 2,x + + + + 3 0 3x x 2x 2x 3 3 3 3 5 8 >> revised_simplex --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:data Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:- Current default tolerance is: 5.9952e-05 Change values?(y n):n Please give the type of the optimization( to max,- to min): ------------------------------------------ Starting Revised Primal Simplex algorithm: ------------------------------------------ Slack variables have been added. Elapsed time in seconds: 0 7
ENTERING PHASE 2 T H E L P I S O P T I M A L O b j e c t i v e: ************************************ Z = 3 ************************************ Iterations= 3 Elapsed time in seconds: 0.056 Total time in seconds: 0.0620 Σε περίπτωση που το γραµµικό πρόβληµα περιλαµβάνει εξαρχής ισοτικούς περιορισµούς, Eqin i = 0, i =, 2,, m, πρέπει να γίνει έλεγχος αν η επαυξηµένη µήτρα [Α b] είναι πλήρους βαθµού. Κάποιες από τις αρχικές µεταβλητές θα πρέπει να επιλεγούν ως βασικές. Αν κατά τη διάρκεια του υπολογισµού του βαθµού της επαυξηµένης µήτρας εµφανιστεί περιορισµός της µορφής a i x +a i2 x 2 +... + a in x n = 0 όπου a ij = 0, i =, 2,..., m, j =, 2,, n τότε αυτός διαγράφεται. Αν όµως εµφανιστεί περιορισµός της µορφής a i x + a i2 x 2 +... + a in x n = b i όπου a ij = 0 και b i 0, i =, 2,..., m, j =, 2,, n τότε το γραµµικό πρόβληµα είναι αδύνατο. Ως βασικές µεταβλητές επιλέγονται εκείνες οι στήλες οι οποίες κατά τη διάρκεια εύρεσης του βαθµού σχηµατίζουν τη µοναδιαία µήτρα. Περισσότερες πληροφορίες για τον υπολογισµό του βαθµού µιας µήτρας αλλά και για άλλες υπολογιστικές µεθόδους δες το βιβλίο των Stephanides, Samaras 999. 2.4 Επίλυση Γενικών Γραµµικών Προβληµάτων Έστω το γραµµικό πρόβληµα της µορφής (Γ.Π.-6). Για να εφαρµοστεί απευθείας ο αλγόριθµος simplex σε αυτό το πρόβληµα πρέπει να υπάρχει ένα αρχικό βασικό εφικτό σηµείο, x T = (x B, x N ) 0. Σε περίπτωση που δεν µπορεί να βρεθεί εύκολα ένα τέτοιο σηµείο θα πρέπει να χρησιµοποιηθεί µια µέθοδος για τον υπολογισµό του. Μια τέτοια µέθοδος είναι των δύο φάσεων µε µια τεχνητή µεταβλητή (two phase method with one artificial variable) όπου ο αλγόριθµος simplex εφαρµόζεται δύο φορές. Στη φάση Ι επιλύεται ένα τροποποιηµένο γραµµικό πρόβληµα. Το πραγµατικό πρόβληµα (Γ.Π.-6) λύνεται στη Φάση ΙΙ, όπου έχει ήδη βρεθεί ένα βασικό εφικτό σηµείο από τη Φάση Ι. 8
Το τροποποιηµένο πρόβληµα της Φάσης Ι κατασκευάζεται ως εξής. Εισάγεται µια νέα µεταβλητή x n+ η οποία ονοµάζεται τεχνητή (artificial) µε συντελεστές d = A B e (7) όπου e ένα διάνυσµα διαστάσεων mx µε όλες τις συνιστώσες του µονάδες. Το πρόβληµα που επιλύεται στη Φάση Ι έχει τη µορφή min µ. π. Α x + x,x n+ x dx n+ n+ 0 = b (Γ.Π.-9) Στη συνέχεια πρέπει να γίνει µια περιστροφή έτσι ώστε η τεχνητή µεταβλητή x n+ να εισαχθεί στη βάση. Το ζητούµενο είναι τώρα ποια µεταβλητή θα εξαχθεί από τη βάση. Ως εξερχόµενη µεταβλητή x k = x B[r] επιλέγεται εκείνη µε τη µικρότερη τιµή δεξιού µέρους από την παρακάτω σχέση x k = x B[r] = min{x B[i] : i =, 2,..., m} (8) και ανανεώνονται τα σύνολα δεικτών Β και Ν ως εξής και Β Β \ {k} {n+} (9) Ν Ν \ {n+} {k} (20) Η στήλη περιστροφής είναι αυτή που αντιστοιχεί στην τεχνητή µεταβλητή. Υπολογίζεται από την ακόλουθη σχέση h n+ = B - A., n+ (2) Χρησιµοποιώντας τη νέα βασική διαµέριση (Β, Ν) υπολογίζονται οι νέες µήτρες Β -, x Β και s N. H επιλογή της x n+ ως εισερχόµενης και της x k ως εξερχόµενης, όπως αυτή προσδιορίζεται από τη σχέση (8), εγγυάται την κατασκευή ενός βασικού εφικτού σηµείου, x 0. Τώρα µπορεί να εκτελεστεί ο αλγόριθµος simplex στο πρόβληµα (Γ.Π.-9). Η µετάβαση στη Φάση ΙΙ γίνεται ως εξής. Έστω (x, x n+ ) η βέλτιστη λύση του. ιακρίνουµε δύο περιπτώσεις. i. x n+ > 0. Το πρόβληµα (Γ.Π.-6) είναι αδύνατο. ii. x n+ = 0. Η λύση x είναι βασική και εφικτή στο πρόβληµα (Γ.Π.-6). Η λύση αυτή χρησιµοποιείται ως βάση ξεκινήµατος του αλγορίθµου simplex για το πρόβληµα (Γ.Π.-6) στη Φάση ΙΙ. Αν ισχύει η περίπτωση (i), οι υπολογισµοί σταµατούν στη Φάση Ι και ο αλγόριθµος τερµατίζεται. Σε περίπτωση που {n+} N ισχύει x n+ = 0 και γίνεται µετάβαση στη Φάση ΙΙ. Είναι δυνατόν όµως να ισχύει x n+ = 0 και {n+} B. Στη περίπτωση αυτή, πριν γίνει η µετάβαση στη Φάση Ι, γίνεται µια περιστροφή έτσι ώστε να εξαρθεί η x n+ από τη βάση. Ως εισερχόµενη επιλέγεται µια οποιαδήποτε µεταβλητή από το σύνολο δεικτών Ν αρκεί για το στοιχείο περιστροφής να ισχύει h rl 0, όπου r ο δείκτης της θέσης της µεταβλητής x n+ στη βάση Β. 9
Η νέα βασική διαµέριση είναι Β Β \ {n + } {l} (22) και Ν Ν \ {l} (23) Για να ολοκληρωθεί η µετάβαση στη Φάση ΙΙ πρέπει µε τη νέα βασική διαµέριση ( Β, Ν), που προέκυψε από τις σχέσεις (22) και (24) να υπολογιστούν τα x Β και s Ν. Μέθοδος δύο φάσεων Βήµα 0 (Έλεγχος εφικτότητας). Ξεκινά µε µια βασική διαµέριση (Β, Ν). Υπολόγισε τη µήτρα Β - και τα διανύσµατα x B, s N. Αν υπάρχει εφικτό σηµείο πήγαινε στο Βήµα 3. ιαφορετικά, εισήγαγε µια τεχνητή µεταβλητή x n+ και υπολόγισε τους συντελεστές της από τη σχέση (7). Βήµα (Περιστροφή). Επέλεξε ως εισερχόµενη τη µεταβλητή x n+ και ως εξερχόµενη αυτή που προσδιορίζεται από τη σχέση (8). Ανανέωσε τα σύνολα δεικτών, Β, Ν σύµφωνα µε τις σχέσεις (9) και (20). Υπολόγισε τη στήλη περιστροφής από τη σχέση (2) και ανανέωσε τη νέα αντίστροφη της βάσης Β - καθώς και τα διανύσµατα x B, s n. Βήµα 2 (Φάση Ι). Χρησιµοποιώντας τη νέα βασική διαµέριση εφάρµοσε τον αναθεωρηµένο αλγόριθµο simplex. Αν ισχύει η περίπτωση (i), STOP, το πρόβλη- µα (Γ.Π.-6) είναι αδύνατο. ιαφορετικά, πήγαινε στο βήµα 3. Βήµα 3 (Φάση ΙΙ). Χρησιµοποιώντας τη βασική εφικτή διαµέριση (Β, Ν), που προέκυψε από τις σχέσεις (22) και (23) εφάρµοσε τον αλγόριθµο simplex στο πρόβληµα (Γ.Π.-6). Παράδειγµα 3: Να λυθεί µε τη µέθοδο των δυο φάσεων το ακόλουθο γραµµικό πρόβληµα. Min 20x + 4x2 + 9x3 + 4x4 + x5 Subject to x + 2x2 + 0x3 + 2x4 + x5 = 2 x + 0x + 3x 4x x = 3 2 x 0 j Το πρόβληµα αυτό δεν απαιτεί προσθήκη χαλαρών µεταβλητών διότι όλοι οι περιορισµοί είναι ισοτικοί εξαρχής. Έτσι στην πρώτη επανάληψη τα δεδοµένα του προβλήµατος έχουν ως εξής: B = [ 2] επιλέξαµε τις δύο πρώτες µεταβλητές για να σχηµατίσουµε βάση και εποµένως N = [ 3 4 5] 3 4 5 20
2.5 x B = 3 2 B = 0 2 B = 0 c B = c N = w = s = N [ 4 20] [ 9 4 ] [ 2 8] [ 45 72 7 ] Παρατηρούµε πως η πρώτη µας βάση δεν είναι εφικτή αφού υπάρχει αρνητικό στοιχείο στο διάνυσµα x B. Έτσι θα προχωρήσουµε στην µέθοδο των δύο φάσεων για να κατασκευάσουµε ένα εφικτό σηµείο εκκίνησης για τον αλγόριθµο, αν αυτό βέβαια είναι εφικτό και το γραµµικό πρόβληµα δεν είναι αδύνατο. Ας εξηγήσουµε πρώτα όµως πώς λειτουργεί η Φάση. Εφόσον το πρώτο κατασκευασµένο σηµείο δεν είναι εφικτό, κατασκευάζουµε ένα άλλο γραµµικό πρόβληµα µε χρήση µίας τεχνητής µεταβλητής. Αυτό γίνεται ως εξής: Εισάγουµε µια τεχνητή µεταβλητή σαν επιπρόσθετη στήλη µετά την τελευταία στην µήτρα Α που ισούται µε d = Be, όπου e ένα διάνυσµα στήλη µε όλα τα στοιχεία του ίσα µε την µονάδα. Η στήλη d είναι οι συντελεστές της τεχνητής µεταβλητής. Αν m είναι το πλήθος των περιορισµών και n το πλήθος των µεταβλητών τότε το πρόβληµα που επιλύεται στην Φάση είναι το : min x n+ s.t. Ax + dxn+ = b x 0, 0 x n + Αποδεικνύεται πως η βάση B~B(r) {n+} είναι εφικτή στο πρόβληµα της Φάσης, όπου ο δείκτης r είναι η θέση του πιο αρνητικού στοιχείου της µήτρας x B. Το πρόβληµα της Φάσης είναι ή αδύνατο ή βέλτιστο. Η λειτουργία της Φάσης εξηγείται αν καταλάβουµε πώς κινείται ο Simplex. Εφόσον προσθέσαµε µία τεχνητή µεταβλητή στο αρχικό γραµµικό πρόβληµα, σκοπός µας είναι να την αποµακρύνουµε µε κάποιο τρόπο εφόσον µοναδικός σκοπός της ήταν να δηµιουργήσει µία αρχική εφικτή βάση. Επειδή ο αλγόριθµος Simplex ξεκινώντας µε µια εφικτή βάση συνεχώς µετακινείται σε εφικτά σηµεία αυτό συνεπάγεται πως το x B είναι συνεχώς µεγαλύτερο ή ίσο του µηδενός. Άρα µας ενδιαφέρει η τεχνητή µεταβλητή να γίνει κάποια στιγµή εξερχόµενη. Αν κάτι τέτοιο συµβεί τότε η βασική διαµέριση θα παραµείνει εφικτή και στο αρχικό πρόβληµα και εποµένως µπορούµε να περάσουµε στη Φάση 2, δηλαδή στην επίλυση του αρχικού µας προβλήµατος. Είµαστε λοιπόν έτοιµοι να εφαρµόσουµε την Φάση για να κατασκευάσουµε µια ε- φικτή διαµέριση για το πρωτεύον µας πρόβληµα. Έτσι έχουµε: 2
2 0 2 3 A = 0 3 4 0 3 0 0 5.5 0 2 3 0.5.5 4 cb =, c N, xb, w, B, B, s N = = 0 3 = = = = 0 0 0 B= = [ 2 6 ], N [ 3 4 5 ] Στην δεύτερη επανάληψη της Φάσης έχουµε r=2, l=4, t=2 και k=6, όπου t είναι η θέση του ελαχίστου στοιχείου του s N, l = N(t), τo r η θέση του x B από την οποία προκύπτει ελάχιστος λόγος και τέλος k = B(r). Μετά την περιστροφή έχουµε [ 2 4 ], N [ 3 6 5 ] B= = 0 0 0 0 0.25 0 2 3 0.5 0.25 cb =, c N, xb, w, B, B, s N = = 0 0.75 = = = = 0 0 0.25 0 0 0 Παρατηρούµε πως η τεχνητή µεταβλητή x 6 εξήλθε της βάσεως και εποµένως η βασική µας λίστα µπορεί να µεταφερθεί αµετάβλητη στην Φάση 2. Έτσι έχουµε: 9 2 0 2 4 0.25 2 A=, cb, c,,, 0 3 4 = 4 N = xb = w 0.75 = 0 20 2 2 0.5 0.25 B=, B 0 4 = 0 0.25 9 sn =, B= 2 4, N = 3 5 8 Aυτά είναι τα δεδοµένα του αρχικού µας προβλήµατος µετά τον τερµατισµό της Φάσης. Όπως παρατηρούµε το αρχικό σηµείο είναι εφικτό. Άρα ο αλγόριθµος µπορεί να ξεκινήσει. Μετά από µία περιστροφή-επανάληψη στην φάση 2 έχουµε 9 4 2 2 2 2 c c 4 x 0.5 w B B 0 0 4 0.5 0.5 20 2 sn = 4, B= [ 5 4 ], N = [ 3 2 ] 2 B= =, N =, B =, =, =, =, 22
Παρατηρούµε πως ισχύει η συνθήκη βελτιστότητας και εποµένως ο αλγόριθµος τερ- µατίζεται. Η τιµή της αντικειµενικής συνάρτησης είναι Ζ= c =3. x B B Παράδειγµα 4: Να λυθεί µε τη µέθοδο των δυο φάσεων το ακόλουθο γραµµικό πρόβληµα. min x 4x 3x 2x + + x 2x 6x 5x x 2 2 2 2,x 2 Λύση. Το γραµµικό πρόβληµα θα λυθεί χρησιµοποιώντας τη συνάρτηση revised_simplex. + + +,x 3 8x 8x 3x,x x 4 3 3 3 3 0 + + + 5x x 9x 7x 4 4 4 4 2 7 4 >> revised_simplex --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:data Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:- Current default tolerance is: 2.2204e-04 Change values?(y n):n Please give the type of the optimization( to max,- to min):- ------------------------------------------ Starting Revised Primal Simplex algorithm: ------------------------------------------ 23
Slack variables have been added. Elapsed time in seconds: 0 ENTERING PHASE Elapsed time in seconds: 0 ENTERING PHASE 2 T H E L P I S O P T I M A L O b j e c t i v e: ************************************ Z = -7.3300248389578 ************************************ Iterations= 4 Elapsed time in seconds: 0.033 Total time in seconds: 0.0470 Επιπλέον µέθοδοι-συναρτήσεις που χρησιµοποιήθηκαν στην υλοποίηση του αναθεωρηµένου αλγορίθµου Simplex προγραµµατιστικά είναι η συνάρτηση κλιµάκωσης (scaling) των δεδοµένων, για την περίπτωση που τα δεδοµένα του γραµµικού προβλήµατος έχουν σηµαντικές διακυµάνσεις στις τιµές τους, η συνάρτηση lprref, µέθοδος του επαυξηµένου πίνακα µε ειδική µεταχείριση σε αραιές µήτρες για σωστή ε- φαρµογή στα γραµµικά προβλήµατα, η οποία εντοπίζει την αρχική αντιστρέψιµη βάση, καθώς και η χρήση ανοχών (tolerances) για την αποφυγή αριθµητικών σφαλµάτων. Οι ανοχές βρίσκουν κύρια εφαρµογή στα benchmarks, κάτι που θα αναλυθεί ε- κτενέστερα παρακάτω. 24
ΚΕΦΑΛΑΙΟ 3 ΑΛΓΟΡΙΘΜΟΣ ΕΞΩΤΕΡΙΚΩΝ ΣΗΜΕΙΩΝ 3. Χαρακτηριστικά Αλγορίθµων Εξωτερικών Σηµείων Ένας τρόπος για την βελτίωση της υπολογιστικής συµπεριφοράς των αλγορίθµων τύπου simplex είναι η µετακίνηση σε µη-γειτονικές (non-adjacent) βελτιώνουσες κορυφές. Η µετακίνηση αυτή µπορεί να επιτευχθεί αν µετακινηθούµε εκτός των συνόρων του πολυέδρου P = {x Ax b, x 0} και κατασκευάζοντας βασικές λύσεις οι οποίες δεν είναι εφικτές. Ένας τέτοιος αλγόριθµος ονοµάζεται αλγόριθµος simplex εξωτερικών σηµείων (exterior point simplex algorithm). Στη συνέχεια ο αλγόριθµος εξωτερικών σηµείων θα αναφέρεται για λόγους συντοµίας ως EPSA. Ο αλγόριθµος EPSA αναπτύχθηκε από τον Paparrizos 99 για το πρόβληµα αντιστοίχησης (assignment problem). Στη συνέχεια ο ίδιος ερευνητής ανέπτυξε ένα γενικό αλγόριθµο Εξωτερικών Σηµείων για γραµµικά προβλήµατα Paparrizos 993. Ένα κοινό χαρακτηριστικό όλων σχεδόν των τύπου simplex αλγορίθµων είναι ότι µπορούν να ερ- µηνευτούν ως µια διαδικασία που ακολουθεί τύπου simplex µονοπάτια (simplex paths) τα οποία καταλήγουν στη βέλτιστη λύση. Σε κάθε επανάληψη ο πρωτεύον αλγόριθµος simplex, ο οποίος για λόγους συντοµίας θα αναφέρεται ως PSA εναλλάσσει µια στήλη του Β µε µια γειτονική στήλη του Ν κατασκευάζοντας έτσι µια νέα βάση Β. Γεωµετρικά αυτό σηµαίνει ότι κινείται κατά µήκος των ακµών του πολυέδρου P = {x Ax b, x 0}. Ένας τέτοιος δρόµος είναι γνωστός ως δρόµος simplex. Οι αλγόριθµοι εξωτερικών σηµείων δηµιουργούν δυο δρόµους προς τη βέλτιστη λύση. Ο ένας δρόµος είναι µη εφικτός και ο άλλος είναι εφικτός. Για αυτό το λόγο δε χρειάζεται να προχωρούν εξετάζοντας τη µία µετά την άλλη ακµή κατά µήκος του πολυέδρου της εφικτής περιοχής. Το σηµαντικό για τους αλγόριθµους εξωτερικών σηµείων είναι ότι δεν πρέπει σε καµία περίπτωση να χάσουν την επαφή µε την εφικτή περιοχή. Σε αντίθετη περίπτωση η εύρεση της βέλτιστης κορυφής (optimal vertex) είναι πολύ δύσκολη ως και ακατόρθωτη. Για τη διατήρηση της επαφής µε την εφικτή περιοχή φροντίζει ο δεύτερος δρόµος ο οποίος αποτελείται από εφικτά σηµεία. Αυτός ο δρόµος δεν είναι όµως τύπου simplex. Οι αλγόριθµοι εξωτερικών σηµείων κατασκευάζουν µια ακολουθία βασικών λύσεων. Έστω Β η τρέχουσα βάση. Στη συνέχεια γίνεται ο έλεγχος βελτιστότητας. Αν το παρών σηµείο δεν είναι βέλτιστο τότε γίνεται προσπάθεια να βρεθούν οι δείκτες k και l, οι οποίοι αντιστοιχούν στην εξερχόµενη και εισερχόµενη µεταβλητή αντίστοιχα. Αν δεν µπορεί να προσδιοριστεί εξερχόµενη µεταβλητή τότε το πρόβληµα (Γ.Π.-6) είναι απεριόριστο. 25
3.2 Αναθεωρηµένος Αλγόριθµος Εξωτερικών Σηµείων Ο πρωτεύων αλγόριθµος εξωτερικών σηµείων θα περιγραφεί στη συνέχεια στο γραµ- µικό πρόβληµα (Γ.Π.-6). Ο αλγόριθµος ξεκινά µε µια βασική εφικτή διαµέριση (Β, Ν). Στη συνέχεια υπολογίζονται τα σύνολα δεικτών P = {j N : s j < 0} (24) και Q = {j N : s j 0} (25) Αν P = τότε η τρέχουσα βάση Β και η αντίστοιχη λύση x T = (x B, x N ) είναι βέλτιστη στο πρόβληµα (Γ.Π.-6). Η διαφορά του αλγορίθµου EPSA σε σχέση µε τον κλασικό αλγόριθµο simplex είναι ότι ο EPSA προσδιορίζει πρώτα την εξερχόµενη µεταβλητή και µετά την εισερχόµενη µεταβλητή. Η εξερχόµενη µεταβλητή x B[r] = x k από τη σχέση = x B[r] x B[i] = min :d B[i < d d 0 B[r] B[i] a ] (26) όπου d είναι µια βελτιώνουσα κατεύθυνση (improving direction). Η κατεύθυνση αυτή κατασκευάζεται κατά τέτοιο τρόπο έτσι ώστε η ακτίνα (ray) {x + td : t > 0} να τέµνει την εφικτή περιοχή του προβλήµατος (Γ.Π.-6). Ο συµβολισµός d B συµβαίνει ότι παίρνουµε εκείνες τις συνιστώσες της d που αντιστοιχούν στις βασικές µεταβλητές. Η d B υπολογίζεται από την ακόλουθη σχέση όπου h j = B - A. j. d = (27) B h j j P Ο προσδιορισµός της εξερχόµενης µεταβλητής από τη σχέση (26) είναι παρόµοιος µε αυτόν του αλγορίθµου simplex, σχέση (9). Όπως και ο αλγόριθµος simplex, έτσι και ο EPSA σταµατά αν d B 0. Στην περίπτωση αυτή το πρόβληµα (Γ.Π.-6) είναι απεριόριστο. Στη συνέχεια προσδιορίζεται η εισερχόµενη µεταβλητή x l. Υπολογίζονται πρώτα οι σχέσεις s Q s j θ2 = = min : Hrj > 0 j P HrQ Hrj (28) και s Q s j θ 2 = = min :H rj < 0 j Q (29) H rq H rj 26
Αν ισχύει θ θ 2 τότε l = p, διαφορετικά (θ > θ 2 ) l = q. Η µη βασική µεταβλητή x l εισέρχεται στη βάση. Στη συνέχεια περιγράφεται ο πρωτεύων EPSA σε µορφή βηµάτων. Αναθεωρηµένος Πρωτεύων Αλγόριθµος Εξωτερικών Σηµείων Βήµα 0. (Αρχικοποίηση). Ξεκίνα µε µια εφικτή βασική διαµέριση (Β, Ν). Υπολόγισε τη µήτρα Β - και τα διανύσµατα x B, w και s N. Βρες τα σύνολα δεικτών P και Q από τις σχέσεις (24) και (25) αντίστοιχα. Επέλεξε αυθαίρετα ένα διάνυσµα λ = (λ, λ 2,..., λ P ) > 0 και υπολόγισε το s 0 χρησιµοποιώντας τη σχέση s 0 = Σ λ j s j j P και τη κατεύθυνση d B από τη σχέση (27). Βήµα. (Έλεγχος τερµατισµού). i. (Έλεγχος βελτιστότητας). Αν P =, STOP. Το πρόβληµα (Γ.Π.-6) είναι βέλτιστο. ii. (Επιλογή της εξερχόµενης µεταβλητής). Αν d B 0, STOP. Αν s 0 = 0 το πρόβληµα (Γ.Π.-6) είναι βέλτιστο. Αν s 0 < 0 το πρόβληµα (Γ.Π.-6) είναι απεριόριστο. ιαφορετικά, επέλεξε την εξερχόµενη µεταβλητή x B[r] = x k χρησιµοποιώντας τη σχέση (26). Βήµα 2. (Επιλογή της εισερχόµενης µεταβλητής). Υπολόγισε τα διανύσµατα H rp = (B - ) r.a P και H rq = (B - ) r.a Q Βρες επίσης τους λόγους θ και θ 2 από τις σχέσεις (28) και (29) αντίστοιχα. Προσδιόρισε τους δείκτες t και t 2 τέτοιους ώστε P[t ] = p και Q[t 2 ] = q. Αν θ θ 2, θέσε l = q. Η µη βασική µεταβλητή x l εισέρχεται στη βάση. Βήµα 3. (Περιστροφή). Θέσε Β[r] = l. Αν θ θ 2, θέσε P P\{l} και Q Q {k}. ιαφορετικά, θέσε Q[t 2 ] = k. Χρησιµοποιώντας τη νέα διαµέριση (Β, Ν) ό- που Ν = (P, Q), υπολόγισε τη µήτρα Β - και ανανέωσε τα διανύσµατα x B, w και s N. Επίσης ανανέωσε την νέα κατεύθυνση d B χρησιµοποιώντας τη σχέση Αν l P θέσε d B[r] d B[r] +λ l. Πήγαινε στο Βήµα. d B = E - d B (30) Παράδειγµα 5: Να λυθεί µε τον αλγόριθµο εξωτερικών σηµείων το γραµµικό πρόβληµα του Παραδείγµατος 3. Λύση. Ας περάσουµε τώρα στην επίλυση του προβλήµατος χρησιµοποιώντας τώρα τον EPSA. Ξεκινώντας µε την βασική διαµέριση Β=[2 4] και Ν=[3 5 ] τα δεδοµένα του προβλήµατος διαµορφώνονται ως εξής: 9 0.25 0.25 0.5 0.25 P= [ 5, ] Q= 3, s0 = [, ] L= [, ] sn =, db =, xb =, B = 0.25 0.75 0 0.25 8 B= 2 4, N = 3 5 [ ] [ ] Στην δεύτερη επανάληψη έχουµε 27
P=, Q= 3 9 0 2 2, db =, s0 [, ] L [, ] xb, s N, B 0 = = = 0.5 = = 0.5 0.5 8 B= = [ 5 4 ], N [ 3 2] Παρατηρούµε τώρα πως το P είναι το κενό σύνολο άρα το πρόβληµα είναι βέλτιστο. Η τιµή της αντικειµενικής συνάρτησης είναι Ζ= c x B B =3. Επίσης η βέλτιστη βάση είναι η ίδια και για τους δυο αλγορίθµους (PSA, EPSA). Εφαρµόζοντας τη συνάρτηση epsa3 παίρνουµε >> epsa3 --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:data Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:- Current default tolerance is: 9.9920e-05 Change values?(y n):n Please give the type of the optimization:- ------------------------------------------ Starting Exterior Point Simplex algorithm: ------------------------------------------ Selecting initial base: Selection done. Elapsed time in seconds: 0 ENTERING PHASE Elapsed time in seconds: 0 ENTERING PHASE 2 T H E L P I S O P T I M A L O b j e c t i v e: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Z = 28
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Iterations= 2 Elapsed time in seconds: 0.0625 Total time in seconds: 0.00 3.3 Επίλυση Γενικών Γραµµικών Προβληµάτων Έστω το γραµµικό πρόβληµα της µορφής (Γ.Π.-6). Όπως αναφέρθηκε στο προηγού- µενο κεφάλαιο, ο αλγόριθµος simplex ξεκινά µε µια βασική εφικτή λύση και στη συνέχεια κινείται προς µια βελτιωµένη γειτονική βασική εφικτή λύση µέχρις ότου είτε να καταλήξει στο βέλτιστο σηµείο είτε να παρατηρηθεί το απεριόριστο της αντικει- µενικής συνάρτησης. Παρόµοια, για το ξεκίνηµα του EPSA πρέπει να είναι διαθέσιµη µια βάση Β µε x B = B - b 0. Κατά την εκκίνηση της εκτέλεσης του EPSA γίνεται έλεγχος αν ισχύει x B 0. Αν αυτή η σχέση ισχύει µπορεί να εφαρµοστεί ο EPSA όπως περιγράφηκε στην Ενότητα 3.2. ιαφορετικά, πρέπει να κατασκευαστεί µια βασική εφικτή λύση. Για την εύρεση µιας αρχικής βασικής εφικτής λύσης χρησιµοποιείται η µέθοδος των 2 Φάσεων µε παρό- µοιο τρόπο µε τον αλγόριθµο simplex. Το τροποποιηµένο πρόβληµα της Φάσης Ι κατασκευάζεται ως εξής. Εισάγεται µια νέα µεταβλητή x n+ η οποία ονοµάζεται τεχνητή (artificial) µε συντελεστές d = A B e, όπου e ένα διάνυσµα διαστάσεων mx µε όλες τις συνιστώσες του µονάδες. Το πρόβληµα που επιλύεται στη Φάση Ι έχει τη µορφή min µ. π. Α x + x,x n+ x dx n+ n+ 0 = b (Γ.Π.-0) Στη συνέχεια πρέπει να γίνει µια περιστροφή έτσι ώστε η τεχνητή µεταβλητή x n+ να εισαχθεί στη βάση. Το ζητούµενο είναι τώρα ποια µεταβλητή θα εξαχθεί από τη βάση. Ως εξερχόµενη µεταβλητή x k = x B[r] επιλέγεται εκείνη µε τη µικρότερη τιµή δεξιού µέρους από την παρακάτω σχέση x k = x B[r] = min{x B[i] : i =, 2,..., m} και ανανεώνονται τα σύνολα δεικτών Β και Ν σύµφωνα µε τις σχέσεις (9) και (20). Η στήλη περιστροφής είναι αυτή που αντιστοιχεί στην τεχνητή µεταβλητή. Υπολογίζεται από την ακόλουθη σχέση h n+ = B - A., n+. Χρησιµοποιώντας τη νέα βασική δια- µέριση (Β, Ν) υπολογίζονται οι νέες µήτρες Β -, x Β και s N. H επιλογή της x n+ ως εισερχόµενης και της x k ως εξερχόµενης, όπως αυτή προσδιορίζεται από τη σχέση (8), εγγυάται την κατασκευή ενός βασικού εφικτού σηµείου, x 0. Τώρα µπορεί να εκτελεστεί ο αλγόριθµος EPSA στο πρόβληµα (Γ.Π.-0). Η µετάβα- 29
ση στη Φάση ΙΙ γίνεται ως εξής. Έστω (x, x n+ ) η βέλτιστη λύση του. ιακρίνουµε δύο περιπτώσεις. i. x n+ > 0. Το πρόβληµα (Γ.Π.-6) είναι αδύνατο. ii. x n+ = 0. Η λύση x είναι βασική και εφικτή στο πρόβληµα (Γ.Π.-6). Η λύση αυτή χρησιµοποιείται ως βάση ξεκινήµατος του αλγορίθµου simplex για το πρόβληµα (Γ.Π.-6) στη Φάση ΙΙ. Αν ισχύει η περίπτωση (i), οι υπολογισµοί σταµατούν στη Φάση Ι και ο αλγόριθµος τερµατίζεται. Σε περίπτωση που {n+} N ισχύει x n+ = 0 και γίνεται µετάβαση στη Φάση ΙΙ. Είναι δυνατόν όµως να ισχύει x n+ = 0 και {n+} B. Στη περίπτωση αυτή, πριν γίνει η µετάβαση στη Φάση Ι, γίνεται µια περιστροφή έτσι ώστε να εξαρθεί η x n+ από τη βάση. Ως εισερχόµενη επιλέγεται µια οποιαδήποτε µεταβλητή από το σύνολο δεικτών Ν αρκεί για το στοιχείο περιστροφής να ισχύει h rl 0, όπου r ο δείκτης της θέσης της µεταβλητής x n+ στη βάση Β. Παράδειγµα 6: Να λυθεί µε τον αλγόριθµο εξωτερικών σηµείων το γραµµικό πρόβληµα του Παραδείγµατος 4. Λύση. Το γραµµικό πρόβληµα θα λυθεί χρησιµοποιώντας τη συνάρτηση epsa3. παίρνουµε >> epsa3 --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:data Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:- Current default tolerance is: 2.2204e-04 Change values?(y n):n Please give the type of the optimization:- ------------------------------------------ Starting Exterior Point Simplex algorithm: 30
------------------------------------------ Slack variables have been added. Elapsed time in seconds: 0.033 ENTERING PHASE Elapsed time in seconds: 0 ENTERING PHASE 2 T H E L P I S O P T I M A L O b j e c t i v e: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Z = -7.3300248389578 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Iterations= 3 Elapsed time in seconds: 0 Total time in seconds: 0.0630 3.4 Παραλλαγές Αλγορίθµου Εξωτερικών Σηµείων Ο αλγόριθµος εξωτερικών σηµείων σε αντίθεση µε τον αλγόριθµο simplex µπορεί να τερµατίσει στη Φάση Ι ακόµα και στην περίπτωση που το σύνολο P δεν γίνει κενό. Σε αυτήν την περίπτωση το κριτήριο είναι να βγει η τεχνητή µεταβλητή από τη βάση και η κατεύθυνση d B να περνάει µέσα από την εφικτή περιοχή. Στην υλοποίηση του EPSA ακολουθήθηκαν τρεις παραλλαγές. Αυτές είναι Υβριδικός αλγόριθµος EPSA. Η υλοποίηση αυτή ενσωµατώνει στον κορµό της Φάσης αυτούσια την Φάση του simplex και προχωρά στην ουσιαστική εφαρ- µογή του αλγορίθµου EPSA στην Φάση 2. ηλαδή ο αλγόριθµος αυτός, στη Φάση λειτουργεί όπως ο simplex, και αφού βρεθεί µια εφικτή διαµέριση εφαρµόζεται πλέον ο EPSA.O υβριδικός αυτός αλγόριθµος που χρησιµοποιεί 2 διαφορετικούς 3
αλγόριθµους στις Φάσεις και 2 αντίστοιχα ονοµάστηκε στην προγραµµατιστική του υλοποίηση ως epsa. Το σύνολο P. Στην παραλλαγή αυτή και στις δυο Φάσεις εφαρµόζεται ο αλγόριθµος EPSA. Ο αλγόριθµος EPSA περνάει στη Φάση ΙΙ µόνο όταν i) η τεχνητή µεταβλητή εξαχθεί από τη βάση και ταυτόχρονα ii) η κατεύθυνση db περνάει από την εφικτή περιοχή. Στην προγραµµατιστική του υλοποίηση ο αλγόριθµος αυτός ονοµάστηκε epsa2. Το σύνολο P=. Στην παραλλαγή αυτή και στις δυο Φάσεις εφαρµόζεται ο αλγόριθµος EPSA. Ο αλγόριθµος EPSA περνάει στη Φάση ΙΙ µόνο όταν το πρόβληµα της Φάσης Ι βελτιστοποιηθεί. Αυτό σηµαίνει σύµφωνα µε τη συνθήκη βελτιστότητας του αλγορίθµου EPSA, ότι το σύνολο P πρέπει να αδειάσει. Στην προγραµµατιστική του υλοποίηση ο αλγόριθµος αυτός ονοµάστηκε epsa3. Στη συνέχεια ακολουθεί ένα παράδειγµα στο οποίο θα εφαρµοστούν και οι τρεις παραλλαγές. Παράδειγµα 7: Να λυθεί µε τις παραλλαγές του αλγορίθµου εξωτερικών σηµείων στο µετροπρόγραµµα sctap3. >> epsa --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:sctap3 Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:00 Current default tolerance is: 2.7368e-00 32
Change values?(y n):y Define basic solution tolerance:.0e-8 Define reduced cost tolerance:.0e-8 Define pivot tolerance:.0e-8 Define entering/leaving variable ratios tolerance:.0e-8 Please give the type of the optimization:- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Starting Exterior Point Simplex algorithm: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Slack variables have been added. Elapsed time in seconds: 0.2344 Selecting initial base: Selection done. Elapsed time in seconds: 2.9688 ENTERING PHASE Elapsed time in seconds:.325 ENTERING PHASE 2 T H E L P I S O P T I M A L O b j e c t i v e: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Z =.42400000000000e+003 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Iterations= 76 33
Elapsed time in seconds: 4.788 Total time in seconds: 30.2970 >> epsa2 --------------------------------- Created by: Samaras Nikolaos Triantafillidis Xaralampos University of Macedonia-Greece Department of Applied Informatics Last update:26-03-2005 All rights reserved --------------------------------- Please give the name of the linear problem mat file:sctap3 Loading from: matlab.mat Do you want scaling ((YES)/2(NO)):2 Define the number of re-inversion calculations:00 Current default tolerance is: 2.7368e-00 Change values?(y n):y Define basic solution tolerance:.0e-8 Define reduced cost tolerance:.0e-8 Define pivot tolerance:.0e-8 Define entering/leaving variable ratios tolerance:.0e-8 Please give the type of the optimization:- ------------------------------------------ 34