太阳鱼
太阳鱼是一个简单但强大的国际象棋引擎,用Python编写,主要用于教学目的。没有表格和它简单的界面,它只需要111行代码!
因为Sunfish很小,并且力求简单,所以代码为实验提供了一个很好的平台。人们用它来测试并行搜索算法,实验评估功能,开发深入学习的国际象棋程序。今天分叉,看看你能做什么!
截图
My move: g8f6 8 ♖ ♘ ♗ ♕ ♔ ♗ · ♖ 7 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙ 6 · · · · · ♘ · · 5 · · · · · · · · 4 · · · · ♟ · · · 3 · · · · · · · · 2 ♟ ♟ ♟ ♟ · ♟ ♟ ♟ 1 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜ a b c d e f g hYour move:
快跑!
太阳鱼是自含在sunfish.py存储库中的文件。我建议用pypy或pypy3为了最佳的性能。
还可以使用图形界面运行Sunfish,如皮切 , 竞技场或者你选择的国际象棋界面。太阳鱼可以通过Xboard命令/CECP协议pypy -u xboard.py..鲁西·西尔维卡关于使它在Windows上工作的注意事项 .
这是小编准备的python入门学习资料,关注,转发,私信小编“01”即可免费获取!
特征
- 建立在简单,但致命有效的MTD-bi搜索算法周围。
- 充满了经典的和现代的“象棋引擎技巧”,为更简单和更快的代码。
- 易于自适应的评估功能,通过片方表。
- 使用标准Python集合和数据结构来提高清晰度和效率。
局限性
太阳鱼支持抛弃,传递和推广。然而,它不做小的推广或抽签通过重复。所有输入都必须用简单的“两个坐标”符号来完成,如屏幕截图所示。
有很多方法可以让太阳鱼更强壮。首先,可以将表示法改为可变数组,并添加一种快速枚举片段的方法。然后,您可以实现专门的捕获生成、检查检测和检查规避。您还可以将所有内容移动到位板,在C中实现部分代码,或者进行并行搜索的实验!
让太阳鱼更强壮的另一个方法是让它更多地了解国际象棋。目前的评估功能只使用片方表-它甚至没有区分游戏中和游戏结束。您还可以尝试更多的剪枝-目前只完成空移动-并且扩展-目前没有使用。最后,太阳鱼可能会受益于更先进的移动订购,MVV/LVA,看到了吗?
为什么是太阳鱼?
“太阳鱼”这个名字实际上指的是侏儒太阳鱼,这是以字母“Py”开头的少数几条鱼之一。使用鱼的精神是伟大的引擎,如斯托克菲什,扎帕和雷布卡。
在遗产方面,太阳鱼借用的更多。格尔特·穆勒(Geert Muller)和皮切 .