Level of Autonomy
I livelli di autonomia definiscono il comportamento degli agenti presenti all’interno di una scena.
Un agente guidato è quello definito da un processo o un comportamento esterno (ad esempio apertura porte automatiche quando un altro agente si avvicina)
Un agente programmato è quello definito da ???
Un agente autonomo è presente quando un agente acquisisce informazioni sugli oggetti e agenti che lo circondano per determinare il proprio comportamento.L’autonomia di un agente si basa sulla percezione visiva, azioni esterne e altre regole comportamentali quali eventualmente necessita
Link to original
Quando più agenti si uniscono in un gruppo di agenti creano una folla, che generalmente si comporta in maniera diversa rispetto a come si comporta il singolo individuo.
Esistono diversi algoritmi che permettono la modellazione del comportamento in real time come Behaviour Tree, Finite State Machine e Goal Oriented Action Planning.
Finite State Machine
Il modello teorico prevede la definizione di alcuni stati collegati tra loro e delle condizioni che agiscono da trigger il passaggio di stato.
La macchina a stati finiti è una macchina astratta che può trovarsi esattamente in uno di un numero finito di stati in un dato momento. L’FSM può cambiare da uno stato all’altro in risposta ad alcuni input; Il passaggio da uno stato all’altro è chiamato transizione. Un FSM è definito da un elenco dei suoi stati, del suo stato iniziale e degli input che attivano ogni transizione. Le macchine a stati finiti sono di due tipi: macchine a stati finiti deterministiche e macchine a stati finiti non deterministiche. Per ogni macchina a stati finiti non deterministica, può essere costruita una macchina deterministica equivalente.
L’idea della macchina a stati finiti è molto semplice, ma è poco scalabile. Per numeri di stati grandi il numero di transizioni diventa altrettanto alto e quindi è difficile da usare per sistemi complessi.
Link to original
Behaviour Tree
Un behaviour tree è un albero gerarchico di nodi ed edge (quindi in struttura Parent-Child-Leaves).
Solo le foglie definiscono lo stato attuale, mentre i child verificano soltanto delle condizioni.
A differenza di una macchina a stati finiti o di altri sistemi utilizzati per la programmazione dell’intelligenza artificiale, un albero del comportamento è un albero di nodi gerarchici che controllano il flusso del processo decisionale di un’entità di intelligenza artificiale. Alle estensioni dell’albero, le foglie, sono i comandi effettivi che controllano l’entità IA, e a formare i rami ci sono vari tipi di nodi di utilità che controllano la camminata dell’IA lungo gli alberi per raggiungere le sequenze di comandi più adatte alla situazione.
Gli alberi possono essere estremamente profondi, con nodi che chiamano sottoalberi che svolgono funzioni particolari, consentendo allo sviluppatore di creare librerie di comportamenti che possono essere concatenati insieme per fornire un comportamento dell’IA molto convincente. Lo sviluppo è altamente iterabile, in cui è possibile iniziare formando un comportamento di base, quindi creare nuovi rami per gestire metodi alternativi per raggiungere gli obiettivi, con rami ordinati in base alla loro desiderabilità, consentendo all’IA di avere tattiche di ripiego nel caso in cui un particolare comportamento fallisca. È qui che brillano davvero.
I nodi di composizione possono essere di tipo:
- selector se rispondono alla domanda lungo quale child devo proseguire? (comportamento logico OR)
- sequence se realizzano un flusso di esecuzione di tutti i child uno dopo l’altro, da sinistra verso destra (comportamento logico AND)
- parallel se esegue più flussi di azioni in parallelo.
Esistono anche dei nodi decorator che modificano leggermente il comportamento delle azioni eseguite, come:
Link to original
- repeat per ripetere azioni
- not per negare una condizione
Utility AI
Questo tipo di intelligenza artificiale cerca di analizzare stimoli esterni e bisogni esterni per prendere decisioni autonome sul come risolvere i proprio bisogni.
Ogni agente ha una serie di bisogni (fame, socializzazione, igiene, energia, ecc.) che diminuiscono nel tempo fino a diventare una priorità, che diventerà il focus dell’agente. Si usa una funzione di scoring che assegna un punteggio a tutte le azioni possibili in base a bisogni, desideri, durata dell’azione e contesto per ordinare le azioni dalla più urgente alla meno urgente.
Approfondimenti
Link to original
Goal Oriented Action Planning
Il Goal Oriented Action Planning deriva dall’Automated Planning
Automated Planning
L’automated planning è un tipo di algoritmo di intelligenza artificiale per cui un sistema cerca autonomamente la migliore sequenza di azioni che possa permettere al sistema di raggiungere un obbiettivo imposto dal designer.
La sequenza di azioni realizzata dal sistema è chiamata piano di azione.Questo può essere realizzato tramite la codifica del mondo e dell’ambiente con un’insieme di informazioni che lo riguardano detti fatti.
L’insieme di tutti i fatti in un determinato momento temporale è detto stato.Le azioni vengono modellizzate tramite tre componenti:
Link to original
- Gli oggetti che fanno parte dell’azione
- Le precondizioni che devono essere vere perché l’azione possa avvenire
- Gli effetti sullo stato e come l’azione modifica i fatti conosciuti
In questo tipo di IA le FSM hanno tre classi di stati:
- Movimento all’interno del mondo virtuale (che può includere un’animazione)
- Riproduzione di un’animazione
- Interazione con un oggetto nel mondo virtuale
Ogni IA deve avere assegnato uno o più obbiettivi (ognuno con una propria priorità) che vengono modellizzati come un insieme di azioni necessarie per raggiungerli.
Azioni e Obbiettivi
Ad esempio per aprire una porta presente in cucina, mentre si è nella camera da letto, sarà necessario muoversi in una delle due stanze che la porta collega e poi interagire con la porta per aprirla.
Quale sia il planning migliore in questo caso può essere stabilito conoscendo a priori quale delle due stanze è più vicina all’NPC.Questo non è sufficiente per avere un’IA abbastanza “intelligente”, in quanto in presenza di più agenti lo stato del mondo può cambiare anche per effetto di un altro agente (o del giocatore stesso). Bisogna quindi effettuare dei check di verifica di compatibilità del piano di azione sia prima della sua formulazione, che quando lo stato del mondo cambia e durante l’esecuzione dell’azione .
Approfondimenti
Link to original

