I'm trying to design an OpenAI Gym environment in which multiple users/players perform actions over time. It's round based and each user needs to take an action before the round is evaluated and the next round starts. The action for one user can be model as a gym.spaces.Discrete(5)
space.
I want my RL agent to make decisions for all users. I'm wondering how to take multiple actions before progressing time and calculating the reward.
Basically, what I want is:
obs = env.reset()
user_actions = []
for each user:
user_actions.append(agent.predict(obs))
obs, reward, done, _ = env.step(user_actions)
So the problem is that I don't immediately know the reward after getting an action since I need to collect all actions before evaluating the round.
I could of course extend actions to include actions of all users in one go. But this would be problematic if I have a really large number of users or it even changes over time, right?
I found these two (1, 2) related questions, but they didn't solve my problem.