快捷方式

MeltingpotWrapper

torchrl.envs.MeltingpotWrapper(*args, **kwargs)[原始碼]

Meltingpot 環境包裝器。

GitHub: https://github.com/google-deepmind/meltingpot

論文: https://arxiv.org/abs/2211.13746

Melting Pot 評估對熟悉和不熟悉個體參與的新穎社會情境的泛化能力,並旨在測試廣泛的社會互動,例如:合作、競爭、欺騙、互惠、信任、固執等等。Melting Pot 為研究人員提供了 50 多個多智慧體強化學習基底(多智慧體遊戲),用於訓練智慧體,以及 256 多個獨特的測試場景,用於評估這些訓練過的智慧體。

引數:

env (meltingpot.utils.substrates.substrate.Substrate) – 要包裝的 meltingpot 基底。

關鍵字引數:
  • max_steps (int, 可選) – 任務的步數上限。預設為 None(無限步數上限)。每個 Meltingpot 基底都可以是終止的或非終止的。如果指定了 max_steps,則當達到此步數上限時,場景也將終止(並且 "terminated" 標誌將被設定)。與 gym 的 TimeLimit 轉換或 torchrl 的 StepCounter 不同,此引數不會在 tensordict 中設定 "truncated" 條目。

  • categorical_actions (bool, optional) – 如果環境動作是離散的,是否將它們轉換為分類或獨熱編碼。預設為 True

  • group_map (MarlGroupMapTypeDict[str, List[str]], 可選) – 如何在 tensordicts 中為輸入/輸出分組智慧體。預設情況下,它們都將被放入一個名為 "agents" 的組中。否則,可以指定一個組對映,或從一些預製選項中選擇。有關更多資訊,請參閱 MarlGroupMapType

變數:
  • group_map (Dict[str, List[str]]) – 如何在 tensordicts 中分組智慧體以用於輸入/輸出。有關更多資訊,請參閱 MarlGroupMapType

  • agent_names (list of str) – 環境中智慧體的名稱

  • agent_names_to_indices_map (Dict[str, int]) – 將智慧體名稱對映到其在環境中的索引的字典

  • available_envs (List[str]) – 可用於構建的場景列表。

警告

Meltingpot 返回一個單一的 done 標誌,該標誌不區分環境何時達到 max_steps 和何時終止。如果您認為 truncation 訊號是必需的,請將 max_steps 設定為 None 並使用 StepCounter 轉換。

示例

>>> from meltingpot import substrate
>>> from torchrl.envs.libs.meltingpot import MeltingpotWrapper
>>> substrate_config = substrate.get_config("commons_harvest__open")
>>> mp_env = substrate.build_from_config(
...     substrate_config, roles=substrate_config.default_player_roles
... )
>>> env_torchrl = MeltingpotWrapper(env=mp_env)
>>> print(env_torchrl.rollout(max_steps=5))
TensorDict(
    fields={
        RGB: Tensor(shape=torch.Size([5, 144, 192, 3]), device=cpu, dtype=torch.uint8, is_shared=False),
        agents: TensorDict(
            fields={
                action: Tensor(shape=torch.Size([5, 7]), device=cpu, dtype=torch.int64, is_shared=False),
                observation: TensorDict(
                    fields={
                        COLLECTIVE_REWARD: Tensor(shape=torch.Size([5, 7, 1]), device=cpu, dtype=torch.float64, is_shared=False),
                        READY_TO_SHOOT: Tensor(shape=torch.Size([5, 7, 1]), device=cpu, dtype=torch.float64, is_shared=False),
                        RGB: Tensor(shape=torch.Size([5, 7, 88, 88, 3]), device=cpu, dtype=torch.uint8, is_shared=False)},
                    batch_size=torch.Size([5, 7]),
                    device=cpu,
                    is_shared=False)},
            batch_size=torch.Size([5, 7]),
            device=cpu,
            is_shared=False),
        done: Tensor(shape=torch.Size([5, 1]), device=cpu, dtype=torch.bool, is_shared=False),
        next: TensorDict(
            fields={
                RGB: Tensor(shape=torch.Size([5, 144, 192, 3]), device=cpu, dtype=torch.uint8, is_shared=False),
                agents: TensorDict(
                    fields={
                        observation: TensorDict(
                            fields={
                                COLLECTIVE_REWARD: Tensor(shape=torch.Size([5, 7, 1]), device=cpu, dtype=torch.float64, is_shared=False),
                                READY_TO_SHOOT: Tensor(shape=torch.Size([5, 7, 1]), device=cpu, dtype=torch.float64, is_shared=False),
                                RGB: Tensor(shape=torch.Size([5, 7, 88, 88, 3]), device=cpu, dtype=torch.uint8, is_shared=False)},
                            batch_size=torch.Size([5, 7]),
                            device=cpu,
                            is_shared=False),
                        reward: Tensor(shape=torch.Size([5, 7, 1]), device=cpu, dtype=torch.float64, is_shared=False)},
                    batch_size=torch.Size([5, 7]),
                    device=cpu,
                    is_shared=False),
                done: Tensor(shape=torch.Size([5, 1]), device=cpu, dtype=torch.bool, is_shared=False),
                terminated: Tensor(shape=torch.Size([5, 1]), device=cpu, dtype=torch.bool, is_shared=False)},
            batch_size=torch.Size([5]),
            device=cpu,
            is_shared=False),
        terminated: Tensor(shape=torch.Size([5, 1]), device=cpu, dtype=torch.bool, is_shared=False)},
    batch_size=torch.Size([5]),
    device=cpu,
    is_shared=False)

文件

訪問全面的 PyTorch 開發者文件

檢視文件

教程

為初學者和高階開發者提供深入的教程

檢視教程

資源

查詢開發資源並讓您的問題得到解答

檢視資源