• 通过ELO机制衡量各类对弈活动水平


    0 引言

          在日常生活中有许多的比赛,如一对一的象棋、围棋等棋类比赛,也有队伍之间的比赛,如足球、篮球等球类比赛。在这些比赛中,我们总会知道有一些很强的选手、很强的队伍,但是,他们到底有多强?又或者说,我们都觉得某个选手甲比选手乙要强,可是甲比乙强了多少呢,是有六成胜率,还是八成胜率,还是几乎必胜?能不能通过数学的方法来量化这个问题?

    因此,elo等级分系统诞生了。

         Elo等级分系统是指由匈牙利裔美国物理学家阿帕德·埃洛创建的一个衡量各类对弈活动水平的评价方法,其目的便是为了解决如上的问题。

    1 问题

    怎样去衡量比赛选手水平?如何通过python实现elo分数?

    2 方法

    Elo的想法很简单,比大小。如果我们能用一个分数去评估选手的实力,甲2000分,乙1800分,2000比1800要大,那就说明甲的实力是要强于乙的。

    但是,乙也有战胜甲的可能。因为甲可能在某场比赛中发挥失常,只发挥出了1800的水平,而乙发挥超常,达到了2000分的水平,这样乙就战胜了甲。

    为了解决这个问题,我们可以不妨认为选手的发挥是服从正态分布的——比如甲服从平均值为2000的正态分布,就是在说他有极大多数时候的发挥水平都在2000附近,也有很低的可能到1800以下或者2200以上。这样,根据正态分布的公式,就能得到选手之间的预期胜率。这个公式本来是个比较难以计算的积分式,但是可以用非常简单的另一个近似公式计算。

    现在我们可以用一个分数来代表一个选手的实力水平了,现在甲乙选手各有自己的等级分,如果他们进行比赛,赢的一方代表他的实力更强,因此应当提高胜方的elo积分,同理也要降低败方的elo积分。

    比如目前甲是1500分,乙是1600分。我们知道,甲乙对战,明显乙更容易占优势,因此如果乙胜利

    现在甲乙进行竞技,根据公式,

    如果甲胜利了,甲将更新他的elo等级分为1520.5分,而乙的积分将掉到1579.5分,相当于扣除了乙的20.5分给甲。如果乙胜利了,将扣除甲的12分给乙,甲变为1488分,乙变为1612分。

    而如果是实力相差悬殊的比赛,甲2000分对阵乙1200分,甲的预期胜率已经极度接近100%,那么他们的elo分不会发生任何变化。

    我们不妨假设,在某一个特定时期,一位选手的平均实力不会出现较大的波动,那么他进行的比赛次数越多,他的elo等级分就会越来越接近他的真实实力的等级分。

    现在我们可以将一个队伍看成是一名选手,这样在队伍比赛的时候,就可以得到某支队伍的elo等级分了。

    3 实验结果与讨论

    代码清单 1

    Calss  Eloscore:
    ELO_RESULT_WIN=1
    ELO_RESULT_LOSS=-1
    ELO_RESULT_TIE=0
    ELO_RATING_DEFAULT=1500
    ratingA=0
    ratingB=0
    def __init__(self):
    self.ratingA= ratingA
    self.ratingB= ratingB
    def comuteK(self,rating1,rating2):
    return 1/(1+pow(10,(rating2-rating1)/400))
    if __name__==’__main__’:
    eloscore=Eloscore()
    print(eloscore.computeScore(1500,1800))
    print(eloscore.computeK(1500))
    print(eloscore.computeK(1800))

    4 结语

    针对许多类似球类,游戏等对弈的公平性问题,使用elo机制分数衡量方法,通过求elo分数实验,证明出可以用elo机制衡量个人选手或者队伍水平,以达到游戏或比赛的公平性。本方法只是单方面考虑比赛成绩,没有顾及到另外方面的特殊情况,所以要想更公平的实现比赛等,还需从多发方面考虑,升级算法,更精准评估。

  • 相关阅读:
    基于java的在线物流管理系统【原创】
    mac安装Homebrew
    Nginx 负载均衡
    验证了一遍CVAT的安装(Windows 11)
    力扣100题——贪心算法
    二百零一、Flink——Flink配置状态后端运行后报错:Can not create a Path from an empty string
    多肽介导PEG磷脂——磷脂-聚乙二醇-靶向肽SP94,DSPE-PEG-SP94
    App Languages 批量导入管理Android多语言文案
    CentOS 9 Stream 上安装 WebStorm
    《代码之丑》学习总结
  • 原文地址:https://blog.csdn.net/gschen_cn/article/details/125512653