0

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

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

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

4

1 回答 1

3

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

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

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

请注意,可能还有其他叶子,您的得分较高但输了,因为其他机器人中的一个控制了另一个。即(你:12,a:1,b:17)与(你:11,a:10,b:9)

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

于 2013-05-09T22:31:12.570 回答