Reti di Petri colorate (CP-net)
Sono reti di Petri, in cui i token contengono dati diversi. Sono necessarie condizioni per mettere in relazione token di tipo diverso.
Guadagnando in potenza espressiva, si hanno problemi nella riduzione. E' però possibile decolorare la rete, anche se non è possibile analizzare finemente i dettagli della rete. Per scoprire gli errori è necessaria la simulazione.
Reti orientate agli oggetti
Per non avere problemi di linguaggio per esprimere le riduzioni, è possibile utilizzare dei token orientati agli oggetti e delle transazioni con guardie e azioni.
Un esempio è rappresentato da linguaggi orientati agli oggetti. I token sono oggetti di classi Java. Le reti stesse sono classi istanziabili (nel senso che possono esistere più istanze della stessa rete, che lavorano in parallelo). E' possibile definire inheritance tra reti.
I posti sono contenitori di token dello stesso tipo. I posti sono delle classi rappresentate da un nome, da un tipo di token e dal numero di token iniziali. I posti sono quindi una coda di token.
Le transizioni contengono pezzi di codice, che definiscono le azioni e le guardie.
Le guardie (g) hanno lo scopo di selezionare i token in input (condizione booleana), nel caso in cui esse non siano presenti la regola di default prevede che vengano presi i token dalla coda in ordine nel numero indicato dal peso dell'arco. Con le guardie si possono indirizzare i token oppure selezionare i token in base al contenuto. Nel caso in cui ci siano più combinazioni di token che soddisfano la guardia è utile introdurre clausole di ordinamento, mentre se non ci sono token che la soddisfano, la transizione non scatta. E' possibile definire pesi dinamici, che danno notevole potenza espressiva. E' possibile definire la priorità tra transizioni diverse, in modo da evitare free-choice (priorità minore -> numero minore). La priorità di default è 0.
Le azioni, invece, sono parti di codice, che definiscono l'output della transazione. Esse possono modificare i dati contenuti in un token, possono creare nuovi token.
Spesso è necessario un costruttore della rete stessa, che permetta di inizializzare i token.
Simulazione di un modello
La simulazione è usata per ottenere alcune informazioni quantitative sotto determinate ipotesi di carico del sistema. In base ai risultati è possibile prendere delle decisioni oppure proporre varianti.
Nel caso in cui il grafo su cui si sta lavorando sia marcato e munito di temporizzazione si dice rete con temporizzazione (TMG). Per questo tipo di grafi è possibile calcolare le statistiche della macchina in modo analitico, senza dover procedere con la simulazione. Il tempo ciclo indica il tempo tra due scatti successivi di una transizione (esso deve rimanere costante dopo un iniziale transitorio). Affinchè questa condizione si verifichi è necessario che i ritardi di ogni transizione debbano essere deterministici. Per ogni circuito si calcola il rapporto T/N, con T=somma dei ritardi sugli archi del circuito, N=marcatura iniziale sul circuito. Il massimo T/N è il tempo ciclo.
La simulazione genera segnali a tempo discreto, in modo da vedere come la rete si comporta con l'andare del tempo.
| < Prec. | Succ. > |
|---|






