#1  如何测试你的引擎

引擎的测试枯燥无味,而且需要花费大量的时间,在这里提供一些方法,希望能够帮助大家减少无谓的工作量,多一点享受生活的机会。

首先,引擎的测试,需要有参照物,一个成熟的坐标,是成功的关键,我推荐象眼,开源的帮助是巨大的,你可以对他做出自己喜欢的定向修改,提取自己喜欢的数据。

1. 引擎的实现次序应该是: 框架(保证速度)->引擎->审局。
一般来说,如果nps差别没有几倍,是引擎的棋力还是相当接近的,我测试nps提高30%~50%,在对战中,胜率的比例变化不大,所以,首先保证你的引擎,nps和别人接近吧,注意,这里的nps指纯子力表nps

2. 开始引擎的测试了,首先,把审局去掉,然后,减少加速的方法,嗯,尽量把可变因素降低吧,跟着,开始测试2分钟限时,5分钟限时,10分钟限时的胜负比率,你会发现,原来时间对胜负比率的影响是有限的,OK,选一个最短时间做为测试样本吧。

2.1 对中断的测试,引擎出步,限制时间,会引起中断,但是中断往往会耗费大量的无效时间,控制不要中断,中断的计算是无效的,根据当前情况,决定是否需要下一层计算吧,这样才能提高测试的准确度

2.2 注意搜索的节点数,这个是考察测试有效度的重要指标,都只采用子力表,搜索10层,别人只用了你的1/3节点数,你不应该怀疑自己的搜索效率么?

2.3 测试fhf,即第一棋步返回率,OK,这个指标应该可以高达90%以上,当然70~80%的fhf对棋力影响也不会太大,但是,你的搜索效率是不高的,对么?

2.4 注意quiet节点和fullsearch节点的比例,这两者的比例可以进一步提高搜索的准确度,不要让无聊的剪枝,影响了这两者的比例

2.5 把盘面和搜索路径打印出来,并且可以恢复,这样才可以连续测试,并且比较自己引擎和别人引擎的分析差别

2.6 利用对战工具,看看自己的对战失败原因吧!是一直被别人压着打,还是突然跳水?哦,如果跳水,那就是剪枝出问题了,别人搜索到了一个你没能搜索到的棋步

2.7 ....

3 当引擎成熟以后,再尝试添加审局吧!
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐