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

2024-05-14 10:29:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的程序中使用python的象棋库Stockfish作为象棋引擎,将创建StockfishVsPlayer游戏,我希望能够让用户选择游戏的难度。我知道深度越高,象棋引擎检查的步数越多,但这就是定义其强度所需的全部吗?我可以说难度=引擎深度吗?就像在这一行,我选择深度

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

Tags: the用户引擎程序游戏move定义it
3条回答

象棋引擎不仅仅是深度。在

由于我们无法在某一时刻计算出整个棋局,我们需要对棋盘的当前价值进行一些评估。这种评估越准确,算法就越好。在

同样,如果将分支检查到相同的深度,则会浪费资源。例如,在一个分支中,你免费失去了你的女王。99%的时间这将是一个死分支,任何用于进一步计算该分支的资源都将被浪费。在

最后,大多数国际象棋计算机使用数据库来进行开局和终局,这些数据库的复杂程度对计算机的能力有很大的影响。在

如果这三个因素保持不变,那么唯一的另一个主要因素就是搜索的深度。不过,我并没有在python中研究过stockfish,但是根据我的经验,构建象棋计算机的移动深度并不是一个有效的度量标准。随着游戏的进行,移动深度增加,因为需要考虑的因素更少。通常我很难调整计算时间。在

1。让我们说清楚:

  • Python国际象棋是象棋图形用户界面,它不是象棋引擎。在
  • Stockfish是一个象棋引擎,不是象棋图形用户界面

对于Python象棋,您不需要Stockfish,反之亦然。因此,你写的:

... If there was an option to select the level it should mention ...

不正确。Python Chess的文档不应该有任何特定于Stockfish UCI Chess设置的内容。在

2。在哪里可以找到Stockfish UCI设置?

官方网页:

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

3。回答您的问题

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

例如,有Cerebellum书库的Stockfish要比没有的强大。SyzyyTableBase也提高了游戏强度。在

Stockfish速度很快,但在关闭位置它不是最好的引擎。最近有一篇关于科莫多和Stockfish平仓的帖子:

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

一般来说,是的。这是一个很好的论文排名深度与埃洛评级。 http://web.ist.utl.pt/diogo.ferreira/papers/ferreira13impact.pdf

但是,特别是对鳕鱼来说,答案是否定的。如果你玩了一个鳕鱼游戏,把它的技能等级设置为0,这大约是1200分,你应该很容易击败它。但是,如果你看一下它搜索的深度,它通常会搜索到深度20,这应该更接近2500等级。在

所以这取决于它是如何编程的。在

相关问题 更多 >

    热门问题