如何将值分配给国际象棋中的极小极大或其他策略?

时间:2016-10-05 20:21:42

标签: chess minimax alpha-beta-pruning

我试图理解如何将值分配给AI国际象棋战略中的不同动作。例如,用户有3个选项移动棋子,女王或骑士,然后每次移动对手有3个动作。这些动作有值:移动车+3,移动女王+2,移动Pawn -3等等。

那么,代表这些数字的是什么,对手的动作次数或者对手可以击败的项目(如果击败一个棋子,如果击败一辆车就是+2)?

很抱歉,如果我的问题令人困惑。

3 个答案:

答案 0 :(得分:1)

我还可以补充一点,实际上你评估的是位置,而不是动作。

位置的值可以计算为碎片的总和(pawn = 1,knight = 3,bishop = 3.2,rook = 5,queen = 9),黑色的负值。

复杂的算法也考虑了典当结构,打开文件/对角线的控制,中心方块的控制等。

无论如何,该职位获得了一些价值。因此,移动值是在棋盘上进行此移动时所达到的位置的值。

我希望这会有所帮助: - )

答案 1 :(得分:1)

成像你可以玩到最后的每个位置。在这种情况下,每个最终位置都将是白棋,黑棋或平局的胜利。使用Minimax algorithm,您可以计算起始位置的每次移动,无论是获胜,丢失还是抽出。

例如,如果白色要下一步移动,并且其中一个移动获胜,则前一个位置必须丢失为黑色(这里我们假设两个玩家都是完美的并且只会发挥最佳动作)。如果白方没有获胜的动作,但是有些动作会被吸引,而有些动作将会松动,它将不会发挥松动的动作,因此前一个位置必须为黑色。等等,直到你最终到达起始位置。

然而,这是不可行的,因为即使您使用更高级的算法,可能的移动数量也会爆炸得太快。这就是国际象棋引擎在几次移动后停止并调用evaluation function的原因。此功能为每个位置分配一个分数。这些分数是您在问题中描述的数字。

每个引擎都有独特的评估功能,但所有引擎都拥有最基本的国际象棋知识:

  • 材料(一个棋子是+100,骑士/主教+300,车+500,女王+900)
  • 流动性(鼓励发动机将其部件向中心移动)
  • 王安全(弱国王可以轻易交配,除非是最后阶段)
  • 通过典当
  • 典当结构(应避免双棋子或孤立的棋子)

通常,您在输出中看到的分数将四舍五入为典当。例如,+1.09是大约一个棋子的优势。这可能是因为一方有一个棋子在一个相同的位置,或者可能是材料相等但一方有一些位置优势。

答案 2 :(得分:1)

要为国际象棋位置分配号码,我们使用

  • 计算黑白棋盘上的棋子
  • 计算棋子的位置,例如,第七等级的车很强
  • 计算棋子可以攻击的方格数,特别是不设防的方格
  • 计算在敌人国王附近攻击的方格数