C++ Q-学习扫雷行为

C++ Q-学习扫雷行为,c++,q-learning,C++,Q Learning,我试图使用Q-learning来学习Mat Buckland智能扫雷艇的谨慎版本上的扫雷行为,原始版本在这里提供,用于分配任务。分配将我们限制在50次2000步的迭代中,在一个有效的40x40网格上,每次迭代都会重置地雷并在一个随机位置生成代理 我尝试过使用移动惩罚、扫雷奖励和未击中地雷惩罚来执行q学习。扫雷代理似乎无法学会如何在50次迭代中有效扫雷,因为它知道去特定的单元是好的,但在一次扫雷后,它不再得到奖励,而是因为去该单元需要移动成本而受到惩罚 我只想尝试在所有地雷被清除时提供奖励,试图使

我试图使用Q-learning来学习Mat Buckland智能扫雷艇的谨慎版本上的扫雷行为,原始版本在这里提供,用于分配任务。分配将我们限制在50次2000步的迭代中,在一个有效的40x40网格上,每次迭代都会重置地雷并在一个随机位置生成代理

我尝试过使用移动惩罚、扫雷奖励和未击中地雷惩罚来执行q学习。扫雷代理似乎无法学会如何在50次迭代中有效扫雷,因为它知道去特定的单元是好的,但在一次扫雷后,它不再得到奖励,而是因为去该单元需要移动成本而受到惩罚

我只想尝试在所有地雷被清除时提供奖励,试图使环境保持静态,因为只有一种状态不是所有地雷被收集,或者所有地雷都被收集,但我很难实现这一点,因为代理每次迭代只有2000次移动,并且能够回溯,无论是否有收集地雷的奖励,它都无法在一次迭代中扫除所有地雷

我的另一个想法是为每个地雷建立一个有效的新Q矩阵,因此一旦收集到地雷,清扫器将转换到该矩阵,并在当前地雷不在考虑范围内的情况下运行

有没有更好的方法,或者对我自己的方法进行更实际的调整,我可以试试

对规则的更明确解释:

  • 地图边缘环绕,因此离开地图的右边缘将导致机器人出现在左边缘等
  • 清扫机器人可以从任何地图平铺上向上、向下、向左或向右移动
  • 当机器人与地雷相撞时,地雷被视为扫雷,然后被移除
  • 目标是让机器人学会从任何起始位置扫除地图上的所有地雷

鉴于扫地者总能看到最近的水雷,这应该很容易。根据你的问题,我假设你唯一的问题是为你的代理状态找到一个好的奖励函数和表示

界定一个国家 在随机环境中,绝对位置很少有用,特别是在环境无限大的情况下,如您的示例中所示(因为机器人可以驶过边界并在另一侧重生)。这意味着代理操作不需要环境的大小(我们实际上需要它来模拟无限空间,tho)

奖励函数根据代理的当前状态与其先前状态的比较来计算其返回值。但是我们如何定义一个国家呢?让我们看看我们实际需要什么,以便像我们希望的那样操作代理

  • 代理人的地位
  • 最近矿井的位置
  • 这就是我们所需要的。现在我说绝对位置是不好的。这是因为它使得Q表(你称之为Q矩阵)是静态的,并且非常容易受到随机性的影响。因此,让我们尝试从奖励函数中完全消除结果位置,并用相对位置替换它们。幸运的是,在您的情况下,这非常简单:我们不使用绝对位置,而是使用最近的矿山和代理之间的相对位置

    现在我们不再讨论坐标,而是向量。让我们计算点之间的向量:
    v=pos\u mine-pos\u agent
    。该向量为我们提供了两条非常重要的信息:

  • 最近矿井所在的方向,以及
  • 到最近矿井的距离
  • 这些都是我们让我们的代理运作所需要的。因此,代理状态可以定义为

    State: Direction x Distance
    
    其中距离为浮点值,方向为描述角度的浮点值或规范化向量

    定义奖励函数 鉴于我们新定义的状态,我们在奖励函数中唯一关心的是距离。既然我们只想把特工带到矿场,距离才是最重要的。下面是一些关于奖励功能如何工作的猜测:

  • 如果代理扫雷(距离=0),则返回巨额奖励(例如100)
  • 如果代理向地雷移动(距离缩短),则返回中性(或小)奖励(例如0)
  • 如果代理离开矿井(距离增加),则重新获得负奖励(例如-1)
  • 从理论上讲,因为我们会惩罚离开矿井的人,所以这里甚至不需要规则1

    结论
    剩下的唯一一件事就是确定一个好的学习率和折扣,以便您的代理在50次迭代后表现良好。但是,考虑到环境的简单性,这一点应该没那么重要。实验

    你说的移动是指与瓷砖的互动,对吗?那么要么把它揭穿要么把它标记为地雷?此外,50次迭代确实是一个困难的限制。@Timo没有完全与瓷砖交互,它不像旧的扫雷游戏。有一个扫雷机器人在地图上四处游荡,识别地雷,移动就是移动,如果它与地雷相撞,该地雷被视为扫雷并从地图上移除。哦,我明白了,你能列出或链接实际游戏的整个规则集吗?@Timo我已经更新了给定的规则集列表。如果你看一下它所基于的练习,可能会更容易理解,这篇文章的开头附近有链接,它使用人工神经网络在连续的环境中执行相同的概念。特工们知道他们周围的环境或地雷吗?否则这是不可能的。这篇文章没有提到这件事。