实施国际象棋引擎有多难?

Fra*_*ank 45 chess machine-learning

我想知道实施国际象棋引擎有多难.是否已经有开源实现?

看起来你需要一个给定的板星座的评分函数,以及探索几个可能的未来板块星座的快速方法.探索所有可能的未来动作当然是不可能的,因此人们可以贪婪地遵循最有希望的动作,或使用模拟退火等近似技术来概率地跟踪可能的动作.

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

让不同的团队在国际象棋引擎上工作然后让他们互相对抗是一个有趣的项目......

Ada*_*ent 54

我花了去年在C#中建立自己的国际象棋引擎.这并不困难.在我的工作中我犯了错误,我发现互联网上的信息并没有清楚地呈现出来,而且大部分信息只是从其他网站上复制而来.

为了让其他人更轻松地完成这个过程,我一直在记录我的国际象棋引擎的开发,并在我的博客上发布了大部分源代码:

http://www.chessbin.com

我甚至创建了一个国际象棋游戏开发套件,它将帮助您开始开发自己的国际象棋引擎,其中包含:

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

我的网站基本上是专门为像你这样的人而设的; 想要开始构建自己的国际象棋引擎的人.

  • 对于那些将来关注这个问题的人,我找到了 Adam Berent 的网站:https://www.adamberent.com/wp-content/uploads/2019/02/GuideToProgrammingChessEngine.html (3认同)
  • 棋盘发生了什么事?它消失了,我收到 404 错误? (2认同)

Roa*_*ior 33

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


Cap*_*ton 8

Crafty是最受欢迎的国际象棋引擎之一.但是我不鼓励你将它用于用C编写的学生项目,非常复杂且非常难以理解,因为它是高度优化的.

出于教育目的,我建议你看一下Adam Berents网站,在那里他描述了他在C#中实现国际象棋引擎时所经历的过程.当然也可以使用源代码.在我看来,这是一个很好的开始.

  • Adam Berent自己回答了这个问题,他的回答绝对值得一试. (2认同)

Ste*_*ini 7

我不能回答你的问题,但我可以回答你的最后评论

"让不同的团队在国际象棋引擎上工作,然后让他们互相对抗,这将是一个有趣的项目......"

这已在FICS国际象棋服务器上完成.我建议你登录那里(需要telnet)并检查文档,你可能能够联系那些能够给你关于他们的象棋机器人的具体提示的人


Nos*_*dna 6

在现代PC上合理的国际象棋引擎当然是可行的,特别是如果你已经足够老了,可以记住有许多国际象棋程序在1和2 MHz 8位机器上只使用了几K内存就能很好地运行.你现在可以用解释语言掏出一个国际象棋引擎,并从顶级6502或Z80程序员那里击败他最快的东西.

我和Dan Spracklen一起工作,他和妻子Kathleen在1978年完成了Sargon的原创.Kathleen的兄弟为Apple II做了端口,我与他和他的儿子一起工作.(当时我与这些家伙合作,国际象棋换消费者的利润业务已经完成.我记得有一个人带出了Atari ST和Amiga Chess游戏,到那时他们的市场真的不多.)

" 计算机游戏技巧 "是国际象棋编程的一个很棒的介绍,因为业余爱好者在1983年表演过.它仍然是一个阅读的乐趣.涵盖好东西:alpha-beta,minimax等.

这是一本很好的书,你可以从那里开始,然后了解自那以后所取得的进步.

替代文字http://g-ecx.images-amazon.com/images/G/01/ciu/a9/01/ef2de893e7a081414e106110.L._AA240_.jpg


Ric*_*dle 5

做出一个好的作品很难,但对于研究生项目来说可能已经达到了合适的水平(当我攻读计算机科学专业时,我的一个朋友为他最后一年的论文编写了一个国际象棋引擎)。

是的,有开源的,主要的竞争者是GNU Chess,它非常受尊重。