Im folgenden wird die Eingabe dieses Netzes gezeigt:
Zuerst werden Netznummer (Standardwert: 0) und Netzname (maximal 16 Zeichen) erfragt. Es empfiehlt sich, diese beiden Rubriken auszufüllen, Netznummer und -name erscheinen an vielen Stellen im Protokoll und den gespeicherten Dateien und verhindern so Konfusionen.
Danach erscheint die Syntax für eine platzorientierte Eingabe, die wie folgt lautet:
Input syntax:
<nr>" " <tokens>" "[ <prelist> ] [ "," <postlist> ] "<cr>"
<prelist> ::= { <nr> [ ":"<mult> ]" " }
<postlist> ::= { <nr> [ ":"<mult> ]" " }
P>
Als Eingabe wird jeweils eine Zeile erwartet, die einen Platz beschreibt. Eine solche Zeile beginnt mit der Nummer des Platzes, gefolgt von einem Leerzeichen und der Anzahl der Marken bei der Anfangsmarkierung. Soll der Platz Vortransitionen haben, so werden diese als durch Leerzeichen getrennte Elemente einer Liste in der Form <Nummer> : <Vielfachheit> eingegeben. Die Angabe der einfachen Vielfachheit : <1> kann entfallen, da diese als Standard gesetzt ist. Die Liste der Vortransitionen kann selbstverständlich auch leer sein. Wenn der Platz Nachtransitionen haben soll, so müssen Sie analog eine durch <,> eingeleitete Liste eingeben. Der Abschluß einer Platzzeile erfolgt mit <cr> .
Für das Netz 2.1 der drei Programmierer, die sich zwei Terminals teilen, müssen Sie folgende Zeilen eingeben:
Input of Place/Transition Net nr: 1 Netname = 3_Prog_2Term
0 2 4:2 5 6, 1:2 2 3
1 0 1, 4
2 0 2, 5
3 0 3, 6
4 1 4, 1
5 1 5, 2
6 1 6, 3
Q
Die Zeile 0 2 4:2 5 6, 1:2 2 3 beschreibt den Platz 0, der initial zwei Marken enthält. Seine Vortransitionen sind die Transitionen 4, 5 und 6, dabei hat der Bogen von der Transition 4 zum Platz 0 die Vielfachheit zwei. Der Platz 0 hat die Nachtransitionen 1, 2 und 3, dabei hat der Bogen von dem Platz 0 zur Transition 1 ebenfalls die Vielfachheit zwei.
Beachten Sie bei der Eingabe die generellen Regeln, die im Kapitel 2.2 auf Seite beschrieben wurden: Mit <?> können Sie ein Zeichen löschen. Zur Eingabe großer Transitionslisten empfiehlt es sich, nach Abschluß eines Listenelementes mit einem Kleiner-Zeichen < < > , gefolgt von <cr> , die Eingabe auf einer neuen Zeile fortzusetzen.
Wenn Sie alle Plätze durch ihre Nummer eingegeben haben, antworten Sie zum Beenden der Platzanforderung am P>-Prompt mit <Q> .
Als nächstes fordert INA für jeden von Ihnen eingegebenen Platz einen Namen an (maximal 16 Zeichen). Durch Eingabe von <cr> werden noch nicht belegte Stellen mit Leerzeichen besetzt. Sollte die Kapazitätsschaltregel ausgewählt sein (siehe Kapitel 2.5.3 auf Seite , fordert INA für jeden Platz zusätzlich die Angabe einer Kapazität. Standardwert ist <oo> , eine rechnerabhängige Konstante, die für eine unendliche Kapazität steht.
Anschließend werden in der selben Weise die Transitionen mit Namen versehen. Falls Sie mit Prioritäten arbeiten (siehe Kapitel 2.5.4 auf Seite ), werden diese nach der Namenseingabe angefordert. Standardwert ist null.
Falls Sie eine Zeitbewertung als Option gesetzt haben (siehe Kapitel 2.5.2 auf Seite ), wird je nach Bewertungsart und bewertetem Netzelement eine initiale Uhrenstellung abgefragt.
Damit ist die Netzeingabe beendet und Sie können das Netz anschließend mit <W> <F> auf eine Datei schreiben.
Das gefärbte Netz des Beispiels 2.2 modelliert das wohlbekannte Problem der Speisenden Philosophen: Fünf Philosophen sitzen um einen runden Tisch auf dem sich fünf Gabeln befinden. Um vom Zustand ,,Denkend`` in den Zustand ,,Essend`` überzugehen, braucht ein Philosoph die Gabel zu seiner linken und rechten Seite. Nach dem Essen legt er beide Gabeln wieder ab und geht zurück in den Zustand ,,Denkend``.
An den Bögen des Netzes stehen die entsprechenden Farbinformationen.
Das Netz wird wie folgt eingegeben:
Nach dem Eingeben von Netznummer und -name werden zuerst alle Plätze definiert durch Angabe der Nummer, des Namens und der Farbmenge. Bei der Platzeingabe schlägt INA eine Nummer vor, diese können Sie entweder mit <cr> bestätigen oder durch eine Zahl überschreiben. Anschließend wird der Name des Platzes (maximal 16 Zeichen) sowie die Anzahl der Farben erfragt. Danach werden die Namen der Farben und die Anfangsmarkierung des Platzes erfragt, unter der Kapazitätsschaltregel auch die Kapazität.
Da sich die Namen der Farben eines Platzes häufig nur geringfügig unterscheiden, wird ab der zweiten Farbe der vorherige Farbname zum Editieren vorgelegt. Diese Vorgabe können Sie durch Überschreiben ändern, <space> bewegt den Cursor nach rechts, <?> nach links.
Für die Eingabe der Anfangsmarkierung sind zwei besondere Werte vorgesehen: Wenn Sie bei der ersten Farbe statt einer Markenzahl <z> (für zero) oder <s> (für standard) eingeben, so wird automatisch für alle Farben dieses Platzes die Markenzahl gleich null bzw. eins gesetzt.
Vielfach haben Netzknoten die gleiche Farbmengen. Nach der Eingabe des ersten Platzes erscheint daher nach dem Eingeben des Knotennamens ein Menü:
Colour set to be
read from the terminal................................R
copied from an existing node..........................C
constructed as square CxC of a known colour set.......S
constructed as product CxC1 of known colour sets......P
Sie können mit <C> die Farbmenge von einem bereits konstruierten Knoten kopieren, mit <S> als Cartesisches Quadrat einer vorhandenen Farbmenge C oder mit <P> als Cartesisches Produkt zweier vorhandener Farbmengen konstruieren bzw. mit <R> sie, wie bereits beschrieben, von Hand eingeben.
Die Platzdefinition wird durch <Q> auf die Anfrage einer Platznummer beendet.
Für das Netz 2.2 der fünf speisenden Philosophen sieht der Eingabedialog für die Netznummer, den Netznamen und die Plätze wie folgt aus (Darstellung teilweise gekürzt):
Input of Coloured Petri Net nr: 2 Netname = Dinner
Please, give first the places and the initial marking.
place nr. 1 name = table
number of colours: 5
colour 1: name = fork1 m0: 1
colour 2: name = fork2 m0: 1
colour 3: name = fork3 m0: 1
colour 4: name = fork4 m0: 1
colour 5: name = fork5 m0: 1
place nr. 2 name = has_left
Colour set to be
read from the terminal................................R
copied from an existing node..........................C
constructed as square CxC of a known colour set.......S
constructed as product CxC1 of known colour sets......P > R
number of colours: 5
colour 1: name = phil1 m0: 0
colour 2: name = phil2 m0: 0
colour 3: name = phil3 m0: 0
colour 4: name = phil4 m0: 0
colour 5: name = phil5 m0: 0
place nr. 3 name = has_right
Colour set to be
.......................................................
copied from an existing node..........................C > C
place nr. 2.has_left
colour 1: phil1 m0: 0
colour 2: phil2 m0: 0
colour 3: phil3 m0: 0
colour 4: phil4 m0: 0
colour 5: phil5 m0: 0
place nr. 4 name = is_eating
Colour set to be
.......................................................
copied from an existing node..........................C > C
place nr. 2.has_left
colour 1: phil1 m0: 0
colour 2: phil2 m0: 0
colour 3: phil3 m0: 0
colour 4: phil4 m0: 0
colour 5: phil5 m0: 0
place nr. Q
Anschließend können Sie die Transitionen und Bögen eingeben. Für die Transitionen werden Nummer, Name und die Farbmenge, gegebenenfalls auch die Prioritäten angefordert.
Danach werden zuerst die Eingangsbögen der Transitionen, anschließend die Ausgangsbögen eingegeben.
Für die Definition der Bögen gibt es drei Modi: (C)opy, (E)xpression, by (H)and. Mit <H> können Sie die Bögen per Hand eingeben. Für jede Transitionsfarbe ist die ihr durch die Funktion am Bogen zugeordnete Multimenge von Platzfarbnummern als formale Summe einzugeben. Der Kopiermodus <C> ist anzuwenden, wenn es bereits einen Bogen gibt, der wunschgemäß beschriftet ist. Sie geben in diesem Fall nur die Netzknoten an, die der vorhandene Bogen verbindet. Im Ausdruckmodus <E> können Sie vordefinierte Funktionen zur Bogenbeschriftung verwenden. Das Angebot hängt von der Anzahl der Farben der Transition und des Platzes ab. Die Identitätsfunktion <I> (für identity) wird immer angeboten.
In den folgenden Veranschaulichungen wird ein Bogen zwischen der Transition t mit ftFarben und einem Platz p mit fp Farben betrachtet. Der Ausdruck 3* (I+5)+1*(I+7) als Bogenbeschriftung bewirkt, daß beim Schalten der Transition t in der Farbe j (mit ) vier Marken durch diesen Bogen fließen, und zwar drei Marken mit der Platzfarbe (I+5)(j) und eine Marke der Farbe (I+7)(j). Dabei ist bei fp=1 und beliebigem n stets (I+n)(j)=1, und bei fp> 1 ist (I+n)(j)=((j+n-1) mod fp)+1. Für n=0 und fp=ft ergibt sich also die identische Abbildung.
Ist ft > fp und ft durch fp ohne Rest teilbar, dann werden die Funktionen <F> (für first component) und <S> (für second component) angeboten. INA nimmt an, daß die Farbmenge der Transition ein Cartesisches Produkt von Farbmengen ist, bei dem die Farbmenge von p als erster (mit <F> ) bzw. zweiter (mit <S> ) Faktor auftritt. Für eine Transitionsfarbnummer j ist F(j) bzw. S(j) die Farbe der ersten bzw. zweiten Komponente der Farbe j: F(j)=((j-1) div (ft div fp))+1) und S(j)=((j-1) mod fp)+1
Ist ft < fp und fp durch ft ohne Rest teilbar, dann werden die Funktionen <M> (für mine) und <H> (für his) angeboten. INA nimmt an, daß die Farbmenge von p ein Cartesisches Produkt von Farbmengen ist, bei dem die Farbmenge von t als erster (mit <M> ) bzw. als zweiter (mit <H> ) Faktor auftritt. Für eine Transitionsfarbnummer ist M(j) bzw. H(j) die formale Summe der Platzfarben, deren erste bzw. zweite Komponente gleich j und deren zweite bzw. erste Komponente ungleich j ist.
Bei wird zusätzlich die Funktion <D> (für diagonal) angeboten. INA nimmt an, daß die Farbmenge von p das Cartesische Quadrat der Farbmenge von t ist. Für eine Transitionsfarbnummer j ist D(j) die Nummer des entsprechenden Diagonalelements.
Weitere Funktionen werden nicht vorgegeben.
Die Eingabe der Prä- bzw. Post-Bögen wird durch <Q> als Antwort auf die Anforderung einer Platznummer beendet.
Falls Sie eine Zeitbewertung als Option gesetzt haben (siehe Kapitel 2.5.2 auf Seite ), wird je nach Bewertungsart und bewertetem Netzelement jeweils zusätzlich eine initiale Uhrenstellung abgefragt.
Für das Netz 2.2 der fünf speisenden Philosophen sieht der Eingabedialog für die Transitionen und Bögen wie folgt aus (wieder leicht gekürzt):
Give next the transitions and the arcs.
transition nr. 1 name = take_left
Colour set to be
read from the terminal................................R
copied from an existing node..........................C
constructed as square CxC of a known colour set.......S
constructed as product CxC1 of known colour sets......P > C
place nr. 2.has_left
colour 1: phil1 fact? Y/N: N
colour 2: phil2 fact? Y/N: N
colour 3: phil3 fact? Y/N: N
colour 4: phil4 fact? Y/N: N
colour 5: phil5 fact? Y/N: N
Pre-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 1.take_left REMOVES from
place nr. 1.table
functions: (I)dentity,
expression: 1*(I+4)
place nr. Q
Post-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 1.take_left SENDS to
place nr. 2.has_left
functions: (I)dentity,
expression: 1*(I)
place nr. Q
transition nr. 2 name = take_right
Colour set to be
.......................................................
copied from an existing node..........................C > C
.............Colour set C to be taken from a place? Y/N N
transition nr. 1.take_left
colour 1: phil1 fact? Y/N: N
colour 2: phil2 fact? Y/N: N
colour 3: phil3 fact? Y/N: N
colour 4: phil4 fact? Y/N: N
colour 5: phil5 fact? Y/N: N
Pre-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 2.take_right REMOVES from
place nr. 1.table
functions: (I)dentity,
expression: 1*(I)
place nr. Q
Post-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 2.take_right SENDS to
place nr. 3.has_right
functions: (I)dentity,
expression: 1*(I)
place nr. Q
transition nr. 3 name = start_eat
Colour set to be
.......................................................
copied from an existing node..........................C > C
.............Colour set C to be taken from a place? Y/N N
transition nr. 1.take_left
colour 1: phil1 fact? Y/N: N
colour 2: phil2 fact? Y/N: N
colour 3: phil3 fact? Y/N: N
colour 4: phil4 fact? Y/N: N
colour 5: phil5 fact? Y/N: N
Pre-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 3.start_eat REMOVES from
place nr. 2.has_left
functions: (I)dentity,
expression: 1*(I)
place nr. 3.has_right
functions: (I)dentity,
expression: 1*(I)
place nr. Q
Post-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 3.start_eat SENDS to
place nr. 4.is_eating
functions: (I)dentity,
expression: 1*(I)
place nr. Q
transition nr. 4 name = put_back
Colour set to be
.......................................................
copied from an existing node..........................C > C
.............Colour set C to be taken from a place? Y/N N
transition nr. 1.take_left
colour 1: phil1 fact? Y/N: N
colour 2: phil2 fact? Y/N: N
colour 3: phil3 fact? Y/N: N
colour 4: phil4 fact? Y/N: N
colour 5: phil5 fact? Y/N: N
Pre-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 4.put_back REMOVES from
place nr. 4.is_eating
functions: (I)dentity,
expression: 1*(I)
place nr. Q
Post-arc input mode: (C)opy , (E)xpression, by (H)and > E
Firing the transition 4.put_back SENDS to
place nr. 1.table
functions: (I)dentity,
expression: 1*(I)+ 1*(I+4)
place nr. Q
transition nr. Q
© 1996-98 Prof. Peter H. Starke (starke@informatik.hu-berlin.de) und Stephan Roch (roch@...)
INA Handbuch Version 2.1 zuletzt geändert: 1998-03-24