
计算机博弈引擎协议和博弈程序比赛PPT.ppt
33页首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告计算机博弈引擎协议和博弈程序比赛计算机博弈引擎协议和博弈程序比赛黄晨黄晨 webmaster@计算机博弈引擎协议和博弈程序比赛计算机博弈引擎协议和博弈程序比赛9/18/20241首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告报告内容报告内容 1. 国际象棋国际象棋引擎协议历史引擎协议历史 2. 博弈博弈引擎协议引擎协议 3. 博弈程序自动比赛博弈程序自动比赛 4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛1. 国际象棋引擎协议历史国际象棋引擎协议历史9/18/20242首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告国际象棋引擎协议历史国际象棋引擎协议历史1.1 从从 MANIAC 到到“深蓝深蓝”1. 国际象棋引擎协议历史国际象棋引擎协议历史c. Ken Tompson 和他设计的和他设计的 Bellea. 最早机器下棋的构想最早机器下棋的构想(1769年年)b. 第一台会下棋第一台会下棋MANIAC(1950年年)9/18/20243首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告1. 国际象棋引擎协议历史国际象棋引擎协议历史d. “深蓝深蓝”的两位设计师的两位设计师 Hans Berliner 和许峰雄和许峰雄e. Ken Thompson 和和 Gary Kasparov1.1 从从 MANIAC 到到“深蓝深蓝”9/18/20244首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告1.2 GNU Chess 和和 XBoard1. 国际象棋引擎协议历史国际象棋引擎协议历史f. WinBoardg. WinBoard 的作者的作者 Tim Mannh. Crafty 的作者的作者 Robert HyattCrafty 是国际象棋程序的教科书是国际象棋程序的教科书9/18/20245首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告1. 国际象棋引擎协议历史国际象棋引擎协议历史1.3 WinBoard、、ChessBase 和和 UCI并存的格局并存的格局 · XBoard/WinBoard协议协议 - 最早、用得最多的开放引擎协议最早、用得最多的开放引擎协议 1986年,年,GNU Chess诞生,有了文本界面的概念;诞生,有了文本界面的概念; 1991年,年,XBoard诞生,支持诞生,支持Xboard的文本界面;的文本界面; 1993年,年,Xboard在在Windows下的版本下的版本WinBoard诞生,诞生,WinBoard协议形成体系。
协议形成体系 截止至截止至2006年年7月月,,支持支持WinBoard的程序共有的程序共有312个个(WBEC Ridderkerk) · ChessBase协议协议 - ChessBase系列国际象棋程序的专用引擎协议系列国际象棋程序的专用引擎协议 1998年,由年,由Fritz首创,支持首创,支持Junior、、Hiarcs、、Shredder、、NIMZO等程序;等程序; 2002年,由于年,由于Shredder创立创立UCI的原因,的原因,ChessBase开始全面支持开始全面支持UCI 目前支持 目前支持5个商业引擎个商业引擎(Fritz、、Junior、、Hiarcs、、NIMZO和和Zap!Chess)和和 9个免费引擎个免费引擎(大都改自开放源程序的大都改自开放源程序的WinBoard引擎引擎) · UCI/Chess960协议协议 - 新兴的开放引擎协议,与新兴的开放引擎协议,与WinBoard相抗衡相抗衡 2000年,年,Shredder创立创立UCI协议;协议; 2002年,年,ChessBase开始全面支持开始全面支持UCI;; 截止至截止至2006年年7月月,支持,支持UCI的程序共有的程序共有89个个(其中其中65个也支持个也支持WinBoard)。
WBEC Ridderkerk的统计数据,不包括克隆程序,如的统计数据,不包括克隆程序,如Toga II)9/18/20246首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告1.4 WBEC Ridderkerk 和和 PolyGlot · WBEC Ridderkerk - 规模最大的国际象棋引擎联赛组织规模最大的国际象棋引擎联赛组织 2001年,年,WBEC Ridderkerk开始对开始对WinBoard引擎进行测试;引擎进行测试; 冠军引擎: 冠军引擎:Gandalf(第第1期期)、、Ruffian(第第2、、3期期)、、DeepSjeng(第第4、、6期期)、、 (第第5期没有举行顶级组联赛期没有举行顶级组联赛)、、The King(第第7期期) · PolyGlot - 使使 UCI 引擎和引擎和 WinBoard 引擎同台竞技引擎同台竞技 2004年,年,UCI到到WinBoard的的适配器适配器PolyGlot诞生;诞生; 同年 同年UCI引擎都加入了引擎都加入了WBEC Ridderkerk联赛的行列;联赛的行列; 冠军引擎: 冠军引擎:Shredder(第第8、、9、、10期期)、、Fruit(第第11期期)、、Rybka(第第12期期);; 最近几期的冠军全部被 最近几期的冠军全部被UCI引擎包揽。
引擎包揽1. 国际象棋引擎协议历史国际象棋引擎协议历史9/18/20247首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告报告内容报告内容 1. 国际象棋国际象棋引擎协议历史引擎协议历史 2. 博弈博弈引擎协议引擎协议 3. 博弈程序自动比赛博弈程序自动比赛 4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛2. 博弈引擎协议博弈引擎协议9/18/20248首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告博弈引擎协议博弈引擎协议2.1 界面、引擎和界面、引擎和“界面界面-引擎协议引擎协议” · 界面界面(GUI) -可视化操作模块可视化操作模块 · 引擎引擎 - 智能核心模块智能核心模块 · 界面界面-引擎协议引擎协议(简称引擎协议简称引擎协议) - 界面和引擎耦合方式界面和引擎耦合方式(通讯方式通讯方式) · 针对一个界面针对一个界面(符合某一协议的符合某一协议的),可以设计出水平更高的引擎,可以设计出水平更高的引擎 · 针对一个引擎针对一个引擎(符合某一协议的符合某一协议的),可以设计出功能更强大的界面,可以设计出功能更强大的界面 · 引擎协议的意义在于:使博弈软件的设计者更专著于某一模块引擎协议的意义在于:使博弈软件的设计者更专著于某一模块(要么是要么是界面,界面, 要么是引擎 要么是引擎)的设计。
的设计2. 博弈引擎协议博弈引擎协议9/18/20249首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告2. 博弈引擎协议博弈引擎协议2.2 博弈引擎协议的技术特点博弈引擎协议的技术特点A. 通讯方式通讯方式B. 工作方式工作方式——同步和异步同步和异步C. 语法语法——指令和反馈指令和反馈D. 后台思考后台思考E. 认输和提和认输和提和F. 禁止着法禁止着法G. 历史着法历史着法9/18/202410首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告管道管道界面程序引擎程序句柄句柄句柄句柄指令反馈指令反馈stdinstdout标准输入标准输入/输出通道的通讯方式输出通道的通讯方式A. 通讯方式通讯方式 · ChessBase等非开放的引擎协议:等非开放的引擎协议:类似类似DLL的的API函数程序库;函数程序库; · WinBoard、、UCI等开放的引擎协议:通过标准输入等开放的引擎协议:通过标准输入/输出通道实现通讯;输出通道实现通讯; 标准输入标准输入/输出通道的优点:输出通道的优点: a. 有利于引擎和界面的跨平台发展;有利于引擎和界面的跨平台发展; b. 单一的引擎或单一的界面有实现商业化的可能。
单一的引擎或单一的界面有实现商业化的可能 · 界面程序向引擎程序传送的信息称为界面程序向引擎程序传送的信息称为“指令指令”;; · 引擎程序向界面程序传诵的信息称为引擎程序向界面程序传诵的信息称为“反馈反馈”2. 博弈引擎协议博弈引擎协议9/18/202411首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告界面棋局进程引擎棋局进程着法着法着法着法思考思考界面棋局进程引擎局面着法局面着法思考思考同步方式同步方式异步方式异步方式B. 工作方式工作方式——同步和异步同步和异步 · 同步方式:界面和引擎采用同样的棋局进程同步方式:界面和引擎采用同样的棋局进程 优点:通讯简单; 优点:通讯简单; 缺点: 缺点:a. 引擎引擎重复了界面的棋局进程处理,重复了界面的棋局进程处理,b. 要应对要应对“不同步不同步”的情况 · 异步方式:引擎没有棋局进程,而只是针对一系列局面进行思考,给出着法异步方式:引擎没有棋局进程,而只是针对一系列局面进行思考,给出着法 优点: 优点:a. 无需处理棋局进程,无需处理棋局进程,b. 不存在不存在“不同步不同步”的情况;的情况; 缺点: 缺点:a. 通讯量大,协议内容繁多,通讯量大,协议内容繁多,b. 要解决历史着法引起的重复局面问题。
要解决历史着法引起的重复局面问题2. 博弈引擎协议博弈引擎协议9/18/202412首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告C. 语法语法——指令和反馈指令和反馈 · 指令和反馈的要求:指令和反馈的要求:i. 文本方式和行方式,文本方式和行方式,ii. 界面和界面和引擎都随时待命,引擎都随时待命, iii. 语法规范语法规范(类似于类似于DOS/UNIX的控制台命令的控制台命令);; · 引擎的状态:引擎的状态:i. 等待状态,等待状态,ii. 思考状态;思考状态; · 语法说明书和示例:指令用红色表示,反馈用蓝色表示语法说明书和示例:指令用红色表示,反馈用蓝色表示ucci id name ElephantEye Demo option usemillisec type check default false option usebook type check default true ucciok setoption usemillisec true setoption usebook false position fen rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1 go time 300000 increment 0 info depth 6 score 4 pv b0c2 b9c7 c3c4 h9i7 c2d4 h7e7 info nodes 5000000 time 5000 stopbestmove b0c2 ponder b9c7quitbye引导状态引导状态空闲状态空闲状态思考状态思考状态空闲状态空闲状态2. 博弈引擎协议博弈引擎协议9/18/202413首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告D. 后台思考后台思考 · 同步方式:引擎自动控制同步方式:引擎自动控制,,有有“是否启用后台思考是否启用后台思考”的开关的开关(easy/hard);; · 异步方式:异步方式:由界面控制,有专门的处理后台思考的指令和反馈。
由界面控制,有专门的处理后台思考的指令和反馈 后台思考的工作原理:猜测着法! 后台思考的工作原理:猜测着法! i. 引擎引擎提供提供猜测着法:猜测着法:bestmove
界面不需要向引擎发出接受提和的指令2. 博弈引擎协议博弈引擎协议9/18/202415首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告F. 禁止着法禁止着法 · 长打长打——中国象棋规则问题的疑难杂症!中国象棋规则问题的疑难杂症! · 人类棋手采用的做法:遇到争议,由裁判作出仲裁;人类棋手采用的做法:遇到争议,由裁判作出仲裁; · 电脑可以采用的做法:如果不能正确判断,可由人类作出仲裁;电脑可以采用的做法:如果不能正确判断,可由人类作出仲裁; · 界面向引擎发出禁止着法的指令:界面向引擎发出禁止着法的指令:banmoves
执黑得分高者在前3. 博弈程序自动比赛博弈程序自动比赛9/18/202423首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告3.7 WBEC 的升降级制度的升降级制度 · 超级、甲级、乙级、丙级,各超级、甲级、乙级、丙级,各24个程序,进行个程序,进行4次循环赛次循环赛(先后手各两局先后手各两局);; · 丁级丁级32个程序,进行个程序,进行2次循环赛次循环赛(先后手各一局先后手各一局);; · 其余程序都编入末级,进行若干次循环赛其余程序都编入末级,进行若干次循环赛(取决于参赛程序的数量取决于参赛程序的数量);; · 各级各级(除超级外除超级外)的第的第1名直接升入上一级别;名直接升入上一级别; · 甲级到丁级第甲级到丁级第2至至5名和末级第名和末级第2至至7名要参加上一级别的资格赛;名要参加上一级别的资格赛; · 超级到乙级的最后超级到乙级的最后5名、丙级和丁级的最后名、丙级和丁级的最后7名要参加同一级别的资格赛;名要参加同一级别的资格赛; · 超级到丙级超级到丙级资格赛资格赛的前的前4名和丁级资格赛的前名和丁级资格赛的前6名留将参加本级别联赛,名留将参加本级别联赛, 其余程序降入下一级别; 其余程序降入下一级别; · 超级、甲级、乙级、丙级资格赛进行超级、甲级、乙级、丙级资格赛进行4次循环赛,丁级进行次循环赛,丁级进行2次循环赛;次循环赛; · 某个程序的等级分比任何一级的第某个程序的等级分比任何一级的第10名还高,就有资格跟该级别的第名还高,就有资格跟该级别的第10、、11和和 12名各进行名各进行4局比赛,局比赛,达到达到6.5分即可参该级别的联赛,这会给程序跳级的机会;分即可参该级别的联赛,这会给程序跳级的机会; · 如果某一级别的跳级没有成功,那么该程序可以尝试低一级别的跳级测试;如果某一级别的跳级没有成功,那么该程序可以尝试低一级别的跳级测试; · 新的程序加入时,首先跟丁级的第新的程序加入时,首先跟丁级的第10、、11和和12名各进行名各进行4局比赛,达到局比赛,达到6分即可分即可 参加该级别,并且用同样的过程测试是否参加更高级别的比赛。
参加该级别,并且用同样的过程测试是否参加更高级别的比赛3. 博弈程序自动比赛博弈程序自动比赛9/18/202424首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛报告内容报告内容 1. 国际象棋国际象棋引擎协议历史引擎协议历史 2. 博弈博弈引擎协议引擎协议 3. 博弈程序自动比赛博弈程序自动比赛 4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛9/18/202425首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛4.1 UCCI引擎协议的初衷引擎协议的初衷 · 2004年开设年开设《《象棋百科全书象棋百科全书》》网站网站() · 借鉴国际象棋的方法和理念,在中国象棋中引进借鉴国际象棋的方法和理念,在中国象棋中引进ECCO、、PGN、、FEN等概念等概念 · “中国象棋程序设计中国象棋程序设计”这一课题成为试金石,这一课题成为试金石,UCI协议成为借鉴的首选协议成为借鉴的首选4.2 UCCI引擎协议的发展引擎协议的发展 · UCCI引擎协议并非最早的中国象棋引擎协议引擎协议并非最早的中国象棋引擎协议 · 2000年,梦入神蛋年,梦入神蛋(Kill Egg)是首个公开源代码的中国象棋程序是首个公开源代码的中国象棋程序 · 2003年,浅红象棋年,浅红象棋(V2.8)支持引擎,并把梦入神蛋制成浅红象棋引擎支持引擎,并把梦入神蛋制成浅红象棋引擎 · 2005年,第一个年,第一个UCCI界面界面《《象堡象堡》》和第一个和第一个UCCI引擎引擎《《象眼象眼》》诞生诞生 · 2006年,第一期年,第一期UCCI引擎联赛举行,参赛程序有引擎联赛举行,参赛程序有8个个 · 截止到截止到2006年年7月,在月,在《《象棋百科全书象棋百科全书》》网站上登记的网站上登记的UCCI引擎共有引擎共有16个个4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛9/18/202426首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛2006年年3月,月,UCCI界面界面《《象堡象堡》》更名为更名为《《象棋巫师象棋巫师》》9/18/202427首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛4.3 UCCI引擎联赛引擎联赛 · 2006年年1月,月,UCCI引擎联赛模拟器研制成功,支持加时制时限和循环赛制引擎联赛模拟器研制成功,支持加时制时限和循环赛制 · 2006年年2月,第一期月,第一期UCCI引擎联赛举行,参赛程序有引擎联赛举行,参赛程序有8个个 · 2006年年7月,梦入神蛋制成月,梦入神蛋制成UCCI引擎参加第引擎参加第6期联赛,在联赛中排名垫底期联赛,在联赛中排名垫底 · 2006年年2月至月至7月,月,UCCI引擎联赛共举行了引擎联赛共举行了6期期 第第1期期(上海站上海站),,2.20~2.26,,8队队28轮快棋,轮快棋,《《象眼象眼》》夺冠夺冠 第 第2期期(北京站北京站),,3.24~3.27,,8队队28轮快棋,轮快棋,《《象棋旋风象棋旋风》》夺冠夺冠 第 第3期期(南宁站南宁站),,4.21~4.24,,9队队36轮慢棋,轮慢棋,《《象棋旋风象棋旋风》》夺冠夺冠 第 第4期期(南宁站南宁站),,4.21~4.24,,9队队36轮快棋,轮快棋,《《EndEgg》》夺冠夺冠 第 第5期期(南京站南京站),,6.2~6.9,,12队队44轮快棋,轮快棋,《《象棋旋风象棋旋风》》夺冠夺冠 第 第6期期(杭州站杭州站),,7.13~7.19,,9队队36轮慢棋,轮慢棋,《《象棋旋风象棋旋风》》夺冠夺冠 · 联赛的环境和程序要求:联赛的环境和程序要求: i. 32位位Windows平台,平台, 单线程的单线程的UCCI引擎,不启用后台思考;引擎,不启用后台思考; ii. 用时和存储器限制视东道主提供的比赛用机器而定。
用时和存储器限制视东道主提供的比赛用机器而定 · 联赛采用的规则:联赛采用的规则: i. 将死、不合法着法、单方面长将、超时判负;将死、不合法着法、单方面长将、超时判负; ii. 50回合不吃子、除单方面长将外的循环着法判和回合不吃子、除单方面长将外的循环着法判和9/18/202428首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛4.4 中国象棋中国象棋自动对弈的难题自动对弈的难题——用程序描述规则用程序描述规则 · 亚洲规则的实现比中国规则简单,所以电脑象棋程序大都只支持亚洲规则亚洲规则的实现比中国规则简单,所以电脑象棋程序大都只支持亚洲规则 · 亚洲规则的亚洲规则的“打打”只包括只包括“将将”和和“捉捉”,不包括,不包括“杀杀”和和“要抽吃要抽吃” · 目前还没有一个程序声称完全支持亚洲规则目前还没有一个程序声称完全支持亚洲规则 · “捉捉”的定义:自己的一个子可以攻击到对方的一个子的定义:自己的一个子可以攻击到对方的一个子 · “捉捉”的补充规定:的补充规定: i. 走子之前已经构成攻击的不算捉;走子之前已经构成攻击的不算捉; ii. 兵兵(卒卒)和帅和帅(将将)的捉不算捉;的捉不算捉; iii. 不能吃掉被捉子不能吃掉被捉子(吃掉后即被将死吃掉后即被将死)的情况不算捉的情况不算捉(“假捉假捉”);; iv. 被捉子可以反吃的捉不算捉被捉子可以反吃的捉不算捉(称为称为“兑兑”);; v. 捉有根的子捉有根的子(马炮捉车除外马炮捉车除外)不算捉不算捉( “真根真根”和和“假根假根”的问题的问题)。
· 对文字的解释对文字的解释 i. 循环反复三次循环反复三次(第第3次达到重复,还是同样的局面第次达到重复,还是同样的局面第3次出现次出现?);; ii. 60回合回合自然限着自然限着(第第120个不吃子着法遇到将死、困毙、长将等情况个不吃子着法遇到将死、困毙、长将等情况?) · 自动对弈裁判程序的编码必须公开自动对弈裁判程序的编码必须公开9/18/202429首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告4. UCCI引擎协议和引擎协议和UCCI引擎联赛引擎联赛4.5 联赛发展构想联赛发展构想 · 联赛的目标:联赛的目标: i. 成为博弈程序提供相互交流的平台,建立相互促进的发展环境成为博弈程序提供相互交流的平台,建立相互促进的发展环境 ii. 发展发展出一套全新的竞技活动出一套全新的竞技活动 · 建立成文的规章制度:建立成文的规章制度: i. 联赛章程联赛章程 ii. 联赛规则联赛规则 iii. 联赛报名和举办细则联赛报名和举办细则 · 设立管理机构,确保规章制度的事实:设立管理机构,确保规章制度的事实: i. 运作委员会运作委员会 ii. 比赛委员会比赛委员会 iii. 技术委员会技术委员会 iv. 仲裁和协调委员会仲裁和协调委员会 · 利用社会资源利用社会资源 i. 网上直播网上直播 ii. 寻求科研单位的支持寻求科研单位的支持 iii. 寻求商业赞助寻求商业赞助9/18/202430首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告计算机博弈引擎协议和博弈程序比赛计算机博弈引擎协议和博弈程序比赛其他课题其他课题 1. 棋类游戏的棋类游戏的先行权问题先行权问题 2. 博弈博弈程序基于处理器的优化算法程序基于处理器的优化算法 3. 搜索树历史作用搜索树历史作用(GHI)在中国象棋程序中的在中国象棋程序中的表现表现 4. 系列专题系列专题《《中国象棋程序设计探索中国象棋程序设计探索》》的编写的编写9/18/202431首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告致谢致谢 · 感谢徐心和教授、感谢徐心和教授、《《棋天大圣棋天大圣》》总设计师王骄、总设计师王骄、 东北大学人工智能与机器人研究所师生的帮助 东北大学人工智能与机器人研究所师生的帮助 · 感谢感谢CCGC组委会和会务组的周到安排组委会和会务组的周到安排 · 感谢陈朝营、陶善文感谢陈朝营、陶善文(UCCI引擎作者引擎作者)、郑明政、郑明政(《《象棋象棋世世 家 家》》作者作者)、赵明阳、赵明阳(《《象棋奇兵象棋奇兵》》作者作者)、、董世伟董世伟(《象《象棋棋 演播室》作者 演播室》作者)、、王涛王涛(Intel中国研究中心中国研究中心)等等业内人士业内人士对对 我的研究工作的支持 我的研究工作的支持 · 感谢感谢《《象棋百科全书象棋百科全书》》全体网友全体网友的意见和建议的意见和建议 · 感谢上海格尔软件股份有限公司对我参赛的支持感谢上海格尔软件股份有限公司对我参赛的支持计算机博弈引擎协议和博弈程序比赛计算机博弈引擎协议和博弈程序比赛9/18/202432首届机器博弈学术研讨会专题报告首届机器博弈学术研讨会专题报告谢谢大家!谢谢大家!计算机博弈引擎协议和博弈程序比赛计算机博弈引擎协议和博弈程序比赛9/18/202433。












