Differenza tra alberi decisionali e alberi comportamentali per l'IA di gioco


64

Quali sono alcune differenze tra alberi decisionali e alberi comportamentali per lo sviluppo di giochi di intelligenza artificiale? Per quali applicazioni useresti l'una rispetto all'altra?

Risposte:


80

I due sono piuttosto diversi. Il vero indicatore è nei nomi. Gli alberi decisionali sono solo per prendere decisioni. Gli alberi del comportamento servono per controllare il comportamento. Mi permetta di spiegare. Una grande differenza nei due è il modo in cui vengono attraversati, allo stesso modo il modo in cui sono disposti e i "tipi" di nodo sono diversi.

Gli alberi decisionali vengono valutati dalla radice alla foglia, ogni volta. Affinché un albero decisionale funzioni correttamente, i nodi figlio di ciascun genitore devono rappresentare tutte le possibili decisioni per quel nodo. Se è possibile rispondere a un nodo "Sì, No, Forse", devono esserci tre figli, nodo Sì, nessun nodo e forse nodo. Ciò significa che c'è sempre qualche nodo inferiore da attraversare, fino a raggiungere un nodo finale. La traversata è sempre in discesa. Forma grafica:

inserisci qui la descrizione dell'immagine

Abbastanza semplice. Partiamo dalla radice e, sulla base di una valutazione, scegliamo 1, 2 o 3. Scegliamo 3. Quindi facciamo un'altra valutazione e scegliamo B o B ... Bene, ho riutilizzato l'immagine dal basso, scusate. Fai finta che la B a sinistra sia la magia B.

Gli alberi comportamentali hanno una valutazione diversa. La prima volta che vengono valutati (o ripristinati) iniziano dalla radice (i nodi principali agiscono come selettori) e ogni figlio viene valutato da sinistra a destra. I nodi figlio sono ordinati in base alla loro priorità. Se vengono soddisfatte tutte le condizioni di un nodo figlio, il suo comportamento viene avviato. Quando un nodo avvia un comportamento, quel nodo è impostato su "in esecuzione" e restituisce il comportamento. La prossima volta che l'albero viene valutato, controlla di nuovo i nodi con la priorità più alta, quindi quando si tratta di un nodo 'in esecuzione', sa riprendere da dove era stato interrotto. Il nodo può avere una sequenza di azioni e condizioni prima di raggiungere uno stato finale. Se una condizione non riesce, l'attraversamento ritorna al genitore. Il selettore padre passa quindi al successivo figlio prioritario. Proverò qui una forma grafica:

inserisci qui la descrizione dell'immagine

La traversata inizia alla radice, va al bambino 1, controlla le condizioni del bambino (qualcosa come "eventuali nemici vicini?"). La condizione non riesce e l'attraversamento si sposta sull'albero per passare al nodo due. Il nodo 2 ha un'azione eseguita (forse qualcosa come trovare un percorso). Quindi un comportamento (qualcosa come seguire il percorso). Il seguente percorso è impostato su running e l'albero restituisce il suo stato come running. I nodi non riusciti o completati vengono restituiti a "Pronto". Quindi la prossima volta che controlliamo, ricominciamo con il nodo con la priorità più alta. Fallisce di nuovo, quindi procediamo al nodo due. Lì scopriamo che abbiamo un comportamento in esecuzione. Troviamo anche che il comportamento è stato completato, quindi lo contrassegniamo come completato e lo restituiamo. L'albero viene quindi ripristinato e pronto per ricominciare.

Come puoi vedere, gli alberi del comportamento sono più complessi. Gli alberi del comportamento sono più potenti e consentono comportamenti più complessi. Gli alberi decisionali sono facili da capire e da implementare. Quindi, useresti gli alberi comportamentali quando desideri un comportamento più complesso o un maggiore controllo sul comportamento. Gli alberi decisionali possono essere utilizzati come parte di un albero del comportamento o utilizzati da soli per un'intelligenza artificiale semplice.

Una buona comprensione di come vengono analizzati gli alberi di comportamento può essere trovata qui .


Grande spiegazione e illustrazioni. Quindi quando dici "Se tutte le condizioni di un nodo figlio sono soddisfatte ..." i Selettori e le Sequenze contengono condizioni o solo nodi foglia, cioè le Azioni?
Lancer gratuito il

1
I nodi figlio sono comportamenti, azioni, condizioni o selettori con più figli. Sono valutati da sinistra a destra.
MichaelHouse

Ottimo post, anche se penso di avere ancora una domanda eccezionale (pubblicherò separatamente). Cosa hai usato per creare le GIF animate?
io--

0-2-A non dovrebbe essere riprodotto di nuovo se 0-2-B è in esecuzione ??? github.com/pirobot/pi_trees/issues/1
devside

@ nopnop77 Non se il condizionale 0-2 restituisce ancora 0-2-B. Puoi vedere che 0-2 viene rivalutato, ma ancora una volta non risulta che A sia selezionato.
MichaelHouse
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.