Рецепт 04 — Как выбрать агента¶
Цель. Подобрать правильного агента за 60 секунд. TensorAeroSpace содержит более 20 агентов в четырёх семействах; здесь — короткое дерево решений и одна таблица компромиссов.
Связано. Рецепт 05 — обучение deep-RL; Рецепт 06 — онлайн-адаптивные агенты.
Дерево решений из 3 вопросов¶
Q1. Есть ли у вас надёжная модель объекта?¶
- Да, и она точная → MPC (
tensoraerospace.agent.mpc). Использует модель для оптимизации на горизонте. Хорош, когда модель аналитическая или быстро идентифицируется. - Да, но она дрейфует / деформируется → переходите к Q2, ветка «online adaptive».
- Нет, только симулятор для раскатки эпизодов → переходите к Q2, ветка «deep-RL».
Q2a. Ветка online-adaptive (модель дрейфует или неизвестна в деплое)¶
- Ожидаются отказы приводов / сенсоров → AA-INDI (
agent.aa_indi). INDI с VFF-RLS, который сжимает фактор забывания под большими невязками — самое быстрое восстановление после резких отказов в библиотеке. - Нужен полностью параметрический RL-стиль, model-free на деплое → iADP (
agent.iadp). Онлайн-RLS + пакетный LS-policy eval + аналитическая LQT-политика. Мало ручек, интерпретируемо. - Нужен нейросетевой актор-критик с онлайн-идентификацией → IHDP / IM-GDHP / ET-DHP (
agent.ihdp,agent.im_gdhp,agent.et_dhp). Адаптивное динамическое программирование с онлайн-RLS; ET-DHP добавляет событийное обновление для маломощных контроллеров.
Q2b. Ветка deep-RL (нет аналитической модели, достаточно sim-compute)¶
- Быстрее всего обучается, дискретные действия → DQN (
agent.dqn). Редко подходит для управления полётом (там непрерывные действия), но хороший baseline для обучения. - Непрерывные действия, устойчивость важнее всего → PPO (
agent.ppo). Самый безопасный default в библиотеке. - Непрерывные действия, важна эффективность по данным → SAC или DSAC (
agent.sac,agent.dsac). DSAC (distributional SAC) обычно плотнее на задачах с tail-риском (подавление порывов, внешний контур скорости). - Непрерывные действия, есть экспертные демонстрации → GAIL (
agent.gail). Имитирует датасет демонстраций. - Непрерывные действия, вычисления асинхронны → A2C-NARX или A3C (
agent.a2c_narx,agent.a3c). NARX-вариант добавляет рекуррентный критик — полезно для частично наблюдаемых сред.
Q3. Нужен ли классический baseline?¶
- Да → PID (
agent.pid). Однострочный регулятор с anti-windup. Во всех сравнительных таблицах библиотеки меряют относительно него.
Таблица компромиссов¶
| Агент | Нужна модель? | Онлайн-адаптация? | Учится по эпизодам? | Непрерывные действия? | Отказоустойчив? | Интерпретируем? |
|---|---|---|---|---|---|---|
| PID | — | — | — | ✓ | — | ✓✓✓ |
| MPC | ✓ | — | — | ✓ | частично | ✓✓ |
| IHDP | частично | ✓ | — | ✓ | ✓ | ✓ |
| IM-GDHP | частично | ✓ | — | ✓ | ✓ | ✓ |
| ET-DHP | частично | ✓ (event) | — | ✓ | ✓ | ✓ |
| AA-INDI | warm-start G | ✓✓ | — | ✓ | ✓✓✓ | ✓✓ |
| iADP | warm-start F,G | ✓ | — | ✓ | ✓ | ✓✓ |
| HDP / ADHDP | — | частично | ✓ | ✓ | — | ✓ |
| DQN | — | — | ✓ | ✗ | — | — |
| PPO | — | — | ✓ | ✓ | — | — |
| SAC / DSAC | — | — | ✓ | ✓ | — | — |
| DDPG | — | — | ✓ | ✓ | — | — |
| A3C / A2C-NARX | — | — | ✓ | ✓ | — | — |
| GAIL | — | — | ✓ (из демо) | ✓ | — | — |
Обозначения: ✓✓✓ — первоклассно, ✓ — поддерживается, — — не цель дизайна.
Типовые комбинации¶
- «Есть модель F-16, нужно слежение за тангажом.» → PID для baseline, затем MPC для запаса.
- «Нужно устойчивое слежение за угловой скоростью при повреждении руля.» → AA-INDI. Если также нужна интерпретируемая LQT-стоимость, то iADP.
- «Нужна наилучшая долгосрочная точность на B747, без аналитической модели.» → SAC или DSAC после гиперпоиска (Рецепт 07).
- «Есть демонстрации пилота.» → GAIL.
- «Нужно событийное управление для встроенной платформы.» → ET-DHP.
Куда дальше¶
- Рецепт 05 — Обучение deep-RL от и до — цикл train-eval-save.
- Рецепт 06 — Онлайн-адаптивные агенты — паттерны warm-start и когда что.