UCCI引擎联赛模拟器 版本:3.5
 
象棋百科全书网 (webmaster@xqbase.com) 200711
 
一、概述
 
  “UCCI引擎联赛模拟器”为UCCI引擎测试和比赛提供了自动批量对局的平台,并支持网上直播。该程序以WindowsUNIX操作系统为平台,可在命令行模式下完成下以几个功能:
  (1) 生成联赛的循环赛对阵表;
  (2) 对于每局比赛,负责启动引擎、控制时间、控制走棋、生成棋谱、处理结果等;
  (3) 计算各队的胜负情况和等级分,生成联赛排名表;
  (4) 记录联赛进程,当程序意外中止时,重新启动程序可让联赛紧接着上次记录的进程继续进行;
  (5) 如果模拟器运行在多处理器的计算机上,可用多个处理器同时举行多场比赛;
  (6) 通过Web服务器对联赛进行网上直播。
 
二、标准CPU时间
 
  为让UCCI引擎适应各种时限的赛制,并让比赛具有客观公正性,比赛的时限应根据处理器的速度作相应的调整。例如,快棋赛的包干时间是600(10分钟),通常会在3000MHz的处理器上举行这样的比赛,以测试象棋引擎的水平。如果象棋引擎运行在1000MHz的处理器上,那么测试同一等级的快棋赛,就必须把时限调整为1800秒。
  这样,就有必要规定一个处理器的标准速度(3000MHz),一段程序的运算量就可以用“标准CPU时间”来衡量。如果象棋引擎运行在不同速度的处理器上(1000MHz),就必须根据该处理器的速度,把时限由标准CPU时间(600)调整为该处理器的实际时间(900)
  一般来说,象棋引擎都只使用处理器的整数运算功能,因此建议以“筛选素数”程序作为标准测试程序,来测定不同处理器的速度。UCCI引擎联赛模拟器附带的测试程序(GENPRIME.EXE)以简单筛法求得230以内的素数个数,程序作者建议把该程序的运行时间定为30秒的标准CPU时间,这样大约相当于3000MHzx86型处理器的速度。
 
三、配置文件
 
  UCCI引擎联赛模拟器的程序名称是 UCCILEAG.EXE ,执行前需要事先编辑配置文件 UCCILEAG.INI ,说明联赛赛制信息、UCCI引擎的参赛信息和网上直播配置,模拟器运行时则会显示联赛进程和结果。
 
  配置文件由[League]节、[Teams]节和[Live]节构成,其中[League]节规定了联赛的赛事信息,各个属性的意义是:
  (1) Event:赛事名称(可以用中文)
  (2) Site:比赛地点(可以用中文)
  (3) Processors:使用的处理器数,最多允许使用32个处理器(默认使用1个处理器)
  (4) Roundrobins:主客场(先后手)双循环次数,最多允许进行10次双循环(默认进行1次双循环)
  (5) InitialTime:加时制的初始时限,单位是分钟,最长时限可达500分钟;
  (6) IncrementalTime:加时制的每步增加时间,单位是秒,设成零即为包干制,最长加时可达500秒;
  (7) StoppingTime:模拟器向引擎发送"stop"指令(出现超时情况)后等待引擎反馈的时间,超出该时间则视为超时,单位是毫秒,最长可等待500毫秒;
  (8) StandardCpuTime:和一秒钟标准CPU时间等同的实际时间,单位是毫秒,默认值是1000,值越大说明机器速度越慢,最长可设成5000
  (9) Promotion是否允许仕(士)相(象)升变成兵(卒),这是一种中国象棋的改良玩法,其值是OnOff默认值Off(即默认采用常规走法)。
 
  [Teams]节规定了参赛队的信息,每个参赛队占据一行,其格式是:
 
    Team=<缩写>,<引擎名称>,<等级分>,<K>,<引擎文件>,<UCCI选项配置文件(可选)>,<引擎介绍URL(可选)>
 
  其中<UCCI选项配置文件>是文本文件,在棋局开始前(联赛模拟器向UCCI引擎发送 ucci 指令后),需要额外给予引擎的一些初始化指令(例如 setoption loadbook)可以加到这个配置文件中。同一个UCCI引擎可以代表几个不同的参赛队,使用不同的UCCI选项配置文件,测试不同选项对引擎战绩的影响。
 
  [Live]节规定了网上直播配置,各个属性的意义是:
  (1) Host:直播主机,可以是IP地址、域名以及虚拟主机的域名;
  (2) Path:上传文件的程序路径;
  (3) Password:上传文件的口令;
  (4) Extension:上传文件的后缀,通常是htmlhtmaspphp等被Web服务器自动解析为 text/html 类型的文件;
  (5) Counter:计数器的路径,如果指定计数器,则直播主页面会显示“您是第<计数器>位观众”的信息;
  (6) Header:直播页面页眉文件,直播时会将此文件(本地文件,含有HTML内容)插入到直播页面的页眉位置;
  (7) Footer:直播页面页脚文件,直播时会将此文件(本地文件,含有HTML内容)插入到直播页面的页脚位置;
  (8) PortHTTP端口,默认是80
  (9) Refresh:直播棋局页面的自动刷新时间,单位是秒;
  (10) Interval:两次上传文件的间隔时间,单位是毫秒,设置这个属性可以避免某些Web服务器因为客户频繁提交而拒绝响应。
 
  如果进行联赛的主机无法直接访问Web服务器,那么可以在[Proxy]节中配置HTTP代理的参数,各个属性的意义是:
  (1) ProxyHostHTTP代理服务器的地址;
  (2) ProxyPortHTTP代理服务端口;
  (3) ProxyUserHTTP代理的认证用户名;
  (4) ProxyPasswordHTTP代理的认证口令。
  模拟器只通过POST方法访问HTTP代理(不使用CONNECT方法),所以代理服务必须支持POST方法。
 
  需要注意的问题有:
  (1) 每条配置信息必须按照<属性>=<>的格式录入,等号两边都不能有空格。建议用户在样板配置文件上作修改,以免造成标签的拼写错误。
  (2) 如果操作系统语言设定正确,那么配置文件中的赛事名称、比赛地点、引擎名称等可显示的信息可以用中文。
  (3) 可以把参赛的引擎放在不同的目录下,在<引擎文件><配置文件>两项上加上完整的路径,Windows下的路径用“\”分隔,UNIX下的路径用“/”分隔。
 
四、直播服务器
 
  UCCI引擎联赛模拟器的网上直播功能,适合多种类型的Web服务器,独立的Web服务器、虚拟主机、Web虚拟目录都可以为UCCI引擎联赛提供直播服务。
  Web服务器必须支持POST命令上传文件,模拟器会通过HTTPPOST命令把联赛首页、棋局页面和棋谱文件即时上传到服务器上,实现直播功能。模拟器为支持PHPWeb服务器提供了接收上传文件的脚本,即 upload.php ,联赛网上直播时需要在配置文件中设定该脚本的路径([Live]节的Path)。如果Web服务器只支持ASPJava/JSP等特定的脚本语言,则联赛主办者应该仿照 upload.php 编写脚本。
  上传文件通常设有口令保护,口令被写入上传脚本中,并在模拟器的配置文件中设置相同的口令。口令必须妥善保管,否则可能被其他人上传恶意脚本,从而破坏服务器。由于观众不会直接访问到联赛运行的计算机,也不会直接获取到服务器上的上传脚本,所以口令在直播过程中是相对安全的。目前模拟器不支持SSL,如果需要加强口令保护,可以在直播计算机上设置SSL客户端代理,在服务器上启用HTTPS服务。
  模拟器还为直播提供了页面背景、图标以及访问计数器等附件,建议直播前连同上传脚本一起事先把这些附件上传到服务器上。
 
五、棋谱文件、日志文件和进程文件
 
  对每一场比赛(每一局棋),模拟器都会产生一个棋谱文件,名称是 XXX-YYYn.PGN XXX是主队(红方)的缩写,YYY是客队(黑方)的缩写,n代表第(n + 1)个双循环次数。
  日志文件是 XXX-YYYn.LOG ,记录模拟器和两个引擎的通讯信息。
  进程文件是 XXX-YYYn.CHK ,记录每个引擎反馈的着法和走完该着所剩的时间。当模拟器意外终止并重新启动后,就会由进程文件中的记录得到引擎的着法,重新生成输出报告和棋谱文件,从而节省了引擎重复运算的时间。
 
六、对引擎的建议
 
  为提高测试和比赛的效率,建议引擎支持以下UCCI指令和反馈信息:
 
  一、建议引擎支持“双时限制”,在时间策略上同时考虑对方的用时情况。
  模拟器会以下面的形式告诉引擎“走棋方的时限”和“对方的时限”:
    go time <走棋方的时间> increment <加时> opptime <对方的时间> oppincrement <加时>
  注意:
  (1) <对方的时间>指的是对方上一步走完以后,剩余时间加上“加时”以后的时间;
  (2) 如果引擎不支持双时限制,模拟器也会按照上面的格式发送走棋指令,引擎只要不理会 opptime oppincrement 便可。
 
  二、建议引擎支持“提和”与“认输”功能,这有助于缩短比赛时间。
  (1) 引擎提和与接受提和的指令是:bestmove <着法> [ponder <后台思考>] draw
  (2) 引擎认输的指令是:bestmove <着法> [ponder <后台思考>] resign
  注意:
  (1) 模拟器可能会向引擎发送 go draw time ... 的指令,说明对方已提和,即便引擎不支持提和与接受提和,也不能因为有了 draw 关键字而解析不出 go 指令;
  (2) 双方连续给出有 draw 的反馈,模拟器就会终止比赛,认定和棋。
 
  三、建议引擎支持“毫秒制”,以提高时间策略的精确度。
  (1) 模拟器支持“秒制”和“毫秒制”,如果引擎在启动时没有输出反馈 option usemillisec ..., 则采用“秒制”。
  (2) 支持“毫秒制”的引擎必须在启动时输出反馈 option usemillisec ...,模拟器在接收到这条反馈时,会向引擎发送指令 setoption usemillisec true,以后每条指令的时间单位都是“毫秒”。
 
  四、建议引擎支持禁手指令,以避免因规则解释不当而被判负。
  当重复局面即将达到3次时,模拟器将会向引擎发送 banmoves ... 指令,告诉引擎走哪步棋是长打判负的。引擎反馈着法时,不能走出 banmoves 指令中所规定的着法,否则就可能在后续的着法中被判长打作负。
 
七、程序下载
 
  UCCI引擎联赛模拟器通常会跟UCCI引擎ElephantEye一同发布,源程序及其Windows版本下的编译程序下载地址是:
    http://www.xqbase.com/download/eleeye.7z
  • 上一篇 电脑象棋联赛报名和UCCI引擎登记办法
  • 下一篇 UCCI引擎列表
  • 返 回 象棋百科全书——电脑象棋联赛
  • www.xqbase.com