Создание пользовательской среды MA

Я ищу руководство по созданию фиктивного примера с несколькими агентами. Я пытался работать с документацией Rllib, но мне кажется, что я не понял подхода к созданию собственной многоагентной среды.

Я бы хотел, чтобы несколько агентов начинали с разных случайных начальных позиций x. Динамика каждого агента должна регулироваться дифференциальным уравнением, например:

производная (x) = x + agent_action + noise

Цель состоит в том, чтобы агенты изучили действия, которые в конечном итоге приведут к схождению значений x всех агентов к одному значению.

Могу ли я использовать заглушку кода, предоставленную в multi_agent_env.py, для реализации моей собственной среды MA?

Например, я создаю свой собственный файл MADummyEnv.py с

from ray.rllib.utils.annotations import PublicAPI
from ray.rllib.env.multi_agent_env import MultiAgentEnv
from ray.rllib.utils.typing import MultiAgentDict, AgentID

class MADummyEnv(MultiAgentEnv):
    ray.init()
    env = MyMultiAgentEnv()
    obs = env.reset()
    print(obs)

    new_obs, rewards, dones, infos = env.step(actions={"agent1": np.random.choice(action_list)}

а затем реализовать методы init, step, reset внутри класса MADummyEnv. Это правильно?

Возможно, кто-то может указать мне общее направление, если у меня есть правильная идея, или, в идеале, я предоставлю для справки реализацию некоторой настраиваемой многоагентной среды.

1 ответ

Здесь вы можете найти интересующую вас реализацию.

Некоторые вещи, которые стоит учесть:

  • Вы не должны звонить ray.init в файле env.
  • Код, который вы скопировали под class ... это пример того, как использовать env, а не то, что вы должны поместить в свой env.
Другие вопросы по тегам