我正在使用最新的稳定版本处理合作推块环境(https://github.com/Unity-Technologi…nvironment-Examples.md#cooperative-push-block)(为了使用Python API而导出)。问题是我没有收到奖励(无论是正的还是负的),奖励始终为0。如果我导出单人推块环境,我可以正确地收到奖励。下面是我从协作示例中使用的代码 https://github.com/Unity-Technologies/ml-agents/blob/main/docs/Python-API.md
decision_steps, terminal_steps = env.get_steps(behavior_name)if tracked_agent in decision_steps: episode_rewards += decision_steps[tracked_agent].rewardprint('REWARD', decision_steps.reward) # 始终为0# decision_steps[tracked_agent].reward 也返回0
根据文档,我应该收到负罚分(-0.0001)或正信号 +1, +2, +3。即使他们随机推动一个块,我收到的奖励仍然是0。
文档中提到奖励是以“组奖励”的形式给出的。我不知道这是否意味着需要更改上述代码。
回答:
我在Unity ml-agents GitHub问题部分收到了以下回答:
DecisionStep 还有一个与奖励字段分开的group_reward字段。合作推块代理的组奖励应该在这里。我们为协作示例没有明确指出这一点而道歉,我会对其进行更新。