Реализация алгоритма проектирования искусственного интеллекта Goal-Oriented Action Planning в программном обеспечении «Unity 3D»

1.

2.

Аннотация и ключевые слова
• Аннотация: Goal-Oriented Action Planning (сокращённо GOAP) – методика
проектирования искусственного интеллекта, при которой цепочка поведений агентов
(абстрактных сущностей) выбирается в реальном времени автоматически для
удовлетворения поставленных целей данного агента. Тем самым, появляется большая
вариативность и непредсказуемость в действиях агента.
• Ключевые слова: Искусственный интеллект, Goal-Oriented Action Planning, C#,
Unity3D
2

3.

Введение
Goal-Oriented Action Planning обладает множеством
вариантов реализации, выбор которого зависит от
поставленных целей. Самые популярные: GoalOriented Behavior (GOB), Finite State Machine (FSM
или конечный автомат), Behavior Tree (дерево
поведений).
Основной
проблемой
данных
реализаций
заключается в том, что приходится продумывать
все возможные вариации входа в условие и
поведение, постоянно повторяя одни и те же
действия между ветвями и контролировать
бесконечные соединения листьев в запутанном
дереве.
Все эти недостатки ведут к довольно сильной
связанности и запутанности кода, тем самым
нарушая принципы написания чистого и
поддерживаемого кода (SOLID).
3

4.

Постановка задачи
Основными проблемами методики проектирования искусственного интеллекта
GOAP является
отсутствие удобного интерфейса для работы
с данным
алгоритмом, избыточные вызовы обновления GOAP-планировщика и сложности
при проектировании архитектуры.
Для решения данных проблем была разработана библиотека ATG.GOAP,
представляющая из себя удобный интерфейс для работы с GOAP-алгоритмом в
среде разработки Unity на языке программирования C#.
Данная библиотека использует такие поведенческие паттерны проектирования как
«Observable Variable» и «Finite State Machine» в связке с GOAP-планировщиком, а
так же использует технологию «Scriptable Object» из Unity-библиотеки
«UnityEngine». Это позволяет пользователю (разработчику) использовать удобный
визуальный интерфейс для создания GOAP-действий, быстро редактировать
условия и эффекты GOAP-целей, создавать новые GOAP-состояния для агентов.
4

5.

Описание работы GOAP-библиотеки
1) Тип GoapState – является основным классом данных для работы алгоритма GOAP. На основе наборов данного
типа планировщик составляет план и обновляет важность целей. Для удобства работы с ним с помощью
визуального интерфейса в Unity был написан ScriptableObject-тип «GoapStateConfig»
5

6.

Описание работы GOAP-библиотеки
2) Тип GoapValue – является удобной «оберткой» для работы с GoapState, хранящая в себе сам конфиг GoapState,
а так же необходимое значение, которое должен хранить в себе экземпляр GoapState. Данный тип так же
позволяет динамически создавать экземпляр GoapState
6

7.

Описание работы GOAP-библиотеки
3) Тип GoapAction – инкапсулирует в себе данные об условиях для начала выполнения данного действия
(Preconditions) и результат, который получит агент при успешном выполнении данного действия (Effects).
Описание самого действия со всеми инструкциями инкапсулировано в интерфейсе IGoapActionBehaviour.
Аналогично для удобного использования в окне Editor разработан тип GoapActionConfig.
7

8.

Описание работы GOAP-библиотеки
4) Тип GoapGoal – Инкапсулирует в себе данные о цели для агента (_goalData), идентификатор GoalType и
дополнительные поля для расчета значимости данной цели для агента в текущий момент времени. Если какоелибо условие из Preconditions не соответствует необходимому значение, то в этот момент будет произведен вызов
GOAP-планировщика
8

9.

Описание работы GOAP-библиотеки
5) Тип GoapPlanner – Инкапсулирует в себе A*-алгоритм планирования и поиска цепочки GoapAction, которая в
итоге даст необходимые условия для выполнения поставленной агенту цели. Для оптимизации расхода
процессорного времени, планировщик работает в два этапа:
1) При изменении условий выполнений какого либо GoapGoal-экземпляра, планировщик просчитывает
важность выполнения каждой цели и выбирает самую важную.
2) Если найденная цель важнее текущей, то только тогда планировщик запускает процесс построения графа
из условий и эффектов ,доступных GoapAction, и строит оптимальный путь
9

10.

Описание работы GOAP-библиотеки
6) Тип GoapAgent – Представляет из себя «черный ящик», который позволяет взаимодействовать с
разработанным GOAP-алгоритмом путём взаимодействия с его интерфейсом. Он содержит текущий
исполняемый план, планировщик и методы взаимодействия с ним.
10

11.

Заключение
Разработанная библиотека ATG.GOAP предоставляет удобный и простой интерфейс для работы с
методикой проектирования искусственного интеллекта Goal-Oriented Action Planning. При
использовании данной библиотеки, от пользователя (разработчика) необходимо только создание
конфигураций для GoapState и написания кода для самих действий, реализующих интерфейс
«IGoapActionBehaviour». Так же значения GoapState могут изменяться и под воздействием
внешних (глобальных) факторов.
11
English     Русский Правила