Appearance
ПР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, а не на «лучшем прогоне».
Что сделать
- Запустите контрольную среду через
reset(seed)иstep(action)и проверьте готовую политику на трёх открытых семействах сценариев. - Зафиксируйте наблюдение, действие, награду и причины завершения (terminated/truncated). Выполните не менее пяти seed для контроллера и политики и сохраните исходные JSON-прогоны без агрегирования.
- Неисправный модуль оценки использует один 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 остаются дополнительной задачей.