我最近在p5.js中使用带有alpha beta剪枝的Minimax算法构建了一个国际象棋引擎,但我能够实现的最大铺层深度是4,增加到5几乎需要10秒才能走一步,所以有人能建议一些增加铺层深度和减少搜索时间的方法吗?任何帮助都将非常感谢。
发布于 2020-10-19 04:29:08
我最近也构建了一个国际象棋引擎,并且能够使它达到5甚至6的深度。然而,我是用Python构建的,但我认为我可以给出一些通用的建议,这些建议可能适用于您的项目。
当你分析数以百万计的位置时,这些微秒加起来就是相当多的时间!我记得有几个晚上,我试图让我的代码尽可能快。最后,它在深度为5的情况下将运行时间减少了几秒钟。
alpha-beta修剪的优点在于,它不会调查明显更糟糕的动作。因此,你必须尽快找到最好的走法。与其先检查两边的移动,不如告诉算法从中间开始(列D或E),然后向外工作。这些移动通常是最好的,因此算法将修剪更多的分支。
对于每个引擎,都需要在速度和准确性之间进行权衡。看一下这个启发式方法来分析板子的位置:https://www.chessprogramming.org/Simplified_Evaluation_Function。像这样定义位置优势是获得一个一半像样的引擎的快速方法。尽管它往往会在中端游戏中崩溃。
希望这对你有所帮助,祝你好运!
https://stackoverflow.com/questions/64417780
复制相似问题