中国象棋电脑应用规范(四) 中国象棋通用引擎协议 |
更新时间:2012-12-4 浏览次数: |
11. info <思考信息>
思考状态的反馈。显示引擎思考信息,通常有以下几种信息:
(1) time <已花费的时间> nodes <已搜索的结点数>:思考信息中给出的时间通常以毫秒为单位,结点数和时间相除就是引擎的速度(NPS值),单位是K。
(2) depth <当前搜索深度> [score <分值> pv <主要变例>]:输出引擎思考到的深度及其思考路线和好坏。例如在起始局面下,《象棋巫师》收到引擎的反馈:info depth 6 score 4 pv b0c2 b9c7 c3c4 h9i7 c2d4 h7e7,那么界面上应该输出:6 (+4) 马八进七 马2进3 兵七进一 马8进9 马七进六 炮8平5。分值通常以一个轻子(马或炮)为100分记,以上信息说明此时当前要走的一方占有相当于0.04个轻子的优势。
(3) currmove <当前搜索着法>:输出引擎正在思考的着法。
(4) message <提示信息>:输出引擎要直接告诉用户的信息,建议界面程序直接将提示信息显示在界面上。
12. ponderhit [draw]
思考状态的指令。告诉引擎后台思考命中,现在转入正常思考模式(引擎继续处于思考状态,此时go指令设定的时限开始起作用)。
指定draw选项表示向引擎提和,引擎以bestmove提供的选项作为反馈,参阅bestmove指令。
13. stop
思考状态的指令。中止引擎的思考。另外,后台思考没有命中时,就用该指令来中止思考,然后重新输入局面。
注意:发出该指令并不意味着引擎将立即回到空闲状态,而是要等到引擎反馈bestmove或nobestmove后才表示回到空闲状态,引擎应尽可能快地作出这样的反馈。
14. bestmove <最佳着法> [ponder <后台思考的猜测着法>] [draw | resign]
思考状态的反馈,此后引擎返回空闲状态。显示思考结果,即引擎认为在当前局面下的最佳着法,以及猜测在这个着法后对手会有怎样的应对(即后台思考的猜测着法)。通常,最佳着法是思考路线(主要变例)中的第一个着法,而后台思考的猜测着法则是第二个着法。
在对手尚未落子时,可以根据该着法来设定局面,并作后台思考。当对手走出的着法和后台思考的猜测着法吻合时,称为“后台思考命中”。
draw选项表示引擎提和或者接受界面向引擎发送的提和请求,参阅go draw和ponderhit draw指令。resign选项表示引擎认输。UCCI界面在人机对弈方式下,根据不同情况,可以对引擎的bestmove反馈中的draw和resign选项作出相应的处理:
(1) 如果用户提和,界面向引擎发出go draw或ponderhit draw指令,而引擎反馈带draw的bestmove,那么界面可终止对局并判议和;
(2) 如果用户没有提和,而引擎反馈带draw的bestmove,那么界面可向用户提和,用户接受提和则可终止对局并判议和;
(3) 如果引擎反馈带resign的bestmove,那么界面可终止对局并判引擎认输。
引擎应该根据当前局面的情况(由position指令给出),以及界面是否发送了带draw的go或ponderhit指令,来考虑是否反馈带draw或resign的bestmove。
15. nobestmove
思考状态的反馈,此后引擎返回空闲状态。显示思考结果,但引擎一步着法也没计算,表示当前局面是死局面,或者接收到诸如 go depth 0 等只让引擎给出静态局面评价的指令。
16. probe {fen <FEN串> | startpos} [moves <后续着法列表>]
空闲状态和思考状态的指令。获取Hash表中指定局面的信息,引擎必须立刻在Hash表中查找该局面的状态,由pophash指令反馈。
该指令仅用于引擎的调试,设计者可以向引擎发送一系列probe指令,捕获到搜索树的大致信息。
17. pophash [bestmove <最佳着法>] [lowerbound <Beta值> depth <深度>] [upperbound <Alpha值> depth <深度>]
空闲状态和思考状态的反馈。输出由probe所指定的局面在Hash表中信息。
如果该局面没有记录在Hash表中,那么只反馈pophash即可。
18. quit
空闲状态的指令。让引擎退出运转。
19. bye
接收到quit指令后的反馈。引擎完成了退出运转前的准备工作,通知界面,引擎将在瞬间正常退出运转。界面收到该指令后,即可关闭输入输出通道。
六、用例
下面是一个后台思考的例子,描述了UCCI引擎中最难处理的部分。(从界面到引擎的)指令用红色表示,(从引擎到界面的)反馈用蓝色表示。
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
bestmove b0c2 ponder b9c7
在这个例子中,引擎执红,用户执黑,采用5分钟包干的时限。引擎启动后,界面即让引擎分析初始局面(不用开局库),引擎给出最佳着法“马八进七”,然后是用户走子,引擎按照猜测着法“马2进3”作后台思考。此时,引擎消耗了5秒钟,还剩余295秒的时间。
position fen rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1 moves b0c2 b9c7
go ponder time 295000 increment 0
info depth 6 score 4 pv c3c4 h9i7 c2d4 h7e7 h0g2 i9h9
此时用户走子了,下面分两种情况讨论。
(1) 如果用户走了引擎的猜测着法“马2进3”,那么后台思考命中:
ponderhit
info nodes 10000000 time 10000
info depth 7 score 4 pv c3c4 h9i7 c2d4 h7e7 h0g2 i9h9 i0h0
info nodes 15000000 time 15000
bestmove c3c4 ponder h9i7
上一页 [1] [2] [3] [4] 下一页
|
上局棋谱: 中国象棋电脑应用规范(三) PGN文件格式 下局棋谱: 中国象棋棋谱口诀歌诀大全 |
相关棋谱: |
相关下载: |
·中国象棋电脑应用规范(三) PGN文件格式 ·中国象棋电脑应用规范(二) FEN文件格式 ·中国象棋电脑应用规范(一) 着法表示
|
|
|