没有奖励网格的Q-Learning

时间:2018-06-04 05:05:57

标签: c# unity3d reinforcement-learning

我正在开展一个项目,我正试图在C#中实现Q-learning(具体是Unity)。我有一辆需要沿着网格路径行驶的汽车,如图所示: Example - 绿色是目标(+奖励),灰色和离网是障碍( - 奖励),蓝色是汽车。我一直在查看一些关于如何实现这一点的示例/指南(主要是伪代码),但他们似乎知道一个预定义的网格(奖励网格),我不确定如何在我的场景中实现。

我的想法是我的车有三种状态&动作:

  • 状态:在左车道行驶,在中央车道行驶,在右车道行驶
  • 操作:向上和向左移动一个,向上移动一个,向上移动一个

我试图遵循这个:http://mnemstudio.org/path-finding-q-learning-tutorial.htm并将其调整到我的系统中 - 但我没有看到如何进行调整。这不需要我的Q矩阵那么大,因为每个单元都是一个单独的状态吗?让我们说我的赛道是16个单元长,有3个车道,这是否意味着我应该有48个状态* 3个动作网格?

编辑:为了简化我的帖子,我精简了我正在努力解决的问题是如何连接我的环境和我的Q矩阵,所以我可以根据我的代理人在我的行为中修改我的q矩阵值一种制度。

1 个答案:

答案 0 :(得分:0)

通常,在基于网格的环境(如汽车示例)中,每个单元格都对应不同的状态。所以,你的环境可能有你描述的3个动作(向上和向左移动一个,向上和向右移动一个,向上移动一个),但最终没有三个状态。

正如您在问题的最后部分所指出的,如果您的曲目是16个单元格长度和3个通道,那么您的环境应该使用16 * 3 = 48状态建模。因此,您的Q矩阵大小应为48 x 3。

通过此设置,您可以使用Q矩阵轻松映射代理状态(轨道中的汽车位置)。