与 Gym 的兼容性¶
Gymnasium 为一系列环境实现提供了多种兼容性方法。
加载 OpenAI Gym 环境¶
对于仅在 OpenAI Gym 中注册而未在 Gymnasium 中注册的环境,Gymnasium v0.26.3 及以上版本允许通过特殊环境或包装器导入它们。"GymV26Environment-v0"
环境在 Gymnasium v0.26.3 中引入,允许通过 env_name
参数以及其他相关的 kwargs 环境参数导入 Gym 环境。要通过包装器进行转换,可以将环境本身传递给包装器 :class:EnvCompatibility
通过 env
kwarg。
一个例子是atari 0.8.0,它没有gymnasium实现。
import gymnasium as gym
env = gym.make("GymV26Environment-v0", env_id="ALE/Pong-v5")
Gym v0.21 环境兼容性¶
许多环境尚未更新到最新的 Gym 更改,特别是自 v0.21 以来的更新。此次更新对于引入 termination
和 truncation
签名以替代之前使用的 done
具有重要意义。为了允许向后兼容,Gym 和 Gymnasium v0.26+ 在调用 :meth:make
时包含了一个 apply_api_compatibility
kwarg,该参数会自动将一个符合 v0.21 API 的环境转换为与 v0.26+ 兼容的环境。
import gym
env = gym.make("OldV21Env-v0", apply_api_compatibility=True)
此外,在 Gymnasium 中,我们提供了专门的兼容环境,对于 env_id
将调用 gym.make
。
import gymnasium
env = gymnasium.make("GymV21Environment-v0", env_id="CartPole-v1", render_mode="human")
# or
env = gymnasium.make("GymV21Environment-v0", env=OldV21Env())
步骤 API 兼容性¶
如果环境实现了(旧的)完成步骤 API,Gymnasium 提供了两种功能(:meth:gymnasium.utils.step_api_compatibility.convert_to_terminated_truncated_step_api
)和包装器(:class:gymnasium.wrappers.StepAPICompatibility
),它们将把使用旧步骤 API(使用 done
)的环境转换为新步骤 API(使用 termination
和 truncation
)。