Unterschied zwischen Entscheidungsbäumen und Verhaltensbäumen für Spiel-KI


64

Was sind einige Unterschiede zwischen Entscheidungsbäumen und Verhaltensbäumen für die AI-Spieleentwicklung? Für welche Anwendungen würden Sie eine über der anderen verwenden?

Antworten:


80

Die beiden sind ziemlich unterschiedlich. Der wahre Indikator ist in den Namen. Entscheidungsbäume dienen nur der Entscheidungsfindung. Verhaltensbäume steuern das Verhalten. Lassen Sie mich das erklären. Ein wesentlicher Unterschied besteht darin, wie sie durchlaufen werden, wie sie angeordnet sind und welche Knotentypen unterschiedlich sind.

Entscheidungsbäume werden jedes Mal von der Wurzel bis zum Blatt ausgewertet. Damit ein Entscheidungsbaum ordnungsgemäß funktioniert, müssen die untergeordneten Knoten aller übergeordneten Knoten alle möglichen Entscheidungen für diesen Knoten darstellen. Wenn ein Knoten mit "Ja, Nein, Vielleicht" beantwortet werden kann, müssen drei untergeordnete Knoten vorhanden sein: "Ja", "Nein" und "Vielleicht". Dies bedeutet, dass immer ein unterer Knoten zu durchlaufen ist, bis ein Endknoten erreicht ist. Die Überquerung ist immer unten. Grafische Form:

Bildbeschreibung hier eingeben

Ziemlich einfach. Wir beginnen mit der Wurzel und wählen basierend auf einer Bewertung 1, 2 oder 3. Wir wählen 3 aus. Dann führen wir eine andere Bewertung durch und wählen B oder B ... Nun, ich habe die Grafik von unten wieder verwendet, sorry. Stellen Sie sich das B links als magisches B vor.

Verhaltensbäume haben eine andere Bewertung. Wenn sie zum ersten Mal ausgewertet (oder zurückgesetzt) ​​werden, beginnen sie beim Stamm (übergeordnete Knoten verhalten sich wie Selektoren), und jedes untergeordnete Element wird von links nach rechts ausgewertet. Die untergeordneten Knoten sind nach ihrer Priorität sortiert. Wenn alle Bedingungen eines untergeordneten Knotens erfüllt sind, wird sein Verhalten gestartet. Wenn ein Knoten ein Verhalten startet, wird dieser Knoten auf "running" gesetzt und gibt das Verhalten zurück. Wenn der Baum das nächste Mal ausgewertet wird, überprüft er erneut die Knoten mit der höchsten Priorität. Wenn es dann um einen "laufenden" Knoten geht, weiß er, wo er aufgehört hat. Der Knoten kann eine Abfolge von Aktionen und Bedingungen haben, bevor er einen Endzustand erreicht. Wenn eine Bedingung fehlschlägt, kehrt der Traversal zum übergeordneten Element zurück. Der übergeordnete Selektor wechselt dann zum untergeordneten Element mit der nächsten Priorität. Ich werde hier eine grafische Form versuchen:

Bildbeschreibung hier eingeben

Die Durchquerung beginnt an der Wurzel, geht zu Kind 1, prüft den Zustand des Kindes (so etwas wie "irgendwelche Feinde in der Nähe?"). Die Bedingung schlägt fehl und der Traversal bewegt sich wieder den Baum hinauf, um zu Knoten zwei zu gelangen. Knoten 2 hat eine Aktion, die ausgeführt wird (vielleicht so etwas wie einen Pfad zu finden). Dann ein Verhalten (so etwas wie dem Pfad folgen). Der folgende Pfad wird auf "running" gesetzt und der Baum gibt seinen Status als "running" zurück. Die ausgefallenen oder abgeschlossenen Knoten werden auf "Bereit" zurückgesetzt. Bei der nächsten Überprüfung beginnen wir erneut mit dem Knoten mit der höchsten Priorität. Es schlägt erneut fehl, also fahren wir mit Knoten zwei fort. Dort stellen wir fest, dass wir ein laufendes Verhalten haben. Wir stellen auch fest, dass das Verhalten abgeschlossen ist. Wir markieren es daher als abgeschlossen und geben es zurück. Der Baum wird dann zurückgesetzt und ist wieder einsatzbereit.

Wie Sie sehen, sind die Verhaltensbäume komplexer. Verhaltensbäume sind leistungsfähiger und ermöglichen komplexeres Verhalten. Entscheidungsbäume sind leicht zu verstehen und einfach zu implementieren. Sie würden also Verhaltensbäume verwenden, wenn Sie komplexeres Verhalten oder mehr Kontrolle über das Verhalten wünschen. Entscheidungsbäume können als Teil eines Verhaltensbaums oder allein für einfache KI verwendet werden.

Ein gutes Verständnis für das Parsen von Verhaltensbäumen finden Sie hier .


Tolle Erklärung und Illustrationen. Wenn Sie also "Wenn alle Bedingungen eines untergeordneten Knotens erfüllt sind ..." sagen, enthalten Selektoren und Sequenzen Bedingungen oder nur Blattknoten, dh die Aktionen?
Free Lancer

1
Die untergeordneten Knoten sind Verhalten, Aktionen, Bedingungen oder Selektoren mit mehr untergeordneten Knoten. Sie werden von links nach rechts ausgewertet.
MichaelHouse

Toller Beitrag, obwohl ich denke, dass ich noch eine offene Frage habe (wird separat gepostet). Womit haben Sie die animierten GIFs erstellt?
Ich--

0-2-A sollte nicht noch einmal gespielt werden, wenn 0-2-B läuft ??? github.com/pirobot/pi_trees/issues/1
devside

@ nopnop77 Nicht, wenn die 0-2-Bedingung immer noch 0-2-B ergibt. Sie können sehen, dass 0-2 neu bewertet wird, aber erneut nicht zur Auswahl von A führt.
MichaelHouse
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.