ΠΡΟΒΛΗΜΑ ΑΝΑΘΕΣΗΣ Ή ΑΝΤΙΣΤΟΙΧΗΣΗΣ Ή ΕΚΧΩΡΗΣΗΣ Ή ΚΑΤΑΝΟΜΗΣ (ASSIGNMENT PROBLEM) Η διαµόρφωση και το µοντέλο του προβλήµατος ανάθεσης (π.χ. εργασιών σε µηχανές ή δραστηριοτήτων σε άτοµα) περιγράφεται στις σελίδες 248-249 του βιβλίου Ζώη- Μοσχονά Προγραµµατισµός επιχειρήσεων οικονοµικός και γραµµικός προγραµµατισµός Η επίλυση του προβλήµατος µε τον Ουγγρικό αλγόριθµο αναπτύσσεται παρακάτω Εστω ότι δίνονται m δραστηριότητες (ή εργασίες)και n άτοµα (ή µηχανές) και το κόστος (ή αποτελεσµατικότητα) c ij για την εκτέλεση της δραστηριότητας i από το άτοµο j (στον παρακάτω πίνακα κόστους). Για την εκτέλεση κάθε δραστηριότητας αντιστοιχεί ένα και µόνο άτοµο και αντίστροφα. Ο αριθµός των δραστηριοτήτων θα πρέπει να είναι ίσος µε τον αριθµό των ατόµων (m=n). Εάν δεν είναι εισάγονται ψευδο-δραστηριότητες ή ψευδο-άτοµα µε κόστος c ij =0 Ζητείται να προσδιοριστεί η αντιστοίχηση των ατόµων σε δραστηριότητες ώστε να επιτευχθεί το ελάχιστο κόστος δηλαδή σε ποιο άτοµο θα αναθέσω ποια δραστηριότητα µε το ελάχιστο κόστος (ή τη µέγιστη αποτελεσµατικότητα). ρα στη ριότ ητες Ατοµα 1 2 n Προσφορά 1 c 11 c 12.. c 1n 1 2 c 21 c 22.. c 2n 1...... 1...... 1...... 1 N c n1 c n2.. c nn 1 Ζήτηση 1 1 1 1 Επίλυση προβλήµατος ανάθεσης µε τον Ουγγρικό αλγόριθµο Για την ανάπτυξη του Ουγγρικού αλγορίθµου χρησιµοποιείται η ιδιότητα: 24
Αν προσθέσουµε ή αφαιρέσουµε οποιοδήποτε σταθερό αριθµό από όλα τα στοιχεία µιας ή στήλης του πίνακα κόστους τότε η βέλτιστη λύση για το νέο πίνακα είναι βέλτιστη και για τον παλαιό και αντίστροφα. Ο αλγόριθµος επίλυσης του προβλήµατος αντιστοίχησης µετατρέπει τον αρχικό πίνακα κόστους σε ένα ισοδύναµο πίνακα που αποτελείται από θετικά και µηδενικά στοιχεία ώστε όλες οι αντιστοιχήσεις να είναι δυνατές στα µηδενικά στοιχεία. Τα µηδενικά στοιχεία βρίσκονται ως εξής: Βήµα 1 (α) Αφαιρούµε το µικρότερο στοιχείο κόστους της κάθε από κάθε στοιχείο κόστους της ίδιας (β) Στον πίνακα που προκύπτει επαναλαµβάνεται το ίδιο για κάθε στήλη. Βήµα 2 Εξετάζονται οι γραµµές και οι στήλες διαδοχικά και εντοπίζονται οι γραµµές /στήλες µε ένα µόνο µηδενικό στοιχείο, έστω στη θέση (i,j ) το οποίο κρατείται για «αντιστοίχηση» ή «εκχώρηση» της δραστηριότητας ι στο άτοµο j.συµβολίζουµε τις αντιστοιχήσεις τοποθετώντας τα µηδενικά στοιχεία σε τετραγωνάκια (π.χ. 0 ). Τα επιπλέον µηδενικά διαγράφονται Εάν ο αριθµός των δραστηριοτήτων /ατόµων είναι ίσος µε τον αριθµό των «αντιστοιχήσεων» τότε η λύση είναι άριστη Εάν όχι Βήµα 3 Χαράζεται ο ελάχιστος αριθµός οριζόντιων και κάθετων γραµµών που καλύπτουν τα µηδενικά στοιχεία ως εξής: (α) Σηµειώνονται όλες οι γραµµές που δεν έχουν «αντιστοίχηση» (β)στις γραµµές που έχουµε σηµειώσει, σηµειώνονται όλες οι στήλες που έχουν διαγραµµένα µηδενικά στοιχεία. Αν δεν υπάρχουν τέτοιες στήλες προχωράµε στο βήµα (ε) (γ) Στις στήλες που έχουµε σηµειώσει, σηµειώνουµε όλες τις γραµµές που έχουν «αντιστοίχηση». Αν δεν υπάρχουν τέτοιες γραµµές προχωράµε στο βήµα (ε) (δ) Επαναλαµβάνονται τα βήµατα β, και γ µέχρι να µη µπορούν να σηµειωθούν άλλες γραµµές ή στήλες (ε) Χαράζεται µια οριζόντια γραµµή από κάθε µη σηµειωµένη γραµµή Χαράζεται µια κάθετος γραµµή από κάθε σηµειωµένη στήλη 25
Βήµα 4 Εκλέγεται το ελάχιστο στοιχείο από όλα τα στοιχεία που δεν καλύπτονται από οριζόντια ή κάθετο γραµµή. Το στοιχείο αυτό αφαιρείται από όλα τα ακάλυπτα στοιχεία, Το στοιχείο αυτό προστίθεται σε κάθε στοιχείο που βρίσκεται στη τοµή δύο γραµµών Ολα τα άλλα καλυµµένα από γραµµές στοιχεία παραµένουν τα ίδια Ο αλγόριθµος επανέρχεται στο βήµα 2 Παρατήρηση Εάν έχουµε πρόβληµα µεγιστοποίησης (π.χ. της αποτελεσµατικότητας) πολλαπλασιάζουµε κάθε στοιχείο του πίνακα κόστους µε ( 1) και εφαρµόζουµε τον Ουγγρικό αλγόριθµο. Θυµηθείτε ότι το στο βήµα 1 αφαιρώντας το µικρότερο στοιχείο της κάθε από κάθε στοιχείο της ίδιας, το µικρότερο αρνητικό στοιχείο είναι το µεγαλύτερο σε απόλυτο τιµή αρνητικό στοιχείο). Παράδειγµα Πέντε δακτυλογράφοι µπορούν να απασχοληθούν σε 5 γραφοµηχανές. Στον πίνακα δίνονται ο αριθµός των σφαλµάτων της κάθε δακτυλογράφου σε κάθε µηχανή. Ποια είναι η αντιστοίχηση δακτυλογράφων σε µηχανές έτσι ώστε να ελαχιστοποιείται ο αριθµός των σφαλµάτων. ακτ Α 13 19 10 18 22 υλογ Β 11 9 14 8 17 ράφο Γ 15 18 17 14 18 ι 23 26 19 30 28 Ε 16 12 14 13 17 Βήµα 1α) Αφαιρούµε το µικρότερο στοιχείο της κάθε από όλα τα στοιχεία της ίδιας π.χ. Της 1ης είναι το 10 το οποίο αφαιρούµε από όλα τα στοιχεία της 1ης 26
Της 2ης είναι το 8 το οποίο αφαιρούµε από όλα τα στοιχεία της 2ης Της 3ης είναι το 14 το οποίο αφαιρούµε από όλα τα στοιχεία της 3ης Της 4ης είναι το 19 το οποίο αφαιρούµε από όλα τα στοιχεία της 4ης Της 5ης είναι το 12 το οποίο αφαιρούµε από όλα τα στοιχεία της 5ης Ετσι σχηµατίζεται ο εξής πίνακας ακτ Α 3 9 0 8 12 υλογ Β 3 1 6 0 9 ράφο Γ 1 4 3 0 4 ι 4 7 0 11 9 Ε 4 0 2 1 5 Βήµα 1β) στον πίνακα που προκύπτει, αφαιρούµε το µικρότερο στοιχείο της κάθε στήλης από όλα τα στοιχεία της ίδιας στήλης ηλαδή Το µικρότερο στοιχείο της 1ης στήλης είναι το 1 το οποίο αφαιρούµε από όλα τα στοιχεία της 1ης στήλης Το µικρότερο στοιχείο της 2ης στήλης είναι το 0 το οποίο αφαιρούµε από όλα τα στοιχεία της 2ης στήλης Το µικρότερο στοιχείο της 3ης στήλης είναι το 0 το οποίο αφαιρούµε από όλα τα στοιχεία της 3ης στήλης Το µικρότερο στοιχείο της 4ης στήλης είναι το 0 το οποίο αφαιρούµε από όλα τα στοιχεία της 4ης στήλης Το µικρότερο στοιχείο της 5ης στήλης είναι το 4 το οποίο αφαιρούµε από όλα τα στοιχεία της 5ης στήλης Ετσι προκύπτει ο πίνακας 27
ακτ υλογρ άφοι Α 2 9 0 8 8 Β 2 1 6 0 5 Γ 0 4 3 0 0 3 7 0 11 5 Ε 3 0 2 1 1 Βήµα 2 ακτ Α 2 9 0 8 8 υλογ Β 2 1 6 0 5 ράφο Γ 0 4 3 0 0 ι 3 7 0 11 5 Ε 3 0 2 1 1 Οι «αντιστοιχήσεις» είναι η δακτυλογράφος Α στη µηχανή 3 (διαγράφουµε τα υπόλοιπα µηδενικά της 1ης και της 3ης στήλης) η Β στη 4 (διαγράφουµε τα υπόλοιπα µηδενικά της 2ης και της 4ης στήλης) η Γ στη 1 (διαγράφουµε τα υπόλοιπα µηδενικά της 3ης και της 1ης στήλης) και η Ε στη 2 µηχανή (διαγράφουµε τα υπόλοιπα µηδενικά της 5ης και της 2ης στήλης) εν υπάρχει αντιστοίχηση για τη δακτυλογράφο Αρα η λύση δεν είναι άριστη Βήµα 3 (α) σηµειώνουµε τη 4η γραµµή γιατί δεν έχει αντιστοίχηση (β) σηµειώνουµε τη 3η στήλη γιατί έχει διαγραµµένο µηδενικό στη σηµειωµένη 4η γραµµή (γ) σηµειώνουµε την 1η γραµµή γιατί έχει αντιστοίχηση στη σηµειωµένη 3η στήλη (δ) δεν µπορούµε να σηµειώσουµε άλλες γραµµές ή στήλες 28
(ε) χαράζουµε µια οριζόντια γραµµή από τις µη σηµειωµένες γραµµές (δηλαδή τη 2η, τη 3η και τη 5η γραµµή ) και µια κάθετο από τη σηµειωµένη 3η στήλη. ακτ Α 2 9 0 8 8 υλογ Β 2 1 6 0 5 ράφο Γ 0 4 3 0 0 ι 3 7 0 11 5 Ε 3 0 2 1 1 Βήµα 4 το ελάχιστο στοιχείο που δεν καλύπτεται είναι το 2, το αφαιρούµε από όλα τα ακάλυπτα στοιχεία και το προσθέτουµε στα στοιχεία που βρίσκονται στις τοµές των οριζοντίων και καθέτων. Τα υπόλοιπα καλυµµένα (δηλαδή αυτά που δεν βρίσκονται στις τοµές των οριζοντίων και καθέτων) παραµένουν ως έχουν Ετσι προκύπτει ο εξής πίνακας ακτ Α 0 7 0 6 6 υλογ Β 2 1 8 0 5 ράφο Γ 0 4 5 0 0 ι 1 5 0 9 3 Ε 3 0 4 1 1 Επανερχόµαστε στο βήµα 2 ακτ Α 0 7 0 6 6 υλογ Β 2 1 8 0 5 ράφο Γ 0 4 5 0 0 ι 1 5 0 9 3 Ε 3 0 4 1 1 29
οι αντιστοιχήσεις είναι η Α δακτυλογράφος στη 1η µηχανή Η Β στη 4η µηχανή Η Γ στη 5η µηχανή Η στη 3η µηχανή Η Ε στη 2η µηχανή Αφού οι αντιστοιχήσεις είναι 5 η λύση είναι άριστη Ο συνολικός αριθµός σφαλµάτων = άθροισµα των τιµών των σφαλµάτων για την άριστη λύση ηλαδή 13+8+18+19+12=70 30