Skip to content

ПР12. Сравнение RL-политики и классического контроллера

Работа относится к проектной траектории. Рассчитывайте на одну лабораторную пару и примерно 2,5 часа самостоятельной доработки.

Цель

Сформулировать MDP и доказать честным сравнением на нескольких seed, что RL-политика и классический контроллер получают одинаковые входы и границы, а итог содержит разброс и исходные прогоны, а не один удачный результат.

Критерии зачтено

Работа зачтена, когда выполнены все три стадии и прошла автопроверка:

СтадияЧто требуется
1 · Собратьreset(seed)/step(action), не менее пяти seed для контроллера и политики, исходные JSON-прогоны
2 · Сломатьмодуль оценки использует один seed или передаёт скрытое состояние в наблюдение/награду
3 · Доказатьутечка устранена, агрегаты пересчитаны, терминуется и обрезается раздельно
Автопроверкаcheck_practice.py PR12 проверит config/mdp.yaml, evidence/pr12/raw-runs/*.json, comparison.json, interpretation.md и заявления public_tests_passed, defect_reproduced, defect_fixed, multiple_seeds

Что получится

Вы точно опишете наблюдения, действия, награду и завершение эпизода, а затем сравните готовую RL-политику с классическим контроллером на одном наборе seed. Обучать собственную модель не требуется.

Пакеты и понятия

  • config/mdp.yaml — формальное описание задачи: что видит политика (наблюдение), чем управляет (действие), как определяется награда и чем заканчивается эпизод.
  • reset(seed) — начало эпизода; step(action) — один шаг среды. Одинаковый seed и последовательность действий обязаны давать одинаковый результат.
  • terminated — задача решена/провалена; truncated — эпизод прерван внешним ограничением. Они сохраняются раздельно.
  • Seed — детерминирующие значения случайности: сравнение контроллера и политики выполняется на одинаковом наборе seed, а не на «лучшем прогоне».

Что сделать

  1. Запустите контрольную среду через reset(seed) и step(action) и проверьте готовую политику на трёх открытых семействах сценариев.
  2. Зафиксируйте наблюдение, действие, награду и причины завершения (terminated/truncated). Выполните не менее пяти seed для контроллера и политики и сохраните исходные JSON-прогоны без агрегирования.
  3. Неисправный модуль оценки использует один seed или передаёт скрытое состояние в наблюдение либо награду. Устраните утечку и пересчитайте агрегаты: долю успехов, среднее, разброс и вмешательства защиты — при неизменных пределах для обоих алгоритмов.

Сохраните config/mdp.yaml, evidence/pr12/raw-runs/*.json, comparison.json, interpretation.md и report.json.

Проверка

bash
PYTHONPATH=project/src python3 project/tools/benchmark.py \
  --scenario-dir project/scenarios/public --seeds 101,202,303,404,505
python3 /path/to/course/tools/check_practice.py PR12 --submission .

Готово, если отчёт содержит долю успехов, среднее и разброс, оба алгоритма получают одинаковые входы и ограничения, а вывод не строится по одному лучшему прогону. Дополнительно: пошаговая среда Gazebo или обучение собственной политики.

Как работаем на лабораторной

После теста безопасности сначала запишите MDP на доске: что видит политика и чем она управляет. Затем запустите одну и ту же политику с двумя seed и проверьте повторяемость.

Общий порядок: runbook · troubleshooting.

Если использовался ИИ, применяются правила курса.

Правила сравнения

  • набор seed, агрегат и порог успеха задаются до просмотра результата;
  • политика и базовый контроллер получают одинаковые сценарии, наблюдения, тайм-ауты и контур безопасности;
  • terminated и truncated сохраняются раздельно;
  • вместе с агрегатами сохраняются все исходные прогоны и вмешательства защиты;
  • обучение собственной политики, VLA и пошаговый Gazebo остаются дополнительной задачей.

Официальные и первичные справочники

Учебные материалы: CC BY 4.0 · Код: Apache-2.0