整数标量数组可以转换为标量索引

时间:2018-12-06 16:57:58

标签: python reinforcement-learning openai-gym

我正在尝试根据我在Medium.com上找到的this blog post创建一个Q表。在我的step function(python类)中,用于创建自定义开放式AI Gym环境,我的动作空间self.action_space将是3个可能的动作,可能的观察值为50到150,以1 {{ 1}}。

self.observation_space

我关注的博客文章通过此代码创建Q表,在我看来,该代码只是根据大小创建一个零数组。

    #possible actions from more_heat less heat functions
    self.action_space = np.array([ 0,  1,  2])

    #possible deviation values from temp - setpoint
    self.observation_space = np.arange(50,150,1)

但是当我尝试打印Q表时,出现此错误: action_size = env.action_space.n state_size = env.observation_space.n qtable = np.zeros((state_size, action_size)) print(qtable)

任何明智的关于我做错事情的话都会受到赞赏!

运行此代码时出现相同的错误:

TypeError: only integer scalar arrays can be converted to a scalar index

1 个答案:

答案 0 :(得分:0)

使用env.observation_space.shape[0]获取状态空间的大小。动作空间也一样。

在您链接的博客文章中,他们解决了the frozen lake task。该任务继承自the discrete class,后者定义了动作并显示了类似这样的空格

    self.action_space = spaces.Discrete(self.nA)

他们的Discrete类具有属性n,用于指定离散空间的大小。 而是使用np.array而不使用。尝试这样做

    action_size = env.action_space.n

或者至少,如果我尝试运行您的代码,我会这样做。