2020-05-01 19:18:26 +02:00
|
|
|
* Rete A
|
|
|
|
M master identici e S slave identici di tipo 1.
|
|
|
|
|
|
|
|
#+CAPTION: Modello della reteA
|
|
|
|
[[./reteA.jpg]]
|
|
|
|
|
|
|
|
La figura rappresenta la rete di Petri P/T dell'esercizio A. Il master
|
|
|
|
è modellato dai posti M0, M1, M2, M3 e dalle transizioni
|
|
|
|
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M
|
|
|
|
Lo slave è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e
|
|
|
|
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa,
|
|
|
|
Azione_Locale_Sb, Fine_Servizio e Reset_S. La richiesta del servizio
|
|
|
|
verso lo slave e` gestita attraverso due buffer, posti Buffer_Input e
|
|
|
|
posto Buffer_Output.
|
|
|
|
|
|
|
|
** Risultati
|
|
|
|
Nella tabella vengono mostrate il numero di archi e di nodi al variare
|
|
|
|
dei parametri M e S. Le cifre sono indicative dell'aumentare della
|
|
|
|
dimensione dello spazio degli stati proporzionalmente al numero di
|
|
|
|
marcature.
|
|
|
|
|
|
|
|
| master, slaves | Nodi | Archi |
|
|
|
|
|----------------+---------+----------|
|
|
|
|
| 1, 1 | 14 | 19 |
|
|
|
|
| 2, 2 | 94 | 222 |
|
|
|
|
| 3, 3 | 426 | 334 |
|
|
|
|
| 4, 4 | 1500 | 5610 |
|
|
|
|
| 5, 5 | 4422 | 18720 |
|
|
|
|
| 6, 6 | 11418 | 52998 |
|
|
|
|
| 7, 7 | 26598 | 132594 |
|
|
|
|
| 8, 8 | 57057 | 301158 |
|
|
|
|
| 9, 9 | 114400 | 632775 |
|
|
|
|
| 10, 10 | 216788 | 1246960 |
|
|
|
|
| 11, 11 | 391612 | 2328612 |
|
|
|
|
| 12, 12 | 678912 | 4153916 |
|
|
|
|
| 13, 13 | 1135668 | 7123272 |
|
|
|
|
| 14, 14 | 1841100 | 11802420 |
|
|
|
|
| 15, 15 | 2903124 | 18973020 |
|
|
|
|
|
|
|
|
** Considerazioni su Fork/Join
|
|
|
|
Il modello non garantisce che avvenga il join di due processi dello
|
|
|
|
stesso padre quando la marcatura degli slave e` maggiore di 2.
|
|
|
|
Si puo` garantire che avvenga il join di due processi forkati dallo
|
|
|
|
stesso padre nei seguenti modi:
|
|
|
|
- attraverso differenti strutture slaves
|
|
|
|
- permettendo l'elaborazione di una singola richiesta alla volta
|
|
|
|
(modellato con degli archi inibitori)
|
|
|
|
- usando reti WN
|
|
|
|
|
|
|
|
|
2020-05-06 18:06:30 +02:00
|
|
|
** Riduzione
|
|
|
|
Una rete di petri puo` essere ridotta usando le seguendi tecniche:
|
|
|
|
- fusione
|
|
|
|
- eliminazione
|
|
|
|
- rimozione dei loop
|
|
|
|
Nelle figure vengono mostrate alcune fasi di riduzione della rete in
|
|
|
|
analisi; in ordine sono stati applicati:
|
|
|
|
- fusione di alcuni posti
|
|
|
|
- fusione di alcune transizioni
|
|
|
|
- eliminazione di alcuni posti
|
|
|
|
- eliminazione di alcune transizioni
|
|
|
|
- riduzione di self loop
|
|
|
|
|
|
|
|
[[./riduzioni/fusione1.jpg]]
|
|
|
|
[[./riduzioni/fusione2.jpg]]
|
|
|
|
[[./riduzioni/eliminazione1.jpg]]
|
|
|
|
[[./riduzioni/eliminazione2.jpg]]
|
|
|
|
[[./riduzioni/rimozione1.jpg]]
|
2020-05-03 18:13:53 +02:00
|
|
|
** TODO P e T invarianti
|
|
|
|
Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
|
|
|
|
|
|
|
|
[[./semiflowsAT.jpg]]
|
|
|
|
[[./semiflowsAP.jpg]]
|
|
|
|
|
|
|
|
Gli P-invarianti sono i seguenti:
|
|
|
|
| S0 + S1_a + S2_a + S3
|
|
|
|
| S0 + S1_b + S2_b + S3
|
|
|
|
| M0 + M1 + M2 + M3
|
|
|
|
| S1_a + S2_a + Buffer_output + Buffer_input + M0 + M1 + M3
|
|
|
|
| S1_b + S2_b + Buffer_output + Buffer_input + M0 + M1 + M3
|
|
|
|
Il T-invariante e` il seguento:
|
|
|
|
\[
|
|
|
|
Inizio_servizio + azione_locale_sa + azione_locale_sb + \\
|
|
|
|
Fine_servizio + Reset_s + azione_locale_m + Richiesta_servizio + \\
|
|
|
|
Attesa_elaborazione + Reset_m + Reset_s
|
|
|
|
\]
|
|
|
|
|
|
|
|
Dato che la reteA e` interamente coperta dagli P-semiflussi, possiamo
|
|
|
|
affermare che la rete sia bounded.
|
|
|
|
[ ] Deadlock
|
|
|
|
[ ] Liveness
|
2020-05-01 19:18:26 +02:00
|
|
|
|
|
|
|
* Rete B
|
|
|
|
M master identici, uno slave di tipo 1 e uno slave di tipo 1 scelti
|
|
|
|
liberamente dai master.
|
|
|
|
|
|
|
|
#+CAPTION: Modello della reteB
|
|
|
|
[[./reteB.jpg]]
|
|
|
|
|
|
|
|
La figura rappresenta la rete di Petri P/T dell'esercizio B. Il master
|
|
|
|
è modellato dai posti M0, M1, M2, M3 e dalle transizioni
|
|
|
|
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M
|
|
|
|
Lo slave di tipo 1 è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e
|
|
|
|
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa,
|
|
|
|
Azione_Locale_Sb, Fine_Servizio e Reset_S.
|
|
|
|
Lo slave di tipo 2 è modellato dai posti R0, R1_a, R1_b, R2_a, R2_b e
|
|
|
|
R3 e dalle transizioni Inizio_Servizio_R, Azione_Locale_R, Fine_Servizio e Reset_R.
|
|
|
|
La richiesta del servizio
|
|
|
|
verso lo slave scelto e` gestita attraverso due buffer, posti
|
|
|
|
FreeChoice e Risultato.
|
|
|
|
|
|
|
|
|
|
|
|
** Risultati
|
|
|
|
| master, slaves | Stati | Archi |
|
|
|
|
|----------------+--------+--------|
|
|
|
|
| 1, 2 | 40 | 76 |
|
|
|
|
| 2, 2 | 204 | 544 |
|
|
|
|
| 3, 2 | 728 | 2400 |
|
|
|
|
| 4, 2 | 2072 | 7896 |
|
|
|
|
| 5, 2 | 5040 | 21336 |
|
|
|
|
| 6, 2 | 10920 | 50064 |
|
|
|
|
| 7, 2 | 21648 | 105648 |
|
|
|
|
| 8, 2 | 39996 | 205260 |
|
|
|
|
| 9, 2 | 69784 | 373252 |
|
|
|
|
| 10, 2 | 116116 | 642928 |
|
|
|
|
|
|
|
|
Parametrizzando anche il numero di slaves:
|
|
|
|
| master, slaves | Stati | Archi |
|
|
|
|
|----------------+---------+----------|
|
|
|
|
| 1, 2 | 40 | 76 |
|
|
|
|
| 2, 2 | 204 | 544 |
|
|
|
|
| 4, 4 | 7265 | 32674 |
|
|
|
|
| 6, 6 | 113464 | 664234 |
|
|
|
|
| 8, 8 | 1073226 | 7405654 |
|
|
|
|
| 10, 10 | 7212128 | 55762000 |
|
|
|
|
|
|
|
|
** Considerazioni su Fork/Join
|
|
|
|
Lo slave di tipo 1 processa una sola richiesta alla volta.
|
|
|
|
Il master in attesa del risultato (M2) potrebbe ricevere il risultato
|
|
|
|
di un lavoro richiesto da un altro master.
|
|
|
|
|
2020-05-03 18:13:53 +02:00
|
|
|
** TODO P e T invarianti
|
|
|
|
Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
|
|
|
|
|
|
|
|
[[./semiflowsBT.jpg]]
|
|
|
|
[[./semiflowsBP.jpg]]
|
|
|
|
|
|
|
|
Gli P-invarianti sono i seguenti:
|
|
|
|
| S0 + S1_a + S2_a + S3
|
|
|
|
| S0 + S1_b + S2_b + S3
|
|
|
|
| R0 + R1 + R2 + R3
|
|
|
|
| M0 + M1 + M2 + M3
|
|
|
|
| S1_a + S2_a + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultato
|
|
|
|
| S1_b + S2_b + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 + Risultbto
|
|
|
|
Gli T-invarianti sono i seguenti:
|
|
|
|
\[
|
|
|
|
Inizio_servizio_R + azione_locale_R + \\
|
|
|
|
Fine_servizio_R + Reset_R + azione_locale_m + Richiesta_servizio + \\
|
|
|
|
Attesa_elaborazione + Reset_M + Scelta_2
|
|
|
|
\]
|
|
|
|
\[
|
|
|
|
Inizio_servizio_S + azione_locale_sa + azione_locale_sb + \\
|
|
|
|
Fine_servizio_S + Reset_s + azione_locale_m + Richiesta_servizio + \\
|
|
|
|
Attesa_elaborazione + Reset_m + Scelta_1
|
|
|
|
\]
|
|
|
|
|
|
|
|
Dato che la reteB e` interamente coperta dagli P-semiflussi, possiamo
|
|
|
|
affermare che la rete sia bounded.
|
|
|
|
[ ] Deadlock
|
|
|
|
[ ] Liveness
|
|
|
|
|
2020-05-01 19:18:26 +02:00
|
|
|
* Rete C
|
|
|
|
Due master identici, uno slave di tipo 1 e uno slave di tipo 1 scelti
|
|
|
|
liberamente dai master.
|
|
|
|
|
|
|
|
#+CAPTION: Modello della reteC
|
|
|
|
[[./reteC.jpg]]
|
|
|
|
|
|
|
|
La figura rappresenta la rete di Petri P/T dell'esercizio C. Il master
|
|
|
|
è modellato dai posti M0, M1, M2, M3 e dalle transizioni
|
|
|
|
Azione_Locale, Richiesta_Servizio, Attesa_Elaborazione e Reset_M
|
|
|
|
Lo slave di tipo 1 è modellato dai posti S0, S1_a, S1_b, S2_a, S2_b e
|
|
|
|
S3 e dalle transizioni Inizio_Servizio, Azione_Locale_Sa,
|
|
|
|
Azione_Locale_Sb, Fine_Servizio e Reset_S (il secondo master e` una
|
|
|
|
copia del primo).
|
|
|
|
Lo slave di tipo 2 è modellato dai posti R0, R1_a, R1_b, R2_a, R2_b e
|
|
|
|
R3 e dalle transizioni Inizio_Servizio_R, Azione_Locale_R, Fine_Servizio e Reset_R.
|
|
|
|
La richiesta del servizio
|
|
|
|
verso lo slave scelto e` gestita attraverso due buffer, posti
|
|
|
|
FreeChoice e Risultato.
|
2020-05-03 18:13:53 +02:00
|
|
|
** TODO P e T invarianti
|
|
|
|
Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
|
|
|
|
|
2020-05-06 19:16:51 +02:00
|
|
|
[[./semiflowsCT.jpg]]
|
|
|
|
[[./semiflowsCP.jpg]]
|
2020-05-03 18:13:53 +02:00
|
|
|
|
|
|
|
Gli P-invarianti sono i seguenti:
|
2020-05-06 19:16:51 +02:00
|
|
|
- S0 + S1ₐ + S2ₐ + S3
|
|
|
|
- S0 + S1_{b} + S2_{b} + S3
|
|
|
|
- R0 + R1 + R2 + R3
|
|
|
|
- M0 + M1 + M2 + M3
|
|
|
|
- copy_M0 + copy_M1 + copy_M2 + copy_M3
|
|
|
|
- S1ₐ + S2ₐ + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 +
|
|
|
|
Risultato + copy_M0 + copy_M1 + copy_M3
|
|
|
|
- S1_{b} + S2_{b} + R1 + R2 + M0 + M1 + M3 + Freechoice + P0 + P1 +
|
|
|
|
Risultato + copy_M0 + copy_M1 + copy_M3
|
|
|
|
|
2020-05-03 18:13:53 +02:00
|
|
|
Gli T-invarianti sono i seguenti:
|
2020-05-06 19:16:51 +02:00
|
|
|
- Inizio_Servizioᵣ + Azione_Locale + Fine_Servizioᵣ + T3 +
|
|
|
|
azione_localeₘ + Richiesta_Servizio + Attesa_Elaborazione + Reset_M + Scelta₁
|
|
|
|
- Inizio_Servizioₛ + Azione_Locale_{sa} + Azione_Locale_{sb} + Fine_Servizioₛ + T3 +
|
|
|
|
azione_localeₘ + Richiesta_Servizio + Attesa_Elaborazione +
|
|
|
|
Reset_M + Scelta₁
|
|
|
|
- Inizio_Servizioᵣ + Azione_Locale + Fine_Servizioᵣ + T3 + Scelta₂ +
|
|
|
|
copyₐzione_localeₘ + copy_Richiesta_Servizio +
|
|
|
|
copy_Attesa_Elaborazione + copy_Resetₘ
|
|
|
|
- Inizio_Servizioₛ + Azione_Locale_{sa} + Azione_Locale_{sb} +
|
|
|
|
Fine_Servizioₛ + Reset + Scelta₁ + copy_azione_localeₘ +
|
|
|
|
copy_Richiesta_Servizio + copy_Attesa_Elaborazione + copy_Resetₘ
|
2020-05-03 18:13:53 +02:00
|
|
|
|
|
|
|
[ ] Deadlock
|
|
|
|
[ ] Liveness
|
2020-05-01 19:18:26 +02:00
|
|
|
|
|
|
|
* Rete D
|
|
|
|
Due master identici, uno slave di tipo 1 e uno slave di tipo 1 scelti
|
|
|
|
associati ciascuno ad un master diverso.
|
|
|
|
|
2020-05-03 18:13:53 +02:00
|
|
|
#+CAPTION: Modello della reteD
|
2020-05-01 19:18:26 +02:00
|
|
|
[[./reteD.jpg]]
|
2020-05-03 18:13:53 +02:00
|
|
|
|
2020-05-06 19:16:51 +02:00
|
|
|
** P e T invarianti
|
|
|
|
Tramite GreatSPN possiamo calcolare gli T- e P- semiflussi
|
|
|
|
|
|
|
|
[[./semiflowsDT.jpg]]
|
|
|
|
[[./semiflowsDP.jpg]]
|
|
|
|
|
|
|
|
Gli P-invarianti sono i seguenti:
|
|
|
|
- S0 + S1ₐ + S2ₐ + S3
|
|
|
|
- S0 + S1_{b} + S2_{b} + S3
|
|
|
|
- R0 + R1 + R2 + R3
|
|
|
|
- M0 + M1 + M2 + M3
|
|
|
|
- S1ₐ + S2ₐ + M0 + M1 + M3 + Bufferₛ + Risultato
|
|
|
|
- S1_{b} + S2_{b} + M0 + M1 + M3 + Bufferₛ + Risultato
|
|
|
|
- M0₂ + M1₂ + M3₂
|
|
|
|
- R1 + R2 + M0₂ + M1₂ + M3₂ + Buffer₂ + Risultato₂
|
|
|
|
Gli T-invarianti sono i seguenti:
|
|
|
|
- Inizio_Servizioₛ + azione_locale_{sa} + azione_locale_{sb} +
|
|
|
|
Fine_Servizioₛ + Reset + azione_localeₘ + Richiesta_Servizio +
|
|
|
|
Attesa_Elaborazione + Resetₘ
|
|
|
|
- Inizio_Servizioᵣ + Azione_locale + Fine_Servizioᵣ + T3
|
|
|
|
azione_locale_{m2} + Richiesta_Servizio₂ + Attesa_Elaborazione₂ + Reset_{m2}
|
2020-05-06 18:06:30 +02:00
|
|
|
** Decision Diagram
|
|
|
|
L'efficacia dei decision diagram sulla generazione dello stato degli
|
|
|
|
spazi dipende fortemente dall'ordine delle variabili.
|
|
|
|
Di seguito vengono mostrati i decision diagram usando per le
|
|
|
|
assegnazioni i seguenti algoritmi:
|
|
|
|
- Sloan: un algoritmo di riduzione della banda di matrici sparse con
|
|
|
|
una buona performance
|
|
|
|
- (advanced) Cuthill-McKee: un altro algoritmo di riduzione della banda di
|
|
|
|
matrici sparse
|
|
|
|
- Tovchigrechko e Noack: due algoritmo appositamente ideati per le reti
|
|
|
|
di Petri, anch'essi con una buona performance
|
|
|
|
- P-chaining: un algoritmo che sfrutta le informazioni strutturali
|
|
|
|
della rete ma ha una bassa performance
|
|
|
|
- Gradient-P
|
|
|
|
- Gibbs-Poole-Stockmeier: un altro algoritmo matriciale che nella rete
|
|
|
|
in analisi ha restituito il risultato peggiore
|
|
|
|
|
|
|
|
[[./diagrammi/sloan.jpg]]
|
|
|
|
[[./diagrammi/mckee.jpg]]
|
|
|
|
[[./diagrammi/tovchi.jpg]]
|
|
|
|
[[./diagrammi/noack.jpg]]
|
|
|
|
[[./diagrammi/p-chain.jpg]]
|
|
|
|
[[./diagrammi/gradient.jpg]]
|
|
|
|
[[./diagrammi/gibbs.jpg]]
|