我正在尝试解决代理动态发现(从没有关于环境的信息开始)环境的问题,并在不撞到障碍物的情况下尽可能多地探索环境我有以下环境:
其中环境是一个矩阵。在此,障碍物用 0 表示,自由空间用 1 表示。代理的位置由矩阵中的 0.8 等标签给出。
每次它探索环境时,它都会不断更新自己的地图:
单一状态表示只是包含 -
- 0 表示障碍物
- 1 未开发区域
- 0.8 代表位置
- 0.5 去过一次的地方
- 0.2 对于它去过不止一次的地方
我希望代理不会碰到障碍物并绕过它们。
代理也不应该卡在一个位置,并尝试尽快完成探索。
这是我打算做的:
为了防止agent卡在一个地方,如果agent多次访问一个地方,我想惩罚它。我想将代理访问过一次的地点标记为 0.5,如果多次访问过该地点,则标记为 0.2
我将一个只去过一次的地方标记为 0.5 的原因是因为如果存在这样一种情况,即在环境中只有一种方法可以进入某个区域,而只有一种方法可以离开该区域,我不希望严惩此事。
鉴于这个问题,我正在考虑使用以下奖励系统-
- 每次采取导致未探索区域的行动时+1
- -1 表示当它采取行动撞到障碍物时
- 如果它访问该地方两次,则为 0(即 0.5 场景)
- -0.75 是否访问一个地方超过两次
行动空间只是-
- 向上
- 向下
- 剩下
- 对
我以这种方式解决问题是否正确?强化学习是解决这个问题的方法吗?我对状态、动作、奖励系统的表示是否正确?我认为 DQN 不是正确的方法,因为在这个问题中终端状态的定义很难,我应该使用什么方法来解决这个问题?