我正在做一个项目,我试图在C#(特别是团结)中实现Q-学习。我有一辆车,它需要沿着网格路径行驶,如:示例 -绿色是目标(+奖励),灰色和非网格是障碍物(-reward),蓝色是汽车。我一直在看一些关于如何实现这个(大部分是伪代码)的例子/指南,但是他们似乎知道一个预定义的网格(一个奖励网格),我不知道如何在我的场景中实现它。
我的车有三种状态&动作:
我试图遵循这样的原则:http://mnemstudio.org/path-finding-q-learning-tutorial.htm并将其应用到我的系统中--但我不知道如何进行适应。这难道不需要我的q矩阵更大,因为每个细胞都是一个独立的状态吗?让我说我的轨道是16个细胞长,有3个车道,这是否意味着我应该有一个48个州*3个行动网格?
编辑:为了简化我的帖子,我正在挣扎的是如何连接我的环境和我的q-矩阵,所以我可以根据我的代理在我的系统中的行为来修改我的q-矩阵值。
发布于 2018-06-04 09:43:05
通常,在基于网格的环境中,如您的汽车示例,每个单元格对应于不同的状态。因此,您的环境可能有您描述的三个操作(向上和左移动一个,向上和右边移动一个,向上移动一个),但是肯定没有三个状态。
正如您在问题的最后部分所指出的,如果您的轨道是16个单元格长和3个车道,则您的环境应该使用16 * 3 = 48状态建模。因此,你的Q矩阵大小应该是48x3.
有了这个设置,您可以很容易地映射您的代理状态(在轨道中的汽车位置)与Q矩阵。
https://stackoverflow.com/questions/50673689
复制相似问题