Φροντιστήριο 8 Φύλλο Ασκήσεων UPPAAL 2

Σχετικά έγγραφα
ΕΠΛ 664 Ανάλυση και Επαλήθευση Συστημάτων 8-1

ΕΠΛ 664 Ανάλυση και Επαλήθευση Συστημάτων Εαρινό Εξάμηνο Φροντιστήριο 8. Φύλλο Ασκήσεων UPPAAL - 1

Συναρτήσεις. Εισαγωγή

Σειρά Προβλημάτων 3 Ημερομηνία Παράδοσης: 04/04/16

Pascal. 15 Νοεμβρίου 2011

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό με C++

3. Προσομοίωση ενός Συστήματος Αναμονής.

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό

ΠΩΣ ΝΑ ΟΡΙΣΕΤΕ ΚΑΙ ΝΑ ΕΠΙΛΥΣΕΤΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΓΡΑΜΜΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΤΟΝ SOLVER ΤΟΥ EXCEL

Προγραμματισμός ΙI (Θ)

ΕΡΓΑΛΕΙΑ ΚΑΤΑΣΚΕΥΗΣ ΠΑΙΧΝΙΔΙΩΝ: Εργασία με το λογισμικό Valve Editor

Αναπαραγωγή με αρχεία ήχου

ΑΥΤΟΜΑΤΑ Ι ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ. 29 Ιουνίου 2007 ΔΙΑΦΑΝΕΙΑ 1

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

Κατακερματισμός (Hashing)

Επιλογή BiLevel/Αναπνευστήρες 800 Series

ΤΕΙ Κρήτης, Παράρτηµα Χανίων

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Δομημένος Προγραμματισμός

Αυτόνομοι Πράκτορες. Εργασία εξαμήνου. Value Iteration και Q- Learning για Peg Solitaire

Φροντιστήριο στο Mac Layer Καραγκούνης Δημήτρης

Κεφάλαιο 5: Εισαγωγή στην Προσομοίωση

Η γλώσσα προγραμματισμού C

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

Περι-γράφοντας... κλωνάρια

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

International Olympiad in Informatics Ο μικρός αδελφός της Μαρίας έχει αφήσει τα παιγνίδια του σκορπισμένα στο πάτωμα του καθιστικού του.

Διαγράμματα. Νίκος Σκουλίδης, Σημειώσεις Φυσικής Α` Γυμνασίου, , Διαγράμματα_1_0.docx

ΕΝΟΤΗΤΑ 12 ΣΕΙΡΙΑΚΗ ΔΙΕΠΑΦΗ

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Η γλώσσα προγραμματισμού C

Εγχειρίδιο χρήσης Intalio Designer Εγχειρίδιο χρήσης Intalio Designer

Θέτοντας και επιστρέφοντας την τιµή της προτεραιότητας διεργασίας

Ένα αφαιρετικό πραγματικού χρόνου μοντέλο λειτουργικού συστήματος για MPSoC

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ CD-PLUS/4+N

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Προγραμματιστικές τεχνικές

Ενότητα 06 Δημιουργία Και Χρήση Φόρμουλας

Οδηγίες προγραμματισμού για τα μοντέλα τηλεφωνικών κέντρων: TC-104C TC-106C TC108C

p q 0 P =

Προγραμματισμός Υπολογιστών με C++

4. ΚΕΦΑΛΑΙΟ ΕΦΑΡΜΟΓΕΣ ΤΟΥ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΥ FOURIER

Theory Greek (Greece) Μη Γραμμική Δυναμική σε Ηλεκτρικά Κυκλώματα (10 Μονάδες)

ΚΕΦΑΛΑΙΟ 2ο ΠΡΟΣΟΜΟΙΩΣΗ ΔΙΑΚΡΙΤΩΝ ΓΕΓΟΝΟΤΩΝ

Το Κ2 είναι ένα παιχνίδι για 1 έως 5 παίκτες, ηλικίας 8 ετών και άνω, με διάρκεια περίπου 60 λεπτά.

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο Φροντιστήριο Ασκήσεις στο TCP

Κατανεμημένα Συστήματα Ι

Μεθόδων Επίλυσης Προβλημάτων

Λογισµικό (Software SW) Γλώσσες

Μεθοδολογία Επίλυσης Προβλημάτων ============================================================================ Π. Κυράνας - Κ.

Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe

Προγραμματιστικό Περιβάλλον

Σειρά Προβλημάτων 4 Λύσεις

Κλιμάκιο Πληροφορικής Σεμινάρια για τα λογισμικά κλειστού τύπου Κύκλος Α

Χρησιμοποιούμε από το Λογισμικό Προσομοίωσης AnyLogic το αρχείο-μοντέλο Call Center.alp που υπάρχει στο φάκελο \models\call Center\

Μαθηματικά της Φύσης και της Ζωής

Παραδείγματα σχεδίασης με μηχανές πεπερασμένων καταστάσεων

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μοντελοποίηση, Ανάλυση και Σχεδιασμός Στοχαστικών Συστημάτων

Λύσεις Σειράς Ασκήσεων 5

Εισαγωγή στο Γραμμικό Προγραμματισμό. Χειμερινό Εξάμηνο

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Μοντελοποίηση, Ανάλυση και Σχεδιασμός Στοχαστικών Συστημάτων

Προγραμματισμός ΙI (Θ)

Διπλωματική Εργασία : Σαρακατσάνος Ορέστης Επιβλέπων καθηγητής: Γεώργιος Χασάπης Καθηγητής


ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

Α) ΕΝΑ ΚΙΝΗΤΟ. 1) Πληροφορίες από διάγραμμα x-t.

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Κίνηση ΚΕΦΑΛΑΙΟ 2 Β ΓΥΜΝΑΣΙΟΥ

Μεθοδολογικός σχεδιασμός πνευματικού αυτοματισμού με έμβολα

Αλγόριθμοι για αυτόματα

Υπολογισμός και αποστολή Αναλυτικής Περιοδικής Δήλωσης

Οδηγίες για την Υποβολή στοιχείων ιακίνησης Πετρελαίου

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Υπόστρωμα Ελέγχου Πρόσβασης Μέσου. Medium Access Control Sub-layer.

Εφαρμογή EXTRA. Διαδικασία Αυτόματης Υποβολής Συγκεντρωτικής Κατάστασης Τιμολογίων μέσω Internet

Διαχείριση Επιλογών Διαμόρφωσης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Δίκτυα Υπολογιστών Εργαστήρια

Περιεχόμενο Έκδοσης Pylon

Δομημένος Προγραμματισμός (ΤΛ1006)

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

«Πως επηρεαζονται οι ανθρωποι απο τη δοξα, τα χρηματα και την επιτυχια»

Παρο υσίαση αλ γόριθμου

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Transcript:

Φροντιστήριο 8 Φύλλο Ασκήσεων UPPAAL 2 Χρόνοι και Ρολόγια Κατά τη σχεδίαση και την ανάλυση πραγματικών συστημάτων, πολλές φορές ο χρόνος έχει μεγάλη σημασία. Για παράδειγμα, μπορεί να χρειαστεί να καθορίσουμε όχι μόνο κατά πόσο μια κατάσταση είναι εφικτή, αλλά και πόσο γρήγορα. Θεωρήστε ότι ένας εργάτης χρειάζεται τουλάχιστον 5 δευτερόλεπτα για μια εύκολη εργασία, τουλάχιστον 10 δευτερόλεπτα για μια μεσαίας δυσκολίας εργασία χρησιμοποιώντας σφυρί, τουλάχιστον 15 δευτερόλεπτα για μια μεσαίας δυσκολίας εργασία χρησιμοποιώντας σφύρα και τουλάχιστον 20 δευτερόλεπτα για μια δύσκολη εργασία. Υποθέτουμε ότι οι εργασίες έρχονται με την ακόλουθη σειρά: H, A, H, H, H, Ε, Ε, A, A, A, όπου το Ε δηλώνει εύκολη εργασία, το A δηλώνει μεσαίας δυσκολίας εργασία και το H δηλώνει δύσκολη εργασία. Πόσο χρόνο χρειάζονται οι δύο εργάτες (τουλάχιστον) για να ολοκληρώσουν 10 εργασίες; Μοντελοποίηση της ζώνης μεταφοράς Πριν από την εισαγωγή του χρόνου στο μοντέλο μας, θα πρέπει να προσθέσουμε ένα αυτόματο το οποίο περιγράφει τη συμπεριφορά της ζώνης μεταφοράς. Για τη μοντελοποίηση των εισερχόμενων εργασιών θα ορίσουμε τρία νέα κανάλια jobe, joba και jobh τα οποία αντιστοιχούν στην άφιξη εύκολων, μεσαίας δυσκολίας και δύσκολων εργασιών αντίστοιχα. Το αυτόματο Belt που φαίνεται στην πιο κάτω εικόνα περιγράφει τη συμπεριφορά της ζώνης μεταφοράς καθώς μεταφέρονται οι 10 εργασίες όπως περιγράφονται πιο πάνω. Ποιο άλλο μοντέλο χρειάζεται αλλαγές (και ποιες είναι αυτές) για να λειτουργεί το σύστημά μας ορθά;

Ρολόγια και κάτω όρια στο χρόνο Σε όλα τα μοντέλα που έχουμε δει μέχρι τώρα δεν έχουμε μοντελοποίηση του χρόνου. Οι μεταβάσεις δεν παίρνουν χρόνο και χρόνος μπορεί να περάσει μόνο όταν όλα τα αυτόματα του μοντέλου περιμένουν σε κάποια κατάσταση. Συχνά, οι μεταβάσεις ενός μοντέλου αντιστοιχούν είτε στην αρχή είτε στο τέλος κάποιας ενέργειας η οποία έχει κάποια διάρκεια. Για να είμαστε ακριβείς, θα θέσουμε ότι η μετάβαση jobh! αντιστοιχεί στη στιγμή που ο εργάτης επιλέγει να ξεκινήσει μια δύσκολη εργασία και η μετάβαση put_mallet αντιστοιχεί στη στιγμή που ο εργάτης τερματίζει την ενέργειά του να επιστρέψει τη σφύρα στο τραπέζι. Εάν θέλουμε να θέσουμε άνω και κάτω όρια στο χρόνο που θα ξοδέψει το αυτόματο σε μια συγκεκριμένη κατάσταση μπορούμε να το κάνουμε με τη χρήση των ρολογιών. Το ρολόι είναι ένας ειδικός τύπος μεταβλητής ο οποίος αντιστοιχεί σε μη αρνητικούς πραγματικούς αριθμούς. Τα ρολόγια αρχικοποιούνται με την τιμή 0. Όταν ένα αυτόματο περιμένει σε μια κατάσταση και ο χρόνος περνά, τότε οι τιμές των ρολογιών του αυξάνονται. Πιο συγκεκριμένα, όταν περάσουν t μονάδες χρόνου τότε οι τιμές όλων των ρολογιών του μοντέλου αυξάνονται κατά t. Όλα τα ρολόγια θεωρούνται τέλεια και αυξάνονται ακριβώς με τον ίδιο ρυθμό. Πιο κάτω φαίνεται το μοντέλο του εργάτη, όπως αυτό έχει επεκταθεί για τον συγχρονισμό με τη ζώνη μεταφοράς καθώς και με μια μεταβλητή ρολογιού, τη x. Το ρολόι μπορεί να ορισθεί με το να προσθέσουμε την πιο κάτω γραμμή στους ορισμούς του αυτομάτου του εργάτη. clock x;

Στο μοντέλο μας, τόσο ο 1 ος όσο και ο 2 ος εργάτης έχουν μια τοπική μεταβλητή ρολογιού x η οποία καταγράφει το χρόνο τον οποίο ξοδεύουν σε μια συγκεκριμένη εργασία. Όταν ο εργάτης θα ξεκινήσει μια νέα εργασία το τοπικό ρολόι αρχικοποιείται με 0. Τι χρειαζόμαστε για να καταγράψουμε το συνολικό χρόνο εργασίας; Πλέον το global declarations φαίνεται όπως πιο κάτω: chan get_hammer, put_hammer, get_mallet, put_mallet; chan joba, jobe, jobh; clock now; Μπορούμε να δούμε κατά πόσο υπάρχει κατάσταση στην οποία όλες οι εργασίες έχουν παραδοθεί και οι δύο εργάτες βρίσκονται στην αρχική τους κατάσταση; E<> (Belt.end && Jobber1.begin && Jobber2.begin) Πώς μπορούμε να βρούμε το συντομότερο χρόνο ολοκλήρωσης των 10 εργασιών; Άνω όρια στο χρόνο Έχουμε δει ότι τα κάτω όρια στο χρόνο καθορίζονται με τη βοήθεια περιορισμών ρολογιών στους φρουρούς των μεταβάσεων. Συχνά χρειάζεται να καθορίσουμε άνω όρια στο χρόνο, όπως για παράδειγμα ένας αερόσακος χρειάζεται ορισμένα μικροδευτερόλεπτα για να ανοίξει μετά από τον εντοπισμό κάποιας σύγκρουσης. Θεωρήστε ότι ένας εργάτης χρειάζεται το πολύ 7 δευτερόλεπτα για μια εύκολη εργασία, το πολύ 12 δευτερόλεπτα για μια μεσαίας δυσκολίας εργασία χρησιμοποιώντας σφυρί, το πολύ 17 δευτερόλεπτα για μια μεσαίας δυσκολίας εργασία χρησιμοποιώντας σφύρα και το πολύ 22 δευτερόλεπτα για μια δύσκολη εργασία. Ποιος είναι ο μέγιστος χρόνος που χρειάζονται οι δύο εργάτες για να ολοκληρώσουν τις 10 εργασίες, δεδομένου ότι ο εργάτης παραλαμβάνει μια νέα εργασία από τη ζώνη μεταφοράς μόλις είναι έτοιμος να εργαστεί σε αυτή και παίρνει το ανάλογο εργαλείο που θα τον βοηθήσει να ολοκληρώσει την εργασία μόλις αυτό γίνει διαθέσιμο. Στο UPPAAL καθορίζουμε άνω όρια στο χρόνο με τη χρήση των αμετάβλητων συνθηκών (invariants). Με το να προσθέσουμε x<=7 σε αυτό το πεδίο, καθορίζουμε ότι σε αυτή την κατάσταση η τιμή του ρολογιού x δεν θα ξεπεράσει το 7. Πιο συγκεκριμένα, ένας εργάτης χρειάζεται το πολύ 7 μονάδες χρόνου για να ολοκληρώσει μια απλή εργασία. Εάν έχουν περάσει περισσότερες από 7 μονάδες χρόνου, τότε ο εργάτης θα έχει φύγει από την κατάσταση work_easy. Πιο κάτω φαίνεται το καινούργιο μοντέλο του εργάτη αφού λάβουμε υπόψη τα άνω όρια στους χρόνους εκτέλεσης.

Ποια άλλη αλλαγή παρατηρείτε στο μοντέλο; Είναι δυνατό, βάσει του πιο πάνω μοντέλου, να υπολογίσουμε ένα άνω όριο στο χρόνο που χρειάζεται για την ολοκλήρωση όλων των εργασιών; Αν ναι πως, διαφορετικά τι άλλο χρειαζόμαστε; Για τη μοντελοποίηση του περιορισμού ότι ο εργάτης παίρνει ένα εργαλείο μόλις αυτό γίνει διαθέσιμο θα ορίσουμε τα κανάλια συγχρονισμού ως urgent. Όταν ένα κανάλι συγχρονισμού οριστεί ως urgent, αυτό σημαίνει ότι όποτε ένας συγχρονισμός με αυτό το κανάλι είναι δυνατό να συμβεί, η μετάβαση πρέπει να γίνει αμέσως χωρίς να περάσει καθόλου χρόνος. Αυτό γίνεται με την πιο κάτω αλλαγή στο global declarations: // Place global declarations here. urgent chan joba, jobe, jobh, get_hammer, get_mallet; chan put_hammer, put_mallet; Θα μπορούσαμε να μοντελοποιήσουμε την κατάσταση begin ως urgent αντί τα κανάλια joba, jobe, jobh; Ποια είναι η διαφορά ανάμεσα στους δύο ορισμούς; Ενώ το UPPAAL μας παρέχει ένα τρόπο να υπολογίσουμε την πιο γρήγορη εκτέλεση, δεν μας παρέχει μια μέθοδο για να υπολογίσουμε την πιο αργή εκτέλεση. Αυτό μπορεί να γίνει μέσω ορισμένων διαδοχικών προσεγγίσεων της μορφής: Α[] now>=200 imply (Belt.end && Jobber1.begin && Jobber2.begin) Υπολογίστε το μέγιστο χρόνο που χρειάζεται για την ολοκλήρωση όλων των εργασιών. Ποιο είναι το μονοπάτι το οποίο μας οδηγεί σε αυτό τον χρόνο; Πού οφείλεται αυτό;

Παράμετροι και πίνακες Παράμετροι Κατά τη σχεδίαση του μοντέλου μας έχουμε ορίσει ένα πρότυπο Jobber με δύο στιγμιότυπα, τον Jobber1 και τον Jobber2. Με τον ίδιο τρόπο μπορούμε να ορίσουμε ένα πρότυπο Tool το οποίο θα έχει δύο περιπτώσεις, το Hammer και το Mallet. Αυτό μπορεί να γίνει με τη χρήση παραμέτρων, όπου αυτές μπορούν να οριστούν είτε ως call by value (πρόσβαση διά τιμής) είτε ως call by reference (πρόσβαση διά διεύθυνσης). Τα ρολόγια και τα κανάλια θα πρέπει πάντοτε να καλούνται ως call byreference. Πιο κάτω φαίνεται το γενικό μοντέλο του εργαλείου. Στο πεδίο Parameters ορίζουμε τα κανάλια τα οποία χρησιμοποιούνται ως παράμετροι: urgent chan &get, chan &put Στο System Declarations μπορούμε να ορίσουμε πλέον το Hammer και το Mallet ως περιπτώσεις του Tool: Hammer = Tool(get_hammer, put_hammer); Mallet = Tool(get_mallet, put_mallet); Τα παλιά πρότυπα για το σφυρί και τη σφύρα θα πρέπει να σβηστούν μέσω του Edit >Remove_template. Το νέο μοντέλο έχει ακριβώς την ίδια συμπεριφορά με το παλιό, αλλά λόγω της χρήσης των παραμέτρων έχει γίνει μικρότερο. Πίνακες Εντοπίστε δύο προβλήματα της μοντελοποίησης της ζώνης μεταφοράς (όχι άμεσα συνδεδεμένα με το συγκεκριμένο μοντέλο). Για να λύσουμε τα προβλήματα τόσο της επεκτασιμότητας όσο και της επαναχρησιμοποίησης θα μοντελοποιήσουμε την εισερχόμενη ροή εργασιών αντί με μια δομή ελέγχου (αυτόματο) με μια δομή δεδομένων. Πιο συγκεκριμένα θα περιγράψουμε τη ροή εργασιών ως ένα πίνακα ακεραίων όπως πιο κάτω: const int E=0; const int A=1; const int H=2; const int J=10; const int[0,2] jobs[j] = {H,A,H,H,H,E,E,A,A,A};

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