Μετάβαση στο κύριο περιεχόμενο

Γραμμικός Προγραμματισμός: Κεφάλαιο 0 - Εισαγωγή

Μια από τις πιο όμορφες ιδέες που αναδεικνύουν όλα τα όμορφα χαρακτηριστικά της τομής των μαθηματικών με την επιστήμη υπολογιστών, είναι ο Γραμμικός Προγραμματισμός (ΓΠ) και η μέθοδος, επίλυσης Γραμμικών Προγραμμάτων, Simplex. Όπως και με τα γραφήματα, έτσι και μέσω του ΓΠ μπορούμε να εκφράζουμε τυπικά και κομψά μια πληθώρα προβλημάτων και να τα επιλύουμε αποτελεσματικά*. Ας ξεκινήσουμε σιγά σιγά..

 Ας θεωρήσουμε το εξής πρόβλημα. Έστω ότι έχουμε μια σοκολατοποιία και παρασκευάζουμε δύο προϊόντα: το κύριο προϊόν το οποίο είναι τριγωνικές σοκολάτες, με την ονομασία Pyramid, και το πιο παλαιό και πολυτελές με την ονομασία Pyramid Nuit. Οι Pyramid πωλούνται 1€, ενώ οι Pyramid Nuit 6€. Επίσης έχουμε κάνει έρευνα της αγοράς και έχουμε διαπιστώσει πως αποκλείεται να πουλήσουμε πάνω από 200 κουτιά Pyramid και 300 κουτιά Pyramid Nuit. Ακόμη βάση του εξοπλισμού και του εργασιακού δυναμικού γνωρίζουμε ότι δεν μπορούμε να παράγουμε πάνω από 400 κουτιά σοκολάτας την ημέρα. Πόσα κουτιά από το κάθε είδος πρέπει να παράξουμε ώστε να μεγιστοποιήσουμε το κέρδος μας;[1]

Το πρόβλημα φαίνεται καθημερινό και ίσως να έχει ερωτηθεί πολλές φορές σε βιομηχανίες και βιοτεχνίες. Πως το λύνουμε όμως; Το πρώτο πράγμα που πρέπει να κάνουμε είναι να περάσουμε από τον χώρο της φυσικής γλώσσας στα μαθηματικά.

Παρατηρούμε ότι  θέλουμε να μεγιστοποιήσουμε την συνάρτηση:
\(f(x_1, x_2) = x_1 + 6x_2\)
 όπου,
\(x_1\) = #σοκολατών Pyramid,
\(x_2\) = #σοκολατών Pyramid Nuit
επίσης έχουμε τους εξής περιορισμούς:
\(x_1 \leq 200\)
\(x_2 \leq 300\)
\(x_1 + x_2 \leq 400\)
και φυσικά θέλουμε οι ποσότητες από σοκολάτες που παράγουμε να είναι μη αρνητικός αριθμός, επομένως:
\(x_1, x_2 \geq 0\)

Η μετάβασή μας έχει ολοκληρωθεί! Πλέον μπορούμε να "πετάξουμε στα σκουπίδια" το αρχικό πρόβλημα και να επικεντρώσουμε την μελέτη μας στο τυπικά διατυπωμένο πρόβλημα, το οποίο το γράφουμε μαζεμένα παρακάτω:
\(max\) \(f(x_1, x_2) = x_1 + 6x_2\)
υπό τους περιορισμούς:
 \(x_1 \leq 200\)
 \(x_2 \leq 300\)
 \(x_1 + x_2 \leq 400\)
 \(x_1, x_2 \geq 0\)
Την παραπάνω γραφή θα την ονομάζουμε Γραμμικό Πρόγραμμα (ΓΠ, χωρίς σύγχηση με το Γραμμικό Προγραμματισμό). Την συνάρτηση \(f(x_1, x_2)\) που θέλουμε να μεγιστοποιήσουμε θα την λέμε Συνάρτηση Στόχο (από το αγγλικό Objective Function, στην ελληνική βιβλιογραφία θα την συναντήσετε και ως "αντικειμενική συνάρτηση"). Για να δικαιολογήσουμε το όνομα που δώσαμε (Γραμμικό Πρόγραμμα) αρκεί να παρατηρήσουμε ότι τόσο η συνάρτηση στόχος, όσο και οι περιορισμοί είναι γραμμικές συναρτήσεις.

Στο επόμενο κεφάλαιο θα δούμε πως να επιλύουμε ένα ΓΠ.


Σημειώσεις:
Αν δεν εμφανίζονται σωστά τα μαθηματικά σύμβολα, παρακαλώ πατήστε Ctrl+F5.
(*) Σε επόμενα κεφάλαια θα δούμε πόσο "αποτελεσματικά" μπορούμε να λύσουμε ένα ΓΠ.
Για μαθηματικά σύμβολα στο blogger ακολούθησα αυτές εδώ τις οδηγίες

Βιβλιογραφία:
[1] Το πρόβλημα πάρθηκε από το βιβλίο Αλγόριθμοι των Sanjoi Dasqupta, Christos Papadimitriou, Umesh Vazirani, εκδόσεις Κλειδάριθμος

Πλοήγηση

Σχόλια

Δημοφιλείς αναρτήσεις από αυτό το ιστολόγιο

Γραμμικός Προγραμματισμός: Κεφάλαιο 2.2 - λίγη γραμμική άλγεβρα & αναλυτική γεωμετρία - απόσταση σημείου - υπερεπιπέδπου

Στο προηγούμενο μέρος του κεφαλαίου δείξαμε πως μπορούμε να γράφουμε τα υπερεπίπεδα και τις ευθείες σε άλγεβρα και αποδείξαμε τις εξισώσεις:   \(\vec{x} \cdot \vec{a} = -c \hspace{5mm} (1)\) \(H_{\vec{a}, c} = \{ \vec{x} \in \mathbb{R}^n | \vec{a} \cdot  \vec{x} = - c\} \hspace{5mm}(2)\)  Την (1) την ονομάσαμε Εσσιανή Κανονική Μορφή . Θα δούμε ότι είναι πολύ εύκολο να βρούμε την απόσταση ενός σημείου από ένα υπερεπίπεδο, αν μας δίνεται το υπερεπίπεδο στην μορφή της (2). Θυμόμαστε ότι το \(\vec{a} \perp Η_{\vec{a}, c}\) και \(\|a\| = 1\). Επίσης, ότι το υπερεπίπεδο απέχει \(|c|\) από την αρχή των αξόνων. Έστω Χ το σημείο του οποίου θέλουμε να βρούμε την απόσταση από το \(H_{\vec{a}, c}\), τότε, ξέρουμε  ήδη από το σχολείο, ότι όταν λέμε απόσταση σημείου από υπερεπίπεδο εννοούμε κάθετη απόσταση. Σχήμα 1: Κάθετη απόσταση σημείου από υπερεπίπεδο Ας προσπαθήσουμε να "πιάσουμε" το σημείο Χ. Θεωρούμε ένα σημείο \(X_0\) πάνω στο υπερεπίπεδο, τότε παρατηρού...

Γραμμικός Προγραμματισμός: Κεφάλαιο 2.1 - λίγη γραμμική άλγεβρα & αναλυτική γεωμετρία - ευθείες και υπερεπίπεδα

Είδαμε στα προηγούμενα κεφάλαια την σημασία της γεωμετρίας των ευθειών και των υπερεπιπέδων για τον Γραμμικό Προγραμματισμό. Σε αυτό το κεφάλαιο θα πάμε πιο βαθιά σε αυτή την έννοια και θα δείξουμε πως να την "κωδικοποιούμε" στην γλώσσα της άλγεβρας. Ευθείες, Επίπεδα και Υπερεπίπεδα Τι ακριβώς είναι μια ευθεία ή ένα υπερεπίπεδο; Πως γράφουμε μια ευθεία σε αλγεβρική μορφή; Θα πρέπει να σκεφτόμαστε την αναλυτική γεωμετρία σαν ένα υπολογιστικό σύστημα, σαν μια γλώσσα προγραμματισμού. Στην ευκλείδια γεωμετρία που κάναμε στο σχολείο η ευθεία και το επίπεδο είναι κάτι τελείως χειροπιαστό, στην άλγεβρα όμως έχουμε μόνο πράξεις, μεταβλητές και εξισώσεις, τι άλλο θα μπορούσε να είναι λοιπόν μια ευθεία από μια εξίσωση, η εξίσωση θα ισχύει μόνο για τα σημεία εκείνα τα οποία ανήκουν στην ευθεία . Στο σχολείο γράφαμε το εξής: \(y = \frac{-a}{b}x + \frac{-c}{b}\) ή \(y = \lambda x+\beta\) θα δούμε πως η πρώτη μορφή είναι πολύ πιο χρήσιμη από την δεύτερη: $$  y = \frac{-a}{b}...

Γραμμικός Προγραμματισμός: Κεφάλαιο 3.2 - Η Μέθοδος Simplex - γεωμετρική ερμηνεία

Στο προηγούμενο κεφάλαιο περιγράψαμε την μέθοδο Simplex, αλγεβρικά. Σε αυτή την σειρά όμως βασικό μας μέλημα είναι η διαίσθηση που προσφέρει η γεωμετρία του προβλήματος. Εδώ θα ασχοληθούμε με την ερμηνεία των αλγεβρικών βημάτων του προηγούμενου κεφαλαίου από γεωμετρικής σκοπιάς. Ας θυμηθούμε άλλη μια φορά την κεντρική ιδέα της μεθόδου Simplex, όπως την περιγράψαμε στο Κεφάλαιο 2.0 : Κεντρική Ιδέα Μεθόδου Simplex Έστω v μία κορυφή της εφικτής περιοχής Όσο υπάρχει ένας γείτονας της v, v' με καλύτερη τιμή της συνάρτησης στόχου:         θέσε v' := v Αυτή ακριβώς την κεντρική ιδέα υλοποιήσαμε και στο Κεφάλαιο 3.1 . Έστω ότι έχουμε ένα ΓΠ με n μεταβλητές (άρα θα "ζούμε" στον n-διάστατο χώρο), ουσιαστικά κινούμαστε κάθε φορά πάνω σε μία ακμή του πολυτόπου των λύσεων (η μία ακμή ορίζεται από n-1 υπερεπίπεδα, οι n-1 μεταβλητές που παραμένουν σταθερές) και θα σταματήσουμε στην άλλη άκρη της ακμής. Η γειτονιά συνεπώς που αναφέρουμε στην Κεντρική Ιδέα δ...