国际象棋引擎的深度是它的力量吗?

时间:2017-02-28 13:24:14

标签: python chess

我正在使用蟒蛇的国际象棋图书馆,在我的程序中使用Stockfish作为国际象棋引擎创建StockfishVsPlayer游戏,我希望能够让用户选择游戏的难度。我知道深度越高,国际象棋引擎检查的动作就越多,但是需要它来定义它的强度吗?我可以说困难=引擎的深度吗?就像在这一行中一样,我选择深度

[...while it's the computer's turn to move...]
[...]
best_move = engine.go(depth=difficulty)[0]
[...]

3 个答案:

答案 0 :(得分:1)

<强> 1。让我们明确一点:

  • Python象棋是国际象棋,它不是国际象棋引擎。
  • Stockfish是一个国际象棋引擎,它不是国际象棋GUI

Python Chess不需要Stockfish,反之亦然。那么,你写的是什么:

  

...如果有选项可以选择它应该提及......

不正确。 Python Chess的文档不应该具有Stockfish UCI国际象棋设置的任何特定内容。

<强> 2。我在哪里可以找到Stockfish UCI设置?

官方网页:

有你想要的。如果您想了解更多详细信息,可能需要查看源代码:

第3。回答你的问题

深度是国际象棋实力最重要的因素之一。其他可能性是:

  • Contempt factor
  • 哈希大小
  • 每次搬家的时间
  • Tablebase
  • 开篇
  • 具体职位

例如,具有Cerebellum图书库的Stockfish比没有图书馆更强大。 Syzygy桌面也提高了游戏力度。

鳕鱼很快,但它不是关闭位置的最佳引擎。最近有一篇关于Komodo和Stockfish关闭位置的文章:

Stockfish中有一个Skill Level参数(在上面的链接中)。如果您想了解它的工作原理,请查看我的帖子:

答案 1 :(得分:1)

通常,是的。这是带有ELO评级的不错的论文排名深度。 http://web.ist.utl.pt/diogo.ferreira/papers/ferreira13impact.pdf

但是,特别是对于Stockfish,答案是否定的。如果您玩Stockfish游戏并将其技能等级设置为0,则该等级约为1200,您应该轻松击败它。但是,如果您查看它搜索的深度,它通常会搜索到深度20,该深度应接近2500级。

所以这一切都取决于它的编程方式。

答案 2 :(得分:-2)

国际象棋引擎不仅仅是它的深度。

由于我们无法在某个时刻计算整个国际象棋,我们需要对董事会的当前价值进行一些评估。此评估越准确,算法就越好。

检查分支到相同深度也是浪费资源。比如说在一个分支中你会免费丢失你的女王。 99%的时间这将是一个死分支,并且用于进一步计算该分支的任何资源都将被浪费。

最后,大多数国际象棋计算机使用数据库来播放开放和结束游戏,这些数据库的复杂性对计算机的能力产生了巨大影响。

如果这三个因素保持不变,那么唯一的另一个主要因素是搜索深度。但是我没有看过python中的鳕鱼,但从我构建国际象棋电脑的经验来看,移动深度可能不是这么有效的指标。随着游戏的进行,移动深度会增加,因为需要考虑的部分较少。通常我很难缩放计算时间。