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