1

我编写了一个简单的 python 代码来模拟“FrozenLake-v0”:

import gym

env = gym.make('FrozenLake-v0')
env.reset()

for _ in range(1000):
    env.render()
    env.step(env.action_space.sample())

但是我的输出包含一些特殊符号:

[41mS[0mFFF
FHFH
FFFH
HFFG
  (Left)
[41mS[0mFFF
FHFH
FFFH
HFFG
  (Up)
S[41mF[0mFF
FHFH
FFFH
HFFG
  (Down)
SFFF
F[41mH[0mFH
FFFH
HFFG
...

为什么这些符号会出现在输出中?
我该如何解决?

编辑:

当我制作环境时,我收到以下警告。我不知道这是否有用:

[33mWARN:gym.spaces.Box 自动检测到 dtype 为类 'numpy.float32'。请提供明确的 dtype。[0m

4

3 回答 3

1

您看到的特殊符号([41m、、[0m等)是颜色指令(参见这个问题),当外壳支持它们时,它们会使电路板看起来更好。更具体地说,当前代理位置获得红色背景。

查看 openai-gym 源代码,我没有看到任何抑制颜色的标志,因此对您来说最好的解决方案是在您的 shell 中启用颜色支持,这样这些指令就不会打扰您。例如,看看Unix SE 上的这个讨论。

于 2018-05-13T16:16:30.210 回答
1

您可以通过执行隐藏警告gym.logger.set_level(40)。这会将要打印的记录器消息的最低级别设置为 40。相应地,只会显示错误级别的消息。每次导入时都需要包含此语句gym

于 2018-05-18T19:03:19.600 回答
0

你期待一个gui吗?如果是这种情况,您必须提及modewhile 调用env.render()函数。通过设置mode=human,您可以在 gui 模式下调用渲染函数。如果这不起作用,则意味着环境没有 gui。

于 2018-05-09T08:34:28.870 回答