我正在尝试根据我在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
答案 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
或者至少,如果我尝试运行您的代码,我会这样做。