首页 > 解决方案 > 状态,多体环境中的每一步奖励

问题描述

(交叉发布: https ://ai.stackexchange.com/questions/15693/state-reward-per-step-in-a-multiagnet-environment )

在单代理环境中,代理采取行动,然后观察下一个状态和奖励:

for ep in num_episodes:
    action = dqn.select_action(state)
    next_state, reward = env.step(action)

隐式地,用于向前移动模拟(env)的 嵌入在 env.step() 函数中。

现在在多智能体场景中,智能体 1 ($a_1$) 必须在时间 $t_{1a}$ 做出决定,这将在时间 $t_{2a}$ 完成,并且智能体 2 ($a_2$) 做出决定在时间 $t_{1b} < t_{1a}$ 结束于 $t_{2b} > t_{2a}$。

如果他们的两个动作同时开始和结束,那么它可以很容易地实现为:

for ep in num_episodes:
    action1, action2 = dqn.select_action([state1, state2])
    next_state_1, reward_1, next_state_2, reward_2 = env.step([action1, action2])

因为 env 可以并行执行,等待它们完成,然后返回下一个状态和奖励。但在我之前描述的场景中,尚不清楚如何实现这一点(至少对我而言)。在这里,我们需要明确地跟踪时间,在任何时间点检查以查看代理是否需要做出决定,具体来说:

for ep in num_episodes:
    for t in total_time:
       action1 = dqn.select_action(state1)
       env.step(action1) # this step might take 5t to complete. 
       as such, the step() function won't return the reward till 5 t later. 
        #In the mean time, agent 2 comes and has to make a decision. its reward and next step won't be observed till 10 t later. 

总而言之,如何实现具有每个代理异步操作/奖励的多代理环境?

标签: reinforcement-learning

解决方案


推荐阅读