在torchrl中为pettingzooenv定义rewardsum实例

问题描述 投票:0回答:1

我想在 torchrl 中为 pettingzoo env 包装器定义

rewardsum()
实例。

这是我的环境的定义:

from torchrl.envs.libs.pettingzoo import PettingZooEnv
from torchrl.envs.utils import MarlGroupMapType

env = PettingZooEnv(
    task="mpe/simple_spread_v3",
    parallel=False,
    use_mask=True, # Must use it since one player plays at a time
    group_map=None # # Use default for AEC (one group per player)
)

我正在尝试做的事情:


env = TransformedEnv(
    env,
    RewardSum(),
    
)

check_env_specs(env)

这是我得到的错误(分成多行):

ValueError: Could not match the env reset_keys ['_reset'] with 
            the in_keys [('agent_0', 'reward'), ('agent_1', 'reward'),
            ('agent_2', 'reward')].
            Please make sure that these have the same length.

我期望我的环境中所有代理的奖励总和可以通过

["next", "episode_reward"]
访问,这是 torchrl 定义的默认访问键。

pytorch pettingzoo
1个回答
1
投票

基本上,问题在于环境具有全局完成状态,但每个组都有不同的奖励密钥。

RewardSum(reset_keys=["_reset"] * len(env.group_map.keys())
应该可以工作

© www.soinside.com 2019 - 2024. All rights reserved.