首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Q-学习学习扫雷行为

Q-学习学习扫雷行为
EN

Stack Overflow用户
提问于 2019-10-09 16:01:39
回答 1查看 175关注 0票数 1

我试图使用Q-学习了解地雷行为的一个谨慎版本的马特巴克兰的智能扫地器,原来在这里可用的http://www.ai-junkie.com/ann/evolved/nnt1.html,为一项任务。该分配限制我们在一个有效的40x40网格上移动2000年的50次迭代,每次迭代都在一个随机位置重新设置地雷和代理。

我尝试用移动的惩罚、清除地雷的奖励和没有击中地雷的惩罚来执行Q学习。清除器代理似乎无法学习如何在50次迭代中有效地清除地雷,因为它知道去特定的单元是好的,但是在一个地雷消失之后,它不再得到奖励,而是因为使用移动成本而受到惩罚。

我只想尝试提供奖励,只有当所有的地雷被清除,试图使环境静止,因为只有一个状态,不是所有的地雷收集,或所有的地雷收集,但我努力实现这一点,因为代理人只有2000次移动,每次迭代,能够回溯,它从来没有设法在一次迭代中清除所有地雷的范围内,有或没有奖励收集地雷。

我的另一个想法是为每个地雷建立一个有效的新的Q矩阵,因此一旦收集了一个地雷,清扫器就会过渡到该矩阵,并在不考虑当前地雷的情况下进行操作。

有什么更好的方法,我可以采取这一点,或也许更实际的调整,我自己的方法,我可以尝试?

对“规则”的更明确解释:

  • 地图的边缘环绕着,所以从地图的右边缘移动会导致机器人出现在左边的边缘等等。
  • --清扫机器人可以从任何地图上移动,左移动,或者右移动。
  • 当机器人与地雷相撞时,地雷被认为是被扫过的,然后被移除。
  • 的目的是让机器人学会从任何起始位置清除地图上的所有地雷。

f 210

EN

回答 1

Stack Overflow用户

发布于 2019-10-10 13:59:18

由于清扫车总是能看到最近的地雷,这应该是相当容易的。从您的问题中,我假设您唯一的问题是为您的代理状态找到一个良好的奖励函数和表示。

定义状态

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

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

  1. 是代理人的位置,
  2. 是最近的矿场的位置。

这就是我们所需要的。现在我说,绝对位置是不好的。这是因为它使Q表(你称它为Q矩阵)是静态的,并且对随机性非常脆弱。因此,让我们试着从奖励函数中完全消除上述位置,并将它们替换为相对位置。幸运的是,在您的情况下,这是非常简单的:我们没有使用绝对位置,而是使用最近的地雷和代理之间的相对位置。

现在我们不再处理坐标,而是向量。让我们计算我们点之间的向量:v = pos_mine - pos_agent。这个向量给了我们两个非常重要的信息:

  1. 是近矿的方向,
  2. 是最近的矿的距离。

这些就是我们要让我们的特工开始运作所需要的一切。因此,代理状态可以定义为

代码语言:javascript
复制
State: Direction x Distance

其中,距离是浮点值和方向,或者是描述角度的浮点数,或者是归一化向量。

定义奖励函数

考虑到我们新定义的状态,我们在奖励函数中唯一关心的就是距离。既然我们想要的只是把代理人移向地雷,那么距离才是最重要的。下面是一些关于奖励函数如何工作的猜测:

  1. 如果代理清除一个地雷(距离== 0),返回一个巨大的奖励(前)。
  2. ,如果代理移动到地雷(距离正在缩小),返回中立(或小)奖励(例如)。0).
  3. ,如果代理离开地雷(距离在增加),则返回一个负值(例如。-1)

理论上,由于我们惩罚离开矿井,我们甚至不需要规则1在这里。

结论

剩下的唯一的事情是确定一个好的学习率和折扣,这样您的代理在50次迭代后表现良好。但是,考虑到环境的简单性,这一点根本不重要。实验。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58308078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档