UCI选项:修订间差异

来自皮卡鱼 Wiki
跳到导航 跳到搜索
无编辑摘要
无编辑摘要
 
(未显示2个用户的57个中间版本)
第1行: 第1行:
目前部分界面支持UCI选项,例如
<small>[[棋软知识|返回“棋软知识”]]</small>
<br>
<br>
目前部分界面支持UCI选项, 例如:


  在鲨鱼界面中,点击引擎栏中的🔧扳手图标,即可进入引擎选项设置。
  在鲨鱼界面中,点击引擎栏中的🔧扳手图标(线程和哈希设置的旁边)即可进入引擎选项设置。如下图所示
[[文件:Screenshot 20240320 112109 QQ.jpg|缩略图|居中|鲨鱼界面设置引擎UCI选项的地方]]
 
 
 
而手机安卓系统,在进入优步app后,点击最右上角,就能弹出菜单,然后点击“管理UCI引擎”→“引擎设置”,即可进入部分选项设置。


而手机玩家,在进入优步app后,点击最右上角,就能弹出菜单,然后点击“管理UCI引擎”→“引擎设置”,即可进入部分选项设置。


== 皮卡鱼的部分选项说明 ==
== 皮卡鱼的部分选项说明 ==


<big>Clear Hash</big>
  <big>Clear Hash</big>


清除引擎目前的哈希记忆。不过最常见的是直接重新加载引擎达到这个效果。
清除引擎目前的哈希记忆。不过最常见的是直接重新加载引擎达到这个效果。




<big>MultiPV</big>
  <big>MultiPV</big>


多主变思考。引擎分析局面时默认是1个主变。当改变此选项,引擎分析时会增加当前局面的主变数量,各主变的深度一致,并同时显示(即同一层会显示多个变化),
多主变思考。引擎分析局面时默认是1个主变。当改变此选项,引擎分析时会增加当前局面的主变数量,各主变的深度一致,并同时显示(即同一层会显示多个变化),


调高数字将会''降低棋力'',仅供拆棋分析使用,'''实战和引擎测试请不要使用'''。
调高数字将会''降低棋力'',仅供拆棋分析使用,'''实战和引擎测试请不要使用'''。并且只是增加当前的局面主变数量,在思考后续局面时照旧(显而易见否则指数爆炸)


设置范围1~500,默认是1,即只有一个主变。
设置范围1~500,默认是1,即只有一个主变。


注:主变是主要变例(Principle Variation)的缩写。




<big>Skill Level</big>


限制引擎的棋力水平,设置非20时,有一定概率在出招时选择劣变,可用作人软对弈。注意仅仅是引擎出招选择劣变,引擎分析仍然正常。
  <big>Skill Level</big>
 
限制引擎的棋力水平,设置非20时,有一定概率在出招时选择劣变(同时会开启MultiPV=4)可用作人软对弈。注意仅仅是引擎出招选择劣变,引擎分析和MultiPV=4相同。


设置范围0~20,默认为不限制棋力的20。
设置范围0~20,默认为不限制棋力的20。


'''但如果开启UCI_Limitstrength,将会使skill level无效。'''
'''但如果开启UCI_LimitStrength,将会使Skill Level无效。'''






<big>UCI_LimitStrength</big>
  <big>UCI_LimitStrength</big>


默认关闭。'''开启后将会使Skill Level无效,让UCI_Elo生效。'''
默认关闭。'''开启后将会使Skill Level无效,让UCI_Elo生效。'''
第38行: 第47行:




<big>UCI_Elo</big>
  <big>UCI_Elo</big>


更细致地限制引擎的棋力水平。'''只有开启UCI_LimitStrength才会生效''',设置范围1280~3133,越低越弱。如果不满足Skill Level的21个级别划分,想要更加细致地划分引擎棋力水平,就用这个,其本质和skill level没有区别。
更细致地限制引擎的棋力水平。'''只有开启UCI_LimitStrength才会生效''',设置范围1280~3133,越低越弱。如果不满足Skill Level的21个级别划分,想要更加细致地划分引擎棋力水平,使用UCI_Elo即可。和Skill Level的限制棋力方式没有区别,只是更加细分。
其中elo=1280等于skill level中的0,3133等于skill level中的19,2850=13,2568=10,2268=7,1777=4。
其中Elo=1280等于Skill Level中的0,最高值3133等于Skill Level中的19,2850=13,2568=10,2268=7,1777=4。


UCI_Elo的值已经和[https://bbs.pikafish.org/forum.php?mod=viewthread&tid=179 象棋引擎联赛天梯图]校准。


<big>Sixty Move Rule</big>


60回合自然限招规则。默认开启。
皮卡鱼的60回合自然限招规则,不会把每方超过10次将军的着法计入限招,并且对应的应将步也不会计入,但当局面产生吃子后,将军次数会重新计算。


开启时引擎将会考虑到60回合不吃子判和,把60回合不吃子视为0分,可以有效提高棋力。


如果你想分析局面同时不考虑60回合、或者不喜欢、或者平台和界面不兼容皮卡鱼60规则,则可以关闭。如果发现莫名其妙的送子问题,很可能就是此选项导致,说明和你下棋平台或界面的60规则不兼容,可以选择关闭。(其实送子并非问题,因为60回合不吃子时引擎已经视为0分,任何不会马上造成吃子的着法都是0分)
  <big>Rule60MaxPly</big>
 
60回合自然限招的步数设置,设置范围0到120,默认为120,且120为最佳设置。0则为取消自然限招。
注意120就是60回合。
 
设置120时引擎将会考虑到60回合不吃子判和,把60回合不吃子视为0分,设置0引擎将会取消自然限招的考虑。
 
如果你想分析局面同时不考虑60回合、或者不喜欢、或者平台和界面不兼容皮卡鱼60规则,则可以关闭设置为0或修改。如果发现莫名其妙的送子问题,很可能就是此选项导致,说明和你下棋平台或界面的60规则不兼容,可以选择设置0。(其实送子并非问题,因为60回合不吃子时引擎已经视为0分,任何不会马上造成吃子的着法都是0分)
 
'''除特殊情况拆棋以外不建议调整该选项''',因为引擎的搜索参数耦合120步自然限招,如果小太多,很可能导致棋力还不如直接关闭自然限招。并且一旦引擎走到了认为的限招步数,后续着法将会随机。只适合特殊情况拆棋使用,例如大优胜势残局局面想要找到可能的迅速简化或吃子路线,并且使用完后要随时记得要调回120,否则可能导致未来拆棋或引擎联赛测试出现荒谬的结果。


皮卡鱼的60回合自然限招规则,不会把每方超过10次将军的着法计入限招,并且对应的应将步也不会计入,但当局面产生吃子后,将军次数会重新计算。


  <big>Mate Threat Depth</big>


判断中规里“杀”的回合数。'''该选项只在Repetition Rule里设定为ChineseRule时才会生效''',设置范围0~10,设置0则引擎不会判断“杀”。设置1~10,则引擎会在搜索中判断循环招法是不是1~10回合内的“杀”,而“杀”在中规里可能导致循环违规。设置得越高棋力下降越严重。适合纯人在中规环境下拆棋。


<big>Mate Threat Depth</big>


判断中规里“杀”的回合数。该选项在Repetition Rule里设定为ChineseRule时''才会生效'',设置范围0~10,设置0则引擎不会判断“杀”。设置1~10,则引擎会在搜索中判断循环招法是不是1~10回合内的“杀”,而“杀”在中规里可能导致循环违规。设置得越高棋力下降越严重。适合纯人在中规环境下拆棋。




  <big>Repetition Rule</big>


<big>Repetition Rule</big>


AsianRule是亚洲规则(作者团队所理解的一个亚规版本),违规严重级:长将>长捉同一子>其他,属于2fold(相同局面一旦重复出现直接进行判决,也就是一个局面出现第2次时判决)
AsianRule是亚洲规则(作者团队所理解的一个亚规版本),违规严重级:长将>长捉同一子>其他,属于2fold(相同局面一旦重复出现直接进行判决,也就是一个局面出现第2次时判决)
大部分网络规则都是亚规。
'''大部分网络规则都是亚规。'''
 
 
SkyRule是某些网络规则。请注意,某些网络规则是亚规基础上稍作修改的,并不是中规。用于线上对弈后拆棋,供纯人更好地在平台适应规则。请自行辨别网络规则是不是亚规。(该棋规代码作者为skystarspython)
 
 
ComputerRule是基于皮卡鱼作者《中国象棋程序竞赛规则》的规则,和AsianRule有些许出入,也'''和所有网络平台规则都有较大差异''',但是是唯一一个全部符合所有亚规图例结果裁决的规则,更严格按照亚规文字定义,并且属于3fold(一个局面出现第3次时判决)。
 
 
 
ChineseRule是极简化的中国规则,本质上是亚规改版。注意目前几乎没有网络平台使用中规!且目前中规由于定义过度模糊且复杂,复杂棋例比较依赖裁判的主观想法,绝无任何可能程序化。违规严重级:长将>长捉、长杀、将杀循环、将捉循环、杀捉循环>其他。开启此选项后,Mate Threat Depth不为0时,引擎才会判断“杀”。
 
 
AllowChase是只禁止长将,允许其他一切循环着法。因为象棋的规则不统一,所以在一些优势胜势局可以在此规则下进行拆棋分析,以求找到不涉及循环棋规的路线,避开可能存在的循环棋规问题。
 
 
Yitianrule适合在弈天平台使用。
 
 
上述规则要随时记得调整。例如使用其他规则拆棋后,如果之后要进行引擎联赛测试要调回AsianRule,否则可能出现荒谬的测试结果。
 
 
  <big>ScoreType</big>
引擎显示的分数种类,不影响棋力。
 
 
Elo:胜率分数。根据胜率模型,将原始分数转换而成的分数。
皮卡鱼(自2024年开始)的elo分是'''和ELO挂钩''',200分代表76%胜率(象棋圈常说的胜率,也就是胜局加上一半的和局,例如4胜4和2负就是60%胜率,3胜4和3负就是50%胜率),elo和胜率的关系如右图所示。[[文件:Ca5083ed-8215-4faa-9b12-e394b109edae.png|缩略图|“胜率(胜局+一半的和局)”与elo分数的对应曲线图]]
[[文件:2ebfe70f-bb33-4146-9cf2-a9de2060c7f0.png|缩略图|“获胜概率(仅胜局)”与elo分数的近似对应曲线图]]
 


SkyRule是某些网络规则。请注意,某些网络规则是亚规基础上稍作修改的,并不是中规。用于线上对弈后拆棋,请自行辨别网络规则是不是亚规。(该棋规代码作者为skystarspython)


ComputerRule是基于皮卡鱼作者《中国象棋程序竞赛规则》的规则,和AsianRule有些许不同,但是唯一一个全部符合所有亚规图例结果裁决的规则,并且属于3fold(一个局面出现第3次时判决)。
PawnValueNormalized:原始分数除以一个兵价值的常数。


ChineseRule是极简化的中国规则,本质上是亚规改。注意目前没有网络平台使用中规!且目前中规由于过度模糊,绝无任何可能程序化。违规严重级:长将>长捉、长杀、将杀循环、将捉循环、杀捉循环>其他。开启此选项后,Mate Threat Depth不为0时,引擎才会判断“杀”。


Raw:原始分数。




<big>UCI_WDLCentipawn</big>


胜率分数。根据胜率模型将原始分数转换的分数,关闭会显示原始分数,不影响棋力。目前皮卡鱼的胜率分是100分代表50%的取胜概率。如果不习惯胜率分数可以关闭(实际上原始分可能也不习惯)。






<big>LU_Output</big>
 
 
 
 
 
 
  <big>LU_Output</big>


默认开启。开启会显示lowerbound和upperbound的信息,通俗说同一层可能会输出多次结果,比如某一层正在上层的时候会输出不完整的思考细节。若关闭,一层只会输出一次。
默认开启。开启会显示lowerbound和upperbound的信息,通俗说同一层可能会输出多次结果,比如某一层正在上层的时候会输出不完整的思考细节。若关闭,一层只会输出一次。


该选项只有输出区别,不影响棋力。
  <big>DrawRule</big>
None是正常,默认None。
DrawAsBlackWin是和棋黑胜,引擎会把和棋循环与自然限招和棋算作黑胜。
DrawAsRedWin是和棋红胜。
DrawRepAsBlackWin是和棋循环黑胜,引擎只会把和棋的循环算作黑胜。拆棋分析的时候,不想短期内走出和棋循环可以利用这个。
DrawRepAsRedWin是和棋循环红胜。
皮卡鱼引擎并不保证这些规则的棋力,'''尤其是分数评估很不可信''',只有着法可能会有参考性。
上述规则如果调整过,要随时记得调整。例如使用和棋黑胜拆棋后,如果之后要进行引擎联赛测试要调回None,否则会出现荒谬的测试结果。
  <big>EvalFile</big>
引擎要读取的NNUE权重文件名称与路径。引擎默认读取同一文件路径下名为pikafish.nnue的文件,可以将NNUE文件改名,并且通过此选项使其仍可以被读取。一般人不需要,手机优步可通过此选项达到配置多引擎的效果。
部分界面(特别是自制界面,如T界面)在加载引擎的时候不会将工作目录切换到引擎目录下,导致引擎无法读取NNUE文件。可以通过该选项设置NNUE的完整路径解决问题,'''或者直接把pikafish.nnue放在界面目录下(如果引擎没有提供设置选项功能可以尝试)'''。




<big>EvalFile</big>
  <big>NumaPolicy</big>
默认auto  一般不用管此选项。


引擎要读取的nnue权重文件名称与路径。引擎默认读取同一文件路径下名为pikafish.nnue的文件,可以将nnue文件改名,并且通过此选项使其仍可以被读取。一般人不需要,手机优步可通过此选项达到配置多引擎的效果。
但2022年以前Windows系统的多核心服务器注意,auto很可能会吃不满线程,可改为 hardware 或者关闭超线程,前者多开引擎时会有分配问题,后者有概率正常。




  其余选项一般人基本用不到,可以无视,如果想要知道,可以进入pikafish的github中wiki查看。
其余选项一般人基本用不到(例如Threads和Hash,界面会提供相应的设置),可以无视,如果想要知道,可以进入[https://github.com/official-pikafish/Pikafish/wiki 皮卡鱼官方GitHub中的Wiki]查看。

2024年9月21日 (六) 03:08的最新版本

返回“棋软知识”

目前部分界面支持UCI选项, 例如:

在鲨鱼界面中,点击引擎栏中的🔧扳手图标(线程和哈希设置的旁边)即可进入引擎选项设置。如下图所示
鲨鱼界面设置引擎UCI选项的地方


而手机安卓系统,在进入优步app后,点击最右上角,就能弹出菜单,然后点击“管理UCI引擎”→“引擎设置”,即可进入部分选项设置。


皮卡鱼的部分选项说明

 Clear Hash

清除引擎目前的哈希记忆。不过最常见的是直接重新加载引擎达到这个效果。


 MultiPV

多主变思考。引擎分析局面时默认是1个主变。当改变此选项,引擎分析时会增加当前局面的主变数量,各主变的深度一致,并同时显示(即同一层会显示多个变化),

调高数字将会降低棋力,仅供拆棋分析使用,实战和引擎测试请不要使用。并且只是增加当前的局面主变数量,在思考后续局面时照旧(显而易见否则指数爆炸)。

设置范围1~500,默认是1,即只有一个主变。

注:主变是主要变例(Principle Variation)的缩写。


 Skill Level

限制引擎的棋力水平,设置非20时,有一定概率在出招时选择劣变(同时会开启MultiPV=4)可用作人软对弈。注意仅仅是引擎出招选择劣变,引擎分析和MultiPV=4相同。

设置范围0~20,默认为不限制棋力的20。

但如果开启UCI_LimitStrength,将会使Skill Level无效。


 UCI_LimitStrength

默认关闭。开启后将会使Skill Level无效,让UCI_Elo生效。


 UCI_Elo

更细致地限制引擎的棋力水平。只有开启UCI_LimitStrength才会生效,设置范围1280~3133,越低越弱。如果不满足Skill Level的21个级别划分,想要更加细致地划分引擎棋力水平,使用UCI_Elo即可。和Skill Level的限制棋力方式没有区别,只是更加细分。 其中Elo=1280等于Skill Level中的0,最高值3133等于Skill Level中的19,2850=13,2568=10,2268=7,1777=4。

UCI_Elo的值已经和象棋引擎联赛天梯图校准。


皮卡鱼的60回合自然限招规则,不会把每方超过10次将军的着法计入限招,并且对应的应将步也不会计入,但当局面产生吃子后,将军次数会重新计算。


 Rule60MaxPly

60回合自然限招的步数设置,设置范围0到120,默认为120,且120为最佳设置。0则为取消自然限招。 注意120就是60回合。

设置120时引擎将会考虑到60回合不吃子判和,把60回合不吃子视为0分,设置0引擎将会取消自然限招的考虑。

如果你想分析局面同时不考虑60回合、或者不喜欢、或者平台和界面不兼容皮卡鱼60规则,则可以关闭设置为0或修改。如果发现莫名其妙的送子问题,很可能就是此选项导致,说明和你下棋平台或界面的60规则不兼容,可以选择设置0。(其实送子并非问题,因为60回合不吃子时引擎已经视为0分,任何不会马上造成吃子的着法都是0分)

除特殊情况拆棋以外不建议调整该选项,因为引擎的搜索参数耦合120步自然限招,如果小太多,很可能导致棋力还不如直接关闭自然限招。并且一旦引擎走到了认为的限招步数,后续着法将会随机。只适合特殊情况拆棋使用,例如大优胜势残局局面想要找到可能的迅速简化或吃子路线,并且使用完后要随时记得要调回120,否则可能导致未来拆棋或引擎联赛测试出现荒谬的结果。


 Mate Threat Depth

判断中规里“杀”的回合数。该选项只在Repetition Rule里设定为ChineseRule时才会生效,设置范围0~10,设置0则引擎不会判断“杀”。设置1~10,则引擎会在搜索中判断循环招法是不是1~10回合内的“杀”,而“杀”在中规里可能导致循环违规。设置得越高棋力下降越严重。适合纯人在中规环境下拆棋。



 Repetition Rule


AsianRule是亚洲规则(作者团队所理解的一个亚规版本),违规严重级:长将>长捉同一子>其他,属于2fold(相同局面一旦重复出现直接进行判决,也就是一个局面出现第2次时判决) 大部分网络规则都是亚规。


SkyRule是某些网络规则。请注意,某些网络规则是亚规基础上稍作修改的,并不是中规。用于线上对弈后拆棋,供纯人更好地在平台适应规则。请自行辨别网络规则是不是亚规。(该棋规代码作者为skystarspython)


ComputerRule是基于皮卡鱼作者《中国象棋程序竞赛规则》的规则,和AsianRule有些许出入,也和所有网络平台规则都有较大差异,但是是唯一一个全部符合所有亚规图例结果裁决的规则,更严格按照亚规文字定义,并且属于3fold(一个局面出现第3次时判决)。


ChineseRule是极简化的中国规则,本质上是亚规改版。注意目前几乎没有网络平台使用中规!且目前中规由于定义过度模糊且复杂,复杂棋例比较依赖裁判的主观想法,绝无任何可能程序化。违规严重级:长将>长捉、长杀、将杀循环、将捉循环、杀捉循环>其他。开启此选项后,Mate Threat Depth不为0时,引擎才会判断“杀”。


AllowChase是只禁止长将,允许其他一切循环着法。因为象棋的规则不统一,所以在一些优势胜势局可以在此规则下进行拆棋分析,以求找到不涉及循环棋规的路线,避开可能存在的循环棋规问题。


Yitianrule适合在弈天平台使用。


上述规则要随时记得调整。例如使用其他规则拆棋后,如果之后要进行引擎联赛测试要调回AsianRule,否则可能出现荒谬的测试结果。


 ScoreType

引擎显示的分数种类,不影响棋力。


Elo:胜率分数。根据胜率模型,将原始分数转换而成的分数。

皮卡鱼(自2024年开始)的elo分是和ELO挂钩,200分代表76%胜率(象棋圈常说的胜率,也就是胜局加上一半的和局,例如4胜4和2负就是60%胜率,3胜4和3负就是50%胜率),elo和胜率的关系如右图所示。

“胜率(胜局+一半的和局)”与elo分数的对应曲线图
“获胜概率(仅胜局)”与elo分数的近似对应曲线图


PawnValueNormalized:原始分数除以一个兵价值的常数。


Raw:原始分数。







 LU_Output

默认开启。开启会显示lowerbound和upperbound的信息,通俗说同一层可能会输出多次结果,比如某一层正在上层的时候会输出不完整的思考细节。若关闭,一层只会输出一次。

该选项只有输出区别,不影响棋力。


 DrawRule

None是正常,默认None。


DrawAsBlackWin是和棋黑胜,引擎会把和棋循环与自然限招和棋算作黑胜。


DrawAsRedWin是和棋红胜。


DrawRepAsBlackWin是和棋循环黑胜,引擎只会把和棋的循环算作黑胜。拆棋分析的时候,不想短期内走出和棋循环可以利用这个。

DrawRepAsRedWin是和棋循环红胜。

皮卡鱼引擎并不保证这些规则的棋力,尤其是分数评估很不可信,只有着法可能会有参考性。

上述规则如果调整过,要随时记得调整。例如使用和棋黑胜拆棋后,如果之后要进行引擎联赛测试要调回None,否则会出现荒谬的测试结果。


 EvalFile

引擎要读取的NNUE权重文件名称与路径。引擎默认读取同一文件路径下名为pikafish.nnue的文件,可以将NNUE文件改名,并且通过此选项使其仍可以被读取。一般人不需要,手机优步可通过此选项达到配置多引擎的效果。

部分界面(特别是自制界面,如T界面)在加载引擎的时候不会将工作目录切换到引擎目录下,导致引擎无法读取NNUE文件。可以通过该选项设置NNUE的完整路径解决问题,或者直接把pikafish.nnue放在界面目录下(如果引擎没有提供设置选项功能可以尝试)


 NumaPolicy

默认auto 一般不用管此选项。

但2022年以前Windows系统的多核心服务器注意,auto很可能会吃不满线程,可改为 hardware 或者关闭超线程,前者多开引擎时会有分配问题,后者有概率正常。


其余选项一般人基本用不到(例如Threads和Hash,界面会提供相应的设置),可以无视,如果想要知道,可以进入皮卡鱼官方GitHub中的Wiki查看。