430 likes | 590 Views
Lezione 8. Petri Nets ed estensioni. [GMJ91, Sez. 5.5] [G87] Condition-Event nets Place-Transition nets Time Petri Nets [Merlin] Priorità Token con valore Richiami di logica Predicate-Transition (PrT-) nets [Genrich’87]. ‘Place-Transition’ Petri net - definizioni.
E N D
Lezione 8. Petri Nets ed estensioni • [GMJ91, Sez. 5.5] • [G87] • Condition-Event nets • Place-Transition nets • Time Petri Nets [Merlin] • Priorità • Token con valore • Richiami di logica • Predicate-Transition (PrT-) nets [Genrich’87]
‘Place-Transition’ Petri net - definizioni • PN = (P, T, A, M0) (* Place-Transition net *) • P: insieme finito di posti • T: insieme finito di transizioni • A (P x T) (T x P) insieme fin. di archi • M0: P-->Nat. marcatura iniziale
PN per il linguaggio delle parentesi bilanciate ( ) ( ()( ( ) ) ) ( ) (( ( )( ))(() ( )(( ))) ( )) (( )( ( ) )) ……... ( )
-- ‘Condition-event’ nets -- • Sono Place-transition nets in cui • I posti sono chiamati (e rappresentano) condizioni • Nessun posto puo’ ospitare piu’ di un token (‘1-safe’) • Firing rule per trans. t (evento): • Un token in ciascun input place (pre-condizioni) • Nessun token negli output place (post-condizioni)
Uso esclusivo di risorsa comune (Condition-event) • Terminologia • Stato = marcatura • Input place - output place • Transizione abilitata • Transition firing rule • (‘token game’) • Firing sequence
Concorrenza - nondeterminismo - (t1, t2) • Conflitto - (t3, t4), solo quando la risorsa è condivisa • Comportamento ‘unfair’: (t1; t3; t5; t1; t3; t5; … )
Uso non esclusivo di risorsa (Place-transition) … o risorsa duplicata
Deadlock Sia P1 che P2 richiedono entrambe le risorse... …e possono raggiungere un marking con nessuna transizione abilitata
Liveness Assenza di deadlock
Deadlock parziale Alcune transizioni diventano permanentemente disabilitate La rete e’ comunque live, cioè non va mai in deadlock
Composizione Da confrontare con l’analoga composizione di FSMs
‘Limiti’ di Place-Transition Nets • Trattano il controllo, non i dati • I token sono indistinguibili, anonimi, non hanno un valore P ToDestination ToTrash Q Non si puo’ scegliere la transizione In base alle proprieta’ del messaggio (token). Non si puo’ arricchire il messaggio con … un francobollo (token)
Non si possono assegnare priorita’ alle transizioni (quando due o piu’ sono abilitate) • Non si possono esprimere parametri temporali.
Time Petri Nets (Merlin-Farber 76) • Transizioni etichettate da coppie (tmin, tmax) • I tempi si riferiscono all’istante t0in cui la transizione viene abilitata • Nelle PN senza tempo si assume una etichettatura (0, infinito) per ogni transizione.
Es. di TPN: Sender-Receiver e… msgLoss (0, 5) sendMsg receiveMsg Sender Receiver (0, 0) (5, 5) produceMsg consumeMsg Channel (3, 3) (2, 2) (5, 5) (1, 1) (0, 5) receiveAck sendAck ackLoss
...timeout nel Sender (0, 5) Sender Receiver (0, 0) timeout (5, 5) (12,12) (3, 3) Channel (2, 2) (5, 5) (1, 1) (0, 5)
PN con priorita’ • Etichette di priorita’ associate alle transizioni • Le priorita’ inducono un ordinamento sulle transizioni abilitate
Priorita’ e temporizzazione... ... possono coesistere. La priorità induce un ordinamento fra le transizioni abilitate (sia dai token che dal tempo). …….I token arrivano a tempo zero……. (Maggior priorità = coeff. piu’ alto)
Token con valore • I token ‘portano’ un valore • Un intero, un vettore di byte, un ambiente (Var--> Val) • Le transizioni sono arricchite da • un predicato sui token in input • una funzione input tokens ---> output token • Ready-tuple • I token in input che soddisfano il predicato • Gli input-token usati (gli output-token prodotti) sono identificati, in predicati e funzioni, dai nomi dei relativi posti di partenza (arrivo)
Esempio P1 P2 P3 4 7 3 4 1 [P2 > P1] P4 := P2 + P1 [P2 = P3] P4 := 0 P5 := P2 + P3 t1 t2 P4 P5
Esercizio 1 (PN a token con valore) La scelta della transizione deve dipendere dalla parita’ del messaggio (token) P …??? …??? ToTrash ToDestination Trash Sender
Esercizio 2 - PN a token con valore per Dispatcher a 2 input (cfr. esempio per Extended FSM) • Un dispatcher riceve messaggi da due diversi input channel ChanA e ChanB, e ne controlla la parita’: se la parita’ e’ sbagliata, manda un ‘nack’ attraverso, rispettivamente, il canale ReplyA o ReplyB; se la parita’ e’ corretta il dispatcher pone il messaggio ricevuto in un buffer, che puo’ tenere fino a 10 messaggi. • Quando il buffer e’ pieno, l’intero contenuto viene spedito a una processing unit attraverso un altro canale. Nessun messaggio puo’ essere messo nel buffer pieno. • [GJM9, Es. 5.15]
Una soluzione ReplyA Parity(a1) not OK -------------------- ReplyA := ‘nack’ Parity(a1) = OK Length (q) < 10 -------------------- q := append (q, a1) ChanA nil Length (q) = 10 ------------------------- ProcessingUnit := q q := nil a1 Parity(b1) = OK Length (q) < 10 -------------------- q := append (q, a1) q b1 ChanB Processing Unit ReplyB Parity(b1) not OK -------------------- ReplyB := ‘nack’
Predicate/Transition nets - Richiami di logica • Per introdurre le Predicate-Transition (PrT-) Net [G87] si rende necessario introdurre/richiamare alcuni concetti di logica...
Linguaggi del 1o ordine (calcolo dei predicati) • Simboli di variabile: x, y, ... • Simboli di costante: a, b, … • Simboli di funzione: f i,gi, … • Simboli di predicato: Ai, Bi, … • ‘i’ = num. di argomenti della funzione/predicato • Connettivi logici: ~, /\, \/, , • Virgola e parentesi: , ( ) • Quantificatori universale ed esistenziale: ,
Termine • Variabile, costante, o simbolo di funzione a i argomenti, seguito da itermini fra parentesi, separati da virgole. • x • 2 • exp(sum(x, 9), 2)) • Formula atomica • Simbolo di predicato a i argomenti, seguito da itermini fra parentesi, separati da virgole: >(exp(sum(x, 9), 2)), 4).
Formula ben formata(fbf) • Formula atomica • ~A, A/\B , A\/B, AB, AB • x. A, x. A • dove A, B sono fbf e x e’ una variabile. • Esempio: • x. (A(x, y) B(f(g(x)), y))) • Nel seguito assumiamo che una formula sia sempre una fbf.
x e’ legata in una formula se • E’ preceduto da un quantificatore, oppure • E’ sotto l’azione di un quantificatore della stessa x • x e’ libera nella formula se non e’ legata • Nella formula F = x.(A(x, y) B(f(g(x)), y))) • 3 simboli x sono legati, i 2 simboli y sono liberi • Free(F) denota l’insieme delle variabili libere di F • nell’esempio: Free(F) = {y} • Una formula e’ chiusa se non ha variabili libere
Dati • Un dominio di valori D (Nat, ...) • Una interpretaz. dei simboli di costante (0, 1, 2…) • Una interpretaz. dei simboli di funzione (+, *, ...) • Una interpretazione dei simboli di predicato (‘>’, ...): • Data una interpretazione, ogni formula chiusa e’ sempre vera o falsa • Ogni formula F tale che Free(F) = x1…xn puo’ essere pensata come un predicato F(x1…xn) • che è vero o falso a seconda dei valori assegnati a x1…xn
Predicate-Transition (PrT-) Nets [G87] • Generalizzano il caso dei token con valore • Gli archi sono etichettati da multi-insiemi di termini di un linguaggio L del primo ordine • [[ t1, t2, …, tx, tx, …]] • Ogni transizione T e’ etichettata da una formuladi L (tipicamente non chiusa), che denotiamo PT. • Around(T) • l’insieme di variabili che appaiono nei termini che etichettano gli archi adiacenti a T • Free(PT) • l’insieme di variabili libere di PT. • Deve valere: Free(PT) Around(T)
Esempio di PrT-net Around(T) = {z, x, y, h, k} 5 9 5 3 1 3 Free(PT) = {x, y, h} [[z, x+y, x-y, x-y]] [[h]] [[y, y]] ((k) x+y = k*3 /\ y = h*2 ) T Variabili libere in PT che non fossero in Around(T) sarebbero assunte implicitamente legate da quantificatore esistenziale (‘dangling variables’) [[k]]
Firing rule per PrT-net • Se esiste un assegnamento per le variabili in Around(T) tale che • La valutazione di PTvia e’ TRUE • La valutazione via dei termini sugli archi in input a T fornisce multi-insiemi di valori che corrispondono a token effettivamente disponibili • allora T viene eseguita, producendo token i cui valori sono espressi dai termini sugli archi in output di T, via .
Esempio di esecuzione di trans. in PrT-net Around(T) = {x, y, z, h, k} 5 9 5 3 1 3 (x) = 7 (y) = 2 (z) = 3 (h) = 1 (k) = 102 [[z, x+y, x-y, x-y]] [[h]] [[1]] [[y, y]] [[2, 2]] [[3, 9, 5, 5]] ((k) x+y = k*3 /\ y = h*2 ) ((k) 9 = k*3 /\ 2 = 1*2 ) = TRUE T [[k]] [[102]] (non 3!)
Da Cond.-Event a Predicate-Trans.(PrT) nets • Sistema = insieme di individui e relazioni dinamiche • Gli eventi cambiano le relazioni fra individui • Individui: Sezioni = {0, 1, 2, 3, 4, 5, 6}; Treni {a, b} • Relazione U Sezioni x Treni • (1, a) U significa ‘treno a occupa (Uses) sez. 1
V Sezioni • (3) V significa ‘sezione 3 e successiva libere (Vacant) • Requisito di sicurezza: • I due treni non devono mai trovarsi contemporaneamente in due sezioni adiacenti
Predicate-Transition (PrT) net finale [[ ]] [[ ]] [[ ]] [[ ]] Un posto modella una relazione Un token modella un elemento della relazione Una transizione modella un cambiamento nelle relazioni