ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΕΡΓΑΣΙΩΝ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΤΟ ΛΟΓΙΣΜΙΚΟ EXTEND 1 ο εργαστήριο Διοίκησης και Παραγωγής Έργων ΙΣΤΟΤΟΠΟΣ ΕΡΓΑΣΤΗΡΙΟΥ http://www.mech.upatras.gr/~adamides/dpe
ΠΡΟΣΟΜΟΙΩΣΗ Η τεχνική που, με τη χρήση ενός μοντέλου, δίνει τη δυνατότητα σε κάποιον να πάρει αποφάσεις σχετικά με τη δομή και τις παραμέτρους ενός πραγματικού συστήματος. Χρησιμοποιείται για: Σχεδιασμό νέου συστήματος Αλλαγές/βελτιώσεις σε υπάρχον σύστημα Κοστολόγηση προϊόντων και υπηρεσιών Εκπαίδευση Πωλήσεις/δημόσιες σχέσεις
EXTEND Το Extend είναι ένα λογισμικό εικονικής προσομοίωσης που μπορεί να χρησιμοποιηθεί για την ανάπτυξη δυναμικών μοντέλων που απεικονίζουν διεργασίες της πραγματικότητας. Χτίζοντας blocks, ανακαλύπτονται οι διαδικασίες που εμπλέκονται και αποκαλύπτεται η βέλτιστη λύση, αλλάζοντας τα δεδομένα. Ο ιστότοπος είναι: http://www.extendsim.com.
ΞΕΚΙΝΩΝΤΑΣ ΣΤΟ EXTEND Τα Blocks: καθορίζουν κάποια δράση ή διεργασία. συνδέονται μεταξύ τους και σχηματίζουν ένα μοντέλο. βρίσκονται σε βιβλιοθήκες (libraries), στο φάκελο LIBRARIES του Extend. Όταν δημιουργούμε ένα νέο μοντέλο, ανοίγουμε τις απαιτούμενες βιβλιοθήκες επιλέγοντας Library, Open Library από το μενού. Εισάγουμε τις ακόλουθες βιβλιοθήκες: Discrete Event, Generic, Mfg, Plotter.
ΣΥΝΔΕΣΜΟΙ Τα μοντέλα στο Extend συντίθενται από συνδεδεμένα blocks. Υπάρχουν 4 ειδών σύνδεσμοι (connectors): είσοδος οντότητας, έξοδος οντότητας, είσοδος τιμών, έξοδος τιμών (item input, item output, value input, and value output). Οι είσοδοι έξοδοι οντοτήτων χρησιμοποιούνται για να μεταφέρουν τις οντότητες από το ένα block στο άλλο. Οι είσοδοι έξοδοι τιμών χρησιμοποιούνται για να μεταφέρουν πληροφορίες (παραμέτρους) μεταξύ των blocks.
ΠΑΡΑΔΕΙΓΜΑ ΣΥΝΔΕΣΜΩΝ Το block Activity, Delay που εμφανίζεται παρακάτω παρουσιάζει όλους τους δυνατούς τύπους συνδέσεων (4 connectors).
ΠΑΡΑΘΥΡΟ ΔΙΑΛΟΓΟΥ Με διπλό κλικ σε οποιοδήποτε block ανοίγει ένα παράθυρο διαλόγου.
ΠΑΡΑΔΕΙΓΜΑ: ΤΡΑΠΕΖΙΚΟ ΚΑΤΑΣΤΗΜΑ Παραδοχές: Οι πελάτες φθάνουν τυχαία στο κατάστημα, έστω με ρυθμό 20 πελάτες/ώρα Εξυπηρετούνται κατά σειρά άφιξης (first in first out (FIFO) queue), Υπάρχει ένας υπάλληλος, και Ο χρόνος εξυπηρέτησης είναι τυχαίος, έστω ότι ακολουθεί κανονική κατανομή Ν(6,1) σε λεπτά.
ΧΤΙΣΙΜΟ ΜΟΝΤΕΛΟΥ ΣΤΟ EXTEND Άφιξη πελατών Αναμονή στην ουρά Εξυπηρέτηση Έξοδος
ΠΡΙΝ ΤΟ ΧΤΙΣΙΜΟ ΤΟΥ ΜΟΝΤΕΛΟΥ 3 βασικά βήματα πριν την δημιουργία οποιουδήποτε μοντέλου: Δημιουργία νέου μοντέλου Άνοιγμα βιβλιοθηκών Εισαγωγή του Συγχρονιστή (executive)
ΑΦΙΞΕΙΣ Ο πελάτης φθάνει: Generator (DE.LIX, Generators) Ο χρόνος μεταξύ των αφίξεων (interarrival time) των οντοτήτων στο σύστημα, όπως οι πελάτες στο παράδειγμά μας, είναι συχνά τυχαίος και περιγράφεται από μια στατιστική κατανομή. Συχνά, δεδομένα χρόνου μεταξύ των αφίξεων συλλέγονται και στη συνέχεια «ταυτίζονται» (fitted) με υπάρχουσες γνωστές συνεχείς στατιστικές κατανομές.
ΑΦΙΞΕΙΣ Είναι πολύ σημαντικό να κατανοήσουμε τη σχέση του μέσου χρόνου μεταξύ των αφίξεων (1/λ) και του μέσου ρυθμού αφίξεων (λ). Αν αναμένουμε 20 αφίξεις ανά ώρα, τότε ο μέσος χρόνος μεταξύ των αφίξεων είναι: λ= 20 αφίξεις/ώρα = 20 αφίξεις/60 λεπτά = 1/3 αφίξεις / λεπτό Άρα, ο μέσος χρόνος αφίξεων είναι: (1/λ) = 3 λεπτά / άφιξη.
ΟΥΡΑ Πελάτης εισέρχεται στην ουρά: Queue, FIFO (DE.LIX, Queues) Ενώνουμε το σύνδεσμο εξαγωγής οντοτήτων (item output connector) του Generator block, με το σύνδεσμο εισαγωγής οντοτήτων (item input connector) του Queue, FIFO block. Είναι σύνηθες, όταν αναφερόμαστε σε ανθρώπους, να χρησιμοποιούμε αυτό το block στην προσομοίωση. Το Extend ορίζει by default το μέγιστο μήκος ουράς στις 1000 οντότητες (βλέπε στην καρτέλα Queue ).
ΔΙΕΡΓΑΣΙΑ Ο πελάτης εξυπηρετείται από τον υπάλληλο: Activity, Delay (DE.LIX, Activities) Συνδέστε το Queue, FIFO block στο Activity Delay block. Αν ο χρόνος εξυπηρέτησης είναι σταθερός, τότε απλά θέτουμε μια τιμή στο πεδίο Delay. Ωστόσο, οι χρόνοι εξυπηρέτησης είναι συνήθως τυχαίοι και περιγράφονται από μια στατιστική κατανομή.
ΔΙΕΡΓΑΣΙΑ Τυχαίοι χρόνοι εξυπηρέτησης δεν δύναται να τεθούν στο πεδίο του Activity Delay. Χρησιμοποιούμε ένα επιπλέον block που ονομάζεται Input Random Number (GENERIC.LIX, Inputs/Outputs) προκειμένου να εισάγουμε στατιστικές κατανομές σε οποιοδήποτε block χρειαστεί. Κλικάρουμε στο πεδίο Distribution για να επιλέξουμε την επιθυμητή στατιστική κατανομή και θέτουμε τις τιμές που επιθυμούμε στα ανάλογα πεδία.
ΔΙΕΡΓΑΣΙΑ Ενώνουμε το σύνδεσμο εξαγωγής τιμών του Input Random Number block με το σύνδεσμο εισαγωγής τιμών D (Delay) του Activity, Delay block.
ΕΞΟΔΟΣ Ο πελάτης αποχωρεί από το σύστημα. Χρησιμοποιούμε το block Exit (DE.LIX, Routing) Συνδέουμε το Activity, Delay block με το Exit block. Αυτό το block απλά αφαιρεί τον πελάτη (οντότητα) από το σύστημα και καταγράφει τον αριθμό των ατόμων (οντοτήτων) που έφυγαν κατά τη διάρκεια της προσομοίωσης( Exit tab).
ΓΡΑΦΙΚΗ ΑΠΕΙΚΟΝΙΣΗ Έχουμε τη δυνατότητα να εξάγουμε γραφικές παραστάσεις διαφόρων μεταβλητών που μας ενδιαφέρουν. Χρησιμοποιούμε το block Plotter, Discrete Event (PLOTTER.LIX) Συνδέουμε τη μεταβλητή που μας ενδιαφέρει (π.χ. μήκος ουράς) με μια από τις εισόδους του block και λαμβάνουμε οπτικά σε πραγματικό χρόνο τιμές της μεταβλητής.
ΕΚΤΕΛΕΣΗ ΠΡΟΣΟΜΟΙΩΣΗΣ Πριν τρέξουμε το μοντέλο πρέπει να προσδιορίσουμε πόσο θα διαρκέσει η προσομοίωση.
ΧΡΗΣΙΜΑ BLOCKS Συγχρονιστής (Executive) Γεννήτρια (Generator) Ουρά αναμονής (Queue) Δραστηριότητα (Activity Delay) Ομαδοποίηση (Batch) Διαίρεση (Unbatch) Συνένωση (Combine) Το μπλοκ αυτό αποτελεί την καρδιά κάθε μοντέλου διακριτού χρόνου. Πρέπει να τοποθετείται στην πάνω αριστερή γωνία του μοντέλου και χρησιμοποιείται για τον έλεγχο του χρόνου και του τερματισμού της προσομοίωσης. Γενικά, δε χρειάζεται να αλλάξει κανείς τίποτα στις ρυθμίσεις του συγκεκριμένου μπλοκ. (Βιβλιοθήκη: Discrete Event) Η γεννήτρια χρησιμοποιείται για την παραγωγή και εισαγωγή στο μοντέλο αντικειμένων, σύμφωνα με μια προκαθορισμένη κατανομή. Μπορεί κανείς να διαλέξει από ένα πλήθος διαθέσιμων κατανομών στο παράθυρο επιλογών του μοντέλου. Ανάλογα με την επιλεγμένη κατανομή, απαιτούνται 1, 2 ή 3 ορίσματα, τα οποία καθορίζουν τα χαρακτηριστικά της κατανομής. Τα αντικείμενα δημιουργούνται στα χρονικά πλαίσια που ορίζουν οι κατανομές. (Βιβλιοθήκη: Discrete Event) Το μπλοκ αυτό υλοποιεί μια ουρά αναμονής first-in-first-out (FIFO). Ο μέγιστος αριθμός αντικειμένων που μπορούν να περιμένουν σε αυτή ορίζεται από το μενού επιλογών. Δίνεται η δυνατότητα να τερματιστεί η προσομοίωση, όταν γεμίσει η ουρά. (Βιβλιοθήκη: Discrete Event) Το μπλοκ αυτό δημιουργεί μια καθυστέρηση στο αντικείμενο που διέρχεται το μπλοκ για συγκεκριμένο χρονικό διάστημα που ορίζεται στο πλαίσιο διαλόγου του μπλοκ. Με το μπλοκ αυτό προσομοιώνεται η λειτουργία ενός σταθμού εξυπηρέτησης. (Βιβλιοθήκη: Discrete Event) Ομαδοποιεί οντότητες που στη συνέχεια του μοντέλου αντιμετωπίζονται ως μία. (Βιβλιοθήκη: Discrete Event) Διαιρεί μια οντότητα σε πολλές ίδιες οντότητες. (Βιβλιοθήκη: Discrete Event) Συνένωση διαδρομών σε μία. (Βιβλιοθήκη: Discrete Event)
ΧΡΗΣΙΜΑ BLOCKS Επιλογή εξόδου (Select DE Output) Ορισμός τιμών χαρακτηριστικού (Set Attribute) Απόδοση τιμών χαρακτηριστικού (Get Attribute) Εισαγωγή τυχαίου αριθμού (Input Random Number) Ανθρώπινο δυναμικό (Labor) Έξοδος (Exit) Σχεδιογράφος (Plotter) Επιλέγει μια από τις εξόδους βάσει της τιμής ελέγχου. (Βιβλιοθήκη: Discrete Event) Δίνει τιμές σε χαρακτηριστικά μιας οντότητας. (Βιβλιοθήκη: Discrete Event) Διαβάζει την τιμή ενός χαρακτηριστικού μιας οντότητας. (Βιβλιοθήκη: Discrete Event) Παράγει ακέραιους ή ρητούς σύμφωνα με μια στατιστική κατανομή. (Βιβλιοθήκη: Generic) Ομάδα εργαζομένων. (Βιβλιοθήκη: Manufacturing) Αποτελεί ένα τερματικό στοιχείο του μοντέλου, όπου καταλήγουν τα αντικείμενα που έχουν διανύσει το μοντέλο και δε χρειάζονται πια. Έχει τη δυνατότητα να καταγράφει τον αριθμό των αντικειμένων που φτάνουν σε αυτό, καθώς και την είσοδο από την οποία φτάνουν. (Βιβλιοθήκη: Discrete Event) Το μπλοκ αυτό είναι ένας σχεδιογράφος για πρότυπα διακριτού χρόνου. Με τον σχεδιογράφο παρουσιάζονται τα δεδομένα της προσομοίωσης. (Βιβλιοθήκη: Discrete Event)