ВИКОРИСТАННЯ ДЕРЕВ ПРИЙНЯТТЯ РІШЕНЬ ТА СКІНЧЕННИХ АВТОМАТІВ В ІНТЕРАКТИВНИХ СИСТЕМАХ
08.09.2021 21:41
[1. Информационные системы и технологии]
Автор:
Ваш Ю.В., аспірант, кафедра програмного забезпечення систем, Ужгородський національний університет, м. Ужгород;
Роль М.І., асистент, кафедра програмного забезпечення систем, Ужгородський національний університет, м. Ужгород
До інтерактивних систем зазвичай відносять системи для підтримки та проведення навчальних процесів, систем з великою кількістю інтерактивних та графічних елементів з якими користувач може взаємодіяти. До таких систем можна віднести також ігрові системи.
Зазвичай ігрові системи використовуються не тільки для створення розважальних продуктів, а також для створення комплексних систем симуляції. Часто в таких системах використовуються поняття акторів або агентів [3], які в свою чергу є одиницями логіки яка може проводити комунікацію як з різними підсистемами програмного продукту.
Якщо враховувати поняття акторів з точки зору об'єктно-орієнтованих мов програмування, будемо вважати, що ці одиниці оперують певними станами. Стани акторів або агентів можуть варіюватися від реалізації до реалізації. Вони сильно залежать від конкретної реалізації програмного забезпечення та його бізнес-логіки. Стан кожного актора може бути представлений як і в виді комплексної структури з багатьма параметрами так і простого числа.
Для зручності оперування такими станами, в ігрових програмних продуктах та продуктах завязаних на комплексні симуляції використовують систему скінченних автоматів. Ці системи дозволяють зручно переключатися між різними станами залежно від вхідних умов. Великим плюсом даного підходу є те, що представлені стани, можуть в свою чергу змінювати стани залежно від певних умов. З цієї властивості, ми отримуємо можливість створювати ланцюжки подій.
Одним з найзручніших способів роботи з такими машинами станів є дерева прийняття рішень. Дизайн таких дерев може змінюватися від системи до системи. Більшість цих систем дають змогу виконувати певні задачі. На їх основі виконуються обчисленнями та виконанням бізнес-логіки при якій проводиться рішення про зміну стану.
Загальноприйнятими є порядок пріоритизації задачі. Зазвичай, задачі з найбільшим пріоритетом знаходяться в лівій стороні від кореня дерева, чим найближче до правої сторони задача тим нижчий її пріоритет. Даний підхід може дуже сильно спростити життя, адже в конкурентних задачах, які можуть призвести до одинакового стану, система може вибрати розгалуження з найбільшим пріоритетом.
До системи пріоритетів також додаються спеціальні можливості більш точного налаштування переключення між гілками дерева прийняття рішень. Такі системи, можна спостерігати в таких програмних продуктах як Unreal Engine 4 [4]. Їх редактор дерев прийняття рішень [2] додає до функціоналу можливості з відстежуванням певних станів, згідно з якими гілка дерева може бути як запущена так і відхилена. Більш детальне налаштування переключення між гілками дерев, дозволяє точніше описати логіку поведінки актору або агента.
В інтерактивних системах або системах з чітко вираженою перевагою в сторону симуляції певних явищ або реальних подій, зміна поведінки об'єктів системи проводиться за допомогою зміни їх станів. Тому в даного підходу є певні мінуси. Система, що вміщує в собі тисячі або мільйони акторів, які залежать від багатьох різних станів, будуть страчувати багато ресурсів з точки зору пам'яті та процесорного часу для збереження та підрахунків дерев для кожного з них. Для вирішення такого підходу можна виконати комплекс заходів, таких як: оптимізація розміру та розміщення даних, прискорення на апаратному рівні алгоритмів обрахунків дерев прийняття рішень, можливість використання групування об'єктів по певних ознаках для оптимізації кількості дерев прийняття рішень відносно кількості об'єктів.
Дерева прийняття рішень та машини скінченних автоматів - це дуже потужний спосіб обробки та зміни поведінки об'єктів та програмного продукту загалом. Великим плюсом використання підходу базованому на деревах прийняття рішень є можливість візуального відображення даних та гнучке налаштування правил поведінки системи.
Література:
1. Wright, David R. (2005). "Finite State Machines" (PDF). CSC215 Class Notes. David R. Wright website, N. Carolina State Univ.
2. Behaviour Tree Overview – [Електронний ресурс] – Режим доступу: https://docs.unrealengine.com/en-US/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreesOverview/index.html
3. Lysenko, Mikola; D'Souza, Roshan M. (2008). "A Framework for Megascale Agent Based Model Simulations on Graphics Processing Units". Journal of Artificial Societies and Social Simulation. 11 (4): 10. ISSN 1460-7425
4. Unreal Engine 4 Documentation – [Електронний ресурс] – Режим доступу: https://docs.unrealengine.com/en-US/index.html