openai Gym env.P,AttributeError“ TimeLimit”对象没有属性“ P”

时间:2018-08-27 13:18:39

标签: python python-3.x reinforcement-learning openai-gym

我目前正在阅读Sudharsan Ravichandiran的使用Python进行动手强化学习,在第一个示例中,我遇到了AttributeError:

AttributeError 'TimeLimit' object has no attribute 'P'

由以下行引发:

for next_sr in env.P[state][action]: 

我找不到有关 env.P 的任何文档,但是我在这里找到了用python2编写的类似示例:https://gym.openai.com/evaluations/eval_48sirBRSRAapMjotYzjb6w/

我想 env.P 是一个过时的库的一部分(即使该书于2018年6月出版,并且隐含的代码在python3中),那么如何替换它?

3 个答案:

答案 0 :(得分:5)

尝试通过添加此内容来先打开环境

env = env.unwrapped

答案 1 :(得分:0)

尝试一下

for next_sr in env.env.P[state][action]:

在开始时注意额外的“ env”

一般使用,请尝试

>>> dir(class_name)

这将列出成员函数。

答案 2 :(得分:0)

如果您使用的是OpenAI Gym的最新版本,则this github issue link中提出的解决方案对我有用。

正如github问题中所述,最新版本的Gym的监视已被包装程序取代,因此,监视不适用于最新的Gym。要在最新版本的Gym中重新实现监视,请更改类似于以下代码:

    env.monitor.start('cartpole-hill/', force=True)

    env = gym.wrappers.Monitor(env,directory='cartpole-hill/',force=True,write_upon_reset=True)