next up previous contents index
Next: 2.3.4 Dateiformate Up: 2.3 Dateien, Extensionen, Formate Previous: 2.3.2 Dateiextensionen

Unterabschnitte


2.3.3 Eingabe von Netzen

Netze können im Editor mit dem Kommando <R> <T> (siehe Seite [*]) eingegeben werden. Außerdem können Sie bei einer Dateianforderung eines Netzes mit <esc> in den Terminalmodus umschalten und das Netz, wie hier beschrieben, eingeben.


Ungefärbte Netze

Das ungefärbte Netz des Beispiel 2.1 modelliert die Teilung zweier Terminals durch drei Programmierer. Ein Programmierer ist entweder in der Pause oder bei der Arbeit an einem Terminal. Der Programmierer 1 benötigt zu seiner Arbeit gleichzeitig zwei Terminals. Die Transitionen modellieren das An- und Abmelden der Programmierer.


Abbildung 2.1: Drei Programmierer teilen sich zwei Terminals (terminal.pnt)
\begin{figure}\fbox{\epsfbox{terminal.eps}}\end{figure}

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.

Gefärbte Netze

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``.


Abbildung 2.2: Speisende Philosophen (dinner.cnt)
\begin{figure}\fbox{\epsfbox{dinner.eps}}\end{figure}

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 $C\times C$ einer vorhandenen Farbmenge C oder mit <P> als Cartesisches Produkt $C \times C_1$ 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 $1\leq j \leq f_t$) 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 $f_p=f_t\cdot f_t$ 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


next up previous contents index
Next: 2.3.4 Dateiformate Up: 2.3 Dateien, Extensionen, Formate Previous: 2.3.2 Dateiextensionen

© 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