Skip to content

API: Агенты

agents

Агенты для GridWorld.

Содержит: - A2CConfig, A2CAgent, evaluate_policy_success из a2c_agent; - DRQNLightning из drqn_agent.

A2CAgent

Батчевый A2C (Actor-Critic) с LSTM.

  • При vector env:

    • один rollout даёт batch_size = n_envs эпизодов;
    • в обучении считаем returns/advantages размерности (T, n_envs);
    • считаем один шаг градиента по всему батчу.
  • Лучшая модель и ранняя остановка основаны на avg_episode_return:

    • avg_episode_return = среднее по последним avg_window эпизодам;
    • лучшие веса — при максимальном avg_episode_return;
    • ранняя остановка по отсутствию улучшения avg_episode_return patience батчей подряд (после min_episodes_before_early_stop эпизодов).

act_greedy

act_greedy(obs, hidden=None)

Жадное действие по текущей политике.

obs
  • shape (obs_dim,) → одиночная среда;
  • shape (n_envs, obs_dim) → векторная среда с n_envs копиями.
Возвращает

actions: - shape (,) если был одиночный obs (скалярный int), - shape (n_envs,) если батч; new_hidden: (h, c) с batch_size, соответствующим obs.

DRQNLightning

Bases: LightningModule

DRQNLightning

Lightning‑обёртка над DRQN‑агентом.

Особенности
  • Корректно работает и с одиночной GridWorldEnv, и с векторной (SyncVectorEnv / GymVectorGridWorldEnv, VectorGridWorldEnv), но обучается логически только по ОДНОЙ под‑среде (первой), чтобы не ломать архитектуру эпизодного replay‑буфера.
  • Вход сети упрощён: только наблюдение obs (без a_{t-1}, r_{t-1}).
  • Лучшая модель и ранняя остановка основаны на avg_episode_return: avg_episode_return = среднее по последним avg_window эпизодам. Если avg_episode_return не улучшается early_stop_patience эпизодов подряд (после early_stop_min_episodes) — тренировка останавливается.
  • best_state_dict хранит лучшие веса по avg_episode_return, и после окончания обучения мы ими инициализируем сеть.

create_input

create_input(obs)

Формирует вход для DRQN: здесь это просто вектор наблюдения obs.

get_action

get_action(obs, last_action_idx, last_reward, hidden, epsilon)

Выбор действия по epsilon-greedy стратегии. Использует только текущее наблюдение obs как вход.

act_greedy

act_greedy(obs, hidden=None, env=None)

Жадное действие по Q‑сетке (ε=0).

obs может быть
  • (obs_dim,)
  • (n_envs, obs_dim) — берём первую под‑среду.

evaluate_policy_success

evaluate_policy_success(env, agent_or_model, max_steps)

Прогоняет один эпизод жадно по текущей политике и проверяет, достиг ли агент цели (terminated=True хотя бы раз).

Работает как с одиночной средой, так и с векторной: - если terminated — скаляр: берётся как есть; - если массив: успех = any(terminated).