ASM multi-agente sincrone Una ASM multi

Transcript

ASM multi-agente sincrone Una ASM multi
ASM multi-agente sincrone
Una ASM multi-agente sincrona è definita come un insieme di
agenti che eseguono la loro ASM in parallelo. Questi sono
sincronizzati utilizzando un clock di sistema globale
Semanticamente una ASM multi-agente sincrona è equivalente
all’insieme di tutti i suoi costituenti ad agente singolo che operano
negli stati globali (sull’unione delle segnature di ogni componente)
Lo stato globale viene ottenuto dall’unione delle segnature di ogni
componente interpretando opportunamente variabili e funzioni
L’utilità pratica delle ASM sync. deriva dalla possibilità di fornire
ad ogni agente il suo insieme di stati e di regole e di definire ed
analizzare l’interazione fra le componenti utilizzando delle precise
interfacce sulle locazioni comuni
1
Le funzioni dinamiche nelle ASM multi-agente sincrone
Funzioni monitorate: gestiscono gli input che arrivano alla
macchina multi-agente
Funzioni output: gestiscono gli output che la macchina
multi-agente invia all’esterno
Funzioni controllate: eseguono le computazioni interne alle
sotto-macchine
Funzioni condivise: gestiscono le comunicazioni fra i moduli
della macchina multi-agente e le comunicazioni della macchina
con l’esterno
2
Esempi di ASM multi-agente sincrone
• Production cell case study
Software di controllo di una cellula produttiva di un impianto
industriale
• Railroad crossing problem
Software di controllo delle barre di un passaggio a livellov
Sono state dimostrate le proprietà di safety, liveness insieme ai
requisiti di performance.
3
Real-time controller ASM
Le real-time controller ASM fanno mediazione fra processi
continui e le computazioni discrete che li controllano.
Per i software controller di processi real-time vi sono
• problemi di campionamento
• problemi di sincronizzazione
Per garantire degli stati stabili per leggere gli input, per
l’esecuzione di passi interni controllati, per inviare gli output, molti
sistemi di controllo dei processi sono basati sul Principio di
separazione Environment-Controller.
4
Principio di separazione Environment-Controller
In ogni momento, il software controller
• o prende l’input dall’ambiente (senza coinvolgere alcun passo di
computazione interna),
• oppure fa un passo di computazione interna, includendo la
preparazione del prossimo output da spedire, senza coinvolgere
alcuna ulteriore lettura di input
La sua idoneità per il controllo del sistema fisico dipende dalla
correttezza del meccanismo di campionamento e da una velocità
hardware sufficiente da garantire l’esecuzione in tempo dei passi di
controllo interni (rispetto alla frequenza di campionamento)
5
Real-time controller ASM
Una real-time controller ASM M ha le stesse caratteristiche delle
altre ASM, eccetto che il vocabolario di M , Σ, contiene un
simbolo funzionale nullario CT .
CT viene interpretata negli stati della macchina come un numero
reale. Intuitivamente il valore di CT restituisce il tempo corrente
Una computazione R di una real-time controller ASM M è una
mappa dall’intervallo [0, ∞) all’insieme degli stati di M tale che
• Ad ogni R(t), CT viene valutato come t
• Per ogni τ > 0 c’è una sequenza finita 0 = t0 < . . . < tn = τ
tale che se ti < α < β < ti+1, allora ρ(α) = ρ(β)
6
Real-time controller ASM
Un momento t è significativo per R se
1. t = 0 oppure
2. t > 0 e ρ(t) 6= ρ(t−) oppure ρ(t) 6= ρ(t+)
Inoltre
• Il valore di una variabile (funzione) v al momento t è il valore di
v in R(t)
Allo stesso modo parliamo di un intervallo di tempo I (v vale in I
se vale ad ogni t ∈ I)
7
Railroad crossing problem
Il sistema deve far funzionare una barriera ad un passaggio a livello
• Un insieme di treni viaggia su binari multipli in entrambe le
direzioni
• Ogni binario ha quattro sensori, che determinano quando un
treno entra nel passaggio o ne esce
– L1, L2 per i treni che vengono dalla sinistra
– R1, R2 per i treni che vengono dalla destra
• Basandosi sui segnali provenienti dai sensori, il controllore
automatico manda un segnale alla barriera perchè questa si
apra oppure si chiuda
8
Railroad crossing problem
Il problema è il design di un controllore che garantisca i seguenti
requisiti
Safety: Se un treno è sul passaggio la barriera è chiusa
Liveness: Il cancello è aperto il più possibile (per tutto il tempo
che nessun treno si trova sul passaggio)
Riguardo ai possibili movimenti dei treni si possono fare diverse
assunzioni (es.: se un treno appare da sinistra, lascia il passaggio a
destra,..)
9
Assunzioni riguardanti il movimento dei treni
Per ogni binario c’è una sequenza finita o infinita di momenti
(numeri reali) t0 < t1 < t2 < . . . che soddisfano le seguenti
proprietà
• Stato iniziale: il momento t0 è il momento iniziale. Il
segmento di binario osservato [L1, R1] è vuoto
• Modello del treno: Se t3i+1 appare nella sequenza, allora
t3i+3 appare nella sequenza ed abbiamo che
– a t3i+1, un treno entrante viene determinato nel punto L1
oppure nel punto R1
– a t3i+2 il treno raggiunge il passaggio, e
– a t3i+3 viene segnalato che il treno ha lasciato il passaggio
nei punti L2, R2 rispettivamente
10
• Completezza La sequenza t0 < t1 < . . . copre esattamente i
treni che appaiono sul binario considerato (non ci sono altri
treni)
Assunzioni aggiuntive:
Dal momento in cui un treno viene localizzato, il treno impiega un
tempo fra dmin e dmax per raggiungere il passaggio.
1. Ogni differenza t3i+2 − t3i+1 appartiene all’intervallo
[dmin, dmax]
2. Non c’è alcun intervallo I = (t, t + dclose ) (rispettivamente
I = (t, t + dopen )) durante il quale il segnale di chiudere (di
aprire) sia valido ma la barriera non è chiusa (aperta) in ogni
momento di I.
3. dclose < dmin
11
Railroad crossing problem
TrackCTL = forall x ∈ TRACK
SetDeadline(x)
SignalClose(x)
ClearDeadline(x)
SignalOpen
where
SetDeadline(x) = if TrackStatus(x) = coming and
Deadline(x) = ∞ then
Deadline(x) := CT + W T
SignalClose(x) = if CT = Deadline(x) then
Dir := close
12
Railroad crossing problem
ClearDeadline(x) = if TrackStatus(x) = empty and
Deadline(x) < ∞ then
Deadline(x) := ∞
SignalOpen = if Dir = close and SafeToOpen then
Dir := open
GateCtl=Switch((Dir =open, opened ), (Dir=close, closed ))
13