我正在开展一个项目,我正试图在C#中实现Q-learning(具体是Unity)。我有一辆需要沿着网格路径行驶的汽车,如图所示: Example - 绿色是目标(+奖励),灰色和离网是障碍( - 奖励),蓝色是汽车。我一直在查看一些关于如何实现这一点的示例/指南(主要是伪代码),但他们似乎知道一个预定义的网格(奖励网格),我不确定如何在我的场景中实现。
我的想法是我的车有三种状态&动作:
我试图遵循这个:http://mnemstudio.org/path-finding-q-learning-tutorial.htm并将其调整到我的系统中 - 但我没有看到如何进行调整。这不需要我的Q矩阵那么大,因为每个单元都是一个单独的状态吗?让我们说我的赛道是16个单元长,有3个车道,这是否意味着我应该有48个状态* 3个动作网格?
编辑:为了简化我的帖子,我精简了我正在努力解决的问题是如何连接我的环境和我的Q矩阵,所以我可以根据我的代理人在我的行为中修改我的q矩阵值一种制度。
答案 0 :(得分:0)
通常,在基于网格的环境(如汽车示例)中,每个单元格都对应不同的状态。所以,你的环境可能有你描述的3个动作(向上和向左移动一个,向上和向右移动一个,向上移动一个),但最终没有三个状态。
正如您在问题的最后部分所指出的,如果您的曲目是16个单元格长度和3个通道,那么您的环境应该使用16 * 3 = 48
状态建模。因此,您的Q矩阵大小应为48 x 3。
通过此设置,您可以使用Q矩阵轻松映射代理状态(轨道中的汽车位置)。