ΣΧΟΛΗ ΠΟΛΙΤΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΕΜΠ ΕΙΣΑΓΩΓΗ ΣΤΗN ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΣΥΣΤΗΜΑΤΩΝ 7 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΩΝ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB Μ. Καρλαύτης Ν. Λαγαρός
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες Χρήσης Creative Commons. για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB Στόχος max 43x + 6y s.t. x + y 75 x + 3y 4 2x + 2y 5 x, y Επίλυση Γραφικοποιούμε τους περιορισμούς ώστε να σχηματίσουμε τη εφικτή περιοχή. >> x = : 8; % range for graph >> y = max(75- x, ); % x + y 75 >> y2 = max((4- x)/3,); % x + 3y 4 >> y3 = max((5-2x)/2, ); % 2x + 2y 5 >> ytop = min([y; y2; y3]); % array of minima >> area(x, ytop); % filled area plot 24
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB Οι γραμμές της αντικειμενικής συνάρτησης δίνονται με p = 43x + 6y. Αν θέσουμε ότι p ισούται με κάποια τιμή τότε όλα τα σημεία που ικανοποιούν τη συνάρτηση θα αποφέρουν την ίδια τιμή. >> hold on; >> [u v] = meshgrid( : 8; : 8); >> contour(u, v, 43 * u + 6 * v); >> hold off; Η βέλτιση λύση αντιστοιχεί στη γωνία της εφικτής περιοχής με τη μεγαλύτερη τιμή. Βρίσκεται στην πιο μακρινή γραμμή της αντικειμενικής συνάρτησης που εξακολουθεί να ανηκεί στην εφικτή περιοχή. 25
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB MATLAB κάνει χρήση της ακόλουθης διατύπωσης για ΠΓΠ: min z = f Τ x s. t. Ax b A eq = b eq () x l x u 26
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB Το ΠΓΠ της εξίσωσης () επιλύεται με την ακόλουθη εντολή : x = linprog(f,a, b, A eq, b eq, l, u) 27
Η ΕΝΤΟΛΗ linprog Η εντολή lingprog καλεί τον αλγόριθμο simplex για να λύσει το πρόβλημα γραμμικού προγραμματισμού της μορφής min f * x s. t. A* x Όπου f είναι οποιοδήποτε διάνυσμα και ο πίνακας Α και το διάνυσμα b καθορίζουν τους γραμμικούς περιορισμούς. Έτσι το αρχικό μας πρόβλημα μεταφράζεται στη μορφή B max 43x + 6y s.t. x + y 75 x + 3y 4 2x + 2y 5 x, y s.t. min -43x-6y 2-3 2 - x y 75 4 5 28
Η ΕΝΤΟΛΗ linprog Απαραίτητη η μετατροπή του max σε min και των ανισοτικών περιορισμών ( ) σε ανισοτικούς ( ). Ακολουθεί επίλυση του προβλήματος αφού πρώτα ορίσουμε τα διανύσματα και τους πίνακες. >> f = [-43-6] >> A = [2 2; 3; ; - ; -] >> b = [5; 4; 75; ; ] Με την εντολή linprog >> linprog(f; A; b) >> f * ans % βελτιστοποίηση % υπολογισμός κέρδους (ζημίας) Παρόμοια με την εντολή linprog είναι η εντολή simlp. 29
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB ΑΠΛΟ ΠΑΡΑΔΕΙΓΜΑ Θέλουμε να λύσουμε το ακόλουθο πρόβλημα μέσω MATLAB: max z=4x + 2x2 + x3 s. t. 2x + x2 x +2x3 2 x + x2 + x3 = x x2 x3 2 x ;x2 ;x3 2
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB ΑΠΛΟ ΠΑΡΑΔΕΙΓΜΑ = 2 4 f 2 Μετατρέπουμε το ΠΓΠ σε MATLAB format: = 2 2 A b = 2 [ ] = eq A [ ] = b eq = l = 2 u
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB ΑΠΛΟ ΠΑΡΑΔΕΙΓΜΑ Εισάγουμε τα δεδομένα στο MATLAB: >> f = -[4;2;]; >> A = [2 ; 2]; >> b = [;2]; >> Aeq = [ ]; >> beq = []; >> l = [;;]; >> u = [;;2]; 22
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ MATLAB ΑΠΛΟ ΠΑΡΑΔΕΙΓΜΑ Επιλύουμε το ΠΓΠ μέσω MATLAB: >> x = linprog(f,a,b,aeq,beq,l,u) και λαμβάνουμε το ακόλουθο μήνυμα: Optimization terminated successfully. x =.5..5 23
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα Πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοιχτά Ακαδημαϊκά Μαθήματα Ε.Μ.Π.» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση.