• Non ci sono risultati.

2.4 Il linguaggio di programmazione ad agenti Jason

2.5.3 Il fallimento di un piano

Gli approcci dei sistemi multi-agente per lo sviluppo software sono rivolti alle aree applicative dove l’ambiente `e dinamico e spesso non prevedibile. In tali ambienti, per l’agente sar`a frequente fallire un piano portando alla non realizzazione dello scopo che si era supposto di raggiungere. Per questo motivo, nello stesso modo con cui si forniscono piani agli agenti cos`ı che essi abbiano delle modalit`a d’azione alternative, tra cui scegliere nel momento in cui necessitano di raggiungere un obiettivo, nasce il bisogno di dare agli agenti piani che stabiliscono cosa fare quando si verifica il fallimento di un piano scelto. Questi piani vengono detti contingency plans.

Di seguito verranno descritte tre principali cause che possono portare al non raggiungimento di un piano.

• Mancanza di piani rilevanti o applicabili per la realizzazione di un achievement goal.

• Fallimento di un test goal. • Fallimento di una azione.

Mancanza di piani rilevanti o applicabili per la realizzazione di un achievement goal. Un agente si trova, nella circostanza corrente, a non sapere come rea-

lizzare i suoi desideri. Tale situazione si verifica quando ad un agente, durante l’esecuzione di un piano, viene richiesto di compiere un sotto- obiettivo che non sa come realizzare. Questo pu`o essere provocato da:

• mancanza di piani rilevanti; • mancanza di piani applicabili.

Nel primo caso l’agente non possiede le conoscenze richieste, poich´e non sono presenti piani rilevanti per i sotto-obiettivi. Il motivo `e che il programmatore non ha previsto il piano richiesto. Nel secondo caso tutti i modi conosciuti dall’agente per la realizzazione dell’obiet- tivo non possono essere attualmente impiegati. Ci sono piani rilevan- ti conosciuti, ma i loro contesti non soddisfano le credenze correnti dell’agente e cos`ı risultano momentaneamente inapplicabili.

Fallimento di un test goal. L’agente si aspetta di conoscere una certa propriet`a del mondo, ma in realt`a tale conoscenza non si trova nella base delle credenze. Tale mancanza `e in grado di influenzare il successo del piano. Se l’agente non riesce a rientrare in possesso dalla base delle credenze delle informazioni necessarie a soddisfare il test goal, l’interprete tenta di generare un evento per eseguire un altro piano in grado di recuperarle. Nel caso in cui anche questo approccio ha esito negativo (ad esempio per mancanza di piani rilevanti o applicabili) allora l’obiettivo test verr`a ritenuto fallito e di conseguenza il piano dove `e contenuto fallir`a.

Fallimento di una azione. In Jason vi sono due tipi di azioni: • interne;

• esterne, dette anche di base o di ambiente.

Le azioni interne prevedono l’utilizzo di metodi Java con valore di ri- torno booleano, mentre quelle esterne fanno uso di feedback booleani. Entrambi questi strumenti indicano se l’azione `e stata eseguita (true) o no (false).

Se una azione, sia interna che esterna, fallisce, di conseguenza fallisce anche il piano dove `e contenuta. Indipendentemente dalla ragione per cui un piano fallisce, l’interprete Jason genera un evento “goal deletion event”, con notazione -!g, per la cancellazione dell’obiettivo e, come risultato, tutti i piani che ne prevedono la realizzazione, +!g, falliscono.

Il compito di un piano per un goal deletion `e di eseguire una “pulizia approfondita”, infatti viene detto piano di “clean-up”. Pulire signifi- ca tornare indietro per capire le conseguenze provocate dalla scelta e dall’esecuzione del piano fallito ed eventualmente eliminarle. Un pos- sibile approccio `e quello di eseguire il “backtracking”, ovvero tentare un altro piano, detto alternativo o di recupero, per realizzare l’obiet- tivo per il quale il piano `e fallito. I programmi AgentSpeak, durante l’esecuzione di obiettivi e sotto-obiettivi, generano una sequenza di azioni che l’agente compie sull’ambiente esterno per modificarlo. Gli effetti di tali modifiche non possono essere semplicemente cancellati

eseguendo un backtracking, poich´e non basta solo annullare le azio- ni compiute, ma potrebbe essere richiesto di svolgerne sull’ambiente di ulteriori per riuscirci. I piani di recupero, infatti, possono essere strutturati in modo che, prima l’agente operi in modo da annullare le conseguenze di alcune azioni svolte prima del fallimento del piano, e solo dopo tenter`a nuovamente di realizzare quell’obiettivo. I piani di recupero vengono denotati dal goal deletions (-!g) come triggering events.

Nel caso in cui nessun piano di recupero sia previsto, allora l’obiettivo fallir`a in maniera definitiva, ovvero senza nessun altro tentativo. Il backtracking , si `e visto, che non `e un meccanismo automatico, ma se si specifica un piano come:

-!g : true <- !g.

si `e certi che il piano di recupero viene sempre eseguito, essendo il contesto pari a true, con tentativo di backtracking (!g).

Quando si verifica un fallimento di un piano, l’intera intenzione `e lasciata cadere. Solo nei casi in cui il triggering event del piano in ese- cuzione `e un achievement goal addition o un test goal addition, allora si pu`o tentare di recuperare il fallimento attraverso il “goal deletion construct”. Nei casi all’infuori dei goal addition (achievement goal o test goal), il fallimento di un piano comporta che l’intera intenzione non pu`o essere compiuta. Nel caso in cui fallisca un piano per un goal addition (achievement o test goal) l’intenzione i, dove quel pia- no appare, viene sospesa ed inserita nell’insieme degli eventi con il rispettivo evento goal deletion event -!g, i. Questo pu`o portare

al fatto che il test goal addition venga tentato di nuovo come parte del piano per gestire l’evento -!g. Quando un piano per -!g finisce, non solo se stesso ma anche il piano +!g fallisce e viene rimosso dalla intenzione.

Al programmatore spetta la scelta di:

• lasciare o rimuovere il piano dallo stack delle intenzioni. In par- ticolare esso potrebbe preferire mantenerli per esigenze di veri-

fica di quali azioni interne Jason ha compiuto in risposta allo specifico piano fallito;

• tentare di soddisfare nuovamente il goal, oppure lasciare cadere l’intera intenzione.

Documenti correlati