ro di ore, mangiare con regolarit`a) o all’aderenza a terapie per malattie specifiche (prendere le pillole a determinate ore, fare degli esercizi di ria-bilitazione) sono inserite nel sistema, in quanto sono le uniche a dover essere monitorate per garantire uno stile di vita sano: in pazienti che po-trebbero avere delle dimenticanze oppure abitudini poco regolari questo `
e fondamentale. L’aspetto principale `e non costringere il paziente a ri-spettare a tutti i costi la lista di attivit`a preventivate, fatto che porrebbe restrizioni inaccettabili nella vita di tutti i giorni. Il sistema risponde a questa esigenza grazie ad un utilizzo intelligente dei vincoli temporali precedentemente descritti, come durata e tempi di inizio e fine variabili, in modo da far rispettare in linea di massima la scaletta delle attivit`a senza risultare pressante. Questo requisito `e fondamentale quando si ha a che fare con modellizzazioni matematiche del comportamento umano, che richiede grande capacit`a di adattamento alle situazioni che di volta in volta vengono a crearsi e possono presentare molte diversit`a, come esposto in [18] e [12].
3.3 Algoritmo di gestione del planning
Una volta specificati i limiti temporali e tradotti in una scaletta giorna-liera, il sistema inizia il monitoraggio delle varie azioni svolte dal paziente nell’ambiente in cui si muove. Ai sensori vengono periodicamente richie-sti i dati, e ad ogni ciclo la programmazione nominale delle attivit`a viene modificata in base ai dati ricevuti: viene verificato che l’assistito stia svol-gendo o meno determinate azioni combinando i dati rilevati dai sensori ambientali, e se esse siano svolte in ritardo o in anticipo. Ogni violazione dei vincoli costituisce un evento che viene registrato e immagazzinato (ma non necessariamente segnalato all’utente) dal sistema. Nella Figura 12, tratta da [16], si riporta l’implementazione dell’algoritmo che gestisce il ciclo di rilevazione delle attivit`a e loro adattamento istante per istante (l’algoritmo richiama vari metodi la cui specifica descrizione non viene qui approfondita).
L’idea di base `e quella di un ciclo eseguito periodicamente ad ogni rileva-zione sensoriale (while true della riga 1). St rappresenta la serie di dati rilevati dai sensori all’istante ’t’ corrente attraverso la deduzione Multi-Agent descritta precedentemente, e viene inserita nel set di eventi Eventst (riga 2). Se vi sono eventi rilevati (riga 3), l’activity monitor rimuove i vincoli attivi attraverso il metodo removeActiveConstraints e li inserisce nel set Cr,t (riga 4). I vincoli attivi sono tutti i vincoli relativi ad alme-no una attivit`a non ancora completata, che non verranno compresi nella successiva analisi della propagazione degli eventi in quanto non sono
re-3.3 Algoritmo di gestione del planning 3 ROBOCARE
Figura 12: Algoritmo per la gestione dell’esecuzione delle attivit`a monitorate.
lativi alla futura evoluzione del planning temporale. Nel prossimo passo, l’algoritmo utilizza il metodo insertContingencies per inserire nel piano delle attivit`a gli ulteriori vincoli dovuti alla rilevazione del set di eventi Eventst, cio`e quelli relativi allo stato attuale delle cose. In questo passo, il sistema aggiorna la pianificazione degli eventi per aderire maggiormen-te alla realt`a degli avvenimenti correnti: allo stato attuale, esso contiene solo i vincoli relativi agli eventi appena rilevati, in quanto i vincoli attivi sono stati rimossi e inseriti nel set Cr,t. Da qui, finch´e ve ne sono (riga 7), ne viene scelto uno (cj) attraverso il metodo chooseConstraint (riga 8) e viene tentato il suo reinserimento nel piano delle attivit`a con il metodo reinsertConstraint (riga 9). Quest’ultimo lancia un algoritmo che genera le conseguenze temporali del reinserimento del vincolo scelto nel piano, e restituisce una variabile booleana che contiene una risposta positiva o negativa a seconda che questo si possa fare o meno. Se cos`ı non `e, il set Kt raccoglie tutti i vincoli che sono stati scartati (riga 10).
`
E possibile dunque che una serie di vincoli che erano stati originaria-mente inclusi nella pianificazione oraria non possano pi`u essere rispet-tati a causa della rilevazione di determinati eventi nell’istante corrente, in quanto causerebbero una propagation failure nella catena di eventi. Il contenuto del set Kt `e quello che determina la risposta del sistema: quantitativamente, in quanto maggiore `e questo insieme, pi`u forte sar`a la richiesta di attenzione da parte dell’utente, dato che l’evento rilevato causa un maggior numero di violazioni nel rispetto del planning; qualita-tivamente, in quanto i vincoli contenuti in Kt si riferiscono a determinate azioni programmate e il sistema pu`o cos`ı ragguagliare l’utente su quali
3.3 Algoritmo di gestione del planning 3 ROBOCARE
attivit`a esso non riuscir`a a compiere, e quanto importante sar`a questa mancanza per la sua salute. Si riesce cos`ı ad ottenere una system initia-tive pi`u contestualizzata e mirata. L’algoritmo `e costruito in modo tale che in Kt ci siano solo vincoli che causano propagation failure (per evi-tare falsi positivi) e che la sua cardinalit`a sia massima (per non ignorare alcuna circostanza problematica).
Ma come fa l’algoritmo a scegliere quale vincolo reinserire e quale scartare? Se, per esempio, dopo un avvenimento Et il sistema tentas-se l’intentas-serimento contemporaneo di due vincoli c1 e c2 e questo generasse una contraddizione, al contrario dell’inserimento di uno solo dei due (inin-fluentemente), si sceglier`a di eliminare quello che `e temporalmente pi`u vicino all’istante in cui accade l’evento rilevato, reinserendo invece quel-lo pi`u lontano. Questo permette al sistema di monitoraggio RoboCare di essere il pi`u aderente possibile allo stato attuale degli avvenimenti: rimuovere un vincolo pi`u vicino permette di considerare con maggiore flessibilit`a il comportamento del paziente che si deve affrontare, invece di prevedere automaticamente (e, probabilmente, dover ricalcolare in segui-to) la conseguenza che questo avr`a sulle attivit`a future contenute nella pianificazione temporale.
Figura 13: Alcune frasi generate dalla violazione dei limiti. Il set Kt contiene anche l’indicazione del fatto che la violazione av-venga sul limite massimo o su quello minimo. Il sistema reagisce con frasi diverse a seconda di quale dei due venga violato (Fig.13), e anche a seconda che la violazione avvenga sulla durata di una attivit`a o sul tempo di inizio o fine dell’esecuzione della stessa; oppure, pu`o anche rea-gire con frasi diverse se un’attivit`a viene svolta prima di un’altra che dovrebbe avvenire pi`u tardi, e tiene conto dell’effetto che avranno i ritar-di sulle attivit`a future prendendo in considerazione i collegamenti fra le azioni pianificate successivamente. Per fare un esempio, se l’inizio di una certa attivit`a viene ritardato ma essa `e collegata ad un’altra seguente,