UCI选项:修订间差异

来自皮卡鱼 Wiki
跳到导航 跳到搜索
无编辑摘要
New讨论 | 贡献
无编辑摘要
第96行: 第96行:




Yitianrule适合在奕天平台使用。
Yitianrule适合在弈天平台使用。





2024年9月18日 (三) 01:06的版本

返回“棋软知识”

目前部分界面支持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为最佳设置,注意这里不是回合,是每步,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 一般机器不用管此选项。 多路服务器可以注意一下,auto可能会吃不满线程,可改为hardware,但目前似乎尚存在多开bug,多开会有问题。


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