Разница между деревьями решений и amp; Поведение деревьев для игры AI

Каковы некоторые различия между деревьями принятия решений и деревьями поведения для развития игры в ИИ? Для каких приложений вы бы использовали один над другим?

59 голосов | спросил Free Lancer 25 MaramMon, 25 Mar 2013 11:15:23 +04002013-03-25T11:15:23+04:0011 2013, 11:15:23

1 ответ


71

Оба довольно разные. Реальный индикатор находится в именах. Деревья принятия решений предназначены только для принятия решений. Деревья поведения предназначены для управления поведением. Позвольте мне объяснить. Основное различие между ними - это то, как они пройдены, так же, как они выложены, и типы узлов «разные».

Деревья принятия оцениваются от root до листа каждый раз. Чтобы дерево решений работало правильно, дочерние узлы каждого родителя должны представлять все возможные решения для этого узла. Если на узел можно ответить «Да, нет, возможно», должно быть три дочерних узла, узел «Да», «Нет узла» и «Узел». Это означает, что всегда есть какой-то нижний узел, чтобы пройти, до достижения конечного узла. Обход всегда опускается. Графическая форма:

введите описание изображения здесь>> </p>

<p> Довольно просто. Мы начинаем с корня и на основе некоторой оценки выбираем 1, 2 или 3. Мы выбираем 3. Затем мы делаем некоторую другую оценку и выбираем B или B ... Ну, я снова использовал графику снизу, извините. Притворите B слева - это волшебство B. </p>

<p> <strong> Деревья поведения </strong> имеют другую оценку. В первый раз, когда они оцениваются (или они сбрасываются), они начинаются с корня (родительские узлы действуют как селекторы), и каждый ребенок оценивается слева направо. Ребенок-узлы упорядочены на основе <strong> приоритета </strong>. Если все условия дочернего узла выполнены, его поведение запускается. Когда узел начинает поведение, этот узел имеет значение «running», и он возвращает поведение. В следующий раз, когда дерево будет оценено, он снова проверит узлы с наивысшим приоритетом, а затем, когда дело доходит до «запущенного» узла, он знает, где он остановился. Узел может иметь последовательность действий и условий до достижения конечного состояния. Если какое-либо условие терпит неудачу, обход возвращается к родительскому. Затем родительский селектор переходит к следующему дочернему элементу приоритета. Я попробую графическую форму здесь: </p>

<p> <img src =

Обход начинается с корня, переходит к дочернему 1, проверяет состояние ребенка (что-то вроде «врагов рядом?»). Условие не выполняется, и обход перемещается назад по дереву, чтобы перейти к узлу два. У узла 2 есть действие, которое выполняется (возможно, что-то вроде поиска пути). Затем поведение (что-то вроде пути). Следующий путь установлен на выполнение, и дерево возвращает свое состояние как запущенное. Неверные или завершенные узлы возвращаются в «Готово». Затем, в следующий раз, когда мы проверим, мы снова начинаем с узла с наивысшим приоритетом. Он снова не работает, поэтому мы переходим к узлу два. Там мы находим, что у нас есть поведение. Мы также обнаруживаем, что поведение завершено, поэтому мы отмечаем его завершение и возвращаем его. Затем дерево сбрасывается и снова готово к работе.

Как вы видите, деревья поведения более сложны. Деревья поведения более мощные и позволяют более сложное поведение. Деревья принятия решений понятны и просты в реализации. Таким образом, вы должны использовать деревья поведения, если хотите более сложное поведение, или больше контролировать поведение. Деревья принятия решений могут использоваться как часть дерева поведения или использоваться отдельно для простого ИИ.

Некоторое хорошее понимание того, как деревья поведения анализируются, можно найти здесь .

ответил MichaelHouse 25 MarpmMon, 25 Mar 2013 20:05:04 +04002013-03-25T20:05:04+04:0008 2013, 20:05:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132