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

Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

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

Δημήτρης Φωτάκης

Σχολή Ηλεκτρολόγων Μηχανικών

και Μηχανικών Υπολογιστών

Εθνικό Μετσόβιο Πολυτεχνείο

Page 2: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 2

Ελαχιστοποίηση γραμμικής αντικειμενικής

συνάρτησης υπό πεπερασμένο αριθμό γραμμικών

περιορισμών (ισότητες ή ανισότητες).

Περιορισμοί: (m n)-πίνακας A, m-διάνυσμα b.

Αντικειμενική: n-διάνυσμα c.

Άγνωστοι: n-διάνυσμα x.

Τυπική μορφή (standard form):

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

Page 3: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 4

Bipartite Matching

e1

Φ

Χ

Ψ

Ω

Α

Β

Γ

Δ

e2

e3

e4

e5

e6

e7e8

e9

Page 5: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 5

Ορολογία

Αν x ικανοποιεί A x b και x 0 είναι αποδεκτή (feasible) λύση.

Εφικτή περιοχή:

Γραμμικό Πρόγραμμα (ΓΠ, LP) είναι επιλύσιμο αν έχει αποδεκτή λύση και μη-επιλύσιμο διαφορετικά.

Βέλτιστη λύση x* : αποδεκτή λύση με ελάχιστη αντικειμενική τιμή,

ΓΠ μη-φραγμένο (κάτω) αν εφικτή λύση .

Επιλύσιμο και φραγμένο (κάτω) : πεπερασμένο.

Ένα ΓΠ μπορεί να είναι μη-επιλύσιμο, μη-φραγμένο, ή πεπερασμένο.

Page 6: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 6

Ισοδύναμες Μορφές

Τυπική μορφή :

Κανονική μορφή :

Μεγιστοπ. Ελαχιστοπ.:

Ισότητα Ζευγάρι ανισότητες

Ανισότητα Ισότητα και slack μεταβλητή :

Αρνητική μεταβλητή :

Όχι πρόσημο :

Page 7: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 8

Κορυφές

Αν είναι επιλύσιμο και

φραγμένο, υπάρχει κορυφή – βέλτιστη λύση.

Αν , το P έχει

τουλάχιστον μία κορυφή.

m n πίνακας Α (περιορισμοί) :

#(ανεξάρτ.) εξισώσεων m < #μεταβλητών n .

βαθμό m (m γραμμικά ανεξάρτητες στήλες).

Εφικτή λύση είναι κορυφή ανν στήλες

γραμμικά ανεξάρτητες.

Page 9: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 9

Βασικές Εφικτές Λύσεις

Βασική (εφικτή) λύση (basic (feasible) solution):

Βάση : m γραμμικά ανεξάρτ. στήλες του Α.

Βάση ορίζει τιμές για βασικές μεταβλητές.

Μη-βασικές μεταβλητές στο 0.

Βασικές λύσεις:

Βασικές εφικτές λύσεις κορυφές

Page 10: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 10

Βασικές Εφικτές Λύσεις

x κορυφή – ΒΕΛ του

ανν υπάρχει (βάση):

(μη-βασικές μεταβλητές).

είναι αντιστρέψιμος .

(βασικές μεταβλητές).

Κάθε ΒΕΛ αποτελεί κορυφή του Ρ .

Υπάρχουν κορυφές που αντιστοιχούν σε

πολλές διαφορετικές ΒΕΛ.

Page 11: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 11

Βασικές Εφικτές Λύσεις

Αν , το P έχει

τουλάχιστον μία Βασική Εφικτή Λύση (ΒΕΛ).

Για κάθε ΒΕΛ x, υπάρχει cx : x βέλτιστη λύση

του

Υπάρχουν «υποψήφιες» βέλτιστες λύσεις

(κορυφές - ΒΕΛ) του

Αλγόριθμος :

Δημιούργησε όλες τις βασικές λύσεις.

Επίστρεψε τη βασική εφικτή λύση με μικρότερη αντικειμενική τιμή.

Page 12: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 12

Αλγόριθμος Simplex

[Dantzig, 1947], καλύτερη πρακτική επιλογή.

Ξεκίνησε από κορυφή x (βάση Β).

Υπάρχει γειτονική κορυφή x’ με μικρότερο κόστος:

Ναι : μετακινήσου στη x’ και συνέχισε.

Όχι : βέλτιστη λύση.

Πως ελέγχουμε αν ΓΠ επιλύσιμο και βρίσκουμε

αρχική κορυφή ;

Πως καταλαβαίνουμε αν ΓΠ μη-φραγμένο ;

Pivoting : γειτονική κορυφή με μικρότερο κόστος.

Page 13: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 13

Εναλλαγή Στηλών

Αφού xN = 0, και

Ανηγμένο κόστος :

Μη-βασική μετ. με αρνητικό ανηγμένο κόστος : μείωση

κόστους αν αυξηθεί (γίνει βασική).

Αύξηση καθορίζεται από

(μεταβλητές είναι μη-αρνητικές).

Μη-αρνητικό ανηγμένο κόστος : βέλτιστη λύση.

Page 14: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 20

Παράδειγμα

Page 21: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 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], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 22

Χρόνος Εκτέλεσης Simplex

Μετακίνηση σε κορυφές με μικρότερο κόστος :

τερματισμός με βέλτιστη λύση (αν υπάρχει).

Παραμονή σε ίδια κορυφή (ή ίδιο κόστος) :

αέναη ανακύκλωση !

Κανόνες εναλλαγής στηλών (π.χ. [Bland 77]) εγγυώνται τερματισμό .

Πολύ γρήγορος στην πράξη αλλά εκθετικός

(#κορυφών) στη χειρότερη περίπτωση.

Ανοικτό αν υπάρχει κανόνας εναλλαγής στηλών

που οδηγεί σε πολυωνυμικό χρόνο .

Page 23: Γραμμικός Προγραμματισμός · Αλγόριθμος Simplex [Dantzig, 1947], καλύτερη πρακτική επιλογή. Ξεκίνησε από κορυφή

Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός 23

Αλγόριθμοι Πολυωνυμικού Χρόνου

Ελλειψοειδές [Khachian 79] :

Δυαδική αναζήτηση: Σταδιακός περιορισμός ενός ελλειψοειδούς που εγγυημένα περιέχει λύση.

Πρακτικά μη-εφαρμόσιμος (αργός, αριθμητική αστάθεια).

Μέθοδοι Εσωτερικού Σημείου [Karmakar 84] :

Κίνηση στο εσωτερικό του πολυέδρου (κατάλληλους μετασχηματισμούς).

Πρακτικά εφαρμόσιμος, αλλά Simplex!

Ταχύτερος αλγόριθμος [Υe 91] .