Le Reti di Petri rappresentano uno strumento potente e flessibile per la modellazione e l'analisi di sistemi a eventi discreti (SED). La loro capacità di descrivere l'ordine di presentazione degli eventi, insieme alle loro proprietà comportamentali, le rende particolarmente adatte alla moderazione e all'ottimizzazione dei flussi di lavoro in svariati contesti. Introdotte per la prima volta nel 1962 dal matematico tedesco Carl Adam Petri nella sua tesi di dottorato "Kommunikation mit Automaten", queste reti offrono un approccio grafico e formalmente rigoroso per la rappresentazione di processi complessi.

Fondamenti delle Reti di Petri: Struttura e Funzionamento
Una Rete di Petri, nella sua forma più elementare nota come Rete Posto/Transizione (P/T), è un modello matematico costituito da due insiemi di elementi: i posti (P) e le transizioni (T), connessi da archi orientati.
I posti, rappresentati graficamente da cerchi, identificano delle condizioni o stati all'interno del sistema. Formalmente, l'insieme dei posti è indicato con la lettera P:$$ P = { p1, p2, p_3, … } $$
Le transizioni, rappresentate da barre o rettangoli, identificano eventi o azioni che possono verificarsi nel sistema. L'insieme delle transizioni è indicato con la lettera T:$$ T = { t1, t2, t_3, … } $$
Sia i posti che le transizioni sono nodi di un digrafo, distinti da simboli differenti per chiarezza. In una rappresentazione comune, i posti sono disposti in riga e le transizioni in colonna, sebbene questa disposizione sia puramente convenzionale.
Gli archi collegano posti a transizioni e transizioni a posti. Un arco può unire solamente nodi di tipo diverso; pertanto, non possono esistere archi tra due posti o tra due transizioni. Questi archi definiscono il flusso di informazioni o di controllo all'interno della rete.
La marcatura (M) è un concetto cruciale che definisce lo stato corrente di una rete di Petri. Essa è una funzione che assegna a ciascun posto un numero non negativo di "token" o "marche", tipicamente rappresentati da punti colorati all'interno dei cerchi dei posti.$$ M = { m1, m2, m3, … } $$Una rete P/T è detta rete marcata (o sistema di rete) se le è associata una marcatura iniziale ($M0$), che ne definisce lo stato di partenza.

Quando una transizione è abilitata, significa che è in grado di scattare. Una transizione è abilitata se tutti i suoi posti di input contengono un numero di token sufficiente a soddisfare i pesi degli archi che la collegano ai posti di input. Il peso di un arco, indicato con un numero intero positivo, specifica quanti token sono richiesti o prodotti. Se un arco ha peso $n$, indica la presenza di $n$ archi tra i nodi collegati. In caso di peso maggiore di 1, è prassi rappresentare un singolo arco barrato con il numero corrispondente sopra.
Quando una transizione abilitata scatta (o "fira"), consuma i token dai suoi posti di input secondo i pesi degli archi entranti ed immette token nei suoi posti di output secondo i pesi degli archi uscenti. Questo processo modella l'evoluzione del sistema da uno stato all'altro.
È importante notare che una rete di Petri non rappresenta tutti i possibili stati di un sistema, ma piuttosto le regole di evoluzione. Questa caratteristica è fondamentale, poiché consente di modellare anche sistemi discreti con un numero potenzialmente infinito di stati, astrarre un gran numero di proprietà e analizzare la rete tramite gli strumenti dell'algebra lineare, data la sua natura di modello matematico.
Proprietà Comportamentali delle Reti di Petri
Le Reti di Petri sono particolarmente utili per analizzare le proprietà comportamentali dei sistemi a eventi discreti, in particolare la concorrenza e il conflitto.
- Concorrenza: Si verifica quando due o più transizioni possono essere abilitate simultaneamente e scattare indipendentemente l'una dall'altra. Questo scenario è tipico dei sistemi distribuiti in cui più processi possono progredire in parallelo.
- Conflitto: Si verifica quando più transizioni competono per gli stessi token in un posto di input comune. Solo una di queste transizioni potrà scattare, consumando i token e rendendo le altre transizioni momentaneamente non abilitate.
La natura dell'esecuzione di una rete di Petri è spesso non deterministica. Ciò significa che, in determinate condizioni, più transizioni potrebbero essere abilitate, e la scelta di quale scatta per prima può dipendere da fattori esterni al modello o da regole di priorità non esplicitamente definite in una rete di base. Questa non determinismo è una caratteristica potente che permette all'utente di astrarre un gran numero di proprietà, ma richiede attenzione nella modellazione per evitare ambiguità indesiderate.
Classificazioni Fondamentali di Reti di Petri
Per comprendere meglio le dinamiche di concorrenza e conflitto, sono state definite alcune sottoclassi di Reti di Petri:
- Macchina a Stati Finiti (State Machine - SM): In queste reti, ogni transizione ha esattamente un arco entrante e un arco uscente. Questo vincolo elimina la possibilità di concorrenza tra transizioni che condividono un posto di input, ma ammette il conflitto quando un posto di output può alimentare più transizioni.
- Grafo Marcato (Marked Graph - MG): In questo caso, ogni posto ha esattamente un arco entrante e un arco uscente. Qui, non ci sono conflitti in senso stretto (un posto alimenta una sola transizione), ma la concorrenza è possibile se più posti alimentano la stessa transizione.
- Scelta Libera (Free Choice - FC): Questa classe di reti presenta una regola interessante: per ogni posto $p$, o l'arco che esce da $p$ è l'unico arco che esce da $p$, oppure l'arco che entra in una transizione $t$ è l'unico arco che entra in $t$. Ciò significa che la concorrenza e il conflitto possono coesistere, ma non si manifestano nello stesso momento nello stesso punto della rete.
- Scelta Asimmetrica (Asymmetric Choice - AC): Questa categoria estende la scelta libera introducendo situazioni in cui concorrenza e conflitto possono verificarsi simultaneamente, ma in modo non simmetrico, portando a un comportamento più complesso e potenzialmente meno prevedibile.
RETI 1: Introduzione alle reti
Estensioni delle Reti di Petri: Ampliamento del Potenziale Espressivo
Le Reti di Petri standard, pur essendo un modello robusto, possono essere estese per catturare aspetti più complessi dei sistemi reali. Queste estensioni aumentano il potenziale espressivo del modello, permettendo una rappresentazione più dettagliata e una maggiore capacità di analisi.
Reti di Petri Colorate
Una delle estensioni più significative è quella delle Reti di Petri Colorate (CPN). In una rete di Petri standard, i token sono indistinguibili; sono semplicemente marcature che indicano la presenza di una condizione. Nelle CPN, invece, ogni token possiede un valore (o "colore"). Questo valore può essere di diverso tipo (numerico, booleano, strutturato, ecc.) e può essere manipolato attraverso espressioni di un linguaggio di programmazione funzionale.

L'uso dei colori permette di distinguere tra i token, rendendo possibile modellare sistemi in cui le risorse sono eterogenee o in cui i dati associati agli eventi sono importanti. Ad esempio, in un sistema di produzione, i token potrebbero rappresentare diversi tipi di prodotti, ognuno con le proprie caratteristiche e processi di lavorazione. I tool popolari per le CPN, come CPN Tools, supportano questa capacità di tipizzazione e manipolazione dei valori dei token.
Reti di Petri Temporizzate
Molti sistemi del mondo reale sono influenzati dal tempo. Per modellare questi aspetti, sono state sviluppate le Reti di Petri Temporizzate. In queste reti, le transizioni possono avere un tempo di attivazione (firing time) associato. Questo tempo può rappresentare la durata di un'operazione, il ritardo nell'arrivo di un evento, o un intervallo di tempo durante il quale una risorsa è occupata.
Esistono diverse varianti di reti temporizzate:
- Transizioni immediate: Hanno un tempo di attivazione nullo e scattano non appena abilitate, a patto che non vi siano transizioni di priorità più alta abilitate.
- Transizioni temporizzate: Hanno un tempo di attivazione positivo. Lo scatto avviene dopo che la transizione è stata abilitata per un certo periodo di tempo, che può essere fisso, casuale o dipendente dalla marcatura.
Le Reti di Petri Stocastiche (SPN) sono un esempio di reti temporizzate in cui il tempo di attivazione è una variabile casuale, tipicamente distribuita esponenzialmente. Questo permette di modellare la casualità e l'incertezza presenti in molti processi del mondo reale.
Reti di Petri Gerarchiche
La gerarchia è un altro meccanismo di estensione che migliora la modularità e la gestibilità di modelli complessi. Le Reti di Petri Gerarchiche consentono di rappresentare un sistema a diversi livelli di astrazione. Parti di una rete di alto livello possono essere "esplose" per rivelare reti di livello inferiore più dettagliate. Questo approccio è particolarmente utile per la progettazione di sistemi software complessi, dove diverse viste possono supportare vari livelli di raffinamento e astrazione, facilitando l'analisi e la comprensione.
Altre Estensioni Notevoli
- Reti di Petri con Priorità: Aggiungono meccanismi di priorità alle transizioni. Una transizione con priorità più alta può impedire lo scatto di transizioni con priorità inferiore, anche se queste ultime sono abilitate. Le transizioni sono tipicamente raggruppate in livelli di priorità.
- Vector Addition System with States (VASS): Può essere visto come una generalizzazione di una rete di Petri, dove ogni stato di un automa a stati finiti è associato a una marcatura di una rete di Petri.
- Reti di Petri Dualistiche (dP-Nets): Sviluppate per rappresentare meglio i processi del mondo reale, le dP-Nets bilanciano la dualità tra cambiamento e non cambiamento, azione e passività, tempo e spazio. Una caratteristica unica è la "marcatura della trasformazione", che indica quando una trasformazione è attiva, permettendo di modellare meglio la durata e la portata dei processi.
La scelta dell'estensione appropriata dipende dalla natura del sistema da modellare e dalle proprietà che si desidera analizzare. Tuttavia, è importante notare che un aumento della complessità della rete dovuto a estensioni avanzate può rendere più difficile l'utilizzo degli strumenti standard per la valutazione di certe proprietà.
Reti di Flusso di Lavoro (Workflow Petri Nets)
Un'applicazione particolarmente rilevante delle Reti di Petri è la modellazione e la moderazione dei flussi di lavoro. Le Reti di Flusso di Lavoro (Workflow Petri Nets) sono una tipologia specifica di Reti di Petri progettate per rappresentare e gestire i processi aziendali e organizzativi.

Queste reti catturano le sequenze di attività, le decisioni, i parallelismi e le risorse necessarie per completare un processo. I posti possono rappresentare lo stato di completamento di un'attività o la disponibilità di una risorsa, mentre le transizioni rappresentano il completamento di un'attività o l'inizio di una nuova fase.
L'analisi delle Workflow Petri Nets permette di identificare colli di bottiglia, inefficienze, potenziali blocchi e di ottimizzare il flusso di lavoro. La capacità di modellare concorrenza e conflitto è fondamentale per comprendere come diverse parti di un processo interagiscono e come gestire le risorse condivise.
Analisi delle Proprietà delle Reti di Petri
L'analisi formale delle Reti di Petri consente di dedurre proprietà importanti sul comportamento del sistema modellato.
Raggiungibilità
Il problema della raggiungibilità si chiede se una determinata marcatura (stato) può essere raggiunta partendo dalla marcatura iniziale ($M0$). Questo si fa costruendo il grafo di raggiungibilità, che elenca tutti gli stati raggiungibili e le transizioni tra di essi.$$ M \in [M0] \iff \exists w \in T^* : M0 \xrightarrow{w} M $$Dove $[M0]$ è l'insieme delle marcature raggiungibili da $M_0$, e $T^*$ è l'insieme di tutte le sequenze di transizioni.
Il grafo di raggiungibilità può diventare molto grande per sistemi complessi, rendendo l'analisi computazionalmente onerosa. Per superare questo limite, si utilizzano spesso tecniche come la logica temporale lineare (LTL) in congiunzione con il metodo tableau per provare che certi stati non possono essere raggiunti.
Liveness (Vivacità)
La liveness (o vivacità) si riferisce alla capacità di un sistema di progredire indefinitamente senza bloccarsi. Esistono diversi livelli di liveness, da quelli più blandi a quelli più stringenti:
- $t$ è live se, partendo da una marcatura $M$, esiste sempre una sequenza di scatti che porta a una marcatura in cui $t$ è abilitata.
- La rete è live se tutte le sue transizioni sono live.
Una rete può essere viva per una data marcatura iniziale ma non per altre. Ad esempio, una rete potrebbe essere viva se ci sono token iniziali, ma tutte le transizioni potrebbero diventare morte (non più abilitabili) se la rete parte da una marcatura vuota.
Boundedness (Limitazione)
La boundedness (o limitazione) si riferisce alla proprietà di un sistema in cui il numero di token in ogni posto è limitato. Una rete di Petri è limitata se esiste un numero $k$ tale che per ogni posto $p$ e per ogni marcatura raggiungibile $M$, il numero di token in $p$ ($M(p)$) è minore o uguale a $k$.$$ \forall p \in P, \forall M \in [M_0] : M(p) \le k $$Una rete è detta sicura (safe) se è 1-limitata, ovvero ogni posto può contenere al massimo un token.
La limitatezza è una proprietà cruciale per modellare risorse finite, come la memoria o la capacità di un buffer. Se una rete non è intrinsecamente limitata, è possibile trasformarla in una rete equivalente non limitata tramite una "trasformazione di posto". Questa tecnica introduce un posto aggiuntivo (counter-place) che tiene traccia del numero totale di token che "dovrebbero" trovarsi in un posto limitato, garantendo che la somma rimanga costante.
P-Invarianti e T-Invarianti
- P-Invarianti: Un P-invariante è un insieme di posti la cui somma ponderata di token rimane costante durante l'evoluzione della rete. Rappresentano quantità conservate nel sistema, come il numero totale di risorse disponibili.
- T-Invarianti: Un T-invariante è una sequenza di scatti di transizioni che riporta la rete alla sua marcatura iniziale. Rappresentano cicli di attività che si ripetono, permettendo di analizzare la ciclicità dei processi.
Sifoni e Co-sifoni
- Un sifone è un insieme di posti che, durante l'evoluzione della rete, tende a perdere gettoni e non è più capace di acquistarne di nuovi. Se un sifone è vuoto, le transizioni a esso collegate non potranno più attivarsi.
- Un co-sifone è l'analogo duale: un insieme di posti che tende ad acquisire gettoni senza potersi svuotare completamente.
La presenza di sifoni non vuoti o di co-sifoni non pieni può indicare problemi di deadlock o di livelock nel sistema.
Critiche e Limitazioni delle Reti di Petri
Nonostante la loro potenza, le Reti di Petri hanno ricevuto critiche e presentano alcune limitazioni intrinseche. Robin Milner e Carl Hewitt hanno evidenziato come la mancanza di una chiara possibilità di composizione delle reti sia una seria limitazione, riducendo la modularità del modello. Sebbene sia possibile combinare reti, il processo può essere complesso.
Hewitt ha anche sostenuto la mancanza di località nelle reti di Petri standard. Secondo la sua osservazione, i token di input di una transizione scompaiono simultaneamente. Questa simultaneità, sebbene matematicamente conveniente, limita il realismo del modello in scenari dove gli eventi avvengono in rapida successione ma non istantaneamente nello stesso punto. La risposta a questa critica risiede spesso nell'interpretazione che ogni transizione debba modellare un singolo evento atomico.
Inoltre, l'aumento della complessità attraverso estensioni può portare a difficoltà nell'analisi computazionale di certe proprietà, rendendo indispensabile l'uso di strumenti software avanzati e di tecniche di astrazione efficaci.
Nonostante queste critiche, le Reti di Petri rimangono uno strumento fondamentale per la modellazione e l'analisi dei sistemi a eventi discreti e dei flussi di lavoro, grazie alla loro capacità di rappresentare graficamente e analiticamente concetti complessi come concorrenza, conflitto e dinamiche temporali.
tags: #reti #di #petri #proprieta #comportamentali
