Pianificazione reattiva

Nell’intelligenza artificiale, la pianificazione reattiva denota un gruppo di tecniche per la selezione dell’azione da parte di agenti autonomi. Queste tecniche differiscono dalla pianificazione classica in due aspetti. In primo luogo, operano in modo tempestivo e quindi possono far fronte a ambienti altamente dinamici e imprevedibili. Secondo, calcolano solo una azione successiva in ogni istante, in base al contesto corrente. I pianificatori reattivi spesso (ma non sempre) sfruttano piani reattivi, che sono strutture memorizzate che descrivono le priorità e il comportamento dell’agente.

Anche se il termine pianificazione reattiva risale almeno al 1988, il termine “reattivo” è ora diventato un peggiorativo usato come un contrario per il proattivo. Poiché quasi tutti gli agenti che utilizzano la pianificazione reattiva sono proattivi, alcuni ricercatori hanno iniziato a fare riferimento alla pianificazione reattiva come pianificazione dinamica.

Rappresentazione del piano reattivo
Esistono diversi modi per rappresentare un piano reattivo. Tutti richiedono un’unità rappresentativa di base e un mezzo per comporre queste unità in piani.

Regole di azione condizionale (produzioni)
Una regola di azione condizionale, o regola if-then, è una regola nella forma: se condizione, quindi azione. Queste regole sono chiamate produzioni. Il significato della regola è il seguente: se la condizione è valida, eseguire l’azione. L’azione può essere esterna (ad esempio, prelevare qualcosa e spostarla) o interna (ad esempio, scrivere un fatto nella memoria interna o valutare un nuovo insieme di regole). Le condizioni sono normalmente booleane e l’azione può essere eseguita o meno.

Le regole di produzione possono essere organizzate in strutture relativamente piatte, ma più spesso sono organizzate in una gerarchia di qualche tipo. Ad esempio, l’architettura di sussunzione consiste in strati di comportamenti interconnessi, ciascuno in realtà una macchina a stati finiti che agisce in risposta a un input appropriato. Questi strati sono quindi organizzati in una pila semplice, con strati più alti che comprendono gli obiettivi di quelli inferiori. Altri sistemi possono utilizzare alberi o possono includere meccanismi speciali per modificare quale sottoinsieme obiettivo / regola è attualmente più importante. Le strutture piatte sono relativamente facili da costruire, ma consentono solo la descrizione di un comportamento semplice o richiedono condizioni estremamente complicate per compensare la mancanza di strutture.

Una parte importante di qualsiasi algoritmo di selezione delle azioni distribuite è un meccanismo di risoluzione dei conflitti. Questo è un meccanismo per risolvere i conflitti tra le azioni proposte quando più di una condizione delle regole’e contenuta in un dato istante. Il conflitto può essere risolto per esempio da

assegnando preventivamente priorità fisse alle regole,
assegnare le preferenze (ad esempio nell’architettura Soar),
apprendere le utilità relative tra le regole (ad esempio in ACT-R),
sfruttando una forma di pianificazione.
I sistemi esperti utilizzano spesso altre euristiche più semplici come la recency per la selezione delle regole, ma è difficile garantire un buon comportamento in un sistema di grandi dimensioni con approcci semplici.

La risoluzione dei conflitti è necessaria solo per le regole che vogliono prendere azioni che si escludono a vicenda (c. Blumberg 1996).

Alcune limitazioni di questo tipo di pianificazione reattiva possono essere trovate in Brom (2005).

Macchine a stati finiti
La macchina a stati finiti (FSM) è un modello di comportamento di un sistema. Gli FSM sono ampiamente usati nell’informatica. Il comportamento di modellazione degli agenti è solo una delle loro possibili applicazioni. Un tipico FSM, quando viene utilizzato per descrivere il comportamento di un agente, consiste in un insieme di stati e transizioni tra questi stati. Le transizioni sono in realtà regole di azione condizionale. In ogni istante, solo uno stato dell’FSM è attivo e le sue transizioni vengono valutate. Se viene presa una transizione, attiva un altro stato. Ciò significa che, in generale, le transizioni sono le regole nella seguente forma: se la condizione allora attiva-nuovo-stato. Ma le transizioni possono anche connettersi allo stato di “sé” in alcuni sistemi, per consentire l’esecuzione di azioni di transizione senza effettivamente cambiare lo stato.

Ci sono due modi per produrre un comportamento da parte di un FSM. Dipendono da ciò che è associato agli stati da un progettista — possono essere “atti” o script. Un ‘atto’ è un’azione atomica che dovrebbe essere eseguita dall’agente se il suo FSM è lo stato dato. Questa azione viene eseguita in ogni momento quindi. Tuttavia, più spesso è il secondo caso. Qui, ogni stato è associato a uno script, che descrive una sequenza di azioni che l’agente deve eseguire se il suo FSM è in un determinato stato. Se una transizione attiva un nuovo stato, il precedente script viene semplicemente interrotto e ne viene avviato uno nuovo.

Se uno script è più complicato, può essere suddiviso in diversi script e un FSM gerarchico può essere sfruttato. In tale automa, ogni stato può contenere sottostati. Solo gli stati a livello atomico sono associati a uno script (che non è complicato) oa un’azione atomica.

Computazionalmente, le FSM gerarchiche sono equivalenti alle FSM. Ciò significa che ogni FSM gerarchico può essere convertito in un FSM classico. Tuttavia, gli approcci gerarchici facilitano la progettazione. Vedi il documento di Damian Isla (2005) per un esempio di ASM di robot di giochi per computer, che utilizza FSM gerarchici.

Approcci sfocati
Sia le regole if-then che le FSM possono essere combinate con la logica fuzzy. Le condizioni, gli stati e le azioni non sono più booleani o “sì / no”, ma sono approssimativi e uniformi. Di conseguenza, il comportamento risultante passerà più agevolmente, specialmente nel caso di transizioni tra due attività. Tuttavia, la valutazione delle condizioni fuzzy è molto più lenta della valutazione delle loro controparti croccanti.

Guarda l’architettura di Alex Champandard.

Approcci di Connectionists
I piani reattivi possono essere espressi anche da reti connessioniste come reti neurali artificiali o gerarchie a flusso libero. L’unità di rappresentazione di base è un’unità con diversi collegamenti di input che alimentano l’unità con “un’attività astratta” e collegamenti di output che propagano l’attività alle unità successive. Ogni unità stessa funziona come trasduttore di attività. Tipicamente, le unità sono collegate in una struttura a strati.

I positivi delle reti connessioniste sono, in primo luogo, che il comportamento risultante è più agevole del comportamento prodotto da regole if-then e FSM, in secondo luogo, le reti sono spesso adattive e, terzo, è possibile utilizzare il meccanismo di inibizione e quindi il comportamento può essere anche descritto in modo descrittivo (per mezzo di regole si può descrivere il comportamento solo in modo prescrittivo). Tuttavia, i metodi hanno anche diversi difetti. Innanzitutto, per un designer, è molto più complicato descrivere il comportamento di una rete confrontando le regole if-then. In secondo luogo, si può descrivere solo un comportamento relativamente semplice, specialmente se si vuole sfruttare la funzione adattiva.

Algoritmi di pianificazione reattiva
Tipico algoritmo di pianificazione reattiva valuta solo le regole if-then o calcola lo stato di una rete connessionista. Tuttavia, alcuni algoritmi hanno caratteristiche speciali.

Valutazione di rete: con una corretta rappresentazione logica (che è adatta solo per regole croccanti), le regole non devono essere rivalutate in ogni momento. Invece, può essere usata una forma di cache che memorizza la valutazione dal passaggio precedente.
Linguaggi di scripting: A volte, le regole o le FSM sono direttamente i primitivi di un’architettura (ad esempio in Soar). Ma più spesso, i piani reattivi sono programmati in un linguaggio di scripting, in cui le regole sono solo una delle primitive (come in JAM o ABL).
Timone
Lo sterzo è una tecnica reattiva speciale utilizzata nella navigazione degli agenti. La forma più semplice di guida reattiva viene impiegata nei veicoli Braitenberg, che mappano gli ingressi dei sensori direttamente alle uscite effettore e possono seguire o evitare. Sistemi più complessi si basano su una sovrapposizione di forze attrattive o repulsive che agiscono sull’agente. Questo tipo di guida si basa sul lavoro originale sui boid di Craig Reynolds. Per mezzo dello sterzo, si può ottenere una semplice forma di:

verso un obiettivo di navigazione
ostacolo comportamento di evitamento
un comportamento seguente muro
nemico che si avvicina
evitamento dei predatori
comportamento della folla
Il vantaggio dello sterzo è che è molto efficiente dal punto di vista computazionale. Nei giochi per computer, centinaia di soldati possono essere guidati da questa tecnica. In casi di terreno più complicato (ad esempio un edificio), tuttavia, lo sterzo deve essere combinato con la ricerca del percorso (come ad esempio in Milani), che è una forma di pianificazione.