首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rllib使用自定义注册环境。

rllib使用自定义注册环境。
EN

Stack Overflow用户
提问于 2019-10-25 01:26:41
回答 2查看 5.1K关注 0票数 6

Rllib文档提供了一些关于如何创建和培训自定义环境的信息。有一些关于注册该环境的信息,但我想它需要与健身房注册不同的工作方式。

我正在用SimpleCorridor环境测试这个问题。如果我将注册代码添加到文件中,如下所示:

代码语言:javascript
复制
from ray.tune.registry import register_env

class SimpleCorridor(gym.Env):
   ...


def env_creator(env_config):
    return SimpleCorridor(env_config)

register_env("corridor", env_creator)

然后,我可以使用字符串名来训练算法,没有问题:

代码语言:javascript
复制
if __name__ == "__main__":
    ray.init()
    tune.run(
        "PPO",
        stop={
            "timesteps_total": 10000,
        },
        config={
            "env": "corridor", # <--- This works fine!
            "env_config": {
                "corridor_length": 5,
            },
        },
    )

然而,

在定义环境的同一个文件中注册环境是没有意义的,因为您可以只使用类。OpenAI健身房注册很不错,因为如果您安装了环境,那么您可以在任何地方使用它,只需编写

代码语言:javascript
复制
include gym_corridor

对于注册rllib的环境,我还不清楚是否有同样的方法。有办法这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-21 20:22:48

ray中的注册表函数非常令人头疼;我不知道为什么它们不能识别其他环境,比如OpenAI Gym。

无论如何,我解决这个问题的方法是将我的自定义环境封装到另一个函数中,该函数自动导入环境,这样我就可以重用代码了。例如:

代码语言:javascript
复制
def env_creator(env_name):
    if env_name == 'CustomEnv-v0':
        from custom_gym.envs.custom_env import CustomEnv0 as env
    elif env_name == 'CustomEnv-v1':
        from custom_gym.envs.custom_env import CustomEnv1 as env
    else:
        raise NotImplementedError
    return env

然后,要使它与tune.register_env()一起工作,可以使用自定义env和一个lambda函数:

代码语言:javascript
复制
env = env_creator('CustomEnv-v0')
tune.register_env('myEnv', lambda: config, env(config))

从那里开始,tune.run()应该可以工作。这很烦人,但这是我找到的解决注册表问题的最好方法。

票数 10
EN

Stack Overflow用户

发布于 2020-08-12 15:58:07

下面是一个示例,说明如何定义一个Gym自定义环境并注册它,以便在Gym和RLlib 示例中使用。

请参见Python示例代码:

  • sample.py -如何使用gym.make()创建代理来度量随机操作基线的性能
  • train.py -注册,使用RLlib培训策略,衡量学习绩效,显示出一个程序化的推出。

环境的Git的文件结构很棘手,但这允许Python从Git、pip、conda等导入环境--与您所要求的内容相关。我同意SimpleCorridor示例几乎没有意义,因为它在定义环境类的同一个文件中注册和使用自定义环境。同样,该示例展示了如何使用RLlib度量学习,但未能说明如何使用策略,即如何在用例中恢复和部署经过训练的策略的检查点。Ray的一篇即将发布的博文更详细地探讨了gym_example

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58551029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档