【问题标题】:Algorithm to beat bots moving towards prizes predictably击败机器人的算法可预测地走向奖品
【发布时间】:2013-05-09 22:20:49
【问题描述】:

对于这个游戏,有一个 10x10 的棋盘和几个不同的奖品,数值从 1 到 9,有几个简单的机器人在玩,一个总是追求最接近的奖品,另一个总是追求最大的奖品分配给它的点数。机器人和奖品随机放置在板上。任务是创建另一个简单的 AI,它总是收集最多的总点数并赢得比赛。

我将如何在奖励积分和奖励距离之间进行选择,以使这个新 AI 始终赢得比赛?我在想我会倾向于更接近的奖品,但如果它比最接近的奖品大 2 倍,我会选择更大的奖品,但这并不总是赢。

机器人不知道机器人在哪里,如果一个机器人移动 8 个空格以获得一个奖品,另一个机器人可以移动 8 个空格并在此期间收集多个奖品。所有机器人同时移动并且可以对角移动。一旦棋盘上没有奖品,游戏就结束了。

【问题讨论】:

  • 这个问题太模糊了,可以回答的太笼统了。在 SO 中不鼓励这样做。
  • 请详细说明您的游戏规则。例如,如果机器人 A 以 8 步获得了一个遥远的奖品,这是否意味着机器人 B 可以得到 2 个奖品,每个奖品为 4 步?此外,既然奖品和机器人是随机放置的,那么一个机器人怎么能总是赢呢?想象一下 2 个机器人正在使用你的“永远赢算法”,肯定有赢家和输家(偶尔平局除外)。
  • 请编辑您的问题(而不是在评论中回复)并回答以下问题:所有机器人是否同时移动?从一个单元移动到另一个单元需要一个单位时间吗?机器人可以移动到任何一个正方形相邻的 4 个单元格,或者也可以移动到对角相邻的单元格吗?您的机器人能否获得有关其他两个机器人在哪里以及哪个是哪个的信息?

标签: algorithm artificial-intelligence


【解决方案1】:

没有办法保证胜利。如果机器人/奖品是随机放置的,那么肯定会有随机放置让您在其他机器人获得奖品之前离奖品太远。

由于您知道其他机器人的确切行为,因此您可以对它们在给定棋盘上的所有未来动作进行建模。然后,您可以将所有可能的动作枚举为一棵树和棋盘状态,然后查看叶子并找到给您一个获胜分数的叶子。换句话说,每个分支都是你做出的一个动作,节点代表棋盘状态,包括其他机器人将做出的动作。此外,这不会是二叉树,每个节点将根据您可以在该回合中移动的方向进行分支。您将在进行一次实际移动之前完全构建这棵树,因此一旦您选择了最佳路径,基本上您将预测游戏的结果。这之所以成为可能,是因为其他机器人以可预测的方式移动。

此外,当您移动时,您可以添加检查以确保其他机器人按照您的预期移动,就像调试功能一样。根据系统的运行方式,他们可能会在决定移动之前看到您的移动,这取决于每个人是同时移动还是一次移动一个。无论哪种方式都可以,您只需要确保它们移动的模型是准确的。

请注意,您可能会在其他叶子上得分较高但输掉,因为其中一个机器人控制了另一个机器人。 IE。 (you:12, a:1, b:17) vs. (you:11, a:10, b:9)

最成功的路径可能是利用其他机器人行为的路径,例如,当它离你更近时抢夺最高奖品,导致贪婪的机器人松动走向它。如果您有足够的动作,还可以在途中获得奖品。不过,您不必为此行为编写代码,因为当您创建树并找到最佳移动系列时,它会隐式发生。

【讨论】:

  • 听起来,除了谁先得奖,机器人实际上并没有相互影响。因此,您只需列举下一个奖品的不同选择,而不是列举每一个可能的举动。这将大大减小搜索树的大小 - 只有 9 个! = 362880 种不同的结果要检查,可以通过修剪搜索空间来进一步减少(当你保证赢或输时停止搜索子树)
  • @BlueRaja-DannyPflughoeft 如果您不考虑其他机器人的移动,那么您将计划一个课程,该课程将涉及移动到曾经有奖品但被您之前的另一个机器人抢走的方格。我认为他们以可预测的方式移动的事实是获胜的关键。您仍然可以通过停在您处于无法获胜位置的子树来减少搜索树,即您与最高得分者之间的差距大于棋盘上剩余的奖品数量。
  • 搜索树必须在每一步之后重新创建和分析,以考虑其他机器人获得的奖品。我认为与其每次都创建整棵树,不如只生成部分树来考虑这一点。
  • @fotg & Aaron:没有必要考虑具体的移动(除非机器人可以,比如说,互相撞到;问题没有具体说明)。由于您知道其他每个机器人到达该方格的确切时间,并且您知道您的机器人到达该方格需要多长时间,您可以简单地检查他是否会及时到达,如果没有,修剪那个子树。这只会进一步减少您的搜索空间。
  • @fotg 您已经根据其他机器人的移动选择了最佳路径。您不需要重新生成树,因为您选择的路径是基于那些可预测的移动。我看到您更新了问题并说您不知道其他机器人的起始位置。如果您可以看到奖品消失,那么您将知道其他机器人在哪里,并且可以从那时起构建一个准确的树。这对于最近的机器人来说很快,对于贪婪的机器人来说很容易预测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 2019-01-23
  • 1970-01-01
  • 2017-08-04
相关资源
最近更新 更多