ΚΕΦΑΛΑΙΟ 5 ΜΙΑ ΣΥΓΚΡΙΤΙΚΗ ΥΠΟΛΟΓΙΣΤΙΚΗ ΜΕΛΕΤΗ 5.1 Εισαγωγή Μια υπολογιστική μελέτη (computational study) αποτελεί ένα μέσο σύγκρισης δυο ή περισσότερων αλγορίθμων ώστε να εξαχθούν ασφαλή συμπεράσματα για την πρακτική αποτελεσματικότητα (αποδοτικότητα) των αλγορίθμων σε ίδια προβλήματα. Θεωρείται επιβεβλημένο σήμερα από την επιστημονική κοινότητα, κάθε νέος αλγόριθμος που κατασκευάζεται να συγκριθεί στην πράξη με παρόμοιους μ' αυτόν αλγόριθμους, λύνοντας κοινά προβλήματα. Το ζητούμενο σε μια υπολογιστική μελέτη είναι η καταγραφή του πλήθους των επαναλήψεων καθώς και του συνολικού χρόνου της κεντρικής μονάδας επεξεργασίας (CPU) που απαιτείται για την επίλυση των προβλημάτων που θα χρησιμοποιηθούν για το σκοπό αυτό. Η εμπειρία από παρόμοιες μελέτες δείχνει ότι ο αριθμός επαναλήψεων και ο χρόνος CPU δεν είναι αναγκαστικά ποσότητες ανάλογες. Ενδέχεται ένας αλγόριθμος να εκτελεί πολύ λιγότερες επαναλήψεις από ένα άλλο αλγόριθμο, αλλά να χρειάζεται περισσότερο χρόνο για τη λύση ενός προβλήματος επειδή εκτελεί πολύ πιο χρονοβόρες επαναλήψεις. Η συγκριτική υπολογιστική μελέτη που παρουσιάζεται στη συνέχεια έχει ως κύριο στόχο τον υπολογισμό του πλήθους των επαναλήψεων που απαιτούνται για την επίλυση ενός γραμμικού προβλήματος από τον Δυϊκό Αλγόριθμο Simplex (ΔΑΣ) σε σχέση με το νέο αλγόριθμο, τον Δικριτήριο Αλγόριθμο Simplex Εξωτερικών Σημείων (ΔΑΣΕΣ). Η υπάρχουσα εμπειρία από σχετικές υπολογιστικές μελέτες μας οδηγεί σε ασφαλή συμπεράσματα όσον αφορά στον χρόνο CPU, βλέπε Paparrizos, Samaras, Stephanides
B 110 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη (2003a), (2003b) και Samaras (2001). Στην περίπτωσή μας όποια συμπεράσματα εξαχθούν για τον αριθμό επαναλήψεων ισχύουν και για το χρόνο CPU. Θεωρήθηκε επίσης σκόπιμο για υπολογιστικούς λόγους να συγκριθούν οι δύο αλγόριθμοι χρησιμοποιώντας τη μορφή των μητρών που περιγράφεται παρακάτω. 5.2 Δυϊκός Αλγόριθμος Simplex σε μορφή μητρών Έστω ότι το πρωτεύων γραμμικό πρόβλημα έχει τη μορφή min{c T x : Ax = b, x 0} (P) όπου c, x R n, b R m και A R mxn. Το αντίστοιχο δυϊκό γραμμικό πρόβλημα θα έχει τη μορφή (DP) max{b T w : A T w +s = c} (DP) όπου w R m οι δυϊκές μεταβλητές και s R n οι δυϊκές χαλαρές μεταβλητές. Θεωρούμε μια βασική διαμέριση (B, N) και A B R mxm μια αρχική βάση του προβλήματος (P). Άρα το δυϊκό γ.π. (DP) θα έχει μια λύση που δίνεται από τη σχέση w T = (c B ) T (A B ) -1. όπου η μήτρα Α Β είναι η μήτρα των βασικών μεταβλητών και αποτελείται από τις στήλες a j της μήτρας Α για τις οποίες j B. Αντίστοιχα c B είναι το διάνυσμα που αποτελείται από τα στοιχεία cj του διανύσματος c για τα οποία j B. Παρόμοια οι παραπάνω έννοιες επεκτείνονται και για τη μήτρα n Ν, οπότε και το διάνυσμα x R διαχωρίζεται στα υποδιανύσματα xb και x N,
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 111 δηλαδή x = ( x B, x N ). Επίσης με τους συμβολισμούς Α.t ή A t. που θα ακολουθήσουν θα πρέπει να διευκρινιστεί ότι εννοούμε την t γραμμή ή την t στήλη αντίστοιχα της μήτρας Α. Ο δυϊκός αλγόριθμος Simplex κατασκευάζει μια ακολουθία από δυϊκά εφικτές βάσεις, δηλαδή s T = c T w T A 0. Για τον έλεγχο βελτιστότητας χρειάζεται μόνο να εξετάσουμε αν ισχύει x B = (A B ) -1 b 0. Τότε ο αλγόριθμος σταματά. Στην αντίθετη περίπτωση θα υπάρχει μια βασική μεταβλητή που έχει αρνητική τιμή. Έστω x B(r) = x k. Άρα η μεταβλητή x k θα είναι εξερχόμενη. Στη συνέχεια θα πρέπει να προσδιοριστεί η εισερχόμενη μεταβλητή x l, l N, έτσι ώστε να προκύψει η επόμενη δυϊκά εφικτή βάση. Γι' αυτό υπολογίζεται το διάνυσμα H rn = ((A B ) -1 ) r. A N όπου A N η μήτρα των μη βασικών μεταβλητών και ((A B ) -1 ) r. είναι η r γραμμή της αντίστροφης μήτρας των βασικών μεταβλητών. Γίνεται έλεγχος του διανύσματος H rn, δηλαδή αν H rn 0 τότε ο αλγόριθμος σταματά. Άρα το δυϊκό πρόβλημα (DP) είναι απεριόριστο και το πρωτεύων πρόβλημα (P) είναι αδύνατο. Διαφορετικά γίνεται το τεστ ελαχίστου λόγου
112 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη s j λ = min : j N και h rj < 0 = h rj s h l rl και επιλέγεται η εισερχόμενη μεταβλητή x l, l N. Τέλος ανανεώνεται η βασική διαμέριση (Β, Ν) θέτοντας B(r) = l και N(t) = k και η προηγούμενη διαδικασία επαναλαμβάνεται. Περιγραφή αλγορίθμου με βήματα Βήμα 0 : (Ξεκίνημα) Ξεκίνα με μια δυϊκά εφικτή βασική διαμέριση (Β, Ν). Βήμα 1 : (Υπολογισμοί) Υπολόγισε τις ποσότητες c B, B cn, (A B ), xb = (A B ) b, w = T -1 T T T (cb) (AB) και (sn) = (cn) w A N. Βήμα 2 : (Έλεγχος βελτιστότητας προσδιορισμός εξερχόμενης μεταβλητής) -1-1 T Αν είναι x B 0, ΤΕΛΟΣ. Η x B είναι βέλτιστη λύση για το πρόβλημα (P) και η w είναι η βέλτιστη λύση του προβλήματος (DP). Διαφορετικά προσδιόρισε την εξερχόμενη μεταβλητή x k, επιλέγοντας ένα δείκτη r έτσι ώστε x B(r) = x k < 0. Βήμα 3 :(Έλεγχος ελαχίστου λόγου-προσδιορισμός εισερχόμενης μεταβλητής) Υπολόγισε το διάνυσμα H rn = ((A B ) -1 ) r. A N Αν H rn 0 ΤΕΛΟΣ. Το πρόβλημα (DP) είναι απεριόριστο και το (P) είναι αδύνατο. Διαφορετικά επέλεξε την εισερχόμενη μεταβλητή x l = x N(t) κάνοντας το τεστ του ελαχίστου λόγου
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 113 s j λ = min : j N και h rj < 0 = h rj s h l rl Βήμα 4 : (Περιστροφή) Υπολόγισε μια νέα βασική διαμέριση θέτοντας B(r) = l και N(t) = k. Πήγαινε στο βήμα 1. Στη συνέχεια παρουσιάζεται η συνάρτηση DSA προγραμματισμένη σε γλώσσα MATLAB όπως χρησιμοποιήθηκε στην υπολογιστική μελέτη και βασίζεται στην προηγούμενη βηματική περιγραφή του δυϊκού αλγορίθμου Simplex στη μορφή των μητρών. function [adarap,zvalue,niter]=dsα(c,a,b,b,maxiter) % DSA : Δυϊκός Αλγόριθμος Simplex % SYNTAX: [adarap,zvalue,x,w,s,b,niter]=dsa(c,a,b,b,maxiter) % Επιλύει το γραμμικό πρόβλημα στάνταρ μορφής % min{c'x:ax=b,x>=0} % με τον Δυϊκό Αλγόριθμο Simplex. Η αρχική βάση Β πρέπει να % είναι δυϊκά εφικτή. Ο αλγόριθμος σταματά αν ο μέγιστος % αριθμός επαναλήψεων, maxiter, ξεπεραστεί. % Β και maxiter ειναι προαιρετικα,οι εξ ορισμου τιμες τους % ειναι maxiter=10000, B=[n-m+1:n] % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Μεταβλητές εισόδου % % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % c = διάνυσμα κόστους % A = μήτρα συντελεστών % b = δεξιό μέρος
114 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη % B = δείκτες αρχικής βάσης % maxiter = μέγιστο πλήθος επιτρεπόμενων επαναλήψεων % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Μεταβλητές εξόδου % % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % niter = πλήθος εκτελεσθέντων επαναλήψεων % x,w,s = μεταβλητές απόφασης,δυϊκές και δυϊκές χαλαρές % αντίστοιχα % B = δείκτες τελικής βάσης % zvalue = τελική τιμή αντικειμενικής συνάρτησης % adarap = -1 πρόβλημα αδύνατο % = 0 πρόβλημα βέλτιστο % = 1 πρόβλημα απεριόριστο % = 2 πρόβλημα αδύνατο ή απεριόριστο % = -2 πρόβλημα δεν έχει λυθεί % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Γράφτηκε από Κ. Δόσιο % Τελευταία τροποποίηση στις 24-08-2005 % % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< warning off % Αρχικοποίηση B και maxiter αν δε δοθούν if nargin==4 maxiter=10000; if nargin==3
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 115 maxiter=10000; B=n-m+1:n; % Επιτρέπει είσοδο διανυσμάτων σε στήλες ή γραμμές c=c(:)'; b=b(:); % Βήμα 0 : Υπολογισμοί Ξεκινήματος [m n]=size(a); adarap=-2; niter=0; N=setdiff(1:n,B); Binv=inv(A(:,B)); xb=binv*b; w=c(b)*binv; sn=c(n)-w*a(:,n); % Έλεγχος αρχικής βάσης αν είναι δυϊκά εφικτή if any(sn<0) error('η αρχική βάση δεν είναι δυϊκά εφικτή') % Βρόχος επαναλήψεων (τερματισμός βελτιστότητας ή πλήθους % επαναλήψεων) while (any(xb<0))&(niter<=maxiter) % Επιλογή εισερχόμενης και εξερχόμενης μεταβλητής
116 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη [xbr,r]=min(xb); HrN=Binv(r,:)*A(:,N); if HrN>=0 adarap=-1; % Πρόβλημα αδύνατο break [mrt,t]=max(hrn./(-sn)); k=b(r(1)); l=n(t(1)); % Ανανεώσεις niter=niter+1; N(t(1))=k; B(r(1))=l; Binv=inv(A(:,B)); xb=binv*b; w=c(b)*binv; sn=c(n)-w*a(:,n); % Έλεγχος πλήθους επαναλήψεων if niter>maxiter error('το μέγιστο πλήθος επαναλήψεων ξεπεράστηκε') % Τελικά Αποτελέσματα if adarap==-2 adarap=0; disp(' Τέλος >> Το πρόβλημα είναι βέλτιστο')
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 117 x=zeros(1,n); x(b)=xb; s=zeros(1,n); s(n)=sn; zvalue=c(b)*xb if nargout==3 adarap=adarap; zvalue=zvalue; x=niter; warning on Μπορεί εύκολα κάποιος να παρατηρήσει ότι δεν χρησιμοποιήθηκαν ιδιαίτερες τεχνικές προγραμματισμού. Και αυτό γιατί όπως αναφέρθηκε προηγούμενα η υπολογιστική μελέτη έχει σκοπό να καταγράψει το πλήθος των επαναλήψεων που απαιτείται για την επίλυση ενός γ.π. από το Δυϊκό Αλγόριθμο Simplex σε σχέση με τον Δικριτήριο Αλγόριθμο Simplex Εξωτερικών Σημείων που ακολουθεί. 5. 3 Δικριτήριος Αλγόριθμος Simplex Εξωτερικών Σημείων σε μορφή μητρών Στην περιγραφή του αλγορίθμου θα χρησιμοποιήσουμε όπως προηγούμενα τη μορφή (P) για το πρωτεύων γραμμικό πρόβλημα και τη μορφή (DP) για το δυϊκό γραμμικό πρόβλημα. Έστω (Β, Ν) μια βασική διαμέριση και A B R mxm μια αρχική βάση του (P). Άρα το δυϊκό γ.π. (DP) θα έχει μια λύση που δίνεται από τις σχέσεις w T = (c B ) T (A B ) -1
118 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη και s T = c T w T A 0. Ο Δικριτήριος αλγόριθμος Simplex εξωτερικών σημείων ξεκινά από μια δυϊκά εφικτή βάση και κατασκευάζει μια ακολουθία πιθανώς μη-δυϊκά εφικτών βάσεων. Στη συνέχεια υπολογίζονται τα σύνολα Ι - = {i N : b i < 0} Ι + = {i N : b i 0} Αν I - = τότε το πρόβλημα είναι βέλτιστο και ο αλγόριθμος σταματά. Διαφορετικά υπολογίζουμε τη γραμμή m+1 όπως γνωρίζουμε από τα κεφάλαια 3 και 4. Γνωρίζοντας τώρα τη μορφή μητρών του δυϊκού αλγορίθμου Simplex η μορφή μητρών του ΔΑΣΕΣ προκύπτει εύκολα. Η παρακάτω βηματική περιγραφή του είναι εύκολα κατανοητή. Περιγραφή αλγορίθμου με βήματα Βήμα 0 : (Ξεκίνημα) Ξεκίνα με μια δυϊκά εφικτή βασική διαμέριση (Β, Ν) και υπολόγισε τις ποσότητες c B, c N, (A B ) -1, x B = (A B ) -1 b, w T = (c B ) T (A B ) -1 και (s N ) T = (c N ) T w T A N. Βήμα 1 : (Έλεγχος τερματισμών) α) (Έλεγχος βελτιστότητας) Προσδιόρισε τα σύνολα των δεικτών Ι - και Ι + από τη σχέση (3.2.1). Αν Ι - =, ΤΕΛΟΣ (η παρούσα λύση είναι βέλτιστη), διαφορετικά υπολόγισε τη γραμμή m+1
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 119 Η m+1, N = e T (A B ) -1 H(I -, :) β) (Έλεγχος μη εφικτότητας) Προσδιόρισε τo σύνολo των δεικτών J - με τη σχέση (3.2.4) και χρησιμοποιώντας τα στοιχεία της γραμμής Η m+1,n. Αν J - =, ΤΕΛΟΣ (το πρόβλημα P είναι αδύνατο). Διαφορετικά προσδιόρισε το δείκτη t της εισερχόμενης μεταβλητής x t με τη σχέση s t s j = min : j J Hm+ 1,t Hm+ 1,j Η μη βασική μεταβλητή x t εισέρχεται στη βάση. Βήμα 2 : (Περιστροφή) Υπολόγισε τη στήλη h με τη σχέση h = (A B ) -1 A.t Υπολόγισε τις ποσότητες θ 1 και θ 2 με τις σχέσεις xb(i) x θ 1 = min : hi < 0,i I = hi h B(k) k xb(i) x θ 2 = min : hi > 0,i I+ = hi h B(l) l Αν θ 1 θ 2 θέσε Ι - Ι - Β(k) I + I + B(k)
120 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη Ανανέωσε τα σύνολα Β και Ν και πήγαινε στο βήμα 1. Στη συνέχεια παρουσιάζεται η συνάρτηση DASES προγραμματισμένη σε γλώσσα MATLAB όπως χρησιμοποιήθηκε στην υπολογιστική μελέτη και βασίζεται στην προηγούμενη βηματική περιγραφή του Δικριτήριου Αλγορίθμου Simplex Εξωτερικών Σημείων στη μορφή μητρών. function [adarap,zvalue,x,w,y,b,niter]=dases(c,a,b,b,maxiter) % DASES: Δικριτήριος Αλγόριθμος Simplex Εξωτερικών Σημείων % SYNTAX:[adarap,zvalue,x,w,y,B,niter]=dases(c,A,b,B,maxiter) % Επιλύει το γραμμικό πρόβλημα στάνταρ μορφής % min{c'x:ax=b,x>=0} με τον δικριτήριο αλγόριθμο Simplex % Εξωτερικών σημείων. Η αρχική βάση Β πρέπει να είναι δυϊκά % εφικτή. Ο αλγόριθμος σταματά αν ο μέγιστος αριθμός % επαναλήψεων (maxiter), ξεπεραστεί. % Β και maxiter είναι προαιρετικά, οι εξ' ορισμού τιμές τους % είναι: maxiter=10000, B=[n-m+1:n] % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Μεταβλητές εισόδου % % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % c = διάνυσμα κόστους % A = μήτρα συντελεστών % b = δεξιό μέρος % B = δείκτες αρχικής βάσης % maxiter = μέγιστο πλήθος επιτρεπόμενων επαναλήψεων % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Μεταβλητές εξόδου %
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 121 % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % niter = πλήθος εκτελεσθέντων επαναλήψεων % x,w,y = μεταβλητές απόφασης,δυϊκές και δυϊκές χαλαρές % αντίστοιχα % B = δείκτες τελικής βάσης % zvalue = τελική τιμή αντικειμενικής συνάρτησης % adarap = -1 πρόβλημα αδύνατο % = 0 πρόβλημα βέλτιστο % = 1 πρόβλημα απεριόριστο % = 2 πρόβλημα αδύνατο ή απεριόριστο % = -2 πρόβλημα δεν έχει λυθεί % >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> % % Γράφτηκε από Κ. Δόσιο % Τελευταία τροποποίηση στις 24-08-2005 % % <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< % Διαίρεση με μηδέν στα τεστ ελαχίστου λόγου warning off % Αρχικοποίηση B και maxiter αν δε δοθούν if nargin==4 maxiter=10000; if nargin==3 maxiter=10000; B=n-m+1:n;
122 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη % Επιτρέπει είσοδο διανυσμάτων σε στήλες ή γραμμές c=c(:)'; b=b(:); % Βήμα 0 : Υπολογισμοί Ξεκινήματος [m n]=size(a); adarap=-2; niter=0; N=setdiff(1:n,B); AB=A(:,B); AN=A(:,N); AB_1=inv(AB); HN=AB_1*A(:,N); xb=ab_1*b; w=c(b)*ab_1; yn=c(n)-w*an; zvalue=w*b; I_=find(xB<0); Iplus=setdiff(1:m,I_); % Έλεγχος αρχικής βάσης αν είναι δυϊκά εφικτή if any(yn<0) error('η αρχική βάση δεν είναι δυϊκά εφικτή') % Βρόχος επαναλήψεων (τερματισμός βελτιστότητας ή πλήθους %επαναλήψεων) while (~isempty(i_)) & (niter<=maxiter)
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 123 % Βήμα 1: Έλεγχος τερματισμών if length(i_)==1 RowNew=HN(I_,:); else RowNew=sum(HN(I_,:)); % Βήμα 2: Έλεγχος μη εφικτότητας J_=find(RowNew<0); if isempty(j_) disp(' Τέλος >> Το πρόβλημα είναι αδύνατο') adarap=-1; break [testmin j]=min(-yn(j_)./rownew(j_)); t=j_(j(1)); s=n(t); I1=find(HN(I_,t)<0); [th1 i1]=min(xb(i_(i1))./hn(i_(i1),t)); I2=find(HN(Iplus,t)>0); if (~isempty(i2)) [th2 i2]=min(xb(iplus(i2))./hn(iplus(i2),t)); else th2=inf; if th1<=th2 r=i_(i1(i1(1))); I_=setdiff(I_,r);
124 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη Iplus=union(Iplus,r); else r=iplus(i2(i2(1))); % Βήμα 2: Περιστροφή niter=niter+1; N(t)=B(r); B(r)=s; AB=(A(:,B)); AN=A(:,N); AB_1=inv(AB); HN=AB_1*AN; xb=ab_1*b; w=c(b)*ab_1; yn=c(n)-w*an; % Έλεγχος πλήθους επαναλήψεων if niter>maxiter error('το μέγιστο πλήθος επαναλήψεων ξεπεράστηκε') % Τελικά Αποτελέσματα if adarap==-2 adarap=0; disp(' Τέλος >> Το πρόβλημα είναι βέλτιστο')
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 125 x=zeros(1,n); x(b)=xb; y=zeros(1,n); y(n)=yn; zvalue=c(b)*xb if nargout==3 adarap=adarap; zvalue=zvalue; x=niter; warning on 5.4 Χαρακτηριστικά υπολογιστικής μελέτης Η αποτελεσματικότητα των αλγορίθμων είναι η βασική επιδίωξη των ερευνητών που ασχολούνται με θέματα γραμμικής βελτιστοποίησης. Οι νέοι αλγόριθμοι που κατασκευάζονται πρέπει, να είναι αποδοτικότεροι ως προς το χρόνο CPU ενός Η/Υ που απαιτούν, καθώς και ως προς το πλήθος των επαναλήψεων, για την επίλυση μιας κατηγορίας γραμμικών προβλημάτων. Στη συνέχεια παρουσιάζεται η αποτελεσματικότητα (αποδοτικότητα) στην πράξη δυο αλγορίθμων, του Δυϊκού Αλγόριθμου Simplex (DSA) και του Δικριτήριου Αλγόριθμου Simplex Εξωτερικών Σημείων (DASES). Το ζητούμενο της υπολογιστικής μελέτης που ακολουθεί είναι η σύγκριση του πλήθους των επαναλήψεων που απαιτείται από κάθε αλγόριθμο για την επίλυση δυο ειδών γραμμικών προβλημάτων.
126 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη (i) Τυχαία πυκνά γραμμικά προβλήματα με την αρχική βάση να είναι δυϊκά εφικτή (ii) Τυχαία αραιά γραμμικά προβλήματα με την αρχική βάση να είναι δυϊκά εφικτή και για τρεις διαφορετικές πυκνότητες, 2.5%, 5% και 10%. Και για τις δυο κατηγορίες γραμμικών προβλημάτων χρησιμοποιήθηκαν 2 διαφορετικές κλάσεις προβλημάτων, δηλαδή τετραγωνικά nxn και ορθογώνια nx2n. Οι κλάσεις αυτές επελέγησαν αφού τα περισσότερα πρακτικά προβλήματα έχουν τέτοια μορφή. Στα τετραγωνικά γραμμικά προβλήματα περιλαμβάνονται 12 διαφορετικές κλάσεις προβλημάτων, όπου κάθε κλάση περιλαμβάνει 10 τυχαία (πυκνά ή αραιά αντίστοιχα) βέλτιστα γραμμικά προβλήματα. Τα ορθογώνια γραμμικά προβλήματα περιλαμβάνουν 8 διαφορετικές κλάσεις προβλημάτων. Στον επόμενο πίνακα παρουσιάζονται οι τιμές των βασικών στοιχείων των γραμμικών προβλημάτων που μελετήθηκαν. Εύρος τιμών Α [-500 500] Εύρος τιμών c [100 1000] Εύρος τιμών b [-500 500] Σύνολο γ.π. μελέτης 760 Για την υλοποίηση της συγκριτικής υπολογιστικής μελέτης χρησιμοποιήθηκε PC με επεξεργαστή Pentium IV 3.0 GHz, 1GB Ram, λειτουργικό σύστημα Windows XP Professional. Ο προγραμματισμός των αλγορίθμων έγινε σε γλώσσα προγραμματισμού MATLAB, αφού περιλαμβάνει κατά τη γνώμη μας τα καταλληλότερα εργαλεία για τον προγραμματισμό τέτοιου είδους αλγορίθμων. Εκτός της υλοποίησης των
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 127 συγκεκριμένων αλγορίθμων (DSA) και (DASES) σε MATLAB υλοποιήθηκαν και άλλες συναρτήσεις για τη δημιουργία τυχαίων και τυχαίων αραιών γραμμικών προβλημάτων διαφορετικής πυκνότητας, βλέπε Dosios, K. et.al. (2002), (2003a) (ή χρησιμοποιήθηκαν από Βιβλιοθήκη Συναρτήσεων MATLAB που διαθέτει ο κ. Παπαρρίζος Κ., βλέπε Paparrizos, Κ. (2004) και Paparrizos, K. (2005)). Τα τυχαία γραμμικά προβλήματα που επιλύθηκαν είναι της κανονικής μορφής min c T x μ.π. Ax b x 0 όπου A R mxn, c,x R n, b R m και συμβολίζει το είδος της ανισότητας, δηλαδή {, }.
128 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 5.5 Συγκριτικοί πίνακες αποτελεσμάτων Οι πίνακες που ακολουθούν περιλαμβάνουν το μέγεθος των προβλημάτων, το μέσο πλήθος επαναλήψεων (niter) και για τους δυο αλγόριθμους, τη διαφορά των μέσων όρων επαναλήψεων (DSA-DASES) και το λόγο DSA/DASES, απ' όπου φαίνεται πόσες φορές είναι ταχύτερος σε επαναλήψεις ο αλγόριθμος DASES έναντι του αλγόριθμου DSA. TYXAIA ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνά) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nxn DSA DASES DSA - DASES DSA / DASES 100x100 282,00 247,00 35,00 1,14 150x150 544,40 423,70 120,70 1,28 200x200 958,10 669,20 288,90 1,43 250x250 1462,00 917,70 544,30 1,59 300x300 2245,80 1310,00 935,80 1,71 400x400 4024,00 1965,60 2058,40 2,05 500x500 6443,80 2807,10 3636,70 2,30 600x600 8723,22 3491,78 5231,44 2,50 700x700 11840,29 4488,86 7351,43 2,64 800x800 15513,45 5566,22 9947,23 2,79 900x900 18944,25 6448,88 12495,38 2,94 1000x1000 27246,00 8158,50 19087,50 3,34 Πίνακας 5.5.1. Συγκριτικός πίνακας τυχαίων πυκνών γ.π. διάστασης nxn Πιο συγκεκριμένα από τον πίνακα 5.5.1 φαίνεται ότι σε τυχαία πυκνά βέλτιστα τετραγωνικά γραμμικά προβλήματα διάστασης 1000x1000 ο
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 129 αλγόριθμος DASES υπερτερεί μέχρι και 3,34 φορές του αλγόριθμου DSA. Επίσης πρέπει να αναφέρουμε ότι ο αλγόριθμος DSA εκτελεί περίπου 19000 περισσότερες επαναλήψεις έναντι του αλγόριθμου DASES κατά την επίλυση ενός γ.π. της παραπάνω κατηγορίας. ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 10%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nxn DSA DASES DSA - DASES DSA / DASES 100x100 282,80 194,40 88,40 1,45 150x150 688,40 437,40 251,00 1,57 200x200 1093,80 688,20 405,60 1,59 250x250 1688,80 909,20 779,60 1,86 300x300 2329,10 1188,70 1140,40 1,96 400x400 4445,50 1860,90 2584,60 2,39 500x500 6456,20 2577,80 3878,40 2,50 600x600 9643,70 3504,00 6139,70 2,75 700x700 12736,30 4369,30 8367,00 2,91 800x800 16722,40 5262,90 11459,50 3,18 900x900 20545,29 6222,43 14322,86 3,30 1000x1000 26558,43 7752,57 18805,86 3,43 Πίνακας 5.5.2. Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nxn πυκνότητας 10% Ανάλογα είναι και τα αποτελέσματα για τυχαία αραιά βέλτιστα τετραγωνικά προβλήματα. Πράγματι στους πίνακες 5.5.2, 5.5.3, 5.5.4 και για πυκνότητες 10%, 5%, και 2.5% αντίστοιχα παρατηρούμε ότι ο
130 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη αλγόριθμος DASES υπερτερεί μέχρι και 4,31 φορές του αλγόριθμου DSΑ για προβλήματα διάστασης 1000x1000, ενώ απαιτούνται περίπου 24500 περισσότερες επαναλήψεις του DSA για την λύση ενός γ.π. αυτής της καταηγορίας. ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 5%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nxn DSA DASES DSA - DASES DSA / DASES 100x100 312,00 185,03 126,97 1,69 150x150 743,90 367,00 376,90 2,03 200x200 1289,70 577,80 711,90 2,23 250x250 2013,80 861,60 1152,20 2,34 300x300 2860,40 1092,50 1767,90 2,62 400x400 4770,00 1824,50 2945,50 2,61 500x500 7290,90 2500,30 4790,60 2,92 600x600 10085,22 3414,89 6670,33 2,95 700x700 13689,75 4038,63 9651,13 3,39 800x800 18129,38 5141,63 12987,75 3,53 900x900 22553,40 6334,60 16218,80 3,56 1000x1000 28304,50 7249,25 21055,25 3,90 Πίνακας 5.5.3. Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nxn πυκνότητας 5%
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 131 ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 2,5%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nxn DSA DASES DSA - DASES DSA / DASES 100x100 368,42 170,80 197,62 2,16 150x150 839,58 364,89 474,69 2,30 200x200 1658,36 652,34 1006,02 2,54 250x250 3148,32 1048,21 2100,11 3,00 300x300 5359,41 1685,36 3674,05 3,18 400x400 8326,50 2456,00 5870,50 3,39 500x500 11130,50 3224,50 7906,00 3,45 600x600 14025,80 3859,00 10166,80 3,63 700x700 16801,29 4386,71 12414,58 3,83 800x800 21175,00 5258,00 15917,00 4,03 900x900 26191,00 6250,00 19941,00 4,19 1000x1000 31846,00 7396,00 24450,00 4,31 Πίνακας 5.5.4 Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nxn πυκνότητας 2,5% Στη συνέχεια στους πίνακες 5.5.5, 5.5.6, 5.5.7 και 5.5.8 παρουσιάζονται τα αποτελέσματα από τη σύγκριση των δυο αλγορίθμων σε ορθογώνια βέλτιστα γραμμικά προβλήματα και αντιστοιχούν σε πυκνά ή αραιά γ.π. με πυκνότητες 10%, 5%, και 2.5%. Σε προβλήματα αυτής της κατηγορίας και για διάσταση προβλήματος 700x1400 ο αλγόριθμος DASES υπερτερεί του αλγόριθμου DSA μέχρι και 6.57 φορές, ενώ απαιτούνται περίπου 20000 περισσότερες επαναλήψεις από τον DSA έναντι του DASES.
132 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη TYXAIA ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνά) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nx2n DSA DASES DSA - DASES DSA / DASES 100x200 349,50 228,00 121,50 1,53 150x300 732,90 408,30 324,60 1,80 200x400 1179,80 658,90 520,90 1,79 250x500 2035,60 822,60 1213,00 2,47 300x600 2748,90 1144,20 1604,70 2,40 400x800 5444,30 1711,90 3732,40 3,18 500x1000 8490,70 2606,50 5884,20 3,26 600x1200 13094,10 3170,40 9923,70 4,13 700x1400 16889,30 3905,30 12984,00 4,32 Πίνακας 5.5.5. Συγκριτικός πίνακας τυχαίων πυκνών γ.π. διάστασης nx2n ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 10%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nx2n DSA DASES DSA - DASES DSA / DASES 100x200 335,90 182,10 153,80 1,84 150x300 754,20 350,70 403,50 2,15 200x400 1515,00 606,40 908,60 2,50 250x500 2373,70 802,30 1571,40 2,96 300x600 3489,80 1126,20 2363,60 3,10 400x800 5948,30 1624,10 4324,20 3,66 500x1000 10089,00 2335,80 7753,20 4,32 600x1200 14034,00 3031,60 11002,40 4,63 700x1400 19740,90 4080,90 15660,00 4,84 Πίνακας 5.5.6. Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nx2n πυκνότητας 10%
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 133 ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 5%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nx2n DSA DASES DSA - DASES DSA / DASES 100x200 204,90 134,00 70,90 1,53 150x300 783,70 352,50 431,20 2,22 200x400 1629,80 505,80 1124,00 3,22 250x500 2602,60 776,10 1826,50 3,35 300x600 3600,50 1001,50 2599,00 3,60 400x800 6711,20 1570,50 5140,70 4,27 500x1000 10519,60 2220,20 8299,40 4,74 600x1200 15152,40 2952,60 12199,80 5,13 700x1400 20427,10 3786,40 16640,70 5,39 Πίνακας 5.5.7. Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nx2n πυκνότητας 5% ΤΥΧΑΙΑ ΑΡΑΙΑ ΒΕΛΤΙΣΤΑ ΠΡΟΒΛΗΜΑΤΑ (πυκνότητα = 2,5%) ΔΙΑΣΤΑΣΗ Μέσος Όρος Επαναλήψεων nx2n DSA DASES DSA - DASES DSA / DASES 100x200 65,33 73,00-7,67 0,89 150x300 240,00 182,40 57,60 1,32 200x400 952,60 374,00 578,60 2,55 250x500 2338,70 654,40 1684,30 3,57 300x600 3799,50 896,80 2902,70 4,24 400x800 8191,40 1554,30 6637,10 5,27 500x1000 12534,60 2135,90 10398,70 5,87 600x1200 17587,80 2808,80 14779,00 6,26 700x1400 23869,20 3631,70 20237,50 6,57 Πίνακας 5.5.8. Συγκριτικός πίνακας τυχαίων αραιών γ.π. διάστασης nx2n πυκνότητας 2,5%.
134 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 5.6 Αξιολόγηση Αλγόριθμων Τα αποτελέσματα που παρουσιάστηκαν στους προηγούμενους πίνακες γίνονται περισσότερο αντιληπτά και κατανοητά στις επόμενες εικόνες. Πράγματι στις εικόνες 5.6.1 και 5.6.2 παρουσιάζονται οι λόγοι (DSA/DASES) των Μ.Ο. του πλήθους των επαναλήψεων για τετραγωνικά και ορθογώνια γ.π. και για όλες τις πυκνότητες. Λόγοι Μ.Ο. πλήθους επαναλήψεων 5,0 4,0 DSA/DASES 3,0 2,0 1,0 0,0 100 150 200 250 300 400 500 600 700 Διάσταση γ.π. nxn 800 900 1000 Εικόνα 5.6.1. Λόγος (DSA/DASES) για γ.π. διάστασης nxn Τυχαία Πυκνά Πυκν. 10% Πυκν. 5% Πυκν. 2,5%
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 135 Φαίνεται ολοκάθαρα η αύξηση του λόγου (DSA/DASES) που φτάνει τις 6,57 φορές καθώς αυξάνεται η διάσταση του προβλήματος. Επίσης είναι καλύτερη η συμπεριφορά του αλγόριθμου DASES σε αραιά γραμμικά προβλήματα. Λόγοι Μ.Ο. πλήθους επαναλήψεων 7,0 6,0 5,0 DSA/DASES 4,0 3,0 2,0 1,0 Τυχαία Πυκνά Πυκν. 10% Πυκν. 5% Πυκν. 2,5% 0,0 100 150 200 250 300 400 500 600 700 Διασταση γ.π. nx2n Εικόνα 5.6.2. Λόγος (DSA/DASES) για γ.π. διάστασης nx2n
136 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη Διαφορές Μ.Ο. πλήθος επαναλήψεων 30000 25000 20000 DSA-DASES 15000 10000 5000 Τυχαία Πυκνά Πυκν. 10% Πυκν. 5% 0 100 150 200 250 300 400 500 600 700 800 900 Διάσταση προβλήματος nxn 1000 Εικόνα 5.6.3. Διαφορές (DSA-DASES) για γ.π. διάστασης nxn Στις εικόνες 5.6.3 και 5.6.4 παρουσιάζονται οι διαφορές (DSA-DASES) των Μ.Ο. του πλήθους των επαναλήψεων για τετραγωνικά και ορθογώνια γ.π. και για όλες τις πυκνότητες. Είναι φανερό ότι οι επαναλήψεις που απαιτούνται από τον αλγόριθμο DSA έναντι του DASES αυξάνονται καθώς
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 137 αυξάνεται η διάσταση των προβλημάτων και όσο τα προβλήματα γίνονται περισσότερο αραιά. Διαφορές Μ.Ο. πλήθος επαναλήψεων 25000 20000 DSA-DASES 15000 10000 5000 Τυχαία Πυκνά Πυκν. 10% Πυκν. 5% Πυκν. 2,5% 0 100 150 200 250 300 400 500 600 700 Διάσταση προβλήματος nx2n Εικόνα 5.6.4. Διαφορές (DSA-DASES) για γ.π. διάστασης nxn
138 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη Λόγοι Μ.Ο. πλήθους επαναλήψεων 7,0 6,0 5,0 DSA/DASES 4,0 3,0 2,0 γ.π. nxn γ.π. nx2n 1,0 0,0 100 150 200 250 300 400 Διάσταση n 500 600 700 800 900 1000 Εικόνα 5.6.5. Λόγοι (DSA/DASES) για γ.π. διάστασης nxn και nx2n Τέλος στις εικόνες 5.6.5 και 5.6.6 φαίνεται η καλύτερη συμπεριφορά του αλγόριθμου DASES στις μεγάλες διαστάσεις προβλημάτων καθώς και στα αραιά προβλήματα όπως άλλωστε είναι τα περισσότερα πρακτικά προβλήματα σήμερα.
Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη 139 Διαφορές Μ.Ο. πλήθους επαναλήψεων 25000 20000 DSA-DASES 15000 10000 5000 γ.π. nxn γ.π. nx2n 0 100 150 200 250 300 400 Διάσταση n 500 600 700 800 900 1000 Εικόνα 5.6.5. Διάφορές (DSA-DASES) για γ.π. διάστασης nxn και nx2n
140 Κεφάλαιο 5 Μια Συγκριτική Υπολογιστική Μελέτη