Уменьшение частоты выборки действий для одного агента в многоагентной среде

Я впервые использую rllib и пытаюсь обучить настраиваемую многоагентную среду RL, и хотел бы обучить на ней пару агентов PPO. Проблема с реализацией, которую мне нужно выяснить, заключается в том, как изменить обучение одного специального агента так, чтобы он выполнял действие только каждые X временных шагов. Лучше всего вызывать compute_action () только каждые X временных шагов? Или, на других шагах, чтобы замаскировать выбор политики, чтобы им пришлось повторно выбирать действие, пока не будет вызвано No-Op? Или изменить действие, которое передается в среду + предыдущие действия в обучающих пакетах, как No-Ops?

Какой самый простой способ реализовать это, по-прежнему используя возможности обучения rllib? Нужно ли мне создавать для этого собственный цикл обучения или есть способ настроить PPOTrainer для этого?

Спасибо


person sh0831    schedule 13.07.2020    source источник


Ответы (1)


Пусть t: = временные шаги до сих пор. Дайте специальному агенту эту функцию: t (mod X) и не обрабатывайте его действия в среде, когда t (mod X)! = 0. Это обеспечивает:

  1. действующий агент выполняет действия только каждые X временных шагов, потому что вы игнорируете все остальные
  2. агент может узнать, что только действия, предпринятые каждые X временных шагов, повлияют на будущие награды
person Charlie Hou    schedule 20.08.2020