我们正在开发一款基于Blokus游戏的Java小游戏。Blokus规则手册
我是一个Java初学者,计划实现一个高级的人工智能。我们已经有了一个随机AI(随机选择有效移动)和一个带有简单移动评级机制的AI。我们还希望有一个尽可能优秀(或至少非常好 ;))的AI。
问题是:哪种AI概念适合我们的目的?Minimax算法似乎是一个有效的选择,但如何将其适应于四人游戏呢?对于像Blokus这样的游戏,是否有更好的概念?
谢谢你们 🙂
回答:
在四人游戏中实现Min-max算法是困难的,因为:
- 决策树呈指数增长,因此你将受到内存和/或计算时间的限制,只能进行
log(medMoves)=N
步。对于四人游戏,这将减少到N/4。例如,如果N是8,你只能看到每个玩家前面的2步移动。 - 玩家之间的勾结很难处理。在现实游戏中,一些玩家可能会互相帮助(即使他们不在同一队伍)。这会导致他们偏离个人‘最大值’。
如果你想要使用Minmax,你将不得不进行大量的剪枝来使其可行。我建议学习一些模式,以便AI知道如何反应。这可以通过神经网络,或通过一些调整的强化学习来实现。
这些模式可以是静态的(你可以手动或编程地创建输入场景),也可以是动态的(创建所有有效场景并随机选择移动,选择得分最高的那些)。