Différence entre les arbres de décision et les arbres de comportement pour Game AI


64

Quelles sont les différences entre les arbres de décision et les arbres de comportement pour le développement de jeux d'intelligence artificielle? Pour quelles applications utiliseriez-vous les unes sur les autres?

Réponses:


80

Les deux sont assez différents. Le véritable indicateur est dans les noms. Les arbres de décision servent uniquement à prendre des décisions. Les arbres de comportement servent à contrôler le comportement. Permettez-moi de vous expliquer. Une différence majeure entre les deux est la façon dont ils sont traversés, de même que la manière dont ils sont disposés et les types de nœud sont différents.

Les arbres de décision sont évalués à chaque fois de la racine aux feuilles. Pour qu'un arbre de décision fonctionne correctement, les nœuds enfants de chaque parent doivent représenter toutes les décisions possibles pour ce nœud. Si on peut répondre à un nœud "Oui, Non, Peut-être", il doit y avoir trois enfants, Oui nœud, Non nœud et Peut-être nœud. Cela signifie qu'il y a toujours un noeud inférieur à traverser, jusqu'à atteindre un noeud final. La traversée est toujours en panne. Forme graphique:

entrez la description de l'image ici

Assez simple. Nous commençons à la racine, et sur la base d'une évaluation, choisissez 1, 2 ou 3. Nous choisissons 3. Ensuite, nous effectuons une autre évaluation et choisissons B ou B ... Eh bien, j'ai réutilisé le graphique ci-dessous, désolé. Prétendez que le B à gauche est magique B.

Les arbres de comportement ont une évaluation différente. La première fois qu'ils sont évalués (ou réinitialisés), ils partent de la racine (les nœuds parents agissent comme des sélecteurs) et chaque enfant est évalué de gauche à droite. Les nœuds enfants sont classés en fonction de leur priorité. Si toutes les conditions d'un nœud enfant sont remplies, son comportement est lancé. Lorsqu'un nœud commence un comportement, ce nœud est défini sur «en cours d'exécution» et renvoie le comportement. La prochaine fois que l’arborescence est évaluée, elle vérifie à nouveau les nœuds de priorité la plus élevée, puis s’il s’agit d’un nœud «en cours d’exécution», il sait reprendre où il s’est arrêté. Le nœud peut avoir une séquence d'actions et de conditions avant d'atteindre un état final. Si une condition échoue, la traversée retourne au parent. Le sélecteur de parents passe ensuite au prochain enfant prioritaire. Je vais essayer une forme graphique ici:

entrez la description de l'image ici

La traversée commence à la racine, va à l’enfant 1, vérifie la condition de l’enfant (quelque chose comme "tout ennemi à proximité?"). La condition échoue et la traversée remonte dans l'arbre pour passer au nœud deux. Le nœud 2 a une action qui est effectuée (peut-être quelque chose comme trouver un chemin). Puis un comportement (quelque chose comme suivre le chemin). Le chemin suivant est défini sur en cours d'exécution et l'arbre renvoie son état comme étant en cours d'exécution. Les noeuds qui ont échoué ou sont terminés sont renvoyés à «Prêt». Ensuite, lors de la prochaine vérification, nous recommençons avec le nœud de priorité la plus élevée. Il échoue à nouveau, nous passons donc au noeud deux. Nous constatons que nous avons un comportement en cours d'exécution. Nous constatons également que le comportement est terminé, nous le marquons comme terminé et le renvoyons. L'arbre est ensuite réinitialisé et prêt à partir.

Comme vous pouvez le constater, les arbres de comportement sont plus complexes. Les arbres de comportement sont plus puissants et permettent un comportement plus complexe. Les arbres de décision sont faciles à comprendre et à mettre en œuvre. Ainsi, vous utiliseriez des arbres de comportement lorsque vous souhaitez un comportement plus complexe ou un contrôle accru sur le comportement. Les arbres de décision peuvent être utilisés dans le cadre d'un arbre de comportement ou seuls pour une IA simple.

Une assez bonne compréhension de la façon dont les arbres de comportement sont analysés se trouve ici .


Grande explication et illustrations. Ainsi, lorsque vous dites "Si toutes les conditions d'un nœud enfant sont remplies ...", les sélecteurs et séquences contiennent-ils des conditions ou uniquement des nœuds feuilles, c'est-à-dire les actions?
Lancer gratuit

1
Les nœuds enfants sont des comportements, des actions, des conditions ou des sélecteurs avec plus d'enfants. Ils sont évalués de gauche à droite.
MichaelHouse

Excellent post, bien que je pense avoir encore une question en suspens (je posterai séparément). Qu'avez-vous utilisé pour créer les GIF animés?
me--

0-2-A ne devrait pas être rejoué si 0-2-B est lancé ??? github.com/pirobot/pi_trees/issues/1
devside le

@ nopnop77 Pas si la condition 0-2 est toujours évaluée à 0-2-B. Vous pouvez voir que 0-2 est réévalué, mais encore une fois, cela ne signifie pas que A est sélectionné.
MichaelHouse
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.