实施国际象棋引擎有多难? [关闭]
machine-learning
4
0

我想知道实施国际象棋引擎有多困难。已经有开源的实现了吗?

对于给定的主板星座,您似乎需要评分功能,并且需要一种非常快速的方法来探索将来可能出现的几种主板星座。探索所有可能的未来动作当然是不可能的,因此人们可以贪婪地跟随最有前途的动作,或者使用类似模拟退火的近似技术来概率地跟随可能的动作。

您是否认为这是在机器学习研究生项目的范围之内-假设有一个学生可以使用的开源实现,那么基本的事情(例如为给定的数字返回下一个可能的动作)是吗?可能太难了?

让不同的团队从事国际象棋引擎的工作,然后让他们彼此对抗将是一个有趣的项目。

参考资料:
Stack Overflow
收藏
评论
共 8 个回答
高赞 时间 活跃

是的,这绝对在学生项目的范围内。以下是我存档中的一些链接,可以帮助您入门:

收藏
评论

做好一个人很困难,但是对于一个研究生项目来说大概是正确的水平(当我获得计算机科学的学士学位时,我的一个朋友为他的最后一年论文写了一个象棋引擎)。

是的,有开源的,最有力的竞争者是GNU Chess ,这是非常受尊重的。

收藏
评论

每年在我的大学,“人工智能入门”课程(三年级课程)都要求学生从头开始创建国际象棋程序并附带论文,并且我们在演讲中介绍了关于对抗性搜索的一章,以便学生有足够的知识来做这件事。对于我们来说,该项目既可以自己完成,也可以与另一个项目一起完成(显然,如果与合作伙伴一起完成,则可以期待更好的程序,例如更深的层等)。由于计算机图形学课程也是三年级课程,因此学生可以将其最终项目与AI课程的最终项目结合起来。

由于我刚好是三年级,并且正在参加这两个课程(现已在第一学期结束),所以我与一个也参加这两个课程的朋友合作,自我们结束以来我们一直在从事该计划考试(大约是12月21日),应于1月11日到期。

它完全可以在一个月内完成(尤其是作为研究生项目)。我们正在制作一个3D象棋程序,因此它不仅需要象棋引擎,还需要做更多的工作。最难的部分将是确定棋盘的表示形式,执行所有规则(passant,castling,提升等),创建启发式功能和游戏树(通常使用alpha-beta修剪完成)。

这是我们用来记录进度的站点,稍后我们完成代码后托管代码和文件(现在有点空白)。 http://sites.google.com/site/chessatbrock/

收藏
评论

我无法回答您的问题,但可以回答您的最终评论

“让不同的团队使用国际象棋引擎,然后让他们彼此对战,将是一个有趣的项目……”

这已经在FICS国际象棋服务器上完成。我建议您登录那里(需要telnet)并检查文档,您也许可以与能够向您提供有关其国际象棋棋子的具体提示的人联系

收藏
评论

去年,我用C#构建了自己的国际象棋引擎。并不是那么困难。在工作中,我犯了个错误,我发现互联网上的信息只是没有清楚地呈现出来,而其中很多只是从其他站点复制而来。

为了使其他人可以更轻松地进行此过程,我一直在记录国际象棋引擎的开发并将很多源代码发布在我的博客上:

http://www.chessbin.com

我什至已经创建了一个国际象棋游戏开发套件 ,可以帮助您开始开发自己的国际象棋引擎,其中包括:

  1. 代表棋盘和棋子的所有必需代码
  2. 与验证棋子动作有关的代码
  3. 图形用户界面,显示国际象棋的位置,并允许您在棋盘上移动棋子

我的网站基本上是专门为像您这样的人准备的;想开始构建自己的国际象棋引擎的人。

收藏
评论

这取决于您所针对的实力水平和您的编程技能。假设您是一位经验丰富的程序员 ,这是我的看法(我知道很多引擎,但从未编写过一个引擎):

*一个非常简单的引擎,可以击败初学者/业余玩家(ELO 1200-1600):很多代码,但是很容易。

*一个可以击败“俱乐部玩家”(ELO 1800-2000)的引擎:它开始变得越来越困难,您需要打开书本,进行优化和扎实的AI

*可以击败高手的引擎:努力工作,您需要多年的经验

*一个顶级引擎(例如Rybka,Houdini,Stockfish,Hiarcs)可以击败地球上任何人的99%的时间:这是一项巨大的努力,您需要大量的耐心和多年的经验。

我就是这样看的!

收藏
评论

在现代PC上使用合理的国际象棋引擎当然是可行的,尤其是如果您已经够老了,以至于有很多Chess程序在1和2 MHz的8位计算机上仅使用了几K的内存就可以很好地发挥作用。如今,您可以使用一种解释性语言来开发国际象棋引擎,并击败编码他最紧的东西的顶级6502或Z80程序员。

我必须与Dan Spracklen合作,后者在1978年与妻子Kathleen共同创作了最初的Sargon 。凯瑟琳(Kathleen)的兄弟将端口转移到Apple II,我和他以及他的儿子一起工作。 (当我与这些人一起工作时,国际象棋为消费者创造了利润。我记得有一个人带来了Atari ST和Amiga Chess游戏,那时他们的市场确实还不多。)

业余爱好者在1983年进行的象棋编程中,“ 计算机游戏技术 ”是一个了不起的介绍。仍然很有趣。涵盖了好东西:alpha-beta,minimax等

这本书足够好,您可以从那里开始,然后了解自那时以来取得的进步。

替代文字

收藏
评论

Crafty是顶级国际象棋引擎之一,并且是完全开源的。但是,我不鼓励您将它用于C编写的学生项目中,它非常复杂并且很难理解,因为它已经过高度优化。

出于教育目的,我建议您看一下亚当·贝伦特斯Adam Berents)的网站 ,其中描述了他在C#中实现国际象棋引擎时经历的过程。源代码当然也可用。我认为这是一个很好的起点。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号