'Blokus' 游戏的人工智能(1-4 人)
Artificial Intelligence for a 'Blokus' game (1-4 Player)
我们正在开发一款 Java 小游戏,该游戏基于 Blokus 游戏。
Blokus-Manual
我是 Java 初学者,并计划实施高级人工智能。我们已经有了一个随机 AI(选择一个随机的有效着法)和一个具有简单着法评级机制的 AI。我们还想要一个尽可能好的 AI(或者至少非常好 ;))。
问题是:哪种 AI 概念适合我们的目的?
minimax 算法似乎是一个有效的选择,但如何使其适应 4 人游戏?像 blokus 这样的游戏有更好的概念吗?
已经谢谢了:)
从理论上讲,"as good as possible AI"是一个完美的AI,即在游戏中的任何时刻都完全了解游戏状态的AI(如果人类不知道完整的游戏状态玩家)。对于每个人都具有完整游戏状态知识的游戏(如 Blokus),尽可能好的 AI 是可以尝试预测最佳移动的 AI(如您所说,此处为 minimax)。您还可以 google 用于遗传算法和模拟退火,因为它们是有效的,具体取决于您想要什么。此外,您可以为超过 2 个玩家使用 minimax。
我会推荐minimax算法。您可以添加以提高效率的一件事(意味着您应该能够在未来进行更多操作)是 alpha-beta 修剪。
The problem with minimax search is that the number of games states it has to examine is exponential in the depth of the tree. Unfortunately, we can't eliminate the exponent, but it turns out we can effectively cut it in half.
引用自 Artificial Intelligence: A Modern Approach
第三版 的第 5.3 章,作者是 Stuart Russel 和 Peter Norvig。它支撑着我的显示器,我在大学 类 的几次 类 中使用过它。我知道人们不经常参考有关 SO 的书籍,但它非常相关。我已经广泛使用它,我真的推荐它既易于理解又涵盖广泛的 AI 内容。
它是 available on amazon 104 美元,或者 * 咳咳 * 如果你没有那么多钱买一本教科书,我相信你可以在网上找到它。网上查了下minimax算法和alpha beta pruning应该也有不错的效果。
我认为使 Minimax 成为糟糕选择的唯一情况是游戏状态对于任何给定玩家来说只能部分观察到(他们不知道正在发生的一切),或者如果游戏是不确定的(它有随机元素)。因为这些都不是 Blokus 的情况,我认为您使用 Minimax 做出了一个很好的选择。
AI 领域在教科书中称为对抗性搜索(第 5 章:对抗性搜索),因此使用该术语在线查找更多信息可能会为您提供更多有用的信息,或者帮助您找到示例 Java 执行。我不认为这是初学者的任务,但听起来你可以胜任,如果你制作了游戏并且可以选择随机有效的动作。继续努力!
Min-max 在 4 人游戏中很难实现,因为:
- 决策树呈指数增长,因此您将受内存 and/or 计算时间限制为
log(medMoves)=N
步。对于 4 人游戏,这减少到 N/4。例如,如果 N 为 8,您将只能看到每位玩家前进 2 步。
- 球员勾结难以解释。在现实游戏中,一些玩家可能会互相帮助(即使他们不在同一个团队)。这会导致他们偏离个人'maximum'.
如果你想要 Minmax,你将不得不进行大量修剪以使其可行。我的建议是学习一些模式,这样 AI 就会知道如何做出反应。这可以通过神经网络或经过一些调整的强化学习来完成。
这些模式可以是静态的(您可以手动或以编程方式创建输入场景),也可以是动态的(创建所有有效场景并随机移动 select 得分最高的那些)。
2011 年,经过多次更新,名为 Pentobi 的程序
已发布,是非常强大的Blokus播放程序
迄今为止唯一已知的,事实上,它一点用都没有,而且它
远远超过其他所有人。它将击败许多优秀的人类玩家,甚至为他们的钱给予最好的 运行。
它的主要算法是 Monte Carlo 搜索树,但它也使用了 "book" 个开口和一些启发式算法。
文档和下载信息位于
http://pentobi.sourceforge.net/
我发现即使只使用 1 步预测,使用非常简单的启发式算法也能提供相当聪明的玩家。我实现了我所谓的“space 启发式”,它获取棋盘状态并通过将与每个放置的棋子相邻的所有方块着色为该棋子的颜色来淹没它。然后,一旦泛洪结束,就会计算彩色方块的总数。 space 启发式粗略估计了一个游戏声称或占据棋盘的数量 space,并且方式优于随机游戏。可以与 minimax 或 MCTS 结合使用以变得更强大。
我们正在开发一款 Java 小游戏,该游戏基于 Blokus 游戏。 Blokus-Manual
我是 Java 初学者,并计划实施高级人工智能。我们已经有了一个随机 AI(选择一个随机的有效着法)和一个具有简单着法评级机制的 AI。我们还想要一个尽可能好的 AI(或者至少非常好 ;))。
问题是:哪种 AI 概念适合我们的目的? minimax 算法似乎是一个有效的选择,但如何使其适应 4 人游戏?像 blokus 这样的游戏有更好的概念吗?
已经谢谢了:)
从理论上讲,"as good as possible AI"是一个完美的AI,即在游戏中的任何时刻都完全了解游戏状态的AI(如果人类不知道完整的游戏状态玩家)。对于每个人都具有完整游戏状态知识的游戏(如 Blokus),尽可能好的 AI 是可以尝试预测最佳移动的 AI(如您所说,此处为 minimax)。您还可以 google 用于遗传算法和模拟退火,因为它们是有效的,具体取决于您想要什么。此外,您可以为超过 2 个玩家使用 minimax。
我会推荐minimax算法。您可以添加以提高效率的一件事(意味着您应该能够在未来进行更多操作)是 alpha-beta 修剪。
The problem with minimax search is that the number of games states it has to examine is exponential in the depth of the tree. Unfortunately, we can't eliminate the exponent, but it turns out we can effectively cut it in half.
引用自 Artificial Intelligence: A Modern Approach
第三版 的第 5.3 章,作者是 Stuart Russel 和 Peter Norvig。它支撑着我的显示器,我在大学 类 的几次 类 中使用过它。我知道人们不经常参考有关 SO 的书籍,但它非常相关。我已经广泛使用它,我真的推荐它既易于理解又涵盖广泛的 AI 内容。
它是 available on amazon 104 美元,或者 * 咳咳 * 如果你没有那么多钱买一本教科书,我相信你可以在网上找到它。网上查了下minimax算法和alpha beta pruning应该也有不错的效果。
我认为使 Minimax 成为糟糕选择的唯一情况是游戏状态对于任何给定玩家来说只能部分观察到(他们不知道正在发生的一切),或者如果游戏是不确定的(它有随机元素)。因为这些都不是 Blokus 的情况,我认为您使用 Minimax 做出了一个很好的选择。
AI 领域在教科书中称为对抗性搜索(第 5 章:对抗性搜索),因此使用该术语在线查找更多信息可能会为您提供更多有用的信息,或者帮助您找到示例 Java 执行。我不认为这是初学者的任务,但听起来你可以胜任,如果你制作了游戏并且可以选择随机有效的动作。继续努力!
Min-max 在 4 人游戏中很难实现,因为:
- 决策树呈指数增长,因此您将受内存 and/or 计算时间限制为
log(medMoves)=N
步。对于 4 人游戏,这减少到 N/4。例如,如果 N 为 8,您将只能看到每位玩家前进 2 步。 - 球员勾结难以解释。在现实游戏中,一些玩家可能会互相帮助(即使他们不在同一个团队)。这会导致他们偏离个人'maximum'.
如果你想要 Minmax,你将不得不进行大量修剪以使其可行。我的建议是学习一些模式,这样 AI 就会知道如何做出反应。这可以通过神经网络或经过一些调整的强化学习来完成。
这些模式可以是静态的(您可以手动或以编程方式创建输入场景),也可以是动态的(创建所有有效场景并随机移动 select 得分最高的那些)。
2011 年,经过多次更新,名为 Pentobi 的程序 已发布,是非常强大的Blokus播放程序
迄今为止唯一已知的,事实上,它一点用都没有,而且它 远远超过其他所有人。它将击败许多优秀的人类玩家,甚至为他们的钱给予最好的 运行。
它的主要算法是 Monte Carlo 搜索树,但它也使用了 "book" 个开口和一些启发式算法。
文档和下载信息位于 http://pentobi.sourceforge.net/
我发现即使只使用 1 步预测,使用非常简单的启发式算法也能提供相当聪明的玩家。我实现了我所谓的“space 启发式”,它获取棋盘状态并通过将与每个放置的棋子相邻的所有方块着色为该棋子的颜色来淹没它。然后,一旦泛洪结束,就会计算彩色方块的总数。 space 启发式粗略估计了一个游戏声称或占据棋盘的数量 space,并且方式优于随机游戏。可以与 minimax 或 MCTS 结合使用以变得更强大。