中国象棋棋战顺序ElephantEye(象眼) 版本:3.15
 
象棋百科全书网 (webmaster@xqbase.com) 20083
 
一、简介
 
  ElephantEye 是一款自在的中国象棋顺序,在遵照《GNU宽松通用群众允许和谈》(GNU Lesser General Public Licence)的条件下,宽大象棋喜爱的人和顺序设想师能够自在运用 ElephantEye 及其源顺序。
  ElephantEye 中文称呼为“象眼”,它跟“马腿”和“炮架子”一同组成了中国象棋“棋盘上的第三维”。ElephantEye 一般与一个象棋棋谱编纂软件ElephantBoard 合营运用,寓意有声有色(英文 Board 的意义是“板”)(注:现在 ElephantBoard 已更名为“棋牌乐 捕鱼棋牌游戏赚钱”。)
 
二、引擎和谈
 
  ElephantEye 支持UCCI 3.0,浅红象棋用户可经由历程UCCI引擎适配器(UCCI2QH)调用ElephantEye引擎。
(1) 支持的UCCI下令有:
  ucci
  setoption ...
  position {fen <fen_str> | startpos} [moves <move_list>]
  banmoves <move_list>
  go [ponder | draw] ...
  ponderhit [draw] | stop
  probe {fen <fen_str> | startpos} [moves <move_list>]
  quit
(2) 能够前往的UCCI信息有:
  id {name <engine_name> | version <version_name> | copyright <copyright_info> | author <author_name> | user <user_name>}
  option ...
  ucciok
  info ...
  pophash [bestmove <best_move>] [lowerbound <value> depth <depth>] [upperbound <value> depth <depth>]
  {nobestmove | bestmove <best_move> [ponder <ponder_move>] [draw | resign]}
  bye
 
三、参数设置
 
  ElephantEye 作为UCCI引擎,有若干能够设置的参数(能够直接在<棋牌乐 捕鱼棋牌游戏赚钱>中设置)
(1) 残局库:
  默许的残局库为 ElephantEye 顺序(ELEEYE.EXE)以后目录下的 BOOK.DAT,包罗10,000个对称局势的着法。
(2) 思索时刻:
  限制思索深度一般不是异常不错的选择,推荐给定限时让顺序自动分配时刻。而在解杀局或剖析局势时,则可以让顺序有限制思索,并可实时中缀思索。
(3) 置换表巨细:
  只管置换表巨细对顺序的运转速率滋扰不大,默许16MB的设置以前足够,但ElephantEye 照样供应了设置置换表巨细的功用。在内存允许的状况下,下慢棋时能够适当增长置换表的巨细,但推荐不要凌驾物理内存的一半。
(3) 裁剪水平:
  为加速顺序的运算速率,ElephantEye 默许运用空着裁剪,而且发生负面滋扰的能够性很小。只需最低级别会禁用空着裁剪。
(4) 知识量:
  知识量和局势评定的准确性有关,在 ElephantEye 的知识量品级中,只需最低级别是不使用局势评定函数的(只斟酌子力价值),在解排局等不要求依托审局知识来剖析的局势时,能够实验用这类设置。
(5) 随机性:
  ElephantEye 设有4级随机性。随机性越大,顺序越有能够走出它以为不是最好的着法,但“不是最好的着法”并非一点有益之处也没有,稀奇在没有启用残局库时,适当增大随机性,能够免顺序在一样的局势下走出一样的着法。
 
四、划定礼貌
 
  从2.0版最先,ElephantEye除了支持“片面长将判负”的划定礼貌外,还支持“长打判负”,“打”包孕“将”和“捉”。由于顺序庞大性方面的限制,只需以下三种状况被识别成“捉”:
    A. 马捉车或有根的炮兵()
    B. 车捉有根的马炮兵()
    C. 炮捉车或有根的马兵()
  只管 ElephantEye 在庞大的状况能够没有设施准确识别长打,但由于支持UCCI下令 banmoves ... ,一旦用户以为引擎走了“长打”的禁着,能够用<棋牌乐 捕鱼棋牌游戏赚钱>的“设置禁着”功用让引擎自愿变着。
 
五、博弈算法
 
  ElephantEye 属于倾向蛮力的象棋顺序,运用了松懈而有用的博弈算法:
(1) 运用位行和位列的着法天生器:
  位行(BitRanks)和位列(BitFiles)便于滑动棋子(车和炮)的着法(稀奇是吃子着法)天生,位行和位列能够用查表来替代在射线上做的循环运算。在ElephantEye 中,位行和位列的手艺不只用在着法天生器中,也用到了牵制的剖断上。
(2) 静态局势搜索:
  在做静态搜索时,ElephantEye 搜索了吃子或解将的着法,在搜索吃子着法时,ElephantEye 过滤掉不主要的吃子,譬喻吃不外河的兵、吃不处于戍守中的士象等着法,都不在静态搜索的局限之内。
(3) 循环着法和长将检测:
  ElephantEye 能够识别循环着法,显现循环着法时能够剖断哪方为长将,而且会应用制止长将的划定礼貌来钻营优势,但现在 ElephantEye 还没有设施识别长捉。
(4) 置换表:
  ElephantEye 参考了中国象棋顺序“纵马奔腾”的设想思绪,运用深度优先和一直掩盖的双层置换表,并使用低出(凌驾)界限修正的置换表更新战略。
(5) 带磨练的空着裁剪:
  ElephantEye 运用 R=2 的空着裁剪,在残局阶段运用带磨练的空着裁剪。
(6) 迭代加深/吃子着法/杀手着法/历史表启示:
  ElephantEye 的着法排序异常简朴清晰,依次是迭代加深着法、好的吃子着法、杀手着法和按历史表排序的天生着法。
(7) 将军/唯一应将/兑子延长:
  在选择性延长上,ElephantEye 使用了将军、唯一应将和兑子延长。
(8) Alpha-Beta主要变例搜索:
  ElephantEye 运用主流意义上的递归式Alpha-Beta主要变例搜索。
(9) 残局库:
  ElephantEye 的残局库共包罗了10,000个对称着法,是从1990年到2005年天下象棋小我私家赛、整体赛、五羊杯、联赛等8,000局顶尖竞赛中收罗的。
(10) 配景思索和时刻分配战略:
  ElephantEye 支持配景思索功用,同时供应了时段制和加时制两种时刻分配战略,会自动恰当分配时刻。
 
六、残局库
 
  ElephantEye 的残局库可由“ElephantEye 残局库制造工具”制造。运转制造工具后,首先要选择PGN棋谱所在的文件夹,然后生存为残局库文件(一般是 BOOK.DAT)。一般,用来天生残局库的棋谱数目越多,天生的残局库文件就越大。
  为了使制造的残局库对 ElephantEye 失效,只要求把天生的残局库文件替换掉 ElephantEye 目录下的 BOOK.DAT 就可以,也能够在<棋牌乐 捕鱼棋牌游戏赚钱>的“引擎设置”对话框中指定残局库文件。
 
七、局势评定函数库
 
  ElephantEye 2.1版最先,顺序的搜索局部和局势评定局部就星散了,搜索局部经由历程调用API函数的形式与局势评定局部耦合。
  其他象棋顺序设想师能够在 ElephantEye 的根蒂基本上更自在地展现。依据LGPL和谈,搜索和局势评定这两个局部都作为自力的顺序库,运用其中任何一局部都只要求公然该局部的源顺序就可以。换句话说,若是局势评定局部没有运用任何开放代码,那末顺序设想师就没有义务公然这局部的源顺序,搜索局部也是这样。
  ElephantEye 的局势评定API函数接口界说以下:
    A. 局势评定引擎称呼:const char *GetEngineName(void);
    B. 局势预评定函数接口:void PreEvaluate( PositionStruct *lppos, PreEvalStruct *lpPreEval);
    C. 局势评定函数接口:int Evaluate(const PositionStruct *lppos, int vlAlpha, int vlBeta);
  其中 PositionStruct PreEvalStruct 必需离别相符 position.h pregen.h 中界说的组织。
 
八、源顺序
 
  ElephantEye 的源顺序包孕9个模块,内容约略为:
(1) ucci.h/ucci.cpp
  UCCI下令注释模块,包孕 Windows Unix 下的行输入吸收顺序;
(2) pregen.h/pregen.cpp
  Zobrist 数组和着法预置表的天生模块。ElephantEye 的预置表分两个局部,一是滑动棋子的着法预置表(包孕不吃子、车吃子、炮吃子和隔两子吃子),它是完成位行和位列手艺的根蒂基本;二是其他棋子的着法预置表,使得着法天生时制止了啰嗦的界限剖断。
(3) position.h/position.cpp
  主要形貌着法和局势的数据组织及功用。局势的处置责罚是本模块的重点,处置责罚内容包孕局势初始化、FEN串导入、棋子移动、杀手着法的合理性剖断、将军剖断、长将和循环检测、子力价值分调整等历程,还包孕5个子力职位价值表。
(4) genmoves.cpp
  着法天生器,包孕天生吃子着法和天生不吃子着法的两个,但不能只天生消除将军的着法。在天生吃子着法的同时授予每一个着法以响应的MVV(LVA)(或称准SEE)值。该模块另有一个专程剖断棋子是否是有珍爱的函数,来盘算MVV(LVA)值,关于有珍爱的棋子,盘算MVV-LVA的值(小于零不计),关于无珍爱的棋子,只盘算MVV的值。因而,剖断棋子是否是有根的顺序也包孕在本模块中。
(5) hash.h/hash.cpp
  置换表、历史表和着法列表治理模块,包孕置换表的分配和存入和取出、主要变例取得等支配。
(6) book.h/book.cpp
  残局库读取模块。
(7) movesort.h/movesort.cpp
  着法列表排序模块。
(8) search.h/search.cpp
  搜索模块,除了静态搜索、完整搜索和根结点搜索这三个主要历程外,还包孕迭代加深掌握、配景思索、时刻分配、搜索参数统计和搜索信息输入等外容。该模块是悉数顺序的中心模块。
(9) eleeye.cpp
  主顺序(main 函数)
(10) preeval.cpp
  子力职位数组预天生器,ElephantEye 依据“进攻/戍守”和“残局/中局/残局”两个参数线性调整子力职位数组。
(11) evaluate.cpp
  局势评定函数,ElephantEye 使用了四级偷懒评定的机制,最粗的条理只评定稀奇棋型,进一条理评定牵制,再进一条理评定车的天真性,最高条理还评定马的阻滞。
 
九、顺序显示
 
  ElephantEye 的设想重点在搜索算法,但在知识上对照完善。在2.8GHz的处置责罚器上每秒可搜索约1,000,000个结点(包孕通例搜索和静态搜索),一样寻常的中局局势在1分钟内可搜索约11层。
  在棋力上,ElephantEye 和“棋隐”、SaoLa (象棋应战者)等顺序具有一致水平,但由于局势评价函数上的瑕玷,ElephantEye 距离顶尖的商业象棋软件(谢谢巨匠、象棋世家、象棋奇兵、棋天大圣等)尚有一定的差异。
  ElephantEye 在联众、弈天等象棋棋战网站上作过测试,用品级分来权衡,联众网的战绩在2500分前后,弈天网快棋的战绩在2000分前后,慢棋在1500分前后。
  20059月在台湾象棋软件喜爱的人施金山的资助下,ElephantEye 列入了在台北举行的第10ICGA计算机奥林匹克大赛中国象棋组竞赛,战绩是7514负,在14个顺序中排名第1120068ElephantEye 列入了在北京举行的天下首届盘算机博弈锦标赛,战绩是7211负,在18个顺序中排名第7
 
相关资源
 
  ElephantEye的源顺序公布在SourceForgeXiangQi Wizard项目中,其页面是:
    http://sourceforge.net/projects/xqwizard/
  ElephantEye的版本革新,实时同步地公布在SourceForgeSVN站点上,取得所在是:
    https://xqwizard.svn.sourceforge.net/svnroot/xqwizard/
  您能够运用 TortoiseSVN SVN客户端顺序取失掉最新的(跟开辟者完整同步的)代码,TortoiseSVN 的运用引见和下载所在是:
    http://sourceforge.net/projects/tortoisesvn/
 
  ElephantEye 必需在支持UCCI(<棋牌乐 捕鱼棋牌游戏赚钱>)的象棋顺序下运转,<棋牌乐 捕鱼棋牌游戏赚钱>装置顺序包罗了最近一个版本的 ElephantEye
  <棋牌乐 捕鱼棋牌游戏赚钱>可到以下站点下载:
    http://www.skycn.com/soft/24665.html (天空软件站)
    http://www.onlinedown.net/soft/38287.htm (华军软件园)
 
  ElephantEye 的源顺序包除了 ElephantEye 自身的源顺序外,还包孕以下几个附加模块:
  (1) 根蒂基本代码(base):供应了汇编指令、系统函数调用等功用;
  (2) 中国象棋划定礼貌模块(cchess):为其他软件运用 ElephantEye 代码供应了接口;
  (3) 残局库制造模块(BOOK):制造残局库BOOK.DAT的代码;
  (4) UCCI引擎联赛模拟器(LEAGUE):为UCCI引擎测试和竞赛供应了自动批量对局的平台;
  (5) UCCI引擎搜索树剖析器(TREE)UCCI引擎(支持UCCI 2.2+)的搜索线路剖析工具;
  (6) XQF棋谱工具(XQFTOOLS):供应XQF等多种棋谱调换为PGN的工具;
  (7) 浅红象棋适配器(UCCI2QH):为浅红象棋调用UCCI引擎供应了接口;
  (8) 浅红象棋引擎支持UCCI的适配器(QH2UCCI):为“梦着迷蛋”浅红象棋加入UCCI引擎测试供应了接口;
  (9) BBS Chess(BBSCHESS):一个用 Visual Basic 制造的国际象棋局势设置工具,可在各高校BBS上粘贴彩色的国际象棋局势;
  (10) 棋盘丹彼庶民器(FEN2BMP):一个能够把国际象棋和中国象棋的FEN文件调换成BMP文件的适用工具;
  (11) 编码调换(codec),包孕简繁转码、UNIX文本转码、Base64转码等;
  (12) 其他工具(MISC):包孕浅易网络通讯、管道测试等工具;
  (13) 说明文档(DOC):即《中国象棋顺序设想探讨》系列连载;
  (14) 参赛棋谱(CCGC)ElephantEye 列入首届天下盘算机博弈锦标赛(CCGC)的悉数棋谱。
 
  若是要取得关于 ElephantEye 的越发详细的信息,可登录象棋百科全书网:
    /
  • 上一篇 UCCI引擎——Coony
  • 下一篇 UCCI引擎——EyChessU
  • 返 回 象棋百科全书——计算机象棋联赛
  • www.xqbase.com