在设计用于强化学习的网格世界时,如何表示状态空间



我想设计一个5x5的网格世界,在这个世界中,代理可以移动到RL算法的实验中。直观地说,我会用元组(x,y(来描述状态,即在python中使用lists[x,y]或numpy数组。然而,在实现大多数算法时,这会成为一个麻烦。例如,如果我想要一个具有条目Q(s,a(的Q值矩阵,我不能只使用numpy矩阵,其中行索引对应于状态,而是必须使用更复杂的矩阵。

我的问题是,仅仅列举所有状态,即1、2、…是否是标准的。。。,25而不是使用(x,y(,或者是否有另一种巧妙的方式来表示状态,从而使处理它们变得容易。

您可以使用状态索引到网格坐标的转换函数。然后,您可以跟踪Q表中的状态索引,并使用转换函数引用网格单元。像这样的东西可能对你有用(坐标到索引(:

idx = point[0] + point[1] * grid_size

希望这能有所帮助!

最新更新