中国象棋的人机博弈程序

news/2024/10/22 18:34:40/

对此题目有兴趣的朋友们:

    感谢你们抽出宝贵的时间来阅读这些浅显的文字。

    很多人可能都知道chess的人机大战:

 

    1996年,卡斯帕罗夫以4比2战胜“深蓝”(Deep Blue);

    1997年,“更深的蓝”(Deeper Blue)以3.5比2.5击败了卡斯帕罗夫;

    2002年,“深弗里茨”(Deep Fritz)与克拉姆尼克在巴林以4比4战平;

    2003年,卡斯帕罗夫与“深青年”(Deep Junior)以3比3战平;

    2005年,英国棋王亚当斯以0.5比5.5惨败于“九头蛇怪”(Hydra);

    2006年,在德国波恩克拉姆尼克以2:4败给“深弗里茨”(Deep Fritz);

 

    随着chess的机器博弈水平达到特级象棋大师级,中国象棋也有条不紊的发展起来。但是中国象棋的机器博弈水平还不能达到大师级。这其中有很多原因,比如起步晚,比如现在的技术大多是从chess的技术中移植过来的。虽然这两种棋有相似之处,但是毕竟还是有差别的。

 

    象棋中有几个关键的技术,一是编程时棋子棋盘数据的表示方法,二是对于静态棋局的估值,三是对博弈树(实际是一个策略树)搜索。目前,棋盘表示方面比较先进的方法是位(bit)棋盘表示;静态估值使用遗传算法进行优化;博弈树的搜索技术则比较多。

 

    我对于探索搜索技术比较感兴趣。我觉得除了移植chess中的搜索技术外,还要真对于中国象棋自身的特点来探索分析。目前比较常用的chess中的技术是Alpha-Beta剪枝算法,PVS算法(Priciple Variation Search),ZWS算法(zero window search),置换表(Transposition tables),迭代深化(Iterative deepening),SSS*算法,MTD(f),不走棋启发(Null Move heuristic)等一些预先剪枝技术,静态搜索(Quiescent Search),杀手启发(Killer heuristic),历史启发(History heuristic)等等很多很多具体的技术。这些技术对于了解机器博弈程序的人来说可能大多都是很熟悉的。但是,不用说什么新的技术,即使这些技术与中国象棋结合时有一些并不是很恰当(当然对于纯粹的博弈树搜索的方法没有什么可说)但是像预先剪枝(Forward Pruning)的技术,剪枝的侧重点应该有所变化;还有棋步生成的排序上应该有所变化。

 

    当然有关搜索技术不胜枚举,我在这里只是抛砖引玉,希望朋友参与讨论。


http://www.ppmy.cn/news/545774.html

相关文章

介绍中国象棋对弈程序ElephantEye(象眼)

ElephantEye 是一款自由的中国象棋程序,在遵循《GNU宽松通用公共许可协议》(GNU Lesser General Public Licence)的前提下,广大象棋爱好者和程序设计师可以自由使用 ElephantEye 及其源程序。 中国象棋对弈程序ElephantEye(象眼) 版本:3.15 …

一个使用ELEEYE超强AI引擎的中国象棋游戏

一个使用eleeye引擎制作的象棋游戏 游戏介绍 这个游戏是自己使用python3.7配合pygame库写的游戏,由于pygame没有基本的UI组件如:按钮,输入框,文本框之类,这些UI组件都是自己用自己写的类模拟实现。 然后是关于这个象…

表格闪退怎么解决_win10中excel2013闪退怎么修复_win10中excel2013闪退如何解决

win10中excel2013闪退怎么修复_win10中excel2013闪退如何解决我们在使用win10系统办公的过程中,总是需要用到office办公软件中的excel2013表格工具,但是在运行excel2013的时候就闪退了,导致无法正常打开的情况,那么win10中excel20…

Excel2013打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?

有的时候打开xls文档时,会提示“文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?” 遇到这种情况,我们需要 1.win键R键,打开“运行“,输入regedit打开“注册表编…

Excel2013-VBA-Validation-Formula1-属性溢出测试记录

Sub test()Dim HelpArr() As StringRunTimes 2 Do While RunTimes < 65536RunTimes RunTimes 1Erase HelpArrReDim HelpArr(1 To RunTimes)For i 1 To UBound(HelpArr)HelpArr(i) iNextTestNumStr Join(HelpArr, ",")Debug.Print "当前时间&#xff1a…

Excel2013/2016 破解vba工程密码以及工作表保护密码

今天从网上学到如何破解vba工程密码以及工作表保护密码&#xff0c;在这里分享一下。 破解vba工程密码&#xff1a;&#xff08;引用自http://jingyan.baidu.com/article/2009576170cc05cb0721b437.html&#xff09; 1.将你要破解的Excel文件关闭&#xff0c;切记一定要关闭呀…

EXcel 2016高级VBA编程下载

https://download.csdn.net/download/weixin_42196759/10411181

Excel 3

SDK程序&#xff0c;没有用MFC。 用的是excel2003 // StatisticsGen.cpp : Defines the entry point for the console application. // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) {…