【问题标题】:How are value assigned to moves in minimax or other strategy in Chess?如何为国际象棋中的极小极大或其他策略分配价值?
【发布时间】:2016-10-05 20:21:42
【问题描述】:

我试图了解如何为 AI 国际象棋策略中的不同动作分配值。例如,用户有 3 个选项移动棋子、后或马,然后对于每个移动对手有 3 个移动。这些移动具有值:移动车 + 3,移动皇后 +2,移动典当 -3 等等。

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

对不起,如果我的问题令人困惑。

【问题讨论】:

  • 我建议将其移至Chess
  • 但要回答您的问题,一般来说,将 +1 视为成为白色棋子的价值,-1 视为成为黑色棋子的价值。一般来说,点可以这样分配(R = 5,N/B = 3,Q = 9,K = 250)。计算机还会将棋子的一部分分配给诸如良好的棋子结构、放置良好的棋子、高级受保护的已通过棋子等。

标签: chess minimax alpha-beta-pruning


【解决方案1】:

想象你可以将每个位置都打到最后。在这种情况下,每个最终位置要么是白赢,黑赢,要么是平局。使用Minimax algorithm,您可以计算起始位置的每一步,无论是赢、输还是平。

例如,如果白方接下来要下棋,并且其中一个棋子获胜,那么黑棋必须输掉先前的位置(这里我们假设两个玩家都是完美的,只会下最好的棋子)。如果白棋没有获胜棋步,但有的走棋,有的走棋,它不会走走失棋的棋,所以黑棋必须先和棋。以此类推,直到你最终到达起始位置。

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

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

  • 材料(一个棋子+100,马/象+300,车+500,后+900)
  • 移动性(鼓励引擎将其部件移向中心)
  • 国王安全(弱国王很容易交配,除非是最后阶段)
  • 通过的棋子
  • 典当结构(应避免双典当或孤立典当)

通常,您在输出中看到的分数会四舍五入为棋子。例如,+1.09 是大约一个棋子的优势。这可能是因为一侧多一个棋子处于相同的位置,也可能是材料相同但一侧具有一些位置优势。

【讨论】:

    【解决方案2】:

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

    位置的价值可以计算为棋子的总和(卒 = 1,马 = 3,象 = 3.2,车 = 5,皇后 = 9),黑色为负值。

    复杂的算法还考虑棋子结构、打开文件/对角线的控制、中心方块的控制等。

    不管怎样,这个职位有一些价值。因此,移动值是在棋盘上移动时到达的位置的值。

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

    【讨论】:

    • 谢谢,很清楚。因此,正如我从您的回答中了解到的那样,如果在树中我看到 MIN(opponent) 节点 X 的值为 -9,则意味着对手在该位置击败了我的皇后。对吗?
    • 是的,这可能意味着他击败了你的女王。或者车+马+兵。可以通过多种方式达到相同的值。
    【解决方案3】:

    要将数字分配给国际象棋位置,我们使用

    • 数一数白棋和黑棋的棋子
    • 计算棋子的位置,例如七阶的车强
    • 计算棋子可以攻击的方格数,尤其是不设防的方格
    • 计算棋子攻击敌王附近的方格数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多