Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947],...
Transcript of Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947],...
![Page 1: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/1.jpg)
Γραμμικός Προγραμματισμός
Δημήτρης Φωτάκης
Σχολή Ηλεκτρολόγων Μηχανικών
και Μηχανικών Υπολογιστών
Εθνικό Μετσόβιο Πολυτεχνείο
![Page 2: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/2.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 2
Ελαχιστοποίηση γραμμικής αντικειμενικής
συνάρτησης υπό πεπερασμένο αριθμό γραμμικών
περιορισμών (ισότητες ή ανισότητες).
Περιορισμοί: (m n)-πίνακας A, m-διάνυσμα b.
Αντικειμενική: n-διάνυσμα c.
Άγνωστοι: n-διάνυσμα x.
Τυπική μορφή (standard form):
Γραμμικός Προγραμματισμός
![Page 3: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/3.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 3
Πρόβλημα Δίαιτας
Βιτ.Α Βιτ.Β Βιτ. C Θερμ.
Πίτσα 203 92 100 600
Φρούτα 270 80 512 250
Αυγά 90 84 230 350
Σουβλάκι 500 90 210 500
Απαιτήσεις 2000 300 430
![Page 4: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/4.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 4
Bipartite Matching
e1
Φ
Χ
Ψ
Ω
Α
Β
Γ
Δ
e2
e3
e4
e5
e6
e7e8
e9
![Page 5: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/5.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 5
Ορολογία
Αν x ικανοποιεί A x b και x 0 είναι αποδεκτή (feasible) λύση.
Εφικτή περιοχή:
Γραμμικό Πρόγραμμα (ΓΠ, LP) είναι επιλύσιμο αν έχει αποδεκτή λύση και μη-επιλύσιμο διαφορετικά.
Βέλτιστη λύση x* : αποδεκτή λύση με ελάχιστη αντικειμενική τιμή,
ΓΠ μη-φραγμένο (κάτω) αν εφικτή λύση .
Επιλύσιμο και φραγμένο (κάτω) : πεπερασμένο.
Ένα ΓΠ μπορεί να είναι μη-επιλύσιμο, μη-φραγμένο, ή πεπερασμένο.
![Page 6: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/6.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 6
Ισοδύναμες Μορφές
Τυπική μορφή :
Κανονική μορφή :
Μεγιστοπ. Ελαχιστοπ.:
Ισότητα Ζευγάρι ανισότητες
Ανισότητα Ισότητα και slack μεταβλητή :
Αρνητική μεταβλητή :
Όχι πρόσημο :
![Page 7: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/7.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 7
Παράδειγμα
Εφικτή περιοχή : πολύεδρο P .
Φραγμένο : πολύτοπο P.
Κορυφή : ακραίο σημείο
(όχι κυρτός συνδυασμός άλλων)
Φραγμένο πολύεδρο (πεπερασμένο):
Υπάρχει κορυφή που αντιστοιχεί σε
βέλτιστη λύση ! x 1
2
x1
x2
– x1 + 2x2
0
x1 +
x2 6
(2, 6)
(2, 4)
3x 1
– x
2
0
(4, 2)
x 1
2
x1
x2
– x1 + 2x2
0(2, 6)
(2, 4)
(4, 2)
3x 1
– x
2
0
x1 +
2x2 =
12
x1 +
2x2 =
20x1 +
2x2 =
16
x1 +
2x2 =
8
x 1 £
1
x1
x2
– x1 + 2x2
0x1 +
x2 6
3x 1
– x
2
0
![Page 8: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/8.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 8
Κορυφές
Αν είναι επιλύσιμο και
φραγμένο, υπάρχει κορυφή – βέλτιστη λύση.
Αν , το P έχει
τουλάχιστον μία κορυφή.
m n πίνακας Α (περιορισμοί) :
#(ανεξάρτ.) εξισώσεων m < #μεταβλητών n .
βαθμό m (m γραμμικά ανεξάρτητες στήλες).
Εφικτή λύση είναι κορυφή ανν στήλες
γραμμικά ανεξάρτητες.
![Page 9: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/9.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 9
Βασικές Εφικτές Λύσεις
Βασική (εφικτή) λύση (basic (feasible) solution):
Βάση : m γραμμικά ανεξάρτ. στήλες του Α.
Βάση ορίζει τιμές για βασικές μεταβλητές.
Μη-βασικές μεταβλητές στο 0.
Βασικές λύσεις:
Βασικές εφικτές λύσεις κορυφές
![Page 10: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/10.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 10
Βασικές Εφικτές Λύσεις
x κορυφή – ΒΕΛ του
ανν υπάρχει (βάση):
(μη-βασικές μεταβλητές).
είναι αντιστρέψιμος .
(βασικές μεταβλητές).
Κάθε ΒΕΛ αποτελεί κορυφή του Ρ .
Υπάρχουν κορυφές που αντιστοιχούν σε
πολλές διαφορετικές ΒΕΛ.
![Page 11: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/11.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 11
Βασικές Εφικτές Λύσεις
Αν , το P έχει
τουλάχιστον μία Βασική Εφικτή Λύση (ΒΕΛ).
Για κάθε ΒΕΛ x, υπάρχει cx : x βέλτιστη λύση
του
Υπάρχουν «υποψήφιες» βέλτιστες λύσεις
(κορυφές - ΒΕΛ) του
Αλγόριθμος :
Δημιούργησε όλες τις βασικές λύσεις.
Επίστρεψε τη βασική εφικτή λύση με μικρότερη αντικειμενική τιμή.
![Page 12: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/12.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 12
Αλγόριθμος Simplex
[Dantzig, 1947], καλύτερη πρακτική επιλογή.
Ξεκίνησε από κορυφή x (βάση Β).
Υπάρχει γειτονική κορυφή x’ με μικρότερο κόστος:
Ναι : μετακινήσου στη x’ και συνέχισε.
Όχι : βέλτιστη λύση.
Πως ελέγχουμε αν ΓΠ επιλύσιμο και βρίσκουμε
αρχική κορυφή ;
Πως καταλαβαίνουμε αν ΓΠ μη-φραγμένο ;
Pivoting : γειτονική κορυφή με μικρότερο κόστος.
![Page 13: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/13.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 13
Εναλλαγή Στηλών
Αφού xN = 0, και
Ανηγμένο κόστος :
Μη-βασική μετ. με αρνητικό ανηγμένο κόστος : μείωση
κόστους αν αυξηθεί (γίνει βασική).
Αύξηση καθορίζεται από
(μεταβλητές είναι μη-αρνητικές).
Μη-αρνητικό ανηγμένο κόστος : βέλτιστη λύση.
![Page 14: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/14.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 14
Παράδειγμα
x1 x2 x3 x4 x5 x6 x7
0 0 2 0 1 0 0 5
4 1 1 1 1 0 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
6 0 3 1 0 0 0 1
x1 x2 x3 x4 x5 x6 x7
-34 -1 -14 -6 0 0 0 0
4 1 1 1 1 0 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
6 0 3 1 0 0 0 1
![Page 15: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/15.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 15
Παράδειγμα x1 x2 x3 x4 x5 x6 x7
-34 -1 -14 -6 0 0 0 0
4 1 1 1 1 0 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
6 0 3 1 0 0 0 1
x1 x2 x3 x4 x5 x6 x7
-32 0 -14 -6 0 1 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
6 0 3 1 0 0 0 1
x1
x2
x3
12
![Page 16: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/16.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 16
Παράδειγμα
x1 x2 x3 x4 x5 x6 x7
-20 0 -8 0 6 -5 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
1 0 -1 0 -1 1 1 0
4 0 2 0 -1 1 0 1
x1 x2 x3 x4 x5 x6 x7
-32 0 -14 -6 0 1 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
6 0 3 1 0 0 0 1
x1
x2
x3
12
3
![Page 17: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/17.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 17
Παράδειγμα x1 x2 x3 x4 x5 x6 x7
-20 0 -8 0 6 -5 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
1 0 -1 0 -1 1 1 0
4 0 2 0 -1 1 0 1
x1 x2 x3 x4 x5 x6 x7
-4 0 0 8 14 -13 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
0 0 0 -2 -3 3 0 1
x1
x2
x3
12
3
4
![Page 18: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/18.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 18
Παράδειγμα
x1 x2 x3 x4 x5 x6 x7
-4 0 0 -2/3 1 0 0 13/3
2 0 1 1/3 0 0 0 1/3
2 1 0 2/3 1 0 0 -1/3
3 0 0 1 0 0 1 0
0 0 0 -2/3 -1 1 0 1/3
x1 x2 x3 x4 x5 x6 x7
-4 0 0 8 14 -13 0 0
2 0 1 1 1 -1 0 0
2 1 0 0 0 1 0 0
3 0 0 1 0 0 1 0
0 0 0 -2 -3 3 0 1
x1
x2
x3
12
3
4 5
![Page 19: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/19.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 19
Παράδειγμα x1 x2 x3 x4 x5 x6 x7
-4 0 0 -2/3 1 0 0 13/3
2 0 1 1/3 0 0 0 1/3
2 1 0 2/3 1 0 0 -1/3
3 0 0 1 0 0 1 0
0 0 0 -2/3 -1 1 0 1/3
x1 x2 x3 x4 x5 x6 x7
-2 1 0 0 2 0 0 4
1 -1/2 1 0 -1/2 0 0 1/2
3 3/2 0 1 3/2 0 0 -1/2
0 -3/2 0 0 -3/2 0 1 1/2
2 1 0 0 0 1 0 0
x1
x2
x3
12
3
4 5
6
![Page 20: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/20.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 20
Παράδειγμα
![Page 21: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/21.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 21
Παράδειγμα
x1 x2 x3 x4 x5 x6 x7
-4 0 0 -2 1 0 0 13/3
2 0 1 -1 0 0 0 1/3
2 1 0 -2 1 0 0 -1/3
3 0 0 -3 0 0 1 0
0 0 0 -1 -1 1 0 1/3
Μη-φραγμένο : Το x3 μεγαλώνει απεριόριστα
(μικραίνοντας κόστος) και λύση εφικτή.
![Page 22: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/22.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 22
Χρόνος Εκτέλεσης Simplex
Μετακίνηση σε κορυφές με μικρότερο κόστος :
τερματισμός με βέλτιστη λύση (αν υπάρχει).
Παραμονή σε ίδια κορυφή (ή ίδιο κόστος) :
αέναη ανακύκλωση !
Κανόνες εναλλαγής στηλών (π.χ. [Bland 77]) εγγυώνται τερματισμό .
Πολύ γρήγορος στην πράξη αλλά εκθετικός
(#κορυφών) στη χειρότερη περίπτωση.
Ανοικτό αν υπάρχει κανόνας εναλλαγής στηλών
που οδηγεί σε πολυωνυμικό χρόνο .
![Page 23: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή](https://reader034.fdocument.pub/reader034/viewer/2022043011/5fa44b4e5974c62e335a6d11/html5/thumbnails/23.jpg)
Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 23
Αλγόριθμοι Πολυωνυμικού Χρόνου
Ελλειψοειδές [Khachian 79] :
Δυαδική αναζήτηση: Σταδιακός περιορισμός ενός ελλειψοειδούς που εγγυημένα περιέχει λύση.
Πρακτικά μη-εφαρμόσιμος (αργός, αριθμητική αστάθεια).
Μέθοδοι Εσωτερικού Σημείου [Karmakar 84] :
Κίνηση στο εσωτερικό του πολυέδρου (κατάλληλους μετασχηματισμούς).
Πρακτικά εφαρμόσιμος, αλλά Simplex!
Ταχύτερος αλγόριθμος [Υe 91] .