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