Создание пользовательской среды 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.