Добавил:
ИВТ (советую зайти в "Несортированное")rnПИН МАГА Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Баранов_Вадим_Пин11М (1).docx
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать

3.7 Программная реализация алгоритмов поведения и управления агентом

Разработка программной логики интеллектуального агента осуществлялась на языке C# в среде Unity. Ключевым компонентом системы является класс RollerAgent, наследуемый от базового класса Agent библиотеки ML-Agents. Программная архитектура включает в себя методы инициализации, сбора сенсорных данных и исполнения управляющих воздействий.

Особое внимание при реализации было уделено проблеме корректной инициализации эпизодов обучения. В условиях сложной топологии лабиринта стандартные методы случайного размещения (Random.Range) приводили к появлению агентов внутри статических коллайдеров (стен), что вызывало ошибки физического движка и некорректные данные для обучения. Для решения этой задачи был разработан и внедрен алгоритм безопасного размещения GetRandomSafePosition.

Алгоритм работает по принципу «зондирования» пространства. Перед размещением объекта (агента или цели) генерируется случайная координата, вокруг которой создается виртуальная сфера малого радиуса. С помощью метода Physics.OverlapSphere производится проверка на пересечение данной сферы с объектами, имеющими тег Wall. Если пересечение обнаружено, координата отбрасывается, и генерируется новая. Цикл повторяется до нахождения валидной точки. Данный подход обеспечил 100% гарантию корректного старта эпизодов даже при параллельном обучении 20 агентов.

Логика движения агента реализована в методе OnActionReceived. Нейронная сеть возвращает вектор из двух непрерывных значений (continuous actions) в диапазоне [-1; 1]. Эти значения интерпретируются как управляющие сигналы по осям X и Z. Для обеспечения высокой динамики и отзывчивости управления применение силы к физическому телу (Rigidbody) осуществляется в режиме ForceMode.VelocityChange. Это позволяет мгновенно изменять вектор скорости агента, нивелируя инерцию, что критически важно для маневрирования в узких коридорах лабиринта.

3.8 Тестирование и валидация обученной модели в режиме инференса

Финальным этапом работы стала интеграция обученной нейронной сети в исполняемое приложение (Build). Для этого файл модели .onnx, полученный в результате обучения алгоритмом PPO, был внедрен в компонент Behavior Parameters с типом поведения Inference Only.

Тестирование проводилось в двух режимах:

  1. В среде редактора Unity: Проверка корректности работы сенсоров (визуализация лучей) и отсутствия программных ошибок (Exceptions) в консоли.

  2. В автономной сборке (Standalone Build): Проект был скомпилирован в исполняемый файл .exe для ОС Windows.

В ходе тестирования автономной сборки проверялась способность агента решать задачу навигации без связи с внешней средой Python. Результаты тестов показали, что интеллектуальные агенты демонстрируют стабильное поведение:

  • Успешное достижение цели наблюдается в 96-99% эпизодов.

  • Агенты эффективно используют данные лидара (Ray Perception) для избегания столкновений со стенами.

  • Время нахождения пути до цели варьируется в зависимости от сложности спавна (расстояния и количества поворотов), но всегда стремится к оптимальному маршруту.

Окно Game с финальным результатом работы модели можно увидеть на рисунке 3.4.

Рисунок 3.4 - Окно Game с финальным результатом, где много агентов успешно идут к целям