Перейти к содержанию

Рецепт 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.

Куда дальше