3.Validierung und Verifikation von Simulationsmodellen

Werbung
Diskrete Simulation - Ergebnisanalyse - 1
Th. Schulze
ITI_WI
1 Ergebnisanalyse
Aufwendungen für die Analyse der Ergebnisse :
Wenn Verteilungsfunktionen für die Eingabedaten
Dann
Warum die Ergebnisanalyse nicht mit genügendem
Schwergewicht in den Simulationsstudien erscheint?
·
·
·
Vielfach wird die Simulation als eine Übung in
Programmierung betrachtet. Die Simulationsstudien
beginnen mit heuristischer Modellierung, Codierung des
Programms und enden mit einem einzigen Lauf, der dann
Die Zufallsgrößen zur Beschreibung der Ergebnisse sind
häufig nichtstationär und weisen ein hohes Maß an
Autokorrelation auf.
Klassische statistische Verfahren setzen eine
Für eine genauere Schätzung der Ergebnisse werden viele
oder sehr lange Simulationsläufe benötigt. Der Zeit und der
Kostenaufwand für diese Arbeiten
Diskrete Simulation - Ergebnisanalyse - 2
Th. Schulze
ITI_WI
1.1 Stochastische Natur von Ergebnisdaten
Betrachten wir das folgende Bild:
Unbeeinflussbar
Ankunftsstrom
Rate = 45/h
X11, X12, ...
Bedienzeit
N( D2 , (0.2)²)
X21, X22, ...
Y1
Y2
Y3
Ein Banker
D1=1
Beeinflussbar
Modell
Y4
Erwartungswert
der Bedienzeit
D2=1.1 min
Y5
Y6
Eine Wartelinie
D3=1
Eingabevariablen
Modell
Resultatvariablen
Ein Bankmodell wurde erstellt. Der Quelltext ist im Anhang
unter Quelltext 1 aufgelistet. Nach sechs unabhängigen
Simulationsläufen ergeben sich die folgenden Ergebnisse:
Laufnummer
r
Y2: Mittlere Wartezeit
1
2
3
4
5
6
Mittelwert
Y4:Ankunftsrate
0.790
3.664
1.931
0.664
1.165
0.518
1.455
Mittlere Wartezeit der Kunden
Das Ziel der Simulation ist die Schätzung
41.500
50.500
47.000
39.000
42.000
36.000
42.667
Y5: Mittlere Bedienzeit
1.094
1.124
1.101
1.100
1.083
1.123
1.104
Diskrete Simulation - Ergebnisanalyse - 3
Th. Schulze
ITI_WI
Die geschätzte mittlere Wartezeit für Lauf r : wˆ r
Die Zahlenwerte für diese Größe reichen von 0.518 bis 3.664 .
Welcher Wert ist der richtige?
Für die beobachteten Wartezeiten wˆ r (r = 1,..,6) ergeben sich
die folgenden beiden Aufgaben:
1. Die Schätzung der „wahren“ mittleren Wartezeit w = E (ŵ r )
durch
2. Die Schätzung des Fehlers in der Punktschätzung,
Klassische Methoden der Statistik :
ŵ r
(r= 1,..,6)
·
·
Annahme, dass w = E (ŵ r )
so ergibt sich, dass jeder der wˆ r (r= 1,..,6)
Diskrete Simulation - Ergebnisanalyse - 4
Th. Schulze
ITI_WI
Kunden treffen mit einer exponential-verteilten
Zwischenankunftszeit (Mittelwert = 10 min) an einem SingleServer ein. Die Bedienzeit ist normalverteilt mit einem Mittelwert
von 9.5 min und einer Standardabweichung von 1.75 min.
Dieser Single-Server fällt in die Kategorie der M/G/1-Systeme.
Für dieses System ist die mittlere Anzahl der Kunden in der
Warteschlange (mittlere Warteschlangenlänge) LQ zu ermitteln.
Die Simulation wird über einen Zeitraum von 5000 min
durchgeführt.
Das Intervall von 5000 min wird in 5 äquidistante Zeitintervalle
von jeweils 1000 min eingeteilt. Ein Schätzer Yj für die mittlere
Warteschlangenlänge pro Intervall j berechnet sich nach:
j (1000 )
1
Yj =
LQ (t )dt ,
1000 ( j -1ò)1000
j = 1,...,5
LQ(t) ist die simulierte Anzahl von Kunden in der Warteschlange
zum Zeitpunkt t.
Y1 ist
Die Beobachtungen {Y1 ,Y2 , Y3 , Y4 , Y5 } sind ein Beispiel für
das „batching“ von simulierten Daten. Die Yj werden auch als
batch means bezeichnet.
Der Quelltext für das Simulationsmodell ist in der Anlage
Quelltext 2 : M/G/1-System aufgelistet.
Diskrete Simulation - Ergebnisanalyse - 5
Bereich
Th. Schulze
Batch
Nummer
j
[0,1000)
[1000,2000)
[2000,3000)
[3000,4000)
[4000,5000)
[0,5000)
Mittelwert über
die Batches
1
2
3
4
5
1
Y1j
1.58
10.04
9.46
1.73
1.46
4.85
2
Y2j
3.53
8.32
1.18
3.81
4.95
4.36
Läufe
3
Y3j
1.96
1.54
2.62
4.68
3.35
2.83
4.85
4.36
2.83
ITI_WI
4
Y4j
3.13
3.03
10.55
8.00
5.26
5.99
5
Y5j
16.89
16.73
14.73
13.69
14.49
15.31
5.99
15.31
Yr · ist der Mittelwert für den r-ten Lauf über alle Batches und
dieser ergibt sich nach folgender Formel:
1 5
Yr · = å Yrj ,
5 j =1
r = 1,...,5
Breites Spektrum von ermittelten Werten:
1.46 min (Minimum) bis zu 16.89 min (Maximum).
Ist es gerechtfertigt den Mittelwert über die einzelnen
Teilintervalle zu schätzen?
Eigentlich nicht,
denn die Werte des ersten Laufes Y11 ,Y12 , Y13 , Y14 und Y15
weisen eine positive Korrelation auf.
Positive Korrelation bewirkt,
Diskrete Simulation - Ergebnisanalyse - 6
Th. Schulze
ITI_WI
Y
Im Gegensatz dazu können die jeweiligen · j mit j = 1,...,5
(Mittelwert über unterschiedliche Läufe eines Batches j)
Welchen Einfluss besitzen die Initialisierungsbedingungen auf
den zu ermittelnden Schätzwert?
Bei kurzen Simulationsläufen ist dieser „Bias“ unbedingt zu
beachten.
Betrachtet man E (Yr · ) als den Schätzer für LQ , so ergibt sich die
folgende Ungleichung:
E (Yr · ) < L Q
Diskrete Simulation - Ergebnisanalyse - 7
Th. Schulze
ITI_WI
1.2 Simulationstypen und ihre Methoden der
Ergebnisanalyse
Für die Ergebnisanalysen werden Simulationen in die folgenden
Klassen eingeteilt:
· Terminating bzw. transient simulations
· Steady-state simulations
Eine terminating Simulation beginnt mit
·
·
Beispiel Bank:
Eine Bank öffnet am Morgen und schließt jeden Abend. Das
Ziel der Simulation ist die Ermittlung der mittleren Verweilzeit
der Kunden in der Bank. Das Abbruchereignis E wird
beschrieben durch:
Initialisierungsbedingungen:
Beispiel Gefechtssimulation:
Ein Simulation beschreibt ein Gefecht zwischen blauen und
roten Kräften. Das Ziel der Simulation liegt in der Bestimmung
der Kräfteverhältnisse am Ende des Gefechts. Eine
Kampfpartei hat gewonnen, wenn eine Partei mehr als 30%
ihrer Kampfkraft verloren hat.
Diskrete Simulation - Ergebnisanalyse - 8
Th. Schulze
ITI_WI
Beispiel Fertigung1:
Ein Unternehmen hat einen Auftrag über 100 Produkte mit einer
maximalen Lieferfrist von 18 Monaten. Es sollen verschiedene
Fertigungsstrategien untersucht werden mit dem Ziel, die
Strategie zu finden, die mit den geringsten Kosten den Termin
halten kann.
Beispiel Fertigung2:
Ein Unternehmen produziert täglich in 2 Schichten. Begonnene
Arbeit wird von der nächsten Schicht weitergeführt. Kann hier
das Kriterium 16 Stunden Arbeitszeit ausreichen ?
Nein.
Bei einer transienten oder nicht stationären Simulation wird die
Simulation beendet, wenn die Simulation in einen steady-state
Zustand übergeht.
Beispiel Verkehrssimulation:
Eine Straßenkreuzung wird durch eine Lichtsignalanlage (LSA)
gesteuert. In dem Simulationsprojekt wird sich nur für
bestimmte Spitzenzeiten (nicht stationäre Zustände)
interessiert.
Eine steady-state Simulation wird mit dem Ziel betrieben,
Aussagen über den stationären Zustand des Systems zu
erhalten. Die Ergebnisse sollen nicht durch
Initialisierungsbedingungen beeinflusst werden.
Diskrete Simulation - Ergebnisanalyse - 9
Th. Schulze
ITI_WI
Beispiel Fertigung 3:
Im Rahmen einer Fabrikplanung soll der stündliche Ausstoß
ermittelt werden. Das Unternehmen arbeit 16 Stunden am Tag
und 5 Tage in der Woche. Begonnene Produktion des Vortages
wird am folgenden Tag fortgesetzt. Man kann sich das System
aus den einzelnen Tagen zusammengesetzt denken. Mit Ni
wird der Ausstoß der i-ten Stunde bezeichnet. Sie sind
Realisierungen der steady-state Zufallsgröße N, deren
Mittelwert E(N) geschätzt werden soll.
Beispiel Fertigung3.1
In jeder 8-Stunden Schicht wird eine Pause von einer halben
Stunde eingeführt. Der Ausstoß Ni einer Stunde lässt sich nicht
durch eine steady-state Verteilung beschreiben. Berechnet man
dagegen den mittleren stündlichen Ausstoß einer Schicht NiC ,
so existiert hierfür wieder eine steady-state Verteilung.
Beispiel Call-Center
In einen Call-Center verändern sich die Ankunftsraten über den
Tag und über die Tage an sich. Die Muster über eine Woche
sollen jedoch identisch sein. Bezeichnet man mit Di die
Verzögerungszeit zwischen dem Anruf und dem Herstellen der
i-ten Verbindung so besitzt die Di keine steady-state Verteilung.
Betrachtet man dagegen DiC als die Wartezeiten über die
Wochen i, so können hierfür die Parameter der steady-state
Funktion geschätzt werden.
Diskrete Simulation - Ergebnisanalyse - 10
Th. Schulze
ITI_WI
1.3 Messung und Schätzung von Ergebnisparameter
Die Ergebnisgrößen von Simulationen lassen sich in zwei
Kategorien einteilen:
· Beobachtungswerte
· Zeit-persistente Werte
1.3.1 Beobachtungswerte (discrete-time data) (Tallies)
Der beobachtet Wert Yn verändert
Die jeweiligen zu diskreten Zeitpunkten vorgenommenen n
Beobachtungen {Y1 ,Y2 , ..., Yn } während des Simulationslaufes
sind
Beispiele sind
·
·
q
Verweilzeit
Der zu ermittelnde Mittelwert
bezeichnet.
Mittelwert
Kunde
1 2 3 4 5 6 7 8 9 10 11 12
wird als ordinärer Mittelwert
Diskrete Simulation - Ergebnisanalyse - 11
Th. Schulze
Zeit-persistente Werte
Der beobachtet Wert Y(t) verändert sich
{Y (t ),
0 £ t £ TE }
Beispiele:
·
·
Länge der WS
Der zu ermittelnde Mittelwert
Mittelwert bezeichnet.
f
wird als zeit-gewichteter
Mittelwert
Zeit
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 12
Th. Schulze
ITI_WI
1.3.2 Punktschätzung
Beobachtungswerte
Der Punktschätzer von q (des Mittelwertes) von
Beobachtungswerten basierend auf n Werten{Y1 ,Y2 , ..., Yn} ist
definiert durch Gleichung 1
Gleichung 1
n
1
qˆ = å Yi
n i =1
wobei qˆ der Stichprobenmittelwert basiert auf einer Stichprobe
vom Umfang n ist. Diese Berechnung wird vielfach als „discretetime“, „collect“,“tally“ oder „observational“ –Statistik bezeichnet
und in den Simulationssystemen selbständig vorgenommen.
Beispiel für SLX:
Definition einer random_variable
random_variable rv_serviceTime ;
Eintragen von Beobachtungswerten:
tabulate rv_serviceTime=service_time ;
Der Punktschätzer
qˆ
ist „unbiased“ für
q
wenn gilt:
E (qˆ) = q
d.h. der Erwartungswert über die Punktschätzer einer
Stichprobe (Simulationslauf) ist gleich dem zu ermittelnden
Mittelwert.
Diskrete Simulation - Ergebnisanalyse - 13
Th. Schulze
ITI_WI
Im allgemeinen gilt:
E (qˆ) = q + b
wobei b der Fehler für den Punktschätzer
qˆ ist.
Man ist natürlich bestrebt:
·
·
Zeit-persistente Daten
Der Punktschätzer
f
von zeit-persitenten Daten, basierend
0 £ t £ TE } , wobei TE die
auf den Daten von {Y (t ),
Simulationszeit bezeichnet, ergibt sich wie folgt:
Gleichung 2
1
ˆ
f=
TE
TE
ò Y (t )dt
0
Dieser Mittelwert wird als zeitgewichteter Mittelwert bezeichnet.
In Simulationssystemen werden auch die Begriffe „continuoustime“ oder „time-persistent“ genutzt.
Beispiel für SLX:
Definition einer random_variable
random_variable (time) rv_QueLength
Eintragen von Beobachtungswerten:
tabulate rv_QueLength =QueLength ;
Diskrete Simulation - Ergebnisanalyse - 14
Th. Schulze
ITI_WI
Auch hier gilt:
E (fˆ) = f + b
Anteile und Verhältnisse
Bisher wurden nur die Mittelwerte q und f betrachtet.
Andere Messgrößen, wie z.B. Anteile und Verhältnisse passen
auch in diese Vorgehensweise.
„Wie viel Prozent der Zeit ist die Warteschlangenlänge größer
als eine kritische Länge von 5 Personen“
Wenn
LQ(t)
k0 die kritische Länge der Warteschlange
dann gilt:
ì1,
Y (t ) = í
î0,
wenn LQ (t ) >k 0
anderenfalls
Mittels Gleichung 2 kann der Punktschätzer für die
Ergebnisgröße „Wie viel Prozent der Zeit ist die
Warteschlangenlänge größer als eine kritische Länge von 5
Personen“ ermittelt werden.
Diskrete Simulation - Ergebnisanalyse - 15
Th. Schulze
ITI_WI
Quantile und Perzentile
Quantile beschreiben das Level für eine Größe, die mit einer
vorgegebenen Wahrscheinlichkeit p erreicht werden kann.
Y : die Wartezeit eines Kunden in einer Warteschlange
Das p-Quantil von Y ist der Wert
g
, wobei gilt:
Gleichung 3
P (Y £ g ) = p
Ein 0.85-Quantil von Y bezeichnet einen Wert
g
g
, der besagt,
Zeiteinheiten warten.
Perzentile geben die Wahrscheinlichkeit in Prozent an, mit der
ein bestimmtes Level erreicht ist.
Gleichung 3
Bei der Bestimmung von Quantilen ist
gegeben
g
Bei der Bestimmung von Perzentilen ist
wird gesucht.
gesucht und p
g
gegeben ist und p
Diskrete Simulation - Ergebnisanalyse - 16
Th. Schulze
ITI_WI
Beispiel: (output_Bank1.slx)
In einer Bank arbeiten 5 Schalter mit jeweils einer individuellen
Warteschlange. Ein wechseln der Warteschlangen ist nicht
erlaubt. Mit dem Simulationsmodell sollen die folgenden
Ergebnisgrößen ermittelt werden:
Ergebnisgröße
Mittelwert
Mittelwert Anteil Quantil
Beobachtung Zeitgewichtet
Verweilzeit im System
Warteschlangenlänge
Anteil nicht wartender
Kunden
Zeitlicher prozentualer
Anteil der
Warteschlange größer
als 4 Kunden
Maximale Wartezeit für
85% aller Kunden
Verweilzeit im System:
// Time in System
tabulate rv_TimeInSystem = ( time - entryTime) ;
Y1 [i] =sample_mean(rv_TimeInSystem); // time in system
Warteschlangenlänge
random_variable (time) rv_QueLength;
QueLength++;
tabulate rv_QueLength = QueLength ;
sample_mean(rv_QueLength);
Diskrete Simulation - Ergebnisanalyse - 17
Th. Schulze
ITI_WI
Anteil nicht wartender Kunden
if ((time - entryTime) <=1.0E-6)
NoWaiting ++;
Y3 [i] = NoWaiting*1.0/sample_count (rv_QueingTime); //
Zeitlicher prozentualer Anteil der Warteschlange größer als 4
Kunden
random_variable (time) rv_CriticalQueLength;
if (QueLength <= D3 )
tabulate rv_CriticalQueLength=0 count= 0 ;
else
tabulate rv_CriticalQueLength=1 count = 0;
Y4 [i] = sample_mean(rv_CriticalQueLength) ; //
Maximale Wartezeit für 85% aller Kunden
Y5 [i] =quantile ( rv_QueingTime.histo, D4 );
procedure quantile ( in pointer( histogram ) histo, in double s_prob )
returning float
{
float
value,sum;
int
index ;
// Calculate Cumulative Probability
for ( index = 0; TRUE ; index++ )
{
sum+= ( histo->frequency [index]/ histo->sum_of_weights);
if ( sum >= s_prob )
break;
}
// Related Value
value = ( index * histo->class_width ) + histo->lower_bound ;
return value;
}
Diskrete Simulation - Ergebnisanalyse - 18
Th. Schulze
ITI_WI
Ergebnisse nach einem Simulationslauf (480) Minuten
Ergebnisgröße
Verweilzeit im System
Warteschlangenlänge
Mittelwert
Zeitgewichteter Anteil Quantil
Mittelwert
6.80
1.70
Anteil nicht wartender
Kunden
0.33
Zeitlicher prozentualer
Anteil der
Warteschlange größer
als 4 Kunden
0.13
Maximale Wartezeit für
85% aller Kunden
5.0
Diskrete Simulation - Ergebnisanalyse - 19
Th. Schulze
1.3.3 Intervallschätzung
Zur Berechnung des Intervalls muss die Varianz des
Punktschätzer
qˆ
berücksichtigt werden.
Varianz des Stichprobenschätzers
qˆ
:
d 2 (qˆ) = var(qˆ)
Eine Schätzung dieser Varianz wird bezeichnet mit :
dˆ 2 (qˆ)
Erwartungswert für diesen Schätzer :
[
]
E dˆ 2 (qˆ) = Bd 2 (qˆ)
wobei B der bias-„Fehler“ für den Schätzer ist.
Wunsch:
d 2 (qˆ) = dˆ 2 (qˆ)
Unter diesen Bedingungen (B≈1.0) gilt,
qˆ - q
t=
dˆ (qˆ)
annähernd einer t-Verteilung mit einem bestimmten Maß an
Freiheitsgraden entspricht.
Ein 100(1-α)% Konfidenzintervall für die Größe
sich zu:
qˆ ± ta / 2, f dˆ (qˆ)
q
berechnet
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 20
Th. Schulze
bzw.
Gleichung 4
qˆ - ta / 2, f dˆ (qˆ) £ q £ qˆ + ta / 2, f dˆ (qˆ)
Die Berechnung des Konfidenzintervalles ist gültig, wenn
·
·
·
Schätzung der Varianz des Punktschätzers nicht
unproblematisch.
Fall1 : unabhängige Beobachtungswerte
Wenn die Beobachtungen {Y1 ,Y2 , ..., Yn } unabhängig sind,
dann
Dies ist der Fall, wenn die Yi
·
·
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 21
Th. Schulze
ITI_WI
Schätzer für die Varianz des Punktschätzers
· in Abhängigkeit von der Varianz σ²=var(Yi )der Stichprobe
und
· der Anzahl Stichprobenelemente
2
s
sˆ (qˆ) =
n
2
Die Varianz σ² lässt sich nach folgender Gleichung als S²
schätzen , wenn die Yi unabhängig und einer identischen
Verteilung entstammen:
(Yi - qˆ) 2
S =å
n -1
i =1
2
n
Gleichung 5
S2
ˆ
sˆ (q ) =
n
2
ˆ
Der Ausdruck sˆ (q ) = S / n wird auch als Standardfehler
des Punktschätzers θ bezeichnet.
Fall2: Abhängige Beobachtungswerte
Wenn die Beobachtungen {Y1 ,Y2 , ..., Yn } abhängig sind, dann
Dies ist der Fall, wenn die Beobachtungen {Y1 ,Y2 , ..., Yn }
Diskrete Simulation - Ergebnisanalyse - 22
Th. Schulze
ITI_WI
Die Varianz für den Schätzer ergibt sich zu
1
s (qˆ) = var(qˆ) = 2
n
2
n
n
åå cov(Y
i
,Y j )
i =1 j =1
Allgemein gilt, dass der Schätzer nach Gleichung 5
fehlerbehaftet ist.
æ S2 ö
E çç ÷÷ = Bs 2 (qˆ)
è n ø
Ist die Korrelation zwischen den Beobachtungen {Y1 ,Y2 , ..., Yn }
positiv,
æ S2 ö
E çç ÷÷ < s 2 (qˆ)
è n ø
Wird auf dieser Basis das Konfidenzintervall für den Schätzer
nach Gleichung 4 berechnet,
Im anderen Fall, wenn die Korrelation zwischen den
Beobachtungen {Y1 ,Y2 , ..., Yn } negativ ist, wird B<1.
æ S2 ö
E çç ÷÷ > s 2 (qˆ)
è n ø
Das berechnete Konfidenzintervall besitzt
Diskrete Simulation - Ergebnisanalyse - 23
Th. Schulze
ITI_WI
1.4 Ergebnisanalyse für Terminating Simulations
Ein Terminating-Simulation Modell läuft über ein Zeitintervall
von [0, TE] und speichert die Beobachtungswerte Y1, Y2, … , Yn .
Die Anzahl der Beobachtungswerte n ist fest, es wurde
beispielsweise die Verweilzeit von 100 Kunden erfasst.
Ziel der Simulation ist die Schätzung des Mittelwertes
Gleichung 6
æ1 n ö
q = E ç å Yi ÷
è n i=1 ø
Methode der unabhängigen Wiederholungen:
Die Simulation wird R mal wiederholt, wobei für jeden
Simulationslauf
·
·
Bezeichnet man mit Yri die i-te Beobachtung im Lauf r, wobei
gilt: i = 1, …, nr und r = 1, …, R .
Für ein festes r, d. h. Yr1, Yr2 , formen die Beobachtungswerte
Im Gegensatz dazu können Reihen über die Läufe gebildet
werden, d. h. Yri, Ysi wenn r ≠ s . Diese Reihe
Diskrete Simulation - Ergebnisanalyse - 24
Th. Schulze
ITI_WI
Der Mittelwert für einen Lauf r berechnet sich nach folgender
Gleichung:
Gleichung 7
1 nr
ˆ
qr =
åY ri
n
r = 1, K , R
,
r i =1
Die R Mittelwerte qˆr über alle Läufe sind statistisch
unabhängig, identisch verteilt und sind unbeeinflusste Schätzer
von θ .
Punktschätzung
Der Punktschätzer für Mittelwert von Beobachtungswerten
ergibt sich zu:
1 R
ˆ
q = åqˆ
R i=1 r
Verweilzeit im System
// Time in System
build_mean_ci ( Y1 , nr_runs , 0.95 , smean , stdev , half_widt );
print options=bold
"\nTime in System \n";
print ( smean ) "Point Estimation for Mean _.__ \n" ;
Time in System
Point Estimation for Mean
6.93
Der Punktschätzer für Mittelwert von Zeit-persistenten Werten
ergibt sich zu:
1 R
ˆ
F = åF
ˆ
R i =1 r
Diskrete Simulation - Ergebnisanalyse - 25
Th. Schulze
ITI_WI
Länge der Warteschlange
// Queue Length
build_mean_ci ( Y6 , nr_runs , 0.95 , smean , stdev , half_widt );
print options=bold
"\nQueue Length \n";
print ( smean ) "Point Estimation for Mean _.__ \n" ;
Queue Length
Point Estimation for Mean
1.85
Konfidenzintervall für eine feste Anzahl von n Läufen
qˆ ± t a / 2, f S / n
mit f=n-1 und
n
(
q -qˆ )
S =å
i =1 n - 1
2
i
Verweilzeit im System
// Time in System
build_mean_ci ( Y1 , nr_runs , 0.95 , smean , stdev , half_widt );
print options=bold
"\nTime in System \n";
print (smean - half_widt , smean + half_widt ) "Confidence Intervall
from _.__ until _.__ \n";
Das Konfidenzintervall ist abhängig
·
·
Diskrete Simulation - Ergebnisanalyse - 26
Th. Schulze
Wenn das Konfidenzintervall zu groß ist,
Mittelwert und Konfidenzintervall
Mittelwert
Verweilzei
7,60
7,40
Untere Grenze
7,20
Obere Grenze
7,00
6,80
6,60
6,40
6,20
6,00
10
210
410
610
Anzahl der Läufe
mittlere Warteschlangenlänge
2,4
Mittelwert
Untere Grenze
Obere Grenze
2,2
2
1,8
1,6
1,4
1,2
1
0
200
400
Anzahl der Läufe
600
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 27
Th. Schulze
Nach 20 Läufen wurden die folgenden Mittelwerte und ihre
Konfidenzintervalle geschätzt:
Ergebnisgröße
Mittelwert Konfindezintervall
Verweilzeit im System
6.93
6.48 bis 7.37
Warteschlangenlänge
1.85
1.48 bis 2.23
Anteil nicht wartender
Kunden
0.34
0.30 bis 0.38
Zeitlicher prozentualer
Anteil der
Warteschlange größer
als 4 Kunden
0.15
0.11 bis 0.20
Maximale Wartezeit
für 85% aller Kunden
5.22
4.45 bis6.00
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 28
Th. Schulze
1.5 Ergebnisanalyse für Steady-State Simulations
Y1 ,Y2 , ..., Yn für eine Resultatvariable
Die steady-stae (oder long-run) Messung θ der
Resultatvariablen ergibt sichaus:
1 n
q = lim åY i
n ® ¥ n i =1
θ ist der long-run Mittelwert
Bsp.:
Warum lim?
Entscheidung des Analysten:
2 Möglichkeiten:
·
·
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 29
Th. Schulze
ITI_WI
Überlegungen zur Bestimmung von n oder TE :
1. Die Beeinträchtigung (bias) des Punktschätzers durch
Initialisierungsbedingungen.
2.
3.
Mit Yr1,Yr2,Yr3,... die Ergebnisse aus dem r-ten Lauf bezeichnet.
1.5.1 Systematischer Fehler (Bias) in Steady-StateSimulationen
Der Fehler bei der Punktschätzung in Steady-StateSimulationen wird durch die Initialisierungsbedingungen
beeinflusst.
Deshalb:
·
·
Diskrete Simulation - Ergebnisanalyse - 30
Th. Schulze
ITI_WI
Herangehensweisen:
· Die Verwendung von Initialisierungsbedingungen,
· Der Start mit „empty and idle” und das
Beispiel
Ein Fertigungssystem besteht aus 12 Stationen. Ankommende
Teile (Exponentialverteilung, Mittelwert = 1 Minute) müssen 12
Arbeitsgänge in dem System absolvieren. Die Verweildauer an
einer Station unterliegt einer Gleichverteilung mit [0,65, 0,70]
Minuten. Die Auswahl der entsprechenden Station ist zufällig
und unterliegt einer Gleichverteilung über alle Stationen. Ein
Mehrfachbesuch von Stationen ist also möglich. In zufälligen
Abständen (Exponentialverteilung, Mittelwert = 30 Minuten) fällt
eine Station aus. Die Auswahl der entsprechenden Station ist
gleichverteilt über alle Stationen. Die Ausfalldauer ist
gleichverteilt im Intervall [8,12] Minuten.
Ermittelt werden der stündliche Ausstoß (Produktionsrate) und
der mittlere Teilebestand (WIP) . Die Simulation wird nach 100
Stunden beendet werden.
· Das Simulationsmodell wird mit unterschiedlichen
Initialisierungszuständen gestartet.
· Es werden zufällig {0, 10, 20, 30, 40, 50 } Teile zum
Zeitpunkt 0 generiert.
· Die Simulation wird in Batches von 120 Minuten Länge
eingeteilt. Für jeden Batch wird die mittlere Teilebestand
ermittelt.
Diskrete Simulation - Ergebnisanalyse - 31
Th. Schulze
ITI_WI
WIP pro Interval bei unterschiedlichen Initialisierungen
140
120
0
10
20
30
40
50
100
80
60
40
20
0
0
1000
2000
3000
4000
5000
6000
Zeit
Was lässt sich über die Einschwingphase sagen?
Zeit
120
240
360
480
600
720
840
960
1080
0
40,05
39,76
33,61
41,39
43,36
34,8
53,26
22,52
56,14
10
41,23
41,39
36,54
40,58
42,37
34,71
57,35
23,33
53,8
Initialisierungsbedingungen
20
30
54,93
74,77
38,87
41,84
34,58
36,66
39,46
41,8
43,92
43,29
30,98
31,76
52,22
52,58
22,87
20,77
57,76
53,38
40
99,68
43,16
33,14
42,41
48,23
34,59
52,55
19,89
54,42
Allgemeine Einteilung:
·
·
Datensammelphase
Steady-State Phase
Initialisierungsphase
Transiente Phase
T0
T0 + TE
50
129,27
46,49
36,31
40,96
47,19
34,41
56,18
21,01
57,59
Diskrete Simulation - Ergebnisanalyse - 32
Th. Schulze
ITI_WI
Bestimmung des Zeitpunktes T0 :
· ist sehr bedeutsam, denn zu diesem Zeitpunkt soll der
Zustand des Systems den steady-state Zustand
repräsentieren
· und nicht den Initialisierungszustand.
Wenn T0 zu klein, dann
Wenn T0 im Verhältnis zu TE zu groß, dann
Ermittlung des Zeitpunktes T0 :
In Anlehnung an Banks/Carson wird folgende Vorgehensweise
vorgeschlagen:
· .
· Mit Yrj wird der Mittelwert aus dem Lauf r für den j-ten Batch
bezeichnet.
Diskrete Simulation - Ergebnisanalyse - 33
Th. Schulze
ITI_WI
· Über die einzelnen Werte wird ein Mittelwert der
korrespondierenden Batch-Mittelwerte (d. .h. aus den
Mittelwerten für einen Batch) über alle Replikaktionen
ermittelt. Dieser Mittelwert wird auch als ensemble average
bezeichnet.
Y
·j
1 R
= å Y rj
R r =1
Beispiel:
10 Läufe mit einer Länge von jeweils 6000 Minuten
Für jedem Lauf wurden in 15 Intervalle von jeweils 400 Minuten
eingeteilt.
Mittelwerte der einzelnen Batches für WIP
Batch
Läufe
1
2
3
4
5
6
7
8
9
10
1
38,73
49,94
34,26
49,45
46,92
40,74
51,02
53,91
37,62
46,68
2
43,01
48,3
34,07
32,94
38,65
41,44
46,37
44,82
41,39
41,61
3
43
57,82
40,54
42,81
35,72
44,27
44,16
44,58
48,25
40,74
4
33,81
54,71
46,25
42,34
49,49
42,05
45,35
36,18
37,95
39,01
5
38,98
63,29
42,43
31,36
45,76
54,98
31,16
44,81
51,5
55,22
6
53,96
43,06
45,91
49,51
66,74
36,87
44,32
56,56
46,27
39,56
7
47,57
41,74
53,67
55,15
44,59
51,18
52,93
41,2
46,07
58,05
8
42,74
41,84
27,83
39,13
42,7
37,67
43,51
37,5
48,06
41,33
9
50,73
46,67
45,06
41,29
45,73
44,5
35,69
45,09
51,35
56,48
10
45,07
55,95
46,29
60,64
59,55
37,04
39,56
50,48
40,12
41,68
11
46,45
46,75
42,39
37,4
53,22
50,08
60,28
41,11
45,53
54,59
12
48,71
39,53
43,64
54,72
47,42
37,11
34,93
47,79
72,47
32,2
13
50,47
59,2
48,72
54,02
62,7
43,58
50,22
59,11
49,03
50,14
14
40,48
47,33
48,94
39,85
41,09
45,27
51,53
52,38
50,89
62,52
15
60,59
58,94
49,55
54,21
49,59
52,37
49,91
57,8
44,96
46,92
Diskrete Simulation - Ergebnisanalyse - 34
Th. Schulze
Ensemble Averages für WIP per Batch
55
53
51
49
WIP
47
45
43
41
39
37
35
0
2
4
6
8
10
12
14
16
Batchnum m er
Ensemble Avarges für Produktionsrate per Batch
64,00
63,00
Produktionsrate
62,00
61,00
60,00
59,00
58,00
57,00
56,00
0
2
4
6
8
Batchnummer
10
12
14
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 35
Th. Schulze
ITI_WI
1.5.2 Replication Methode für Steady-State Simulationen
Annahme beim Verwenden von Daten ab dem Zeitpunkt T0 :
Deshalb:
Die Methode der unabhängigen Widerholungen kann somit zur
·
·
Beachte:
Ein signifikanter restlicher Einfluss des Initialisierungs-bias auf
den Punktschätzer des Mittelwertes,
Größere Anzahl an Läufen führt zu einer
aber
Ursache dafür ist, dass der Einfluss des Bias nicht durch die
Anzahl der Läufe R bedingt ist.
Diskrete Simulation - Ergebnisanalyse - 36
Th. Schulze
ITI_WI
Denn der Einfluss des Bias kann nur
Es muss in diesem Fall T0 erhöht werden und somit auch TE .
Eine Erhöhung der Anzahl der Läufe führt zwar zu einer
Reduzierung des Konfidenzintervalls, aber
Länge der Beobachtungsphase ?
Der Analyst muss somit d von n Beobachtungswerten löschen.
Der Punktschätzer von θ ergibt sich zu
Y
··
( n, d )
Jeder Lauf liefert einen Wert zur Schätzung von θ .Für den Lauf
r ergibt sich:
Y
1
n
d
=
(
,
)
r·
n-d
n
åY
j = d +1
rj
Diskrete Simulation - Ergebnisanalyse - 37
Th. Schulze
ITI_WI
Verwenden alle Läufe unterschiedliche Zufallszahlenströme,
und sie sind zum Zeitpunkt 0 mit identischen Bedingungen
initialisiert worden, so sind auch die Mittelwerte Y r · (n, d ) über die
Läufe unabhängig und entstammen einer identischen
Zufallsgröße.
Somit kann der notwendige Punktschätzer nach folgender
Formel berechnet werden:
1 R
Y ·· (n, d ) = R å
Y r · ( n, d )
r =1
Wen d und n groß genug sind, dann ergibt sich
Schätzer für θ.
Y
··
(n, d ) als ein
Das Modell des Fertigungssystem wurde leicht modifiziert. Es
werden keine Maschinenausfälle mehr modelliert.
Länge der transienten Phase: 0 bis 8000 Zeiteinheiten.
Totale Länge des Simulationslaufes :konstant 20 000
Zeiteinheiten.
Die Datensammelphase war somit variabel.
30 Läufe
Diskrete Simulation - Ergebnisanalyse - 38
Th. Schulze
ITI_WI
Produced per hour
Länge der transienten Phase
0
1000
2000
4000
8000
59,96
59,56
59,96
59,96
59,96
Standardabweichung 0,50
0,50
0,50
0,50
0,50
Halbes
Konfidenzintervall
0,19
0,19
0,19
0,19
Mittelwert
0,19
WIP
Länge der transienten Phase
0
1000
2000
4000
8000
34,98
35.06
35.05
35,01
34.90
Standardabweichung 0,68
0.65
0,69
0,77
0,84
Halbes
Konfidenzintervall
0.24
0,26
0,29
0,31
Mittelwert
0,25
(Modell output_factory2.slx)
Im allgemeinen wächst die Standardabweichung und damit das
Konfidenzintervall mit steigender transienter Phase
Random Variable
rv_WIP
rv_nPerHour
#Obs
12168
333
Mean
36.08
60.90
Std Dev
23.77
7.02
Minimum
1.00
41.00
Maximum
48.00
80.00
Diskrete Simulation - Ergebnisanalyse - 39
Th. Schulze
ITI_WI
1.5.3 Batch Means zur Intervallschätzung in Steady-State
Simulationen
Wesentlicher Nachteil bei der Replication-Methode :
Alternativ:
Nachteil:
·
·
Lösung : Methode der Batch Means.
Dabei werden die Ergebnisse eines Laufes in größere Batches
eingeteilt und die Mittelwerte der Batches werden als
unabhängige Daten behandelt. Mit Y j wird der Mittelwert des jten Batches bezeichnet. Die Berechnung erfolgt für
Beobachtungsdaten nach:
Y
jm
1
=
å
j
m i =( j -1) mY+1 i
mit
k - der Anzahl der Batches
m - die Größe eines Batches mit m=n/k
Diskrete Simulation - Ergebnisanalyse - 40
Th. Schulze
ITI_WI
Für zeit-persistente Daten erfolgt die Berechnung nach der
Formel:
Y
1 jm
= ò
Y (t )dt
j
m ( j -1) m
mit
k - der Anzahl der Batches
m - die Größe eines Batches mit m =T E / k
j= 1,2, ... , k
Bestimmung der Anzahl der notwendigen Batches bzw. in der
Größe eines Batches.
Betrachten wir wieder das Fertigungssystem. Die
Datensammelphase wird auf 1800000 Minuten festgelegt.
Dieses Phase wird in 30 Batches eingeteilt.
(Modell output_factory4)
Batchgröße
Mittelwert über die
Batches
Produced per hour
(Beobachtungsdaten)
WIP
Zeit-persistente Daten
1000 Beobachtungen
pro Batch
60 000 Zeiteinheiten
59,97
35,06
Standardabweichung
des Mittelwertes
0,02
0,05
Halbes
Konfidenzintervall
0,05
0,11
Diskrete Simulation - Ergebnisanalyse - 41
Th. Schulze
ITI_WI
1.6 Vergleich modellierter Entwürfe
1.6.1 Vergleich von zwei Systementwürfen
Vergleich auf der Basis der Mittelwerte θi erfolgen
Ziel der Untersuchungen
Punktschätzung und das entsprechende Konfidenzintervall für
die Differenz θ1 - θ2
Auto-Prüfstation mit drei Arbeitsgängen :
· Bremse Prüfen
· Licht Kontrollieren
· Lenkung Prüfen
Variante A :
· Überprüfung auf 3 Plätzen (ein Mechaniker für alle
Arbeitsgänge)
· Eingangswartebereich ist unbegrenzt.
Zwischenankunftszeit der Autos
Exponential-Verteilung mit Mittelwert = 6.33
Prüfzeit Bremse
Normal-Verteilung mit Mittelwert = 6.5 und
Standardabweichung = 0.5
Prüfzeit Licht
Normal-Verteilung mit Mittelwert = 6.0 und
Standardabweichung = 0.5
Prüfzeit Lenkung
Normal-Verteilung mit Mittelwert = 5.5 und
Standardabweichung = 0.5
Diskrete Simulation - Ergebnisanalyse - 42
Th. Schulze
ITI_WI
Alternativlösung B :
· sequentielle Abfolge der Prüfungen an spezialisierten
Plätzen
· Mechaniker sind spezialisiert, Prüfzeiten reduzieren sich
somit um 10%
· Zwischen den einzelnen Prüfstationen existiert kein Puffer.
Entscheidung für eine Variante ist abhängig von der kürzeren
Verweildauer
Folgende Entscheidungen vor der Simulation :
•
•
Von jedem Lauf r und für jedes Modell i erhält man einen
geschätzten Wert Yri für den Mittelwert der Bewertungsgröße
qi .
Yri : die mittlere Verweilzeit im System für das Modell i im Lauf r
mit (r = 1,...,10 und i = 1,2)
Es ergibt sich
q1 = E(Yr1), r=1,...,R1
q2 = E(Yr2), r=1,...,R2
Diskrete Simulation - Ergebnisanalyse - 43
Th. Schulze
ITI_WI
Zur Entscheidung wird die Differenz zwischen den beiden
Bewertungsgrößen berechnet.
Konfidenzintervall für q1 - q2
• Ist das Konfidenzintervall für q1 - q2 vollständig links von
Null, dann ist das ein starker Hinweis für die Hypothese, dass
q1 - q2 < 0 oder q1 < q2 ist.
• Ist das Konfidenzintervall für q1 - q2 vollständig rechts von
Null, dann ist das ein starker Hinweis für die Hypothese, dass
q1 - q2 > 0 oder q1 > q2 ist.
Diskrete Simulation - Ergebnisanalyse - 44
Th. Schulze
ITI_WI
• Enthält das Konfidenzintervall für q1 - q2 die Null, dann ist
das kein starker Hinweis für die Hypothese, dass q1 ≠ q2 <
0 ist.
zweiseitiges 100(1-a )% Konfidenz-Intervall für q1 - q2
Gleichung 8
Y.1 - Y.2 ± ta / 2,n s.e.(Y.1 - Y.2 )
wobei Y·i der Stichprobenmittelwert für das System i über alle
Läufe r ist.
Gleichung 9
1 Ri
Y·i = å Yri
Ri r =1
ta/2,n ist ein Faktor aus der Student-Verteilung t mit dem
entsprechenden Freiheitsgrad ν und
s.e. (●) repräsentiert den Standardfehler des entsprechenden
Punktschätzers.
Diskrete Simulation - Ergebnisanalyse - 45
System
Th. Schulze
Mittelwert Streuung
Replikationen
...
ITI_WI
1
2
Ri
1
Y11
Y21
YR11
Y·1
S12
2
Y12
Y22
YR2 2
Y·2
S 22
• Unabhängige Läufe mit gleicher Varianz
• Unabhängige Läufe mit ungleicher Varianz
• Korrelierende Läufe bzw. gemeinsame Zufallszahlen.
1.6.1.1 Unabhängige Läufe mit gleicher Varianz
Unabhängige Läufe :
Alle ermittelten Werte in den Läufen des Systems 1 (Yr1 mit r =
1, ... R ) sind somit statistisch unabhängig von allen
Ergebnissen des Systems 2 (Yr2 mit r=1,....,R2 ).
Die Streuung der des Stichprobenmittelwertes ergibt sich zu
var(Yri ) d i2
var(Y·i ) =
=
Ri
Ri
Verwendung unabhängiger Stichproben bedeutet
Gleichung 10
var(Y·1 - Y· 2 ) = var(Y·1 ) + var(Y· 2 )
Diskrete Simulation - Ergebnisanalyse - 46
Th. Schulze
In einigen Fällen sind die beiden Streuungen identisch , aber
d.h. s12 = s22 .
Für die Gleichung 8 ergibt sich :
Anzahl der Freiheitsgrade n = R1 + R2 - 2
Standardfehler :
Gleichung 11
s. e.(Y.1 - Y.2 ) = S p
1
1
+
R1 R2
mit
Gleichung 12
S
2
p
R1 - 1) S12 + ( R2 - 1) S22
(
=
R1 + R2 - 2
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 47
Th. Schulze
ITI_WI
1.6.1.2 Unabhängige Läufe mit ungleicher Varianz
Kann eine identische Streuung nicht nachgewiesen werden, so
sind folgende Formeln zu verwenden :
Gleichung 13
S12 S22
+
R1 R2
s. e(Y.1 - Y.2 ) =
Gleichung 14
n =
[(S
2
1
)
( S12 / R1 + S 22 / R2 ) 2
] [(
)
]
/ R1 / (R1 - 1) + S 22 / R2 / (R2 - 1)
2
2
1.6.1.3 Korrelierende Läufe bzw. gemeinsame Zufallszahlen
Korrelierende Läufe bedeutet, dass in jedem Lauf für die
Systeme 1 und 2 identische Zufallszahlen verwendet werden.
Konsequenz:
Das Ziel der Verwendung von korrelierenden Versuchen :
mittleren Differenz
Y·1 - Y·2 .
Diskrete Simulation - Ergebnisanalyse - 48
Th. Schulze
ITI_WI
Gleichung 15
var(Y.1 - Y.2 ) = var(Y.1 ) + var(Y.2 ) - 2 cov(Y.1 , Y.2 )
s 12 S 22 2 r12s 1s 2
=
+
R
R
R
wobei
r 12
die Korrelation zwischen Yr1 und Yr2 beschreibt.
Bei korrelierenden Stichproben ist die Korrelation
r 12
positiv.
Die Varianz für den Punktschätzer ist kleiner bei korrelierenden
Stichproben, als bei unabhängigen. Eine kleinere Varianz für
die gleiche Anzahl von Läufen bedeutet, dass eine genauere
Schätzung erfolgen kann.
Diskrete Simulation - Ergebnisanalyse - 49
Th. Schulze
Zur Berechnung des Konfidenzintervalls für korrelierende
Daten ist wie folgt vorzugehen :
1. Berechnung der Differenz
Gleichung 16
Dr = Yr1 - Yr 2
2. Berechne Mittelwert und Streuung
1 R
D = å Dr
R r =1
1 R
2
(
)
S =
D
D
å r
R - 1 r =1
2
D
3. Bestimme Anzahl der Freiheitsgrade
Gleichung 17
n = R -1
4. Bestimme den Standardfehler
Gleichung 18
s.e( D ) = s.e.(Y.1 - Y.2 ) =
5. Weiter mit Gleichung 8
SD
R
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 50
Th. Schulze
ITI_WI
Unterschiedliche Wege, gemeinsame Zufallszahlen in den
Modellen zu implementieren.
Jede Zufallszahl, die in einem Modell für einen bestimmten
Zweck verwendet wurde, muss im nächsten Modell für den
gleichen Zweck verwendet werden.
Die i-te Zufallszahl wird im Modell 1 :
Erzeugung einer zufälligen Bedienzeit an der Maschine 2
für den j-ten ankommenden Job
Modell 2:
Eine Synchronisation der Zufallszahlen in Bedienungsmodellen
garantiert, dass beide Systeme mit identischer Arbeitslast
belegt werden :
· beide Systeme erhalten die Forderungen zum gleichen
Zeitpunkt und die Forderungen erfordern einen identischen
Aufwand an Service.
· Die aktuelle Service-Zeit einer Forderung im System 1
braucht nicht identisch zu sein mit der Zeit dieser
Forderung im System 2, aber sie sind proportional, wenn
im System 2 der Server schneller arbeitet.
Werden in einem Lagersystem unterschiedliche Lagerstrategien
verglichen, so garantiert ein synchronisierter Zufallsstrom
identische Forderungen an das Lagerprodukt.
Diskrete Simulation - Ergebnisanalyse - 51
Th. Schulze
ITI_WI
Ratschläge zur Implementation von synchronisierten
gemeinsamen Zufallszahlen:
· Orden einer spezifischen Aufgabe einen ZZG zu. Benutze
so viele ZZG wie nötig.
· Weise jedem ZZG bei Beginn eines Laufes einen neuen
unabhängigen Startwert zu. Anderenfalls besteht die
Gefahr, dass die Synchronisierung unterbrochen wird.
· Für Systeme mit externen Ankünften von Entitäten.
werden die notwendigen Zufallsgrößen, wie Bedienzeit
und Stückzahl, für die Entität berechnet und in der Entität
gespeichert.
· Ist eine Synchronisation für Teile des Modells nicht
möglich oder nicht gewünscht, dann verwende
unabhängige ZZG für diesen Teilbereich.
Fortsetzung Bsp. Comp2
Als Experimentierbedingungen wird festgelegt :
· Die Länge eines Laufes beträgt 16 Stunden
· Die Anzahl der Läufe beträgt 10
Ergebnis des 1. Laufes für die Variante A
System Status at Time 960.0000
Random Stream
arrive
service
Queue
q_entry
q_inspection
Sample Initial
Count Position
158
200000
942
400000
Current
Contents
10
13
Maximum
Contents
11
14
Current
Position
200158
400942
Antithetic
Variates
OFF
OFF
Average
Contents
2.68
5.40
Total
Entries
157
157
Zero
Entries
28
0
Chi-Square
Uniformity
0.34
0.53
Percent Average
Zeros Time/Item
17.83 16.369
0.00
33.022
Ergebnis des ersten Laufes der Variante B
System Status at Time 960.0000
Random Stream
arrive
Sample Initial
Count Position
158
200000
Current
Position
200158
Antithetic
Variates
OFF
Chi-Square
Uniformity
0.34
Diskrete Simulation - Ergebnisanalyse - 52
service
Th. Schulze
ITI_WI
942
400000
400942
OFF
Entries
147
146
145
Average
Time/Item
5.923
5.396
4.939
Current
Status
AVAIL
AVAIL
AVAIL
Percent
Avail
100.000
100.000
100.000
Seizing
Item
car 147/1
car 146/1
car 145/1
Maximum
Contents
11
14
Average
Contents
2.91
5.38
Total
Entries
157
157
Percent Average
Zeros Time/Item
9.55
17.766
0.00
32.891
Facility
f_break
f_headlight
f_steering
%Util
90.69
82.06
74.59
Queue
q_entry
q_inspection
Current
Contents
10
13
0.53
Zero
Entries
15
0
Anzahl der
Vergleiche
Konfidenzintervall
Aussage
10
0.37 ± 0.44
Null ist enthalten,
keine Aussage
möglich
50
0.54 ± 0.39
Differenz ist positiv
Variante A ist größer
100
0.41 ± 0.27
Differenz ist positiv
Variante A ist größer
Diskrete Simulation - Ergebnisanalyse - 53
1.7 Optimierung und Simulation
1.8 Anhang
Th. Schulze
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 54
Quelltext 1 : Bank1
//*****************************************************************************
//
Module Validation 1
//*****************************************************************************
import <h7>
module Validation3_Bank2
{
// Decision Variables
constant int D1 = 1 ; // number of tellers
constant float D2 = 1.1 ; // mean service time
constant int D3= 1 ; // number of lines
constant int nr_runs=6;
storage server capacity=D1 ;
queue serverq_car,serverq_ped;
rn_stream Arrive_Car, Arrive_Ped, Service ;
float
Y2 [nr_runs], // teller's utilization
Y4 [nr_runs], // observed arrival rate
Y5 [nr_runs]; // average service time
random_variable rv_serviceTime ;
//
object customer_car
{
actions
{
float service_time ;
enqueue serverq_car; // queing
enter server;
depart serverq_car;
service_time =rv_normal(Service, D2, 0.2) ;
tabulate rv_serviceTime=service_time ;
advance service_time ;
leave server;
terminate;
}
}
object customer_ped
{
actions
{
enqueue serverq_ped;
enter server;
depart serverq_ped;
advance rv_normal (Service , D2, 0.2 );
leave server;
terminate;
}
}
procedure run()
{
arrivals: customer_car iat= rv_expo(Arrive_Car , 1.33) ;
arrivals: customer_ped iat = rv_expo( Arrive_Ped , 5.0) priority=10 ;
wait until ( time == 120 );
Th. Schulze
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 55
Th. Schulze
ITI_WI
}
procedure report_model ( int i )
{
Y2[i] = sample_mean(serverq_car.usage over serverq_car.total_time) ;
Y4[i] = sample_count(serverq_car.usage over serverq_car.total_time) / 2.0 ; // per
hour
Y5[i] = sample_mean (rv_serviceTime) ;
print ( i, Y2[i] , Y4[i], Y5[i] ) "_ *.*** *.*** *.***\n" ;
if ( i == nr_runs)
{
print ( i) " \n\nAfter _ runs : \n";
report system ;
}
}
procedure clear_model()
{
clear system;
}
procedure main()
{
int i;
for ( i= 1;i<=nr_runs ;i++)
{
run() ;
report_model( i ) ;
clear_model () ;
}
}
}
Diskrete Simulation - Ergebnisanalyse - 56
Th. Schulze
Quelltext 2 : M/G/1-System
//*****************************************************************************
//
Module M/G/1 Model
//*****************************************************************************
import <h7>
module output1
{
constant int nr_runs=5;
constant int maxIntervals=5 ;
facility server ;
rn_stream Arrive, Service ;
set (customer) CustomerInSystem ;
interval Subinterval[maxIntervals] ;
random_variable (time) rv_QueLength ;
int QueLength;
float Y [maxIntervals+1 , nr_runs]; // mean queLength
int run;
object customer
{
actions
{
place ME into CustomerInSystem;
QueLength++; // queing
tabulate rv_QueLength =QueLength ;
seize server;
QueLength-- ;
tabulate rv_QueLength =QueLength count = 0;
advance rv_normal(Service, 9.5 , 1.75) ;
release server;
remove ME from CustomerInSystem;
terminate;
}
}
procedure run( int rNr )
{
int i ;
arrivals: customer iat= rv_expo(Arrive , 10) ;
for ( i=1; i<=maxIntervals; i++)
{
start_interval Subinterval[i] ;
wait until ( time == (i*1000));
stop_interval Subinterval[i] ;
Y[i , rNr] = sample_mean ( rv_QueLength over Subinterval [i] );
Y[i , rNr] = sample_mean ( rv_QueLength over Subinterval [i] );
}
Y[maxIntervals+1 , rNr] = sample_mean ( rv_QueLength );
}
procedure report_model ( int i )
{
int j,k ;
if (i== 1)
ITI_WI
Diskrete Simulation - Ergebnisanalyse - 57
print "\nMean Queue Length Y \n\n";
if ( i== nr_runs )
{
for (k=1; k<=maxIntervals+1 ; k++ )
{
print (k) "_ ";
for ( j=1; j<=nr_runs ; j++ )
print (Y[k , j ] ) " _.____ ";
print "\n";
}
print (i) "\n\nAfter _ runs: \n\n";
report system ;
}
}
procedure clear_model()
{
pointer (customer) firstCustomer ;
while ( CustomerInSystem.size > 0)
{
firstCustomer = first customer in CustomerInSystem ;
remove firstCustomer from CustomerInSystem;
destroy firstCustomer ;
}
clear system;
}
procedure main()
{
int i ;
for (i=1; i<=maxIntervals; i++)
observe rv_QueLength over Subinterval[i] ;
for ( run = 1;run <=nr_runs ;run++)
{
run( run ) ;
report_model( run ) ;
clear_model () ;
}
}
}
Th. Schulze
ITI_WI
Herunterladen