【问题标题】:Need help on chess game evaluation function需要有关棋局评估功能的帮助
【发布时间】:2014-07-12 08:03:33
【问题描述】:
我正在开发一个国际象棋游戏,目前我正在尝试实现一个极小极大算法。我以前没有这样做过,关于如何以编程方式表示和实现以下评估功能特性(材料、移动性、棋子方表、中心控制、被困棋子、国王安全、节奏和棋子结构)我所知甚少对我来说很清楚(如果有人可以向我详细解释,我将不胜感激)。我已经能够为每个棋子、棋子动作值和每个棋子的方桌分配值。目前遇到的问题是如何生成将被添加或从分数中减去的受攻击和防御值。这里的想法是,我想奖励 AI 代理保护它的棋子,并惩罚它受到攻击的棋子。提前感谢。
【问题讨论】:
标签:
java
algorithm
artificial-intelligence
chess
【解决方案2】:
我认为你不应该包括进攻和防守棋子的计算。 minmax 算法已经以更有效的方式考虑了该功能。
如果在接下来的移动中对手可以拿走它,则该棋子受到攻击。如果你试图在静态评估函数中评估这种可能性,如果你想正确地做到这一点,你会遇到麻烦。如果我的受保护棋子被对手皇后拿走,那不是问题。你如何考虑到这一点?如果我的王后被对面的棋子占领,但移动棋子会使国王受到攻击?
这些注意事项由 minmax 算法而不是评估器更好地管理。考虑到要知道您可以吃/可以吃多少块,您应该考虑所有可能的移动,并且您可能会花费相同的时间用于在 minmax 算法中更深一层。此外,如果您稍后决定确实在 minmax 中进一步前进一步,那么时间将被浪费。