UCI协议:修订间差异
(创建页面,内容为“本页面正在施工中...”) |
无编辑摘要 |
||
(未显示2个用户的13个中间版本) | |||
第1行: | 第1行: | ||
<small>[https://pikafish.org/wiki 返回首页]</small> | |||
<br> | |||
<br> | |||
== quit == | |||
退出引擎,输入后引擎将立即退出。引擎不会输出任何内容。 | |||
== ucinewgame == | |||
进行新的一局时,界面应向引擎发送ucinewgame指令以清除置换表等。ucinewgame指令的执行可能需要一段时间,界面在发送该指令后应使用isready确认引擎状态。 | |||
== setoption == | |||
设置引擎选项,用法:setoption name <id> [value <x>]。 | |||
其中,<id>是UCI选项名,<x>是你要设置的值。 | |||
例如界面要将引擎的线程数设置为16,可发送“setoption name Threads value 16”。 | |||
某些选项,如Clear Hash(清空置换表),可省略value直接使用,例如:“setoption name Clear Hash”。 | |||
关于UCI选项,详见“[[UCI选项]]”页面,这里不再赘述。 | |||
引擎不会输出任何内容。 | |||
== isready == | |||
用于检查引擎是否工作正常,引擎应始终输出“readyok”。 | |||
== uci == | |||
用于获取引擎相关信息(如名称、作者、UCI选项等),输出示例如下: | |||
id name Pikafish 2024-02-18 | |||
id author the Pikafish developers (see AUTHORS file)<br> | |||
option name Debug Log File type string default | |||
option name Threads type spin default 1 min 1 max 1024 | |||
option name Hash type spin default 16 min 1 max 33554432 | |||
option name Clear Hash type button | |||
option name Ponder type check default false | |||
option name MultiPV type spin default 1 min 1 max 128 | |||
... | |||
uciok | |||
其中,“uciok”是必需的。如果界面输入uci后,没有接收到引擎输出的“uciok”,那么界面会认为该程序不是UCI引擎。 | |||
== [position] fen == | |||
给引擎输入[[FEN(局面码)是什么?|FEN]]局面。 | |||
例如: | |||
position fen 3k1a3/4a4/5n3/9/9/9/9/9/9/4KR3 w | |||
或者在此基础上加上movelist(历史着法): | |||
5a3/3ka4/5n3/9/9/9/9/9/9/4K1R2 w - - 0 1 moves g0f0 d8d9 | |||
注意,中国象棋引擎采用的是UCI-Cyclone,可以省略position,且表示行的数字从0开始。 | |||
引擎不会输出任何内容。 | |||
== [position] startpos == | |||
设置当前局面为起始局面(rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w),“position”可省略。 | |||
引擎不会输出任何内容。 | |||
== go == | |||
让引擎分析当前的局面(当前局面可通过position指令设置)。 | |||
可以加入以下参数: | |||
* searchmoves <move1> <move2> ... <movei>,指定搜索的走法(界面“变招”功能需要使用该参数)。需要注意的是,UCI协议中没有“banmoves”指令(这是UCCI协议中的)。 | |||
* infinite,无限制分析(直到发送“stop”) | |||
* ponder,后台思考 | |||
* wtime, btime,红方和黑方剩下的时间(ms) | |||
* winc, binc,红方和黑方的加秒(ms) | |||
* movestogo,用于多少时间走多少步的时间制,告诉引擎获得新的时间还剩多少步,在中国象棋里面一般不会用到 | |||
* depth,指定层数 | |||
* nodes,指定搜索的节点数 | |||
* mate,指定搜索到多少步内绝杀就停止 | |||
* movetime,指定步时(ms) | |||
* perft,穷举多少步内的局面 | |||
输入go后,引擎将搜索当前局面并输出搜索结果。达到对应的限制或用户发送stop指令后,引擎即终止搜索。 | |||
== d == | |||
输出当前的局面、局面FEN、key信息和将军信息。该指令供引擎开发调试使用。 | |||
== eval == | |||
输出当前局面的评估信息。该指令供引擎开发调试使用。 | |||
== export_net == | |||
导出权重,可指定文件名。 | |||
== flip == | |||
切换走子方。 | |||
== compiler == | |||
输出编译器及引擎指令集信息。 | |||
== bench == | |||
详见[[什么是bench?bench的结果说明了什么?]]。 |
2024年9月25日 (三) 17:37的最新版本
quit
退出引擎,输入后引擎将立即退出。引擎不会输出任何内容。
ucinewgame
进行新的一局时,界面应向引擎发送ucinewgame指令以清除置换表等。ucinewgame指令的执行可能需要一段时间,界面在发送该指令后应使用isready确认引擎状态。
setoption
设置引擎选项,用法:setoption name <id> [value <x>]。
其中,<id>是UCI选项名,<x>是你要设置的值。
例如界面要将引擎的线程数设置为16,可发送“setoption name Threads value 16”。
某些选项,如Clear Hash(清空置换表),可省略value直接使用,例如:“setoption name Clear Hash”。
关于UCI选项,详见“UCI选项”页面,这里不再赘述。
引擎不会输出任何内容。
isready
用于检查引擎是否工作正常,引擎应始终输出“readyok”。
uci
用于获取引擎相关信息(如名称、作者、UCI选项等),输出示例如下:
id name Pikafish 2024-02-18 id author the Pikafish developers (see AUTHORS file)
option name Debug Log File type string default option name Threads type spin default 1 min 1 max 1024 option name Hash type spin default 16 min 1 max 33554432 option name Clear Hash type button option name Ponder type check default false option name MultiPV type spin default 1 min 1 max 128 ... uciok
其中,“uciok”是必需的。如果界面输入uci后,没有接收到引擎输出的“uciok”,那么界面会认为该程序不是UCI引擎。
[position] fen
给引擎输入FEN局面。
例如:
position fen 3k1a3/4a4/5n3/9/9/9/9/9/9/4KR3 w
或者在此基础上加上movelist(历史着法):
5a3/3ka4/5n3/9/9/9/9/9/9/4K1R2 w - - 0 1 moves g0f0 d8d9
注意,中国象棋引擎采用的是UCI-Cyclone,可以省略position,且表示行的数字从0开始。
引擎不会输出任何内容。
[position] startpos
设置当前局面为起始局面(rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w),“position”可省略。
引擎不会输出任何内容。
go
让引擎分析当前的局面(当前局面可通过position指令设置)。
可以加入以下参数:
- searchmoves <move1> <move2> ... <movei>,指定搜索的走法(界面“变招”功能需要使用该参数)。需要注意的是,UCI协议中没有“banmoves”指令(这是UCCI协议中的)。
- infinite,无限制分析(直到发送“stop”)
- ponder,后台思考
- wtime, btime,红方和黑方剩下的时间(ms)
- winc, binc,红方和黑方的加秒(ms)
- movestogo,用于多少时间走多少步的时间制,告诉引擎获得新的时间还剩多少步,在中国象棋里面一般不会用到
- depth,指定层数
- nodes,指定搜索的节点数
- mate,指定搜索到多少步内绝杀就停止
- movetime,指定步时(ms)
- perft,穷举多少步内的局面
输入go后,引擎将搜索当前局面并输出搜索结果。达到对应的限制或用户发送stop指令后,引擎即终止搜索。
d
输出当前的局面、局面FEN、key信息和将军信息。该指令供引擎开发调试使用。
eval
输出当前局面的评估信息。该指令供引擎开发调试使用。
export_net
导出权重,可指定文件名。
flip
切换走子方。
compiler
输出编译器及引擎指令集信息。