Επιχειρησιακή Έρευνα I Κωστής Μαμάσης Παρασκευή 09:00 12:00 Σημειώσεις των Α. Platis, K. Mamasis
Περιεχόμενα 1. Εισαγωγή 2. Γραμμικός Προγραμματισμός 1. Μοντελοποίηση 2. Μέθοδος Simplex (C) Copyright Α. Platis. All rights reserved. 2
Γραμμικός Προγραμματισμός Μέθοδος Simplex
Παράδειγμα μοντέλου ΓΠ Δεδομένα του προβλήματος: 2 προϊόντα (Π1 και Π2) 3 εργοστάσια (Ε1, Ε2 και Ε3) Παραγωγική δυναμικότητα για κάθε εργοστάσιο (εβδομαδιαία) Κέρδος ανά παρτίδα (20 μονάδες) για κάθε προϊόν. Π1 (χρόνος παραγωγής, Π2 (χρόνος παραγωγής, Παραγωγική δυναμικότητα (ώρα) ώρα/παρτίδα) ώρα/παρτίδα) Ε1 1 0 4 Ε2 0 2 12 Ε3 3 2 18 Κέρδος ( ) /παρτίδα 3000 5000 4
Παράδειγμα μοντέλου ΓΠ Κάθε παρτίδα προϊόντος 1 (2) είναι το αποτέλεσμα του συνδυασμού παραγωγής των εργοστασίων 1 και 3 (2 και 3) Βρείτε το ποσοστό παραγωγής κάθε προϊόντος (αριθμός παρτίδων /εβδομάδα) έτσι ώστε να μεγιστοποιείται το συνολικό κέρδος. Μεταβλητές απόφασης (decision variables) x 1 = αριθμός παρτίδων προϊόντος 1 x 2 = αριθμός παρτίδων προϊόντος 2 Αντικειμενική συνάρτηση: z = συνολικό κέρδος z= 3x 1 +5x 2 Μεγιστοποίηση z 5
Παράδειγμα μοντέλου ΓΠ Περιορισμοί παραγωγικής δυναμικότητας x 1 4 (εργοστάσιο 1) 2x 2 12 (εργοστάσιο 2) 3x 1 + 2x 2 18 (εργοστάσιο 3) Περιορισμοί μη αρνητικότητας x 1 0, x 2 0 (αριθμός μονάδων που έχουν παραχθεί) Μεγιστοποίηση Ζ = 3x 1 + 5x 2 υπό περιορισμούς: x 1 4 2x 2 12 3x 1 + 2x 2 18 x 1 0, x 2 0 6
Γραφική επίλυση εφικτή περιοχή 7
Γραφική επίλυση 8
Μέθοδος Simplex: αρχικά Αλγεβρική μέθοδος που βασίζεται στην επίλυση γραμμικών συστημάτων. Επικεντρωνόμαστε μόνο στα γραμμικά συστήματα που έχουν αριθμό μεταβλητών μεγαλύτερο από τον αριθμό εξισώσεων. Σε αυτή τη περίπτωση υπάρχουν δύο περιπτώσεις: Δεν υπάρχει λύση Υπάρχει άπειρος αριθμός λύσεων. Υποθέτουμε ότι όλες οι μεταβλητές είναι 0 9
Επιστροφή στο αρχικό παράδειγμα Οι περιορισμοί είναι: x 1 4 + 2x 2 12 3x 1 + 2x 2 18 Εισάγουμε χαλαρές μεταβλητές (slack variables) 0 για να αλλάξουμε τις προηγούμενες ανισότητες σε ένα σύστημα γραμμικών εξισώσεων: x 1 + x 3 = 4 + 2x 2 + x 4 = 12 3x 1 + 2x 2 + x 5 = 18 5 μεταβλητές και 3 εξισώσεις 2 βαθμοί ελευθερίας(δηλαδή 2 οποιεσδήποτε μεταβλητές μπορούν να πάρουν κάποια αυθαίρετη τιμή για τη λύση των 3 εξισώσεων ως προς τις υπόλοιπες τρεις μεταβλητές. Η Simplex ως αυθαίρετη τιμή χρησιμοποιεί τη τιμή 0) Αρχικές βασικές μεταβλητές : x 3, x 4, x 5 (ίσος αριθμός βασικών μεταβλητών με τις περιοριστικές εξισώσεις) Αρχικές μη-βασικές μεταβλητές : x 1, x 2 σημείο (0,0) Για το σημείο της βασικής λύσης (0,0), το x1=x2=0 οπότε οι χαλαρές μεταβλητές x3,x4,x5 είναι θετικοί (για να ισχύουν οι περιορισμοί). Άρα οι αρχικές βασικές μεταβλητές είναι οι x3,x4,x5. 10
Ορολογία Βασικές μεταβλητές : οι μεταβλητές με τιμή 0 στη βασική λύση Μη-βασικές μεταβλητές: οι μεταβλητές με τιμή 0 στη βασική λύση Εφικτή βασική λύση: όταν όλες οι βασικές μεταβλητές έχουν τιμή 0 Εκφυλισμένη εφικτή βασική λύση: όταν τουλάχιστον μία βασική μεταβλητή έχει την τιμή 0. 11
Simplex Βήμα 1 Εισάγουμε χαλαρές μεταβλητές (slack variables) 0 για να αλλάξουμε τις προηγούμενες ανισότητες σε ένα σύστημα γραμμικών εξισώσεων: x 1 + x 3 = 4 + 2x 2 + x 4 = 12 3x 1 + 2x 2 + x 5 = 18 5 μεταβλητές και 3 εξισώσεις 2 βαθμοί ελευθερίας (δηλαδή 2 οποιεσδήποτε μεταβλητές μπορούν να πάρουν κάποια αυθαίρετη τιμή για τη λύση των 3 εξισώσεων ως προς τις υπόλοιπες τρεις μεταβλητές. Η Simplex ως αυθαίρετη τιμή χρησιμοποιεί την τιμή 0) Αρχικές βασικές μεταβλητές: x 3, x 4, x 5 (βασικές είναι οι μεταβλητές που ΔΕΝ έχουν την τιμή = 0 σε κάποιο βήμα της simplex) Αρχικές μη-βασικές μεταβλητές: x 1, x 2 (μη βασικές είναι οι μεταβλητές που έχουν τιμή 0 σε κάποιο βήμα της simplex) Σε κάθε βήμα της Simplex θα αντικαθιστούμε μια μη βασική μεταβλητή με μια βασική μεταβλητή. Προκύπτει μια νέα βασική εφικτή λύση. 12
Simplex Βήμα 2 Ξαναγράφουμε την αντικειμενική συνάρτηση Από: Ζ = 3x 1 + 5x 2 Σε: -3x1 5x2 + Z = 0 13
Simplex Βήμα 3 Δημιουργία Πίνακα Simplex. Γραμμή x1 x2 x3 x4 x5 Ζ Δεξί Μέλος 1 1 0 1 0 0 0 4 2 0 2 0 1 0 0 12 3 3 2 0 0 1 0 18 4-3 -5 0 0 0 1 0 Αρχική Βασική Εφικτή Λύση (0,0,4,12,18) και Ζ=0 14
Simplex Βήμα 4 Εύρεση εισερχόμενης βασικής μεταβλητής. Στον πίνακα ονομάζεται αξονική στήλη (Pivot column). Για να βρούμε την αξονική στήλη, βρίσκουμε την μικρότερη τιμή της γραμμής 4 (γραμμή αντικειμενικής συνάρτησης) στον πίνακα Simplex Β. Μετ x3 x4 x5 Γραμμή x1 x2 x3 x4 x5 Ζ Δεξί Μέλος 1 1 0 1 0 0 0 4 2 0 2 0 1 0 0 12 3 3 2 0 0 1 0 18 4-3 -5 0 0 0 1 0 15
Simplex Βήμα 5 (PIVOT ή Περιστροφή) Εύρεση εξερχόμενης βασικής μεταβλητής. Στον πίνακα ονομάζεται αξονική γραμμή (Pivot row). Για να βρούμε τη αξονική γραμμή, επιλέγουμε κάθε απόλυτα θετικό συντελεστή στην επιλεγμένη στήλη και διαιρούμε κάθε δεξί μέλος με αυτόν. Επιλέγουμε τη γραμμή με το μικρότερο δεξί μέρος. Η χαλαρή x4 στις βασικές μεταβλητές θα αντικατασταθεί (θα γίνει μη βασική) από τη x2 που θα γίνει βασική μεταβλητή. Αξονική Γραμμή (pivot row) Β. Μετ x3 x4>>x2 x5 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4-0 2 0 1 0 0 12 12/2 3 2 0 0 1 0 18 18/2-3 -5 0 0 0 1 0 Αξονική Στήλη (pivot column) 16
Simplex Βήμα 6 Μετατροπή του επιλεγμένου κελιού (αξονικό στοιχείο - pivot element) σε μονάδα. Στη γραμμή 2 διαιρούμε με 2 όλα τα στοιχεία και κατασκευάζουμε εκ νέου τον πίνακα simplex Β. Μετ x3 x2 x5 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 3 2 0 0 1 0 18-3 -5 0 0 0 1 0 17
Simplex Βήμα 7 Μετατροπή των κελιών της στήλης pivot σε 0. Για να το κάνω αυτό κάνω αλγεβρικές πράξεις μεταξύ της γραμμής pivot και των υπολοίπων Β. Μετ x3 x2 x5 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 3 2 0 0 1 0 18-3 -5 0 0 0 1 0 Γραμμή 1: Ήδη 0 Γραμμή 2: Αξονική Γραμμή Γραμμή 3: Γραμμή 3 2*Γραμμή 2 Γραμμή 4: Γραμμή 4 + 5*Γραμμή 2 18
Simplex Βήμα 7 Μετατροπή των κελιών της στήλης pivot σε 0. Για να το κάνω αυτό κάνω αλγεβρικές πράξεις μεταξύ της γραμμής pivot και των υπολοίπων Β. Μετ x3 x2 x5 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 3 0 0-1 1 0 6-3 0 0 5/2 0 1 30 Νέα Βασική Εφικτή Λύση (0,6,4,0,6) και Ζ=30 19
Simplex Βήμα 8 (ή πίσω στο βήμα 4) Έλεγχος τελευταίας γραμμής για αρνητικούς συντελεστές (υπάρχουν). Εάν υπάρχουν, επιστροφή στο βήμα 4. Εύρεση αξονικής στήλης (Pivot column). x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 3 0 0-1 1 0 6-3 0 0 5/2 0 1 30 Αξονική Στήλη (pivot column) 20
Simplex Βήμα 5(2 η επανάληψη) Εύρεση αξονικής γραμμής. Για να βρούμε την αξονική γραμμή, διαιρούμε κάθε δεξί μέλος με το αντίστοιχο αριθμό της αξονικής στήλης. Επιλέγουμε τη γραμμή με το μικρότερο δεξί μέρος. Η χαλαρή x5 στις βασικές μεταβλητές θα αντικατασταθεί (θα γίνει μη βασική) από τη x1 που θα γίνει βασική μεταβλητή. Β. Μετ x3 x2 x5>>x1 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 4 0 1 0 1/2 0 0 6 3 0 0-1 1 0 6 2-3 0 0 5/2 0 1 30 21
Simplex Βήμα 6(2 η επανάληψη) Μετατροπή του επιλεγμένου κελιού (αξονικό στοιχείο) σε μονάδα. Στη γραμμή 3 διαιρούμε με το 3 όλα τα στοιχεία και κατασκευάζουμε εκ νέου τον πίνακα simplex Β. Μετ x3 x2 x1 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 1 0 0-1/3 1/3 0 2-3 0 0 5/2 0 1 30 22
Simplex Βήμα 7(2 η επανάληψη) Μετατροπή των κελιών της στήλης pivot σε 0. Για να το κάνω αυτό κάνω αλγεβρικές πράξεις μεταξύ της γραμμής pivot και των υπολοίπων Β. Μετ x3 x2 x1 x1 x2 x3 x4 x5 Ζ Δ 1 0 1 0 0 0 4 0 1 0 1/2 0 0 6 1 0 0-1/3 1/3 0 2-3 0 0 5/2 1 1 30 Γραμμή 1: Γραμμή 1 Γραμμή 3 Γραμμή 2: ήδη 0 Γραμμή 3: Αξονική Γραμμή Γραμμή 4: Γραμμή 4 + 3*Γραμμή 3 23
Simplex Βήμα 7(2 η επανάληψη) Μετατροπή των κελιών της αξονικής στήλης σε 0. Για να το κάνω αυτό κάνω αλγεβρικές πράξεις μεταξύ της αξονικής γραμμής και των υπολοίπων γραμμών Β. Μετ x3 x2 x1 x1 x2 x3 x4 x5 Ζ Δ 0 0 1 1/3-1/3 0 2 0 1 0 1/2 0 0 6 1 0 0-1/3 1/3 0 2 0 0 0 3/2 1 1 36 Γραμμή 1: Γραμμή 1 Γραμμή 3 Γραμμή 2: ήδη 0 Γραμμή 4: Γραμμή 4 + 3*Γραμμή 3 24
Simplex Βήμα 8 Έλεγχος τελευταίας γραμμής για αρνητικούς συντελεστές. Εάν δεν υπάρχουν λύση του προβλήματος. x2=6, x1=2, Z=36 Β. Μετ x3 x2 x1 x1 x2 x3 x4 x5 Ζ Δ 0 0 1 1/3-1/3 0 2 0 1 0 1/2 0 0 6 1 0 0-1/3 1/3 0 2 0 0 0 3/2 1 1 36 Νέα Βασική Εφικτή Λύση (2,6,2,0,0) και Ζ=36 25
Γεωμετρική ερμηνεία εφικτή περιοχή 26
Γεωμετρική ερμηνεία Μία εφικτή βασική λύση αντιστοιχεί σε ένα ακραίο σημείο της εφικτής περιοχής. Μία περιστροφή αντιστοιχεί σε μία μετακίνηση ενός ακραίου σημείου σε ένα άλλο που είναι γειτονικό. Η μέθοδος simplex : Ξεκινάει με μία βασική αρχική εφικτή λύση (ένα ακραίο σημείο) Πραγματοποιεί σε κάθε επανάληψη και μία περιστροφή, πηγαίνοντας έτσι, σε μία βασική εφικτή γειτονική λύση (ένα ακραίο γειτονικό σημείο) Σταματάει μόλις γίνει ταυτοποίηση μίας άριστης βασικής εφικτής λύσης (ένα ακραίο σημείο που αντιστοιχεί σε μία άριστη λύση) 27
Ερμηνεία των χαλαρών μεταβλητών Στην άριστη λύση του αρχικού παραδείγματος, έχουμε x 3 = 2, x 4 = x 5 = 0 Αυτό δείχνει ότι οι δύο τελευταίοι πόροι (χρόνοι στα εργοστάσια 2 και 3) αξιοποιούνται πλήρως. Ένα μέρος του πρώτου πόρου (χρόνος στο εργοστάσιο 1) δεν χρησιμοποιείται: 2 ώρες. 28
Εισερχόμενη μεταβλητή Εάν τουλάχιστον ένα σχετικό κόστος είναι θετικό για την βασική εφικτή λύση τότε: Δεν έχουμε επιτύχει την άριστη λύση Πρέπει να πραγματοποιηθεί τουλάχιστον μία ακόμα επανάληψη (pivot) Ποια μεταβλητή πρέπει να εισάγουμε στην βάση για το Pivot; Προτείνεται η επιλογή μεταβλητής της οποίας το σχετικό κόστος είναι ο μεγαλύτερος από όλες τις μη-βασικές μεταβλητές. Αυτή η μεταβλητή παρέχει την μεγαλύτερη οριακή αύξηση (ανά μονάδα) της τιμής της αντικειμενικής συνάρτησης (Ζ). 29
Μέθοδος Simplex: ανακεφαλαίωση 1. Βρίσκεται μία αρχική βασική εφικτή λύση 2. Ελέγχεται το κριτήριο αριστοποίησης: εάν το σχετικό κόστος όλων των μη-βασικών μεταβλητών είναι αρνητικό ή μηδενικό τότε σταματάμε 3. Προσδιορίζεται η εισερχόμενη μεταβλητή x j, αυτή που έχει το υψηλότερο σχετικό κόστος. b i 4. Προσδιορίζεται η εξερχόμενη μεταβλητή: min aij 0 5. Πραγματοποιείται μία περιστροφή (αλλαγή μιας μη-βασικής μεταβλητής σε βασική) και προσδιορίζεται μία καινούργια βασική εφικτή λύση. Επιστροφή στο βήμα 2 i a ij 30