评分计算方法说明
Glicko-2-评分系统设定
棋者象棋排位赛采用的是Glicko-2计算方法,它是象棋职业等级分系统ELO算法基础上的一个优化方案,使用了更复杂的公式,必须是电脑普及后才能使用,无法人工进行计算。
它能解决:
- 不同棋力水平分数的玩家对弈积分结算的问题;天天象棋棋力评测算法只能满足棋力相当玩家之间对弈。这一点与职业等级分系统ELO类似。
- 它引入了一个评分可信度的概念(RD值),RD值越大可信度越小。对同样分数的用户,但是可信度不同有一个量化参考,可信度主要影响:1 对局数不够,分数没有达到棋手最终的分数,2 长时间不对局,RD值会随着时间的增加而增加,可信度就越低。
用户初始积分:500
用户初始RD:350
评分系统特性
- 能更快的让一个新手达到他水平应该在的分数,应该5-10局。
- 能跟不同棋力水平的用户对弈,进行合理的分数结算。
- 对局数越多,分数可信度越高,评分偏差RD就越小。
- 越长时间不对局,评分偏差RD会逐渐增大,3个月不对弈,RD会恢复到初始值350。
- 跟可信度高的对弈,评分改变越大,反之就越小。
- 当你棋力突然增强的时候,判定为实力增强时,你的RD值变大,来达到新的合理分数。
这个具体算法公式理解起来有点难,这个是数学统计方面的公式了,感谢的可以研究的这些资料:
https://www.biaodianfu.com/elo-glicko-trueskill.html#Glicko
http://www.glicko.net/research/gdescrip.pdf(论文作者)

几种积分算法的比较
讲到评分系统,这其实是一个数学模型的问题,用一个数字通过合理的数学模型为一群用户的棋力水平进行量化。数学模型没有好坏,用户能理解,够用,合理就行。
中国象棋,目前比较主流的评分系统大概分为2种:
一个是天天象棋——棋力评测的评分系统(业几…),输赢+-固定分数;
一个是职业大师等级分系统的ELO算法;如:王天一(2751),2022.11.17
棋者象棋,采用的是ELO算法的升级版本Glicko-2,之所以采用这个Glicko-2算法,是因为比ELO算法更为科学,严谨。为啥官方协会不采用呢?简单来讲,天天象棋的加减法小学生能算,ELO统计算法人工能算,Glicko-2就必须只能电脑算了,很多棋类协会推出ELO职业等级分的时候,电脑还不够普及,Glicko-2那时只停留论文中。
天天象棋——加减分算法
2011年,QQ游戏-新中国象棋采用的ELO算法,后续2015年推出天天象棋手机版的时候,改成了较为好理解线性加减分的算法,同级别输赢+-10分。当时改成这种的原因,主要因为天天象棋初期的用户是小白为主,这种简单加减法的计算体系小白更容易理解,推广成本低。
到目前为止,相信普通棋友很难理解ELO计分规则,和棋分数高为啥要扣分,赢棋分数高为啥不加分,或者更多我赢那么少,为啥输一次扣这么多。更科学的东西,不一定符合人的常识。
不过,现在这种简单加减法前期易于推广,后期也遇到很大的瓶颈。问题如下:
- 必须只能跟棋力接近的人打;棋力不接近的人对局,它就无法计算分数。比如业9和业1的人对局胜负和积分怎么算,不能算只能让他们不能对局了。
- 无法解决一直想赢的主播,必须作弊的问题。因为主播想要轻松点赢,也有人想要艰难的跟比自己实力强的人对弈,这2类用户本能需求,这种计分体系就无法很好的兼容。
- 线性加减后期在高手,对局数的情况下,大家的分数都是一直线性增长的。分数越大,越无法准确的计算棋力,会导致1个每天对局很多的县冠分数可能会远大于每周打几局的特级大师。
- 大家分数会不断的增长,这对于后加入的高手来讲,要达到自己的分数位置,前期要对局的数量是非常大的。例如:一个大师,实际分数应该在1200分,以初始分-160分来计算,他要连续对局136局才能到达自己真正的水平。这对后续加入的用户来讲,是一个非常差的体验。
ELO算法
由美国国际象棋联合会、FIDE和许多其他在线国际象棋网站使用,很受欢迎有两个原因——它已经存在很长时间了,而且很简单。
它解决了一个核心问题:不同棋力水平的人对弈分数如何结算的问题。
给定两个不同水平的棋手,我们应该能够计算出更好的棋手赢得比赛的几率。例如,王天一有100%的几率击败我5岁的女儿,但他可能只有60%的几率击败另一位大师。因此,当与另一位大师比赛时,如果他在10场比赛中赢了6场,他的评分将保持不变。如果他赢了7场或更多,评分就会上升,5场以下,他的评分就会下降。
简单来讲,A B两个棋力分不同的棋手对弈,根据已有的棋力分计算出A胜B的期望是60%,
那么AB对弈,A得分的期望值是0.6,B得分的期望值是0.4,但是2个人对弈肯定有一个结果。 假如胜+1 和+0.5 负+0,
那么A的实际得分= (实际得分-期望值)*K(波动系数)
K(波动系数),实际对应棋手的棋力水平波动系数,实际经验来看,棋力水平越高水平波动就越小,棋力水平越低,波动系数就越大。 K 是一个按照经验和棋力水平波动规律人工设定的值,比如1400——1600,k=40;1600-1800,k=20。
假如这次K=40,A赢了,A得分=(1-0.6)*40=16
假如这次K=40,A和了,A得分=(0.5-0.6)*40=-4
假如这次K=40,A输了,A得分=(0-0.6)*40=-24
这就是ELO算法中的,输多赢少,和棋会扣分的情况了。
Glicko-2系统
Glicko系统,是一种更现代的方法,建立在上述一些概念的基础上,但使用了更复杂的公式。它必须电脑来计算,在ELO可以人工计算,在电脑还未普及时,Glicko-2只能躺在论文里。
Glicko-2,是ELO衍生而来的,相比ELO,在解决2个分数不同的人对局分数计算问题,它还解决一个人处于某个分数,这个分数可信度如何?这个人在某个分数是否稳定的问题?
同样分数影响可信度的情况:
- 用户对局数不够,分数还未达到稳定期。同样分数,比如初始分1500,A是刚注册的人,B是打了100局还是1500分的人,显然B是1500分的可信度要高于A。
- 长时间不对局,棋力有可能下降。例如一个2000分的高手,1年没有对局了,它的棋力肯定不稳定了,分数也不太可信了。
- 用户经过一段时间训练,棋力突然增强了,这种棋力突变如何更快更敏捷的反应到分数上去。
Glicko系统不仅给每个人评分,而且给每个人一个“RD”,称为评分偏差。基本上这个数字的意思是“我95%确定你的评分在X和Y之间”
RD越大,你的分数越不稳定,每次对局分数变动就会更大。
用户初始积分=1500
用户初始RD=350
那我们有大概确信你在1500+-350(1150,1850)之间,这是国际象棋lichess跑出来的数据。

如果你有一个大的RD,那么你的评分会上下移动得更剧烈,因为你的评分不太准确。但是如果你有一个小的RD,那么你的评分会上下移动得更慢,因为你的评分更准确。你的对手恰恰相反!如果他们有一个高RD,那么你的评级将改变较少,当你赢或输,因为他们的评级是不准确的.但如果他们有一个低RD,那么你的评级将移动更多,因为他们的评级更准确。
最后的想法和思考
多年从事象棋研发,不同评分体系也琢磨过,思考过。
总而言之,不同的评分体系,没有好坏,只是场景和不同阶段应该用什么的问题。他们有几个特性:
- 普通人越容易理解它越不太科学,越科学合理,就越难理解。
- 同一个统计算法,对于不同群体表现是不太一样的,这个跟被统计的人群相关。(不同地区,同一地区不同时间的人群)
by 欢欢
2022.11.17