openai/gym 中各种环境(Env)的参数解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openai/gym 中各种环境(Env)的参数解释相关的知识,希望对你有一定的参考价值。

参考技术A openai/gym 种有众多已经建立好的环境,如:

并行运行 openai-gym 环境

【中文标题】并行运行 openai-gym 环境【英文标题】:Run openai-gym environment on parallel 【发布时间】:2019-06-04 20:55:48 【问题描述】:

以下代码摘自https://bair.berkeley.edu/blog/2018/01/09/ray/。

import gym

@ray.remote
class Simulator(object):
    def __init__(self):
        self.env = gym.make("Pong-v0")
        self.env.reset()

    def step(self, action):
        return self.env.step(action)

# Create a simulator, this will start a remote process that will run
# all methods for this actor.
simulator = Simulator.remote()

observations = []
for _ in range(4):
    # Take action 0 in the simulator. This call does not block and
    # it returns a future.
    observations.append(simulator.step.remote(0))

当我阅读这段代码时,我感到很困惑。这段代码真的是并行运行的吗?根据我的理解,env 只有一个,所以上面的代码应该按顺序执行操作,即一个接一个地执行操作。如果是这样,那么做上述事情的意义何在?

【问题讨论】:

【参考方案1】:

你是对的,只有一个 Simulator 演员。 step 方法在 actor 上被调用了四次。这会创建四个任务,actor 将依次执行这些任务。

如果这就是应用程序所做的一切,那么创建一个常规的 Python 对象并调用一个方法四次没有任何优势。但是,这种方法使您可以选择创建两个 Simulator 演员并在它们上并行调用方法。例如,您可以编写以下内容。

# This assumes you've already called "import ray", "import gym",
# "ray.init()", and defined the Simulator class from the original
# post.

# Create two simulators.
simulator1 = Simulator.remote()
simulator2 = Simulator.remote()

# Step each of them four times.
observation_ids1 = []
observation_ids2 = []
for _ in range(4):
    observation_ids1.append(simulator1.step.remote(0))
    observation_ids2.append(simulator2.step.remote(0))

# Get the results.
observations1 = ray.get(observation_ids1)
observations2 = ray.get(observation_ids2)

在此示例中,每个模拟器串行执行四个任务,但两个模拟器并行工作。您可以通过在 step 方法中添加 time.sleep(1) 语句并计时整个计算需要多长时间来说明这一点。

【讨论】:

以上是关于openai/gym 中各种环境(Env)的参数解释的主要内容,如果未能解决你的问题,请参考以下文章

OpenAI gym环境--1基本知识

openAi-gym 名称错误

强化学习 平台 openAI 的 gym 安装 (Ubuntu环境下如何安装Python的gym模块)

openai gym 环境配置

怎么在anaconda上安装openai gym 在windows里

OpenAI 健身房:如何在 CartPole-v0 中获取像素