击败可预测地朝向奖品移动的机器人的算法

在这个游戏中,有一个10×10的棋盘和一些数值从1到9不等的不同奖品,几个简单的机器人在玩,其中一个总是追逐最近的奖品,另一个总是追逐数值最高的奖品。机器人和奖品在棋盘上随机放置。任务是创建另一个简单的AI,它总是收集最高总分并赢得游戏。

我该如何在奖品点数和奖品距离之间做出选择,以使这个新AI总是赢得游戏?我在想我会优先选择较近的奖品,但如果更大的奖品比最近的奖品大2,我会选择更大的奖品,然而这并不总是能赢。

机器人不知道其他机器人的位置,如果一个机器人为了一个奖品移动8个空间,另一个机器人可以在这段时间内移动8个空间并收集多个奖品。所有机器人同时移动,并且可以斜向移动。游戏在棋盘上没有奖品时结束。


回答:

没有办法保证赢。如果机器人和奖品是随机放置的,肯定会有一些随机放置的情况会让你离奖品太远而其他机器人先拿到它们。

由于你知道其他机器人的确切行为,你可以为给定的棋盘建模它们将来的所有移动。你可以将所有可能的移动枚举为一个树形结构,以及棋盘状态,然后查看叶子节点,找到给你赢得分数的节点。换句话说,每个分支是你做出的移动,节点代表包括其他机器人将要做的移动的棋盘状态。此外,这不会是一个二叉树,每个节点将根据你那回合可以移动的方向进行分支。你将在做出任何实际移动之前完全构建这个树,这样一旦你选择了最佳路径,你就基本上预测了游戏的结果。这只有在其他机器人以可预测的方式移动时才有可能。

此外,当你移动时,你可以添加检查以确保其他机器人按你预测的方式移动,这只是一个调试功能。根据系统的操作方式,他们可能在决定他们的移动之前看到你的移动,这取决于每个人是同时移动,还是一个接一个地移动。不管怎样都可以做到,你只需要确保你对他们移动方式的模型是准确的。

请注意,可能有其他叶子节点,你的得分更高但输了,因为另一个机器人支配了另一个。例如,(你:12,a:1,b:17)对比(你:11,a:10,b:9)

最有可能成功的路径是那些利用其他机器人行为的路径,例如,当最高奖品离你更近时抢夺它,导致贪婪的机器人失去移动去追逐它。并且在你有足够的移动次数时,也可以绕道去拿沿途的奖品。你不需要为这种行为编写代码,因为当你创建树并找到最佳移动系列时,它会隐式发生。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注