Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα...

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

Transcript of Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα...

Page 1: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

Προσθήκες (λίγες): Άρης Παγουρτζής

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

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

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

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

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

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

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

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

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

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

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

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

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

Page 3: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

Πρόβλημα Δίαιτας

Βιτ.Α Βιτ.Β Βιτ. C Θερμ.

Πίτσα 203 92 100 600

Φρούτα 270 80 512 250

Αυγά 90 84 230 350

Σουβλάκι 500 90 210 500

Απαιτήσεις 2000 300 430

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

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

Bipartite Matching

e1

Φ

Χ

Ψ

Ω

Α

Β

Γ

Δ

e2

e3

e4

e5

e6

e7e8

e9

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

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

Ορολογία

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

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

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

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

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

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

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

Page 7: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

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

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

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

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

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

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

Όχι πρόσημο :

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

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

Παράδειγμα

Εφικτή περιοχή : πολύεδρο 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

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

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

Κορυφές

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

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

Αν , το P έχει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

x κορυφή – ΒΕΛ του ανν υπάρχει (βάση):

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

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

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

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

Μπορεί να υπάρχουν ΒΕΛ (εκφυλισμένες) που αντιστοιχούν σε >1 διαφορετικές βάσεις.

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

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

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

Αν , το P έχει

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

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

του

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

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

Αλγόριθμος :

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

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

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

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

Αλγόριθμος Simplex

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

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

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

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

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

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

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

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

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

Page 14: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

Αφού xN = 0, και

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

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

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

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

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

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

Page 15: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Ταμπλώ Simplex

Είναι ο πίνακας των συντελεστών + 1 γραμμή για

την αντικειμενική συνάρτηση.

Χρήσιμο «κόλπο»: νέα μεταβλητή z ώστε

αντικειμενική συνάρτηση γίνεται περιορισμός

(εξίσωση):

z = c x -z + c x = 0 z – c x = 0

2η μορφή : για προβλήματα ελαχιστοποίησης

3η μορφή: για προβλήματα μεγιστοποίησης

Συχνά η z δεν γράφεται καν

Γραμμοπράξεις για την εύρεση αρχικής και

επόμενων ΒΕΛ.

Page 16: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Ταμπλώ Simplex

Αρχική ΒΕΛ: επιλογή βάσης, γραμμοπράξεις για μηδενισμό

συντελεστών βασικών μεταβλητών στην αντικειμενική

συνάρτηση και μετατροπή ΑΒ σε μοναδιαίο: ΑΒ = Ι|Β|

Στήλη τιμών (αριστερά ή δεξιά): δείχνει τιμές βασικών

μεταβλητών και αντικειμενική τιμή τρέχουσας ΒΕΛ με

αρνητικό πρόσημο (-z)

Επόμενη ΒΕΛ: επιλογή μη-βασικής μεταβλητής xk

(εισερχόμενη) με αρνητικό συντελεστή στην γραμμή

αντικειμενικής συν/σης (αρνητικό ανηγμένο κόστος). Αν δεν

υπάρχει, τρέχουσα ΒΕΛ βέλτιστη.

Αύξηση της xk σε min bi/aik (για aik>0, αν όλα ≤0 ΓΠ μη

φραγμένο), η xi γίνεται μη-βασική (εξερχόμενη).

Page 17: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα

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 18: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα 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 19: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα

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 20: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα 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 21: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα

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 22: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα 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 23: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα

Page 24: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

Παράδειγμα

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 25: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

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

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

Page 26: Γραμμικός Προγραμματισμός - NTUA...Προηγμένα Θέματα Αλγορίθμων (Άνοιξη 2018) Γραμμικός Προγραμματισμός

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

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

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

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

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

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

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

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

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