Різниця між деревами рішень та деревами поведінки для AI гри


64

Які існують відмінності між деревами рішень та деревами поведінки для розробки ігор AI? Для яких додатків ви б використовували одне за іншим?

Відповіді:


80

Два досить різні. Реальний показник - у назвах. Дерева рішень - лише для прийняття рішень. Дерева поведінки призначені для контролю поведінки. Дозвольте мені пояснити. Основна відмінність двох полягає в тому, як вони проходять, так само, як вони розкладені та типи вузлів "різні".

Дерева рішень щоразу оцінюються від кореня до листа. Щоб дерево рішень працювало належним чином, дочірні вузли кожного з батьків повинні представляти всі можливі рішення для цього вузла. Якщо на вузол можна відповісти "Так, ні, можливо", повинно бути троє дітей, так вузол Так, Ні вузол та Можливо вузол. Це означає, що завжди є якийсь нижній вузол, який потрібно пройти, до досягнення кінцевого вузла. Обхід завжди вниз. Графічна форма:

введіть тут опис зображення

Досить просто. Ми починаємо з кореня, і на основі якоїсь оцінки вибираємо 1, 2 або 3. Вибираємо 3. Потім робимо якусь іншу оцінку і вибираємо B або B ... Ну я повторно використала графіку знизу, вибачте. Прикиньте ліворуч B магію Б.

Дерева поведінки мають різну оцінку. Перший раз, коли вони оцінюються (або вони скидаються), вони починаються з кореня (батьківські вузли діють як селектори), і кожна дитина оцінюється зліва направо. Дочірні вузли впорядковуються виходячи з їх пріоритетності. Якщо всі умови дочірнього вузла виконані, його поведінка запускається. Коли вузол запускає поведінку, цей вузол встановлюється на "працює", і він повертає поведінку. Наступного разу, коли дерево оцінюється, воно знову перевіряє вузли найвищого пріоритету, тоді, коли мова заходить про "запущений" вузол, воно знає, де він зупинився. Вузол може мати послідовність дій та умов до досягнення кінцевого стану. Якщо будь-яка умова не вдається, обхід повертається до батьків. Потім батьківський селектор переходить до наступної дочірньої пріоритетності. Я спробую тут графічну форму:

введіть тут опис зображення

Обхід починається в корені, йде до дитини 1, перевіряє стан дитини (щось на кшталт "будь-які вороги поруч?"). Умова не вдається, і обхід рухається назад до дерева, щоб перейти до другого вузла. У вузлі 2 є дія, яка виконується (можливо, щось на зразок пошуку шляху). Потім поведінка (щось на кшталт слідування шляху). Наступний шлях встановлений для запуску, і дерево повертає свій стан як запущений. Вузоли, які не вдалися або завершили, повертаються до "Готових". Потім наступного разу, коли ми перевіряємо, ми знову починаємо з вузла з найвищим пріоритетом. Знову виходить з ладу, тому ми переходимо до вузла два. Там ми виявимо, що у нас поведінка працює. Ми також виявляємо, що поведінка завершена, тому ми відзначаємо її завершеною і повертаємо її. Потім дерево скидається і готове знову йти.

Як видно, дерева поведінки є складнішими. Дерева поведінки є більш потужними і допускають складнішу поведінку. Дерева рішень легко зрозуміти і прості у виконанні. Отже, ви використовуєте дерева поведінки, коли хочете складнішої поведінки або більше контролю над поведінкою. Дерева рішень можуть використовуватися як частина дерева поведінки, або використовуватися окремо для простого ШІ.

Деякий гарне розуміння того , як поведінка дерева розібрані можна знайти тут .


Прекрасне пояснення та ілюстрації. Тож, коли ви говорите "Якщо всі умови дочірнього вузла дотримані ..." чи містять селектори та послідовності умови або лише вузли листя, тобто дії?
безкоштовно Lancer

1
Дочірні вузли - це поведінка, дії, умови або селектори з більшою кількістю дітей. Вони оцінюються зліва направо.
MichaelHouse

Чудовий пост, хоча я думаю, у мене все ще залишається невирішене питання (буду публікувати окремо). Що ви використали для створення анімованих GIF?
я--

0-2-A не слід відтворювати знову, якщо працює 0-2-B ??? github.com/pirobot/pi_trees/isissue/1
devside

@ nopnop77 Не, якщо 0-2 умовне все-таки дорівнює 0-2-B. Ви можете бачити, що 0-2 переоцінюється, але ще раз не призводить до вибору А.
MichaelHouse
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.