简体   繁体   English

如何复制健身房环境?

[英]How to copy gym environment?

Info: I am using OpenAI Gym to create RL environments but need multiple copies of an environment for something I am doing.信息:我正在使用 OpenAI Gym 来创建 RL 环境,但我正在做某事需要环境的多个副本。 I do not want to do anything like [gym.make(...) for i in range(2)] to make a new environment.我不想做任何类似[gym.make(...) for i in range(2)]的事情来创造一个新的环境。

Question: Given one gym env what is the best way to make a copy of it so that you have 2 duplicate but disconnected envs?问题:给定一个健身房环境,复制它的最佳方法是什么,以便您有 2 个重复但断开连接的环境?

Here is an example:这是一个例子:

import gym

env = gym.make("CartPole-v0")
new_env = # NEED COPY OF ENV HERE

env.reset() # Should not alter new_env

Astariul has an updated answer: : Astariul 有一个更新的答案

Their answer states:他们的回答是:

import copy 
env_2 = copy.deepcopy(env)

For more info about 'copy.deepcopy', and the copy library有关“copy.deepcopy”和复制库的更多信息

Link to copy library documentation链接到复制库文档

You can usecopy.deepcopy() to copy the current environment :您可以使用copy.deepcopy()复制当前环境:

import gym
import copy

env = gym.make("CartPole-v0")
env.reset()

env_2 = copy.deepcopy(env)

env.step() # Stepping through `env` will not alter `env_2`

However note that this solution might not work in case of custom environment, if it contains things that can't be deepcopied (like generators).但是请注意,如果此解决方案包含无法深度复制的内容(如生成器),则此解决方案可能不适用于自定义环境。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM