Ανάλυση – Προσομοίωση Ουρών Markov ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ 02/05/11 Ανάλυση – Προσομοίωση Ουρών Markov
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Επανάληψη (1) Η ουρά Μ/Μ/1 (άπειρου μεγέθους) Σταθεροί μέσοι ρυθμοί αφίξεων (γεννήσεων) λn = λ, Poisson Σταθεροί μέσοι ρυθμοί εξυπηρέτησης (θανάτων) μn = μ Εκθετικοί χρόνοι εξυπηρέτησης s, E(s) = 1/μ Εργοδικές πιθανότητες καταστάσεων Pn Μέσος όρος πληθυσμού - κατάστασης Ε(n)
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Επανάληψη (2) ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Επανάληψη (2) Συστήματα Μ/Μ/1 με ρυθμούς άφιξης και ρυθμούς εξυπηρέτησης εξαρτώμενους από τον αριθμό των πελατών στο σύστημα (από την κατάσταση του συστήματος) (State Dependent M/M/1 Queues) μ(n) λ(n) λ(0) λ(1) λ(n-1) λ(n) 1 2 n-1 n n+1 μ(1) μ(2) μ(n) μ(n+1)
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Επανάληψη (3) ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Επανάληψη (3) Η ουρά Μ/Μ/1 Pn = (1-ρ) ρn, n = 0,1,2,…, ρ = λ/μ < 1 E(n) = ρ/(1-ρ) Νόμος του Little: E(T) = E(n)/γ = E(n)/λ E(T) = (1/μ) / (1-ρ)
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Παράδειγμα Ανάλυσης Ουρών Markov: M/M/1/K (ουρά με μέγιστη χωρητικότητα Κ, συμπεριλαμβανομένου του εξυπηρετουμένου) Πιθανότητα απώλειας, P{blocking} Pbl = PΚ = Pο ρΚ , P0 = (1-ρ)/(1-ρΚ+1) Ρυθμαπόδοση (Throughput) γ = λ (1- PΚ ) Μέση Καθυστέρηση Ε(Τ) = Ε(n)/γ
Παράδειγμα ανάλυσης ουράς Markov με m εξυπηρετητές M/M/m [Erlang –C] Infinite buffer Finite # of servers (m) ρ’ = λ/μ Erlangs, ρ = ρ’/m < 1 Prob. All servers are busy
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ Άλλα Παραδείγματα Ουρών Markov Μ/Μ/Ν/Κ (Ν εξυπηρετητές, χωρητικότητα Κ, N ≤ K) Pn = [λ/(nμ)] Pn-1 , n=1, 2, … , N-1 Pn = [λ/(Nμ)] Pn-1 , n=N, N+1, … , K P0 + P1 +…+ PK-1 + PK = 1
ΣΥΣΤΗΜΑΤΑ ΑΝΑΜΟΝΗΣ M/M/m/m (m εξυπηρετητές, χωρητικότητα m) Erlang – B Μοντέλο τηλεφωνικού κέντρου με μέσο ρυθμό κλήσεων λ (Poisson), εκθετική διάρκεια τηλεφωνήματος, μέσος χρόνος 1/μ, m γραμμές και απώλειες χωρίς επανάκληση (redial) ρ = λ/μ (Erlangs) Pbl = Pm = (ρm/m!) / (1 + ρ + ρ2/2+ ρ3/3! + ... + ρm/m!)
Παράδειγμα : Πιθανότητες και εξισώσεις καταστάσεων ισορροπίας 10 τερματικά τροφοδοτούν κοινό στατιστικό πολυπλέκτη πακέτου (μεταγωγέα – switch ή δρομολογητή – router) που εξυπηρετεί δεδομένα σε πακέτα των 1000 bits κατά μέσο όρο. Η έξοδος του πολυπλέκτη είναι γραμμή των 10 Mbps (Megabits per sec). Τα τερματικά θεωρούνται ανεξάρτητα και ισότιμα. A) Προσεγγίστε τον πολυπλέκτη σαν ουρά Μ/Μ/1. Βρείτε το μέσο όρο ροής των δεδομένων ανά τερματικό ώστε η γραμμή να έχει χρησιμοποίηση 50%. Β) Αν ο πολυπλέκτης δεν δύναται να αποθηκεύει πάνω από 3 πακέτα (μαζί με το πακέτο υπό εξυπηρέτηση) και ο μέσος ρυθμός ροής πακέτων ανά τερματικό είναι 500 packets/sec, βρείτε τα χαρακτηριστικά της ουράς. Υποθέστε Poisson διαδικασία άφιξης πακέτων και εκθετικά κατανεμημένους χρόνους εξυπηρέτησης πακέτων.
Λύση – Τμήμα Α Χρησιμοποιείται μοντέλο Μ/Μ/1 Η ροή πακέτων ανά τερματικό είναι λ. Ζητούμενο: λ=? pak/sec, Ο ρυθμός εξυπηρέτησης είναι: μ=(10000 kbits/sec)/(1 kbits/pkt) = 10000 pkts/sec 10λ 10λ 10λ 10λ 1 2 n-1 n n+1 μ μ μ μ Η αθροιστική ροή πακέτων (από όλα τα τερματικά) στον πολυπλέκτη είναι: 10λ. Ο βαθμός χρησιμοποίησης είναι: u=(10λ)/μ=0.5 (10λ)/10000=0.5 λ=500 pkts/sec
Λύση – Τμήμα Β 10λ 10λ 10λ Χρησιμοποιείται μοντέλο Μ/Μ/1/3 λ=500 pkts/sec, μ=10000 pkts/sec 1 2 3 μ μ μ 10λP0=μP1 P1=(10λ/μ)P0 P1=0.5P0 10λP1=μP2 P2=(10λ/μ)P02 P2=0.25P0 10λP2=μP3 P3=(10λ/μ)P03 P3=0.125P0 P0+P1+P2+P3=1 P0=8/15, P1=4/15, P2=2/15, P3=1/15 Μέσο μήκος ουράς: E(n)=0*(8/15)+1*(4/15)+2*(2/15)+3*(1/15)=11/15 pkts Πιθανότητα απωλειών: Pbl=P3=1/15 Ρυθμαπόδοση: γ=10λ(1-Pbl)=500*(14/15)=1400/3 pkts/sec (γ=μ(1-P0)) Μέση Καθυστέρηση: E(τ)=E(n)/γ=(11/15)/(1400/3)=11/7000 sec
ΠΡΟΣΟΜΟΙΩΣΗ ΟΥΡΑΣ Μ/Μ/1 Pn = lim (Tn/T) = {[# αφίξεων στη n ]/ λ} / (# αφίξεων / λ} = {# αφίξεων στη n} / {# αφίξεων} Τ-> ∞ RANDOM : Ομοιόμορφος τυχαίος αριθμός (0,1) ARRIVALS : Αριθμός αφίξεων ARRIVAL[n] : Αριθμός αφίξεων στην n COUNT : Αριθμός μεταβάσεων STATE : Κατάσταση ουράς P[n] : Εργοδική πιθανότητα κατάστασης n COUNT = 0, STATE = 0, ARRIVALS = 0 ARRIVAL : ARRIVALS = ARRIVALS + 1 ARRIVAL[STATE] = ARRIVAL[STATE] + 1 COUNT = COUNT +1 STATE = STATE + 1 LOOP : IF STATE = 0 : GO TO ARRIVAL ELSE IF RANDOM < λ / (λ+μ) : GO TO ARRIVAL ELSE GO TO DEPARTURE DEPARTURE : COUNT = COUNT +1 ; STATE = STATE – 1 IF COUNT < MAXIMUM : GO TO LOOP ELSE P[STATE] = ARRIVAL[STATE] / ARRIVALS