hs / fub - awsys/sim1 projekt simulation: einführung simulation in a nutshell - teil 2 - ...
TRANSCRIPT
hs / fub - AWSys/Sim1
Projekt Simulation: Einführung
Simulation in a Nutshell - Teil 2 -
Simulation und Modellbildung Klassifikation von Simulationsmethoden Zeitsynchrone Simulation: ein Beispiel Ereignisgesteuerte Simulation - eine Fallstudie Analyse und Interpretation von Simulationsläufen
Literatur: Pagé, B.: Diskrete Simulation, Springer Verlag, 1991Vorlesungsfolien Informatik 2, F. Mattern, TH Darmstadt, 1997
hs / fub - AWSys/Sim2
Beispiel: Telefonischer Fahrkartenvertrieb
Fragen über Fragen:- wie viele Verkäufer?- Wie lange dauert es, bis ein Kunde bedient ist? - Werden alle in "etwa" der gleichen Zeit bedient?- Wie viel Anrufe kommen "in der Zeiteinheit" an? Was heißt das??- Genauer: wie groß ist der Abstand zwischen zwei Anrufen?- Wie lange wartet eine Kunde, bevor er aufgibt und auflegt? - Wie viele Kunden können sich maximal in der Warteschleife aufhalten?
hs / fub - AWSys/Sim3
Eine Anwendung
Beispiel Reisebüro: Telefonische FahrkartenreservierungSystemspezifikation:1. 5 Angestellte nehmen Buchungen entgegen.2. 18 Telefonleitungen (d. h. max. 13 Anrufer warten).3. “Bitte warten” wenn alle Angestellten belegt.4. Angest. wird frei --> am längsten wartenden bedienen (FIFO).5. Wartebereitschaft der Kunden im Mittel 4 Min. (normalverteilt).6. Endgültiger Verzicht eines Kunden, wenn keine Leitung frei oder Wartezeit überschritten.7. Zwischenankunftszeiten exponentialverteilt (20 Sek.).8. Bedienzeit exponentialverteilt (mit Mittel 1 Min.bei einfacher Fahrt, 2 Min. bei Rückfahrkarte).9. Wahrscheinlichkeit für Rückfahrkarte = 0.75.
hs / fub - AWSys/Sim4
Zufallszahlen
Im richtigen Leben hat man es oft mit Zufallszahlen (Zufallsgrößen) zu tun: - die Zahl beim Würfeln - die Wartezeit beim Bäcker (zwischen 7 und 8) - die Zeit zwischen zwei Anrufen beim Kartenservice ....
Der Abstand zwischen zwei Anrufen ist eine zufällige Größe.
Man nennt X eine Zufallsvariable, wenn sie die Werte einer Zufallsgröße annimmt.
Die Variable X = "Abstand zwischen zwei Anrufen“ ist eine Zufallsvariable.
... ...
hs / fub - AWSys/Sim5
Verteilungsfunktion
Zufallsfallsvariable X :Die Funktion F(x) = P(X < x) Wahrscheinlichkeit dafür, dass X < x heißt Verteilungsfunktion.
Wahrscheinlichkeit, dass die Zeit zwischen 2 Anrufen"bis zu 4 Minuten" beträgt
ExponentialverteilungMittelwert = 0.33 min
hs / fub - AWSys/Sim6
Dichtefunktion
Wahrscheinlichkeit,dassAbstand zwischen zweiAnrufen zwischen 2 und 4 Minuten liegt .
ExponentialverteilungMittelwert = 0.33 min
Aus der Dichtefunktion f(x) läßt sich ablesen, mit welcher Wahrscheinlichkeit die Zufallsvariable Werte zwischen a und b annimmt, denn die Verteilungsfunktion F(x) ist definiert:
F(x) = f(t) dtx
-
hs / fub - AWSys/Sim7
Fragen?
1. Wie weiß man, welche Verteilung eine Zufallsvariable hat?
Weiß man normalerweise anfangs nicht!- analysiere kumulative Häufigkeiten (empirische Verteilung)
- bestimme daraus empirische Verteilung - oder teste Vermutung, dass Daten
in bestimmter allgemeiner Weise (normal, exponentiell,...) verteilt sind und teste diese Hypothese (mit statistischen Testverfahren)
- oder es ist bekannt, dass gewisse Prozesse sich nach gewissen Verteilungen zufällig verhalten (z.B. normalverteilt). Dann müssen "nur noch" die Parameter bestimmt werden, besonders Mittelwert und Varianz.
hs / fub - AWSys/Sim8
Fragen?
2. Wie erzeugt man Zufallszahlen?
Erzeugung wichtig, da "echter Zufall" im Rechner nicht existiert. Denkbar: Tabellen echter Zufallszahlen. Nicht handlich... Vorteil von Pseudozufallszahlen: Reproduzierbarkeit
Gleichverteilte Zufallszahlen? Andere Verteilungsfunktion?
Gleichverteilung F(x) = x
(zwischen 0 und 1) 1
10
1
10
Dichte: f(x) = 1
(zwischen 0 und 1 zwischen a und b: 1/(b-a))
Kongruenzenverfahren: z i+1 = (a * z i ) mod p, p große Primzahl
Liefert Zufallszahlen zwischen 0 und p-1, Normierung auf 0<= z < 1
Im Simulationsprojekt: Java Klasse zur Erzeugung von Zufallszahlen benutzen.
hs / fub - AWSys/Sim9
Zufallszahlen
Erzeugen anderer Verteilungen aus gleichverteilten Zufallszahlen (eine von mehreren Möglichkeiten)Z.B. Exponentialverteilung aus GleichverteilungIdee: Verteilungsfunktion F(x) bildet eine (0,1) gleichverteilte Größe auf F(x) ab. Umkehrfunktion x = F-1(y), z.B. x = -1/ * ln (1-y)
(0,1)-gleichverteilter Y-Wert liefert F(x)-verteilten x-Wert
hs / fub - AWSys/Sim10
Zufällige Größen im Beispiel
• Zwischenankunftszeit der Anrufe
• Dauer eines Kartenverkaufs an einen Kunden (Bediendauer)exponentialverteilt (einfache Fahrt: Mittelwert 1 min, Rückfahrt: 2 min
• Art der Aufträge (mit unterschiedlicher Bediendauer !) diskrete Verteilung (nur endlich viele mögliche Werte): p = 0,25: einfache Fahrt, p = 0,75 = Rückfahrkarte• Geduld–am–Ende – Zeit: Wann legt der Kunde auf, bevor er bedient wird? Normalverteilt, Mittelwert = 4 Min
hs / fub - AWSys/Sim11
Ereignisgesteuerte Simulation
Aktivität Aktivität 3 Akti. 4A2
Ereignisse und Aktivitäten
Aktivitäten können überlappen (Anruf und Kartenverkauf)
Ereignisse entsprechen nicht in allen Fällen Anfang und Endeeiner Aktivität. - Anfang / Ende verschiedener Ereignisse können zusammenfallen: "Ende Warten = Beginn Bedienung" - Ereignis ohne Dauer: "Geduld am Ende"
hs / fub - AWSys/Sim12
Modellentwurf „Kartenverkauf“
Zustand des Modells (" als Schnappschuß"):
- Status (frei / beschäftigt) jedes Angestellten- Anzahl der freien Leitungen- Menge der wartenden Anrufer
Braucht man die Identitätoder nur die Anzahl ?
Genügt hier nicht die Anzahl?
Aus Sicht eines individuellen Kunden
- Anruf --> Beginn Bedienung / Warten- Ende Warten (freie Bediener / abgelaufene Geduld)- Ende Bedienung EreignistypenEreignistypen ?
Zustands-übergänge
hs / fub - AWSys/Sim13
Ereignisgesteuerte Simulation
hs / fub - AWSys/Sim14
Ereignisgesteuerte Simulation
K3 Gibt auf 9.07
Ereigniszeit statt synchroner Ticks K1 AR,Beg. Bedienung 9.00
K2 AR,Beg. Warten 9.02
K3 AR,Beg.Warten 9.03
K2 Gibt auf 9.04 K4 AR
9.05
K1 Ende Bedienung 9.05
Wert der Zufallsvariable "Zwischenankunftszeit"
K3 EndeBedienung 9.06
K1 AR Beg. Bedienung 9.00
K2 AR Beg. Warten 9.02
K3 AR Beg. Warten 9.03
K2 Gibt auf 9.04
K3 Gibt auf 9.07
K4 AR 9.05
K1 Ende Bedienung 9.05
Erzeugung der Events
K3 EndeBedienung 9.06
Bei Benden desWartens erzeugt K3 Bedien-Ende-Event
Nur ein Bediener!
hs / fub - AWSys/Sim15
Modellierung
Welche Ereignisse (Ereignistypen)?• neuer Kunde kommt; versucht zu wählen! • Ende der Geduld; nur wenn in Warteschleife• Bedienende; Kunde verlässt das System
Ist nicht auch Bedienanfang ein Ereignis?
Welche Ergebnisdaten? • Wartezeit pro Benutzer• Anteil der abspringenden Kunden • mittlere Warteschlangenlänge• mittlere Auslastung von Leitungen / Bedienern•.....
Welche Zustände? • # freie Bediener• Schlange der wartenden Kunden• # freier Leitungen
Wartende Kundensind keine Ereignisse
hs / fub - AWSys/Sim16
Der Zyklus der Simulation
Initialisieren
Gibt es noch ein Ereignis
Uhr = Zeit des nächsten
Ereignisses
Ereignis aus Ereignis-liste entnehmen
Ende der Simulation, Gesamtstatistik
Ggf. Statistik-Ausgabe
N
Y
Zustandsänderung gemäß Ereignis-routine
Ende: „das letztes Ereigns“ bearbeitet oder Uhr > Sim.zeit
Hier muß ein erstes Ereignis erzeugt werden, damit es los geht. Ggf. auchein letztes!
Hier passiert was:Zustand verändern, neue Ereignisse erzeugen.
Es wird also immer das jüngste Ereignis bearbeitet. Dabei fallen ggf. neue Ereignisse an.
hs / fub - AWSys/Sim17
Die Ereignisroutinen
Kundenanruf Auszuführen bei Eintritt desEreignisses
Nächsten Kunden-anruf vor-merken
alle Leitungenbesetzt?
freiLeitungen --;
Sachbearbeiter frei?
Kundensatz er-zeugen, in Kunden-
warteschlange
GeduldEndeEreignisvormerken
bediener--;
Bedienroutineausführen
abgewieseneKd++
Hier wird auch das Ende-ereignis erzeugt!
Trick: erhält die Simulation am Leben. Hat das mit Kausalität zu tun? Kundenanruf ursächlich für nächsten Kundenanruf??
hs / fub - AWSys/Sim18
Die Ereignisroutinen (2)
Bedienende
freieLeitungen++;
KdWarteschlangeleer? bedienert++;
Kunden aus KdWarte-schlange entnehmen,
Kdsatz löschen
Bedienroutineausführen
Ja
GeduldEnde
Lösche Kundensatz
freieLeitungen++;
hs / fub - AWSys/Sim19
Bedienung
Bedienroutine
GeduldEnde-ereignis löschen
ggf. Statistikdaten schreibenu. Ausgaben
Bedienende-Ereigniseinplanen
Beachte: es gibt zwei Arten von Objekten in der ereignis-gesteuerten Simulation:- Ereignisse: im wesentlichen intern, treiben die Simulation- nach der Realität modellierte Dinge, wie Warteschlange mit Kunden
hs / fub - AWSys/Sim20
Der ereignisgesteuerte Simulator schematisch
17 23 25
12Zustand
Programmcode
Uhr (Simulationszeit)springt zum jeweils nächsten Ereignis,
Ereignisroutinen: ändern den Zustand, einschl. Erzeugung ggf. zukünftiger Ereignisse.
Ereignisrepräsentation: prinzipiell ausreichend - Zeit - Ereignistyp
hs / fub - AWSys/Sim21
Die Kunst des (ereignisorientierten) Modellierens
Aktivitäten so in Ereignisketten auflösen, dass • Realität adäquat vom Modell widergespiegelt wird• Wechselwirkungen zwischen Aktivitäten auf die Ereignisse beschränkt sind• Ereignisse sich korrekt einplanen• Ereignisroutinen die Zustandsveränderungen richtig wiedergeben.
Entscheidende Frage: wie gut spiegelt das Simulationssystem die Realität wider?• Modell adäquat? • entsprechen die angesetzten Wahrscheinlichkeitsverteilungen den wahren Verhältnissen?• Sind die Ergebnisse (statistisch) vertrauenswürdig?
warum Bsp. nicht zeitgesteuert??
hs / fub - AWSys/Sim22
Planung und Analyse von Experimenten
Zielgröße(n) festlegen: - Was soll untersucht werden? Hypothesen formulieren (zu jedem Experiment gehört Hypothese!) - Wovon hängen Zielgrößenwerte ab? - In welcher GrößenordnungFixieren der Parameter für das Untersuchungsziel
Beispiel: - Wie lassen sich die Wartezeiten so verkürzen, dass nur noch jeder die 10 % der wartenden Kunden abspringt? - Hypothese: mehr Personal- Ziel: Aussage, wieviele Kunden prozentual abspringen, wenn nur statt n n+1, n+2, ... Mitarbeiter eingesetzt werden? - Zielgröße: Kundenabsprung als Funktion von Anzahl eingesetzter MA
Wichtig: Welches Vertrauen kann man in Ergebnisse haben? -> Statistik
hs / fub - AWSys/Sim23
Einschwingphase
a) Heuristische Verfahren: - Augenmaß - Max / Min-Test: in Folge x0, x1, ...xi, x i+1,... prüfen, ob xi Max oder Min der xj, i<j wenn nein: diese Restfolge mit erstem Glied xi+1 nehmen. b) Statistische Testverfahren
t
xt
Zufallsvariable (Zielgröße)
Einschwingvorgang
Und was ist hiermit? Verkehrsimulation: Rush hour?
hs / fub - AWSys/Sim24
Schätzgenauigkeit der Ergebnisse
Abstraktes Simulationsproblem:
- Gesucht die Verteilungsfunktion F(X) einer Zufallsvariable des Modells (z.B. Anzahl der Kunden in der Warteschleife)
- Oft ausreichend: Erwartungswert der unabhängigen Zufallsvariablen schätzen- E [X ] = = x f(x) dx- x1,x2,...xn sei Ausgang eines Experiments (z.B. die gemessenen Längen der Warteschlange zu n Zeitpunkten)
- Mittelwert ist erwartungstreuer Schätzwert für echten Mittelwert : x = (1/n) xi , d.h lim ( (1/n) xi ) = i=1..n n -> i=1..n
- reicht aber nicht für genauere Aussagen. Beispiel...
hs / fub - AWSys/Sim25
Schätzgenauigkeit
Beispiel aus der Literatur:
Für Bedien- / Wartesystem mit exponentialverteilter Zwischenankunfts-und Bedienzeit lässt sich Mittelwert analytisch errechnen (M/M/1-Bediensystem)
Erwartungswert für Warteschlangenlänge bei bestimmten Parametern: = 4,86Aber X = 3,2 bei Stichprobe von n = 1000
Wie bestimmt man ?
X ist selbst eine Zufallsvariable mit dem Mittelwert E(X) =
Abschätzen, mit welcher Wahrscheinlichkeit der wahre Mittelwert in einem Intervall [x – cn , x + cn ] liegt.
hs / fub - AWSys/Sim26
Schätzgenauigkeit der Simulationswerte
Mit welcher Wahrscheinlichkeit (Konfidenzniveau) befindet sich der wahre Wert in einem gegebenen Intervall (Konfidenzintervall)- Typische Aufgabe der Statistik, nicht simulationsspezifisch.
t
„Mit Wahrscheinlichkeit 0.95findet man den wahren Wert der Anrufer , die aufgeben, iin diesem Intervall
hs / fub - AWSys/Sim27
Konfidenzintervall
Tatsächlicher, unbekannter Mittel-wert
xx-cn x+cn
xx-cn x+cn
xx-cn x+cn
Experiment 1
Experiment 2
Experiment n
hs / fub - AWSys/Sim28
Schätzen der Lage des Mittelwerts
Wie groß ist Streuung ??
Es gilt : der wahre Mittelwert liegt bei genügend großem n mit von z abhängiger Wahrscheinlichkeit im Intervall:
[ x - z* /( n) , x + z * /( n)]
wenn die unbekannte Verteilung die Varianz hat.
Also cn = z* /( n)
z = 1,96 : Wahrscheinlichkeit beträgt 0,95, dass im Intervall.
Schätzen!
hs / fub - AWSys/Sim29
Varianz schätzen
Schätzer für Varianz : Varianz: Var(X) = E[(X-E(X))2] = 2 = (x – )2 f(x) dx
Var(X1+X2+...Xn) = Var(X1) + Var(X2) + ... + Var(Xn)
für unabhängige Xi
Wenn Varianz der Xi, dann (X) = / n
Schätzwert dafür : s 2 = 1/(n-1) (x i - x ) 2 Standardabweichung: ~ s = s2
Damit : Mittelwert m liegt mit 95%iger Wahrscheinlichkeit im Intervall
[ x - 1,96* s/( n) , x + 1,96 * s/( n)] (*)
Wichtige Voraussetzung: die X sind unabhängig! Anzahl Versuche groß ! n >= 30
hs / fub - AWSys/Sim30
Vorgehen
• Unabhängige Simulationsläufe, die die interessierenden Größen jeweils zu einem neuen Stichprobenwert zusammenfassen.
• Mit den n unabhängigen Simulationsläufen Konfidenzintervall für E(X) mit (*) bestimmen.
• Verfahren funktioniert nur bei unabhängigen Versuchen
• n >= 30
• Sehr aufwendig, da die die gesamte Simulation wiederholt werden muß.
• Es gibt statistische Verfahren mit geringerem Aufwand
hs / fub - AWSys/Sim31
Beispiel
Experiment i gemessener Mittelwert x
1 5,92 6.43 6.04 6.05 4.76 8.67 4.08 6.49 5.710 5.9
x = 5.96s = 1.191.96* s/( n) = 0.74x 0.74 = [5.22, 6.7]
Tatsächlicher Mittelwert mLiegt mit Wahrscheinlichkeit0,95 im Intervall [5.22, 6.7]
hs / fub - AWSys/Sim32
Validierung
• Operationale Verifikation Stimmen das dynamisch Modellverhalten mit der Realität überein? (für Prognosemodelle offenbar besonders schwer. 20 Jahre warten??) - Vergleich mit historischen Daten - Vergleich von Verteilungen von echten und von Modelldaten (statistische Testverfahren) - unabhängiges Modell erstellen, rechnen und vergleichen
Klassifikation der Validierungsschritte stammtvon Pagé (s. Literatur) ... ist schwierig!
• Stimmt das konzeptuelle Modell mit Realität überein? - Experten befragen, - Verifikation der Verteilungsannahmen durch Analyse von echten Daten
•Modellverifikation Tut das System das, was es soll? - Prinzipien der Entwicklung großer Programme beachten, - Plausibilitätsprüfungen