教程:仓库结构

引言

欢迎来到四个简短教程中的第一个,它将指导你从概念到部署创建自己的 PettingZoo 环境。

我们将创建一个并行环境,这意味着每个智能体同时行动。

在考虑环境逻辑之前,我们应该了解环境仓库的结构。

树状结构

环境仓库通常采用以下结构布局

Custom-Environment
├── custom-environment
    └── env
        └── custom_environment.py
    └── custom_environment_v0.py
├── README.md
└── requirements.txt
  • /custom-environment/env 是存放环境代码的地方,以及任何辅助函数(如果环境复杂的话)。

  • /custom-environment/custom_environment_v0.py 是一个导入环境的文件 - 我们使用文件名进行环境版本控制。

  • /README.md 是用于描述环境的文件。

  • /requirements.txt 是用于记录环境依赖项的文件。至少,其中应该包含 pettingzoo请通过 == 对所有依赖项进行版本控制

进阶:附加(可选)文件

上述文件结构是最小的。一个更适合部署的环境将包含

  • /docs/ 用于文档,

  • /setup.py 用于打包,

  • /custom-environment/__init__.py 用于弃用处理,以及

  • Github Actions 用于环境测试的持续集成。

实现这些内容超出了本教程的范围。

骨架代码

你的全部环境逻辑都存储在 /custom-environment/env

/custom-environment/env/custom_environment.py
from pettingzoo import ParallelEnv


class CustomEnvironment(ParallelEnv):
    metadata = {
        "name": "custom_environment_v0",
    }

    def __init__(self):
        pass

    def reset(self, seed=None, options=None):
        pass

    def step(self, actions):
        pass

    def render(self):
        pass

    def observation_space(self, agent):
        return self.observation_spaces[agent]

    def action_space(self, agent):
        return self.action_spaces[agent]