Peter Lorenz English smaller fonts Simulation und Animation

4.5. Attribute von Transaktionen

Bisher sind Transaktionen als homogene Modellelemente betrachtet worden, die in gleicher Weise mit Attributen ausgestattet sind. Das entspricht der Betrachtungsweise der Bedienungstheorie, die sich überwiegend mit homogenen Forderungenströmen befaßt. In diesem Abschnitt werden Transaktionen als Individuen vorgestellt, die sich durch Menge und Typ ihrer Attribute unterscheiden.

Funktion Top

Attribute von Transaktionen sind Träger individueller Merkmalswerte.
Zum festen Attributsatz jeder Transaktion gehören u.a. ihre Identifikationsnummer, ihre Priorität, ihr Erzeugungszeitpunkt und ihre aktuelle Blockzugehörigkeit.
Der variable Attributsatz kann durch den Benutzer in GENERATE-Blöcken definiert werden. Die Attribute dieser variablen Menge heißen Parameter. Parameter können dazu benutzt werden, individuelle Merkmalswerte festzuhalten.
Beispiele für Transaktionen mit individuellen Attributen sind Die variablen Attribute benötigt man auch zur Organisation des Simulationslaufes. Sie können Sprungziele, Zykluszähler, Rückkehradressen oder laufende Nummern darstellen. Solche Informationen benötigt jede Transaktion individuell: Man weiß oft nicht, wieviele Transaktionen sich gleichzeitig in einem Zyklus oder in einem Unterprogramm bewegen, so dass globale Zähler oder auch Stacks für Rückkehradressen wenig helfen würden.

Numerische Standardattribute Top

Die folgenden Attribute von Transaktionen sind als Numerische Standardattribute (NSA) jederzeit abrufbereit. Der Abruf kann aber nur durch die Transaktion erfolgen, die diese Attribute selbst besitzt. In diesem Sinne sind diese Attribute lokal oder vor anderen verborgen. Wie alle Standardattribute haben sie eigene symbolische Namen.
NSA Inhalt Erklärung
XID1 Identifikationsnummer Diese Nummer wird bei der Erzeugung vergeben und ist um Eins größer als die zuvor, für die zuletzt erzeugte Transaktion vergebene Nummer. Jede Nummer wird während des gesamten Simulationslaufes nur einmal vergeben.
PR Priorität Die Priorität ist ein beliebiger ganzzahliger Wert. Ein großer Wert kennzeichnet eine hohe Priorität.
M1 Laufzeit (Transit Time) Zeit seit der Erzeugung oder seit dem letztem Eintritt der Transaktion in einen MARK-Block ohne Operand
MPLj Spezielle Laufzeit Differenz zwischen absoluter Zeit (AC1) und dem Wert des Gleitpunktparameters j
PXj Parameterwert für X = F| H | B | L: Wert des Parameters mit dem Namen oder der Nummer j
Im folgenden kleinen Beispiel werden zwei Transaktionen erzeugt. Weil der D-Operand von START gleich 1 ist, erscheint in der Standardausgabe auch die Ausgabeliste der bei Abbruch des Simulationslaufes existierenden Transaktionen.


Parameter Top

Parameter sind Merkmale von Transaktionen, die der Nutzer nach eigenem Ermessen und Bedarf einführen und mit Werten belegen darf. Im GPSS/H sind die folgenden vier Typen von Parametern erklärt.
Name NSA Wertebereich
Byteparameter PBj-2^7 . . . 2^7-1 (INTEGER*1)
Halbwortparameter PHj-2^15 . . . 2^15-1 (INTEGER*2)
Vollwortparameter PFj -2^31 . . . 2^31-1 (INTEGER*4)
Gleitkommaparameter PLj Gleitkommazahl mit doppelter Genauigkeit (REAL*8)
Eigene Typdefinitionen sind nicht möglich. Es gibt keine Zeichenkettenparameter. Der Nutzer muß selbst darauf achten, dass er eine sinnvolle Auswahl der Parametertypen trifft, um eine Zahlenbereichsüberschreitung zu vermeiden.
Die Ausstattung einer Transaktion mit Parametern entscheidet sich bei ihrer Erzeugung und kann später, während des Simulationslaufes, nicht mehr verändert werden. Wenn keine Ausstattung spezifiziert wird, erhalten Transaktionen die Default-Ausstattung von 12 Halbwortparametern.
Sowohl im GENERATE- als auch in dem später vorzustellenden SPLIT-Block kann eine gewünschte Ausstattung explizit angegeben werden. Im GENERATE-Block geschieht das mit einer Liste, die beim Operanden F beginnt und in beliebiger Reihenfolge höchstens einen Eintrag pro Typ enthält.
GENERATE 30,,100,5,,3PF,4PH In Abständen von 30 Zeiteinheiten, beginnend zum Zeitpunkt 100, werden Transaktionen erzeugt. Die Erzeugung endet mit der fünften Transaktion, also zum Zeitpunkt 220. Jede der Transaktionen ist mit 3 Vollwort- und 4 Halbwortparametern ausgestattet.
GENERATE ,,,1,50,2PB,1PL Zu Beginn der Simulation, also zum Zeitpunkt 0, wird eine Transaktion erzeugt. Sie hat die Priorität 50 und ist mit zwei Byte- und einem Gleitkommaparameter ausgestattet.
GENERATE 20,,,3,,0PH Alle 20 Zeiteinheiten, beginnend mit dem Zeitpunkt 20, wird eine Transaktion erzeugt. Nach der dritten Transaktion beendet der GENERATE-Block seine Aktivität. Die erzeugten Transaktionen sind besonders speicherplatzsparend: Sie haben keine Parameter.

Man kann die Wirkung dieser GENERATE-Anweisungen an Hand der Standardausgabe für Transaktionen direkt beobachten, wenn man das folgende Demonstrationsprogramm startet:


Das Programm benutzt den im Folgenden zu erklärenden ASSIGN-Block, um den Parametern Werte zuzuweisen.

Zum Zeitpunkt der Erzeugung durch GENERATE haben alle Parameter einer Transaktion den Anfangswert Null. Wertänderungen erfolgen u.a. durch die Blöcke ASSIGN, INDEX, LOOP, COUNT, SELECT, ALTER und SCAN. Im GPSS/H ist auch eine Wertzuweisung durch BLET möglich.

ASSIGN
ändert den Wert eines oder mehrerer Parameter der eintretenden Transaktion. Werte können zugewiesen (Standard), addiert (Zusatz + zum Operand A) und subtrahiert (Zusatz - zu A) werden.
OperandInhalt
A j bezeichnet die Nummer oder den Namen des Parameters
j Der in B spezifizierte Wert ist dem Parameter j zuzuweisen.
j+ Der in B spezifizierte Wert ist zum alten Wert des Parameters j zu addieren.
j- Der in B spezifizierte Wert ist vom alten Wert des Parameters j zu subtrahieren.
B Ausdruck, dessen Wert zuzuweisen, zu addieren oder zu subtrahieren ist.
C oder D Parametertyp, spezifiziert durch PB | PH | PF | PL
ASSIGN 1,13,,PH Dem Halbwortparameter mit der Nummer 1 wird der Wert 13 zugewiesen.
ASSIGN MENGE,40000,PF Dem Vollwortparameter mit dem Namen MENGE wird der Wert 40000 zugewiesen.
ASSIGN 2-5,RVEXPO(1,0.5),PL Jedem der Gleitkommaparameter mit den Nummern 2 bis 5 wird dieselbe exponentialverteilte Zufallszahl zugewiesen.
ASSIGN BLENTRY,N(AAA),PH Dem Halbwortparameter BLENTRY wird die aktuelle Anzahl der Eintritte in den Block mit dem Namen AAA zugewiesen.
ASSIGN BLENTRY+,1,PH
ASSIGN BLENTRY,PH(BLENTRY)+1,PH
sind wirkungsgleich

Dieses Beispiel dient nur der Darstellung von Beispielen für ASSIGN-Blöcke und ihrer Wirkung. Sie wird sichtbar, wenn man das Programm startet und die Standardausgabe der Transaktionen betrachtet. Anhand dieser Ausgabe sollte man überlegen, wie während der Compile-Zeit eine Zuordnung von Nummern und Namen von Parametern erfolgt. Vielleicht machen Sie dazu auch Experimente mit weiteren ASSIGN-Blöcken und weiteren Parameternummern und -namen!

PrioritätenTop

Die Prioritätsklasse oder Priorität ist ein Transaktionsmerkmal, das über die Reihenfolge der Behandlung konkurrierender Transaktionen entscheidet. Immer dann, wenn mehrere Transaktionen auf das Eintreten einer Zustandsbedingung warten, sind diejenigen im Vorteil, welche die höchste Priorität besitzen. Sie stehen weiter vorn in der Aktuellen Ereigniskette (CEC), werden zuerst von der internen Steuerung geprüft und bewegt. So gelangen sie z.B. als erste in eine freigewordene Einrichtung. In der CEC dient die Prioritätsklasse als erstes Sortiermerkmal.
Die bei der Erzeugung der Transaktion durch den Wert des Operanden E festgelegte Priorität kann während des Simulationslaufes mit Hilfe des Blockes PRIORITY geändert werden.
PRIORITY
ist ein Block, der die Priorität einer eintretenden Transaktion ändert. Der neue Wert der Priorität ist als Operand A anzugeben.
BUFFER
ist ein Block, mit dem man die interne Steuerung veranlaßt, zum aktuellen Zeitpunkt die Bearbeitung der CEC neu zu starten. Um die diesen Block betretende Transaktion anzuhalten und alle Transaktionen aus der CEC, die höhere Priorität haben, neu zu starten, nutzt man den Block. Dieser Block hat keine Operanden.

SLX

In der vorliegenden Programmversion kann man nicht erkennen, ob Hotelgäste tatsächlich weniger Zeit beim Friseur verbracht haben, als die normalen Kunden. Im nächsten Abschnitt soll erklärt werden, wie man Laufzeiten von Transaktionen erfassen kann.

LaufzeitenTop

Laufzeit
ist die seit der Erzeugung oder seit der letzten Markierung einer Transaktion vergangene Simulationszeit. Die Laufzeit einer Transaktion ist als Numerisches Standardattribut mit dem Namen M1 verfügbar und errechnet sich als Differenz der aktuellen Zeit zum Mark-Zeit-Wort der Transaktion.

Wenn man die Dauer nicht nur eines, sondern mehrerer Lebensabschnitte einer Transaktion erfassen möchte, kann man dazu Gleitkommaparameter benutzen. Für beide Fälle eignet sich der MARK-Block.

MARK
ist ein Block, der einen neuen Wert in das Mark-Zeit-Wort der ihn betretenden Transaktion einträgt. Dieses Attribut hat als Anfangswert den Zeitpunkt, zu dem die Transaktion in das Modell eingetreten ist. MARK setzt die aktuelle Zeit AC1 als neuen Beginn für die Laufzeitmessung der Transaktion, die diesen Block betritt.
Der Operand A kann leer sein (Eintragung in das Mark-Zeit-Wort der Transaktion) oder xpr PL enthalten. Dann erfolgt die Eintragung der Absolutzeit AC1 in den Gleitkommaparameter der Nummer, die dem Wert von xpr entspricht.
Mit diesem Block sind die folgenden numerischen Standardattribute verbunden:
NSA Inhalt
M1 Laufzeit bezüglich der Eintragung im Mark-Zeit-Wort
MPLj Laufzeit bezüglich der Eintragung im Gleitkommaparameter j

Nutzer ohne Zugangsberechtigung können gespeicherte Standardausgabe und Resultatdatei herunterladen.
SLX

Im obigen Programmbeispiel sind Laufzeitwerte der Transaktionen in Feldern notiert, aber nicht ausgewertet und ausgegeben worden.

Das soll im Abschnitt 4.6. geschehen, indem die Modellelementklasse Tabelle oder Table eingeführt und auf das Hotelfriseurbeispiel und andere Beispiele angewandt wird. Der folgende Abschnitt, der auch beim Lesen übersprungen werden darf, enthält eine ausführliche Beschreibung der Standardausgabe von Transaktionen und ihrer Attribute.

Ausgabe der Attribute von TransaktionenTop

Die Standardausgabe von Transaktionen enthält die Werte von Attributen aller im System befindlichen Transaktionen. Einige von ihnen sind schon im Abschnitt 4.1. kurz vorgestellt worden. Nun sind sie ausführlicher zu erläutern.
Die folgende Tabelle stellt alle diejenigen Attribute vor, die in der Standardausgabe für Transaktionen erscheinen. Diese Standardausgabe wird bei normalem Lauf eines Programms unterdrückt, weil sie sehr lang sein kann. Man erhält sie, wenn ein Simulationslauf wegen eines Laufzeitfehlers endet oder wenn als D-Operand von START eine 1 angegeben wird.

Es ist zu empfehlen, diese Standardausgabe für einige der in vorigen Abschnitten angegebenen Programmbeispiele, zu betrachten und zu interpretieren. Im Abschnitt 4.1. ist bereits kurz darauf eingegangen worden.

Die folgende Tabelle ist wieder zum Nachschlagen und nicht zum vollständigen Durchlesen gedacht, zumal sie einige Vorgriffe auf bisher nicht eingeführte Dinge enthält.

AttributErklärung
XACTDas Attribut XACT enthält die Identifikationsnummer der Transaktion. Diese Nummer wird bei der Erzeugung vergeben und ist um Eins größer als die zuvor, für die zuletzt erzeugte Transaktion vergebene Nummer. Jede Nummer wird während des gesamten Simulationslaufes nur einmal vergeben.
CURBLK Das CURBLK-Attribut enthält den Namen oder die Nummer des Blockes, an dem sich die Transaktion gerade aufhält. Wenn die Transaktion sich in der FEC (Zukünftige Ereigniskette) befindet, um das Modell an einem GENERATE erstmalig zu betreten, wird als CURBLK-Wert BIRTH angegeben.
NXTBLKDas NXTBLK-Attribut gibt Namen oder Nummer des nächsten Blockes an, den die Transaktion betreten soll.
CHAINDas CHAIN-Attribut gibt die Kette an, der eine Transaktion gerade angehört. Dabei bedeuten
NameKette
CECCurrent Events Chain
FECFuture Events Chain
INTInterrupt Chain
MCHMatching Chain (Warten auf MATCH)
ASMAssembling Chain (Warten auf ASSEMBLE)
GTHGathering Chain (Warten auf GATHER)
UCHUser Chain oder Nutzerkette
SYSSystem Chain
SDPGFT**Dieses Attribut enthält den aktuellen Wert des Transaktions-Flags. Folgende Flags können auftreten:
FlagErklärung
SScan/Skip-Indikator der Current Events Chain
DVerzögerungsindikator für TRANSFER SIM
PVorrangige Belegung
GXact verläßt GENERATE Block
FXact darf Einrichtung belegen, die mit FUNAVAIL gesperrt ist
TTrace Flag (durch TRACE-Block gesetzt)
*TRAP Flag für interaktiven Debugging-Mode
MARK-TIME Das MARK-TIME-Attribut gibt die Mark-Zeit der Transaktion an. Das ist entweder die Eintrittszeit der Transaktion in das Modell oder der letzte Zeitpunkt des Eintritts in einen MARK-Block, der die MARK-Zeit verändert hat.
MOVE-TIME Wenn die Transaktion in einer Interruptkette ist, enthält das MOVE-TIME-Attribut die verbleibende Aufenthaltsdauer aus einem ADVANCE-Block.
Wenn die Xact in der FEC ist, enthält MOVE-TIME den Zeitpunkt, an dem sie die FEC verlassen wird.
Sonst: letzter Zeitpunkt, an dem die Xact aus der FEC in die CEC bewegt wurde.
PRIORITY Das PRIORITY-Attribut gibt den Wert der Priorität der Transaktion an.
PC PC ist der Preemption-Zähler der Xact. Er wird immer dann erhöht, wenn die Transaktion mittels PREEMPT verdrängt oder mit FUNAVAIL unterbrochen wurde.
Der Zähler wird erniedrigt, wenn die Verdrängung oder Unterbrechung endet.
ASMSET Die durch SPLIT erzeugten Kopien einer Xact bilden mit ihr zusammen einen Verband (Assembly Set). ASMSET ist die Nummer des Verbandes. Sie ist gleich er Nummer der Original-Transaktion.
ADDR Das ADDR-Attribut enthält die aktuelle Maschinenadresse der Transaktion.

Einkaufszentrum Top

Im Modell eines Einkaufszentrums soll berücksichtigt werden, dass individuelle Wege durch die Kaufhalle gewählt und dass unterschiedliche Warenmengen gekauft werden.
Im Modell werden zwei Tabellen definiert und benutzt. Dazu dienen die Anweisungen TABLE und TABULATE, die im folgenden Abschnitt 4.6. behandelt werden.


Nutzer ohne Zugangsberechtigung können gespeicherte Standardausgabe und Resultatdatei herunterladen.
SLX

Zum Abschluss dieses Abschnittes soll für das oben vorgestellte Modell eines Einkaufszentrums ein Animationsmodell geschaffen werden. Das geschieht in den folgenden Schritten:

  1. Zeichnen eines Layouts mit Eingangsbereich, drei Verkaufsbereichen und dem Kassenbereich
  2. Zeichnen von Bewegungslinien für die Kunden und Definition von Pfaden
  3. Zeichnen von Symbolen für Kunden mit Korb, mit Wagen, ohne Behälter und für Plätze als Ziele freier Bewegungen
  4. Einfügen von GPSS-Anweisungen zum Schreiben eines Animations-Tracefiles (ATF)

Kontrollfragen Top

  1. Wozu benötigt man Transaktionsattribute?
  2. Wie kann man Attribute von Transaktionen klassifizieren?
  3. Nennen Sie Beispiele Numerischer Standardattribute für Transaktionsattribute!
  4. Welche Typen von Transaktionsparametern kennen Sie?
  5. Welche Blöcke können Werte von Transaktionsparametern ändern?
  6. Beschreiben Sie die Funktionsweise des ASSIGN-Blockes!
  7. Wozu benötigt man Prioritäten von Transaktionen?
  8. Beschreiben Sie die Funktion des BUFFER-Blockes!
  9. Wie kann man Laufzeiten von Transaktionen erfassen?
  10. Wozu benutzt man den MARK-Block?
  11. Schildern Sie einige Komponenten der Ausgabe von Transaktionen!
SAHome previous next up Englishsmaller fonts Top Line
Last Modified Fri 05-27-11 06:54 GMT Valid CSS!

Comments please to:pelosim@yahoo.com