Diferencia entre árboles de decisión y árboles de comportamiento para el juego AI

64

¿Cuáles son algunas diferencias entre los árboles de decisión y los árboles de comportamiento para el desarrollo de juegos de IA? ¿Para qué aplicaciones usarías una sobre la otra?

Lancer gratis
fuente

Respuestas:

80

Los dos son bastante diferentes. El indicador real está en los nombres. Los árboles de decisión son solo para tomar decisiones. Los árboles de comportamiento son para controlar el comportamiento. Permíteme explicarte. Una diferencia importante en los dos es la forma en que se atraviesan, del mismo modo en que están dispuestos y los 'tipos' de nodos son diferentes.

Los árboles de decisión se evalúan de raíz a hoja, siempre. Para que un árbol de decisión funcione correctamente, los nodos secundarios de cada padre deben representar todas las decisiones posibles para ese nodo. Si un nodo puede ser respondido "Sí, No, Quizás", debe haber tres hijos, Sí nodo, No nodo y Quizás nodo. Esto significa que siempre hay un nodo inferior para atravesar, hasta llegar a un nodo final. El recorrido siempre está hacia abajo. Forma gráfica:

ingrese la descripción de la imagen aquí

Bastante simple. Comenzamos en la raíz, y en base a alguna evaluación, elegimos 1, 2 o 3. Elegimos 3. Luego hacemos otra evaluación y elegimos B o B ... Bueno, reutilicé el gráfico de abajo, lo siento. Imagina que la B de la izquierda es la magia B.

Los árboles de comportamiento tienen una evaluación diferente. La primera vez que se evalúan (o se restablecen) comienzan desde la raíz (los nodos principales actúan como selectores) y cada elemento secundario se evalúa de izquierda a derecha. Los nodos secundarios se ordenan según su prioridad. Si se cumplen todas las condiciones de un nodo secundario, se inicia su comportamiento. Cuando un nodo inicia un comportamiento, ese nodo se establece en "ejecución" y devuelve el comportamiento. La próxima vez que se evalúa el árbol, vuelve a verificar los nodos de mayor prioridad, luego, cuando se trata de un nodo 'en ejecución', sabe retomar donde lo dejó. El nodo puede tener una secuencia de acciones y condiciones antes de alcanzar un estado final. Si alguna condición falla, el recorrido vuelve al padre. El selector principal pasa al siguiente elemento secundario prioritario. Intentaré una forma gráfica aquí:

ingrese la descripción de la imagen aquí

El recorrido comienza en la raíz, va al niño 1, verifica la condición del niño (algo así como "¿algún enemigo cercano?"). La condición falla y el recorrido retrocede hacia arriba del árbol para pasar al nodo dos. El nodo 2 tiene una acción que se realiza (tal vez algo como encontrar un camino). Luego un comportamiento (algo como seguir el camino). La siguiente ruta se establece en ejecución y el árbol devuelve su estado como en ejecución. Los nodos que fallaron o se completaron se devuelven a 'Listo'. Luego, la próxima vez que verifiquemos, comenzamos nuevamente con el nodo de mayor prioridad. Falla nuevamente, así que procedemos al nodo dos. Allí encontramos que tenemos un comportamiento en ejecución. También encontramos que el comportamiento se ha completado, por lo que lo marcamos como completado y lo devolvemos. El árbol se reinicia y está listo para funcionar nuevamente.

Como puede ver, los árboles de comportamiento son más complejos. Los árboles de comportamiento son más poderosos y permiten un comportamiento más complejo. Los árboles de decisión son fáciles de entender y de implementar. Por lo tanto, usaría árboles de comportamiento cuando desee un comportamiento más complejo o más control sobre el comportamiento. Los árboles de decisión se pueden usar como parte de un árbol de comportamiento o solo para una IA simple.

Aquí se puede encontrar una buena comprensión de cómo se analizan los árboles de comportamiento .

MichaelHouse
fuente
Gran explicación e ilustraciones. Entonces, cuando dice "Si se cumplen todas las condiciones de un nodo secundario ...", ¿los selectores y las secuencias contienen condiciones o solo nodos hoja, es decir, las acciones?
Gratis Lancer
1
Los nodos secundarios son comportamientos, acciones, condiciones o selectores con más elementos secundarios. Se evalúan de izquierda a derecha.
MichaelHouse
Gran publicación, aunque creo que todavía tengo una pregunta pendiente (publicaré por separado). ¿Qué usaste para crear los GIF animados?
yo--
¿No debería volver a jugar 0-2-A si se ejecuta 0-2-B? github.com/pirobot/pi_trees/issues/1
devside
@ nopnop77 No si el condicional 0-2 todavía se evalúa como 0-2-B. Puede ver que 0-2 se reevalúa, pero una vez más no da como resultado que se seleccione A.
MichaelHouse