Μάνος Ρουμελιώτης Πανεπιστήμιο Μακεδονίας Προσομοίωση και Γλώσσες Προσομοίωσης Μάνος Ρουμελιώτης Πανεπιστήμιο Μακεδονίας http://www.etl.uom.gr/mr/
Θέματα Προσομοίωση και Εξομοίωση Συστήματα και μοντέλα Τύποι προσομοίωσης Γλώσσες προσομοίωσης Παράδειγμα με GPSS Παράδειγμα με MODSIM
Τι είναι Προσομοίωση; Προσομοίωση είναι μια μέθοδος μελέτης ενός συστήματος και εξοικείωσης με τα χαρακτηριστικά του με τη βοήθεια ενός άλλου συστήματος το οποίο στις περισσότερες περιπτώσεις είναι ηλεκτρονικός υπολογιστής.
Διαφορά προσομοίωσης από εξομοίωση Προσομοίωση Εξομοίωση
Συστήματα και χαρακτηριστικά τους Σύστημα είναι ένα σύνολο αλληλεπιδρώντων στοιχείων τα οποία συνεργάζονται μεταξύ τους ή λειτουργούν συλλογικά για την επίτευξη κάποιου σκοπού. Συστήματα και χαρακτηριστικά τους Σύστημα Οντότητες Χαρακτηριστικά Δραστηριότητες Τράπεζα Πελάτες Υπόλοιπο Πίστωση Κατάθεση Ανάληψη Παντοπωλείο Κατάλογος ψώνιων Πληρωμή Δίκτυο υπολογιστών Πακέτα Μέγεθος Μετάδοση Βενζινάδικο Αυτοκίνητα Τύπος βενζίνης Ανελκυστήρας Επιβάτες Όροφος εισόδου Όροφος εξόδου Είσοδος στον ανελκυστήρα Αποθήκη Ανταλλακτικά Κόστος Είδος Προμήθεια Πώληση Πανεπιστήμιο Φοιτητές Έτος σπουδών Βαθμολογία Εξετάσεις
Μοντέλα Μοντέλο είναι μία αναπαράσταση ενός φυσικού συστήματος ή οργανισμού ή φυσικού φαινομένου ή ακόμη και μίας ιδέας. Ως δεύτερος ορισμός: Μοντέλο είναι το σύνολο των πληροφοριών ενός συστήματος που έχει συγκεντρωθεί με σκοπό τη μελέτη του συστήματος.
Τύποι προσομοίωσης Η προσομοίωση μπορεί να είναι είτε συνεχής είτε διακριτή, ανάλογα με το σύστημα που προσομοιώνεται Στα συνεχή συστήματα οι μεταβολές της κατάστασης είναι κατά κύριο λόγο ομαλές. Οι δραστηριότητες δηλαδή, μεταβάλλουν συνεχώς την κατάσταση του συστήματος και όχι μόνον όταν τελειώσουν. Παράδειγμα τέτοιου συστήματος είναι ένα αυτοκίνητο. Στα διακριτά συστήματα οι μεταβολές είναι κυρίως ασυνεχείς, πράγμα που σημαίνει, ότι η κατάσταση του συστήματος αλλάζει μόλις τελειώσει μία δραστηριότητα. Παράδειγμα διακριτού συστήματος είναι μια τράπεζα.
Γλώσσες προσομοίωσης Γενικά χαρακτηριστικά των γλωσσών προσομοίωσης: Άποψη του κόσμου (προσανατολισμός σε γεγονότα, δραστηριότητες, ή διεργασίες). Μηχανισμός ροής χρόνου (αυξάνουν αυτόματα το χρόνο και διατηρούν λίστα με τα μελλοντικά γεγονότα). Περιλαμβάνουν γεννήτρια τυχαίων αριθμών. Οι γεννήτριες των γλωσσών παράγουν συνήθως αριθμούς ομοιόμορφα κατανεμημένους στο διάστημα 0 μέχρι 1, όπως αναπτύσσεται στο επόμενο κεφάλαιο. Περιλαμβάνουν γεννήτρια τυχαίων δειγμάτων που να ακολουθούν την κατανομή που προσδιορίζει ο χρήστης. Έχουν ικανότητες συλλογής δεδομένων του μοντέλου. Παρέχουν στοιχειώδη στατιστική ανάλυση των δεδομένων που έχουν συλλέξει. Παρέχουν διαγνωστικά στοιχεία και βοήθεια στην ανίχνευση λαθών.
Σύγκριση γλωσσών Όνομα γλώσσας GASP GPSS SIMSCRIPT MODSIM SIMULINK Ερμηνεία ονόματος General Activity Simulation Program (Γενικό Πρόγραμμα Προσομοίωσης Δραστηριοτήτων) General Purpose Simulation Language (Σύστημα Προσομοίωσης Γενικής Χρήσεως) SIMulation SCRIPT MODular SIMulation language Καμία Συγκεκριμένη Γλώσσα υλοποίησης FORTRAN ή PL/I Assembly Assembly, C C++ Υπολογιστικό σύστημα Οποιοσδήποτε υπολογιστής που διαθέτει μεταγλωττιστή FORTRAN ή PL/I (σε συστήματα διαμοιρασμού χρόνου) PC, Macintosh, πολλές πλατφόρμες UNIX και πολλά μεγάλα συστήματα διαμοιρασμού χρόνου PC, McIntosh, πολλές πλατφόρμες UNIX και πολλά μεγάλα συστήματα διαμοιρασμού χρόνου PC, UNIX PC, McIndosh, Linux και Solaris Μέθοδος προγραμματισμού Εντολή Μπλοκ Εντολή κσι functional block Άποψη του Κόσμου Γεγονότος Διεργασία (Δοσοληψία) Γεγονότος ή Διεργασίας Διεργασίας Διαχείριση μνήμης Σταθερή Δυναμική Τύπος γλώσσας Μεταγλωττιστής Διερμηνευτής (μεταγλωττιστής στην έκδοση GPSS/H) Μεταγλώσσα: παράγει C++ πηγαίο κώδικα Διερμηνευτής Κόστος Χαμηλό Μέσο Υψηλό Σχετικά υψηλό
Παράδειγμα με GPSS 70% Unleaded 75% 30% 100% Super 30% 25% 70%
Διάγραμμα μπλοκ
Πρόγραμμα SIMULATE EXPON FUNCTION RN2,C24 0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2 .75,1.36/.8,1.6/.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81 .95,2.99/.96,3.2/.97,3.5/.98,3.9/.99,4.6/.995,5.3/.998,6.2 .999,7/.9998,8 STORAGE S$WASQ,2 Η αρχική χωρητικότητα αναμονής GENERATE 8,FN$EXPON στο πλυντήριο είναι 2 αυτοκίνητα TRANSFER .25,,SUPER Το 25% των αυτοκινήτων πηγαίνουν QUEUE UNLDQ για βενζίνη SUPER ενώ το SEIZE UNLD υπόλοιπο 75% μπαίνει στην ουρά DEPART UNLDQ για αμόλυβδη βενζίνη. ADVANCE 8,3 RELEASE UNLD TRANSFER .30,,WASHER Το 30% των αυτοκινήτων συνεχίζει TERMINATE στο πλυντήριο ενώ τα άλλα φεύγουν * SUPER QUEUE SUPRQ Τα αυτοκίνητα περιμένουν στην SEIZE SUPR ουρά για βενζίνη SUPER DEPART SUPRQ RELEASE SUPR TERMINATE στο πλυντήριο ενω τα άλλα φεύγουν WASHER TRANSFER BOTH,,BYEBYE Αν δεν υπάρχουν θέσεις αναμονής WAIT ENTER WASQ τα αυτοκίνητα φεύγουν SEIZE WASR LEAVE WASQ ADVANCE 25,5 RELEASE WASR Όσα αυτοκίνητα πλυθούν αναχωρούν BYEBYE TERMINATE κι αυτά GENERATE 10080 Χρόνος προσομοίωσης 1 εβδομάδα TERMINATE 1 START 1 Αρχή της πρώτης εκτέλεσης STORAGE S$WASQ,3 Χώρος αναμονής 3 αυτοκίνητα CLEAR Μηδενισμός στατιστικών START 1 Αρχή της δεύτερης εκτέλεσης STORAGE S$WASQ,4 Χώρος αναμονής 4 αυτοκίνητα START 1 Αρχή τρίτης εκτέλεσης STORAGE S$WASQ,5 Χώρος αναμονής 5 αυτοκίνητα START 1 Αρχή τέταρτης εκτέλεσης END Τέλος προσομοίωσης
Αποτελέσματα Δεύτερη εκτέλεση με χώρο αναμονής για 3 αυτοκίνητα BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL BLOCK CURRENT TOTAL 1 1247 11 322 21 1 343 2 1247 12 322 22 342 3 6 925 13 1 322 BYEBYE 375 4 919 14 321 24 1 5 919 15 321 25 1 6 1 919 16 237 7 918 WASHER 376 8 918 WAIT 343 9 626 19 343 SUPER 322 20 343 Τρίτη εκτέλεση με χώρο αναμονής για 4 αυτοκίνητα 1 1330 11 334 21 1 370 2 1330 12 334 22 369 3 996 13 334 BYEBYE 398 4 996 14 334 24 1 5 996 15 334 25 1 6 1 996 16 239 7 995 WASHER 402 8 995 WAIT 3 373 9 688 19 370 SUPER 334 20 370 Τέταρτη εκτέλεση με χώρο αναμονής για 5 αυτοκίνητα 1 1272 11 293 21 1 339 2 1272 12 293 22 338 3 3 978 13 1 293 BYEBYE 354 4 975 14 292 24 1 5 975 15 292 25 1 6 1 975 16 199 7 974 WASHER 358 8 974 WAIT 3 342 9 709 19 339
Αποτελέσματα Θέσεις αναμονής n1 n2 n3 l 2 357 315 42 11.76% 3 376 343 33 8.78% 4 402 26 6.47% 5 358 345 13 3.63%
Προσoμοίωση με MODSIM
Προσoμοίωση με MODSIM
Προσoμοίωση με MODSIM
Παράδειγμα προγράμματος MODSIM OBJECT AircraftObj; ASK METHOD SetSpeed(IN speed:INTEGER); BEGIN BestSpeed := speed; IF InFlight INTERRUPT SELF FlyDistance; END IF; END METHOD; TELL METHOD FlyDistance (IN dist:INTEGER); InFlight := TRUE; WHILE dist > 0.0 speed := BestSpeed; start := SimTime; WAIT DURATION dist/BestSpeed; ON INTERRUPT elapsed := SimTime-start; dist := dist-(elapsed*speed); END WAIT; END WHILE; InFlight:=FALSE; OUTPUT ("Arrived at",SimTime); End METHOD; END OBJECT;
Στατιστικά Αποτελέσματα
Βιβλιογραφία N.L. Biggs, Introduction to Computing With Pascal, Oxford Univ Press, 1989. G.M. Birtwistle, DEMOS - Discrete Event Modeling on SIMULA, Macmillan, London, 1979. CACI, MODSIM III User's Manual, La Jolla, California, 1997. CACI, SIMPROCESS User's Manual, La Jolla, California, 1997. CACI, Windows SIMSCRIPT II.5, User's Manual, La Jolla, California, 1997. O. Dahl, K. Nygaard, "SIMULA - an Algol-based simulation language," Comm ACM, Vol. 9, No. 9, 1966, pp. 671-678. G. Gordon, System Simulation, Prentice-Hall Englewood Cliffs, NJ, 1969. G. Gordon, “The design of the GPSS language.” In Adam, N.R. & Dogramaci, A. (eds.), Current Issues in Computer Simulation, Academic Press, New York, 1979. E. Horowitz, S. Sahni, Fundamentals of Data Structures in Pascal, W. H. Freeman & Co. 1994. H.M. Markowitz, B. Hausner, and H.W. Karr, SIMSCRIPT: A Simulation Programming Language, RAND Corporation, RM-3310-pr, Prentice-Hall, Englewood Cliffs, USA, 1962. M. Pidd, Computer Simulation in Management Science, 3η έκδοση, Wiley, 1992. A.A.B. Pritsker, The GASP IV Simulation Language, Wiley, New York, 1974. E.C. Russel, SIMSCRIPT II.5 Programming Language, CACI, Los Angeles, 1987. Stahl, Introduction to Simulation with GPSS on the PC, Macintosh and VAX, Prentice-Hall, 1990. T.J. Schriber, An Introduction to Simulation Using Gpss/H, John Wiley & Sons, 1991.