ELO算法,用于处理不经常玩的人


9

我正在使用ELO算法对正在进行的乒乓球比赛中的球员进行排名。大多数球员每天都在比赛,但是我们有一个球员一个月没有上场。我的算法目前仅跟踪过去30天的得分,结果,尽管从未玩过,但这位玩家的排名却迅速上升。他在前几场比赛中输掉了很多比赛,但在最近几场比赛中都赢了大部分,这意味着他的损失越来越少,得分也因此上升。

显然,我的30天后降低分数的计划行不通。我还可以使用其他哪些方法惩罚不经常打球的球员?

到目前为止,我想出的唯一一件事是根据不活动天数所占的百分比来降低积分(即,如果用户一周内没有玩过游戏,那么他的积分仅值正常值的70%,并且他必须玩X次才能获得100%的积分)。

但是,这似乎太武断了。有没有人有其他更好的想法或建议来处理处于活跃状态的不活跃玩家?

提前致谢。

Answers:


18

听起来您正在存储每次比赛的得分,然后随着时间的推移“过期”这些得分调整。正如您所注意到的,它易于开发。

在标准的ELO实施中,您的ELO分数是永远的;它不会随着时间的流逝而“衰减”,因为以这种方式让得分离开排名系统最终会导致总体得分下降(即:1500不再意味着“平均”)。

请记住,ELO排名不是游戏玩家通常认为的“积分”;他们只是在尝试将一个玩家的技能水平相对于其他玩家进行排名,而不是奖励。这些得分不应作为对玩家的惩罚,因为它们是您必须尝试将玩家与技能水平相似的对手进行比赛的唯一工具。唯一会影响这些价值的因素是与其他排名玩家的得失。

大多数游戏都希望阻止玩家获得高分,然后消失,再也不玩了,这是排行榜显示的活动要求。如果玩家有30天(或任何其他天数)没有玩过游戏,那么他们直到出现之前都不会出现在排行榜中。当玩家返回并进行另一个排名比赛时,他们将以完整的ELO排名返回,就像从未离开过一样。如果在此期间,他们的技能水平相对于其他活跃玩家而言发生了变化,则游戏将通过与对手对抗的标准过程迅速注意到这一点并调整他们的排名。


1
+1虽然这是失败原因的正确解释,但我只是放弃了ELO并尝试了完全不同的方法。(我不知道什么,否则我会把它贴出来^^)
o0'。

4
@Lohoris那将是一个非常明智的开发选择。如果目标不是要保持人们的客观技能水平之间的有意义的比较(即:出于对接目的),那么ELO并不是用作评分机制的理想选择。甚至还有一些游戏使用引擎盖下的ELO之类的系统进行配对,同时使用完全不同的“点数”系统进行显示,这使他们奖励经常玩的人。例如,《星际争霸2》就是这样做的。
Trevor Powell

4

诸如Elo和TrueSkill之类的算法会根据每个游戏的结果来确定玩家的技能,而无需考虑时间的流逝。但是,这两种算法都带有“不确定性”因素-在Elo的情况下,K Factor通常会为新玩家设置较高的“不确定性”因素,这样他们的Elo评分将迅速收敛到其“真实”技能评分。在设定的时间或设定的游戏次数之后,K Factor通常会减少,因此评分在游戏之间的变化较小。

您所看到的可能是典型的Elo行为(取决于您的Elo实施方式):您的玩家玩的游戏少于竞争对手,这使他成为了更高水平的“新玩家” K Factor;自从他赢得比赛以来,该算法将他视为技能更高的球员,并授予他更高的排名!

请注意,排名算法通常仅用于球员之间的比较,而不能根据他们的行为来确定比赛的结果。如果您想奖励参加比赛,我建议您以另一种方式在比赛中为球员评分。一些建议:

  • 根据获胜次数为玩家评分。
  • 将点值分配给获利/损失,例如,获胜2点,亏损1点。
  • 只计算给定周/月内玩家的最佳X游戏。
  • 要求玩家玩最少数量的游戏才能“合格”。

请注意,这些解决方案都不会给出完全“公平”的结果,因为玩更多的玩家比没有玩的玩家得分更高。确保公平的唯一方法是让玩家玩相同数量的游戏。


我认为,玩得更多(同时具有相同的平均赢/输比)的玩家比没有玩得更多的玩家应该有更高的分数……
David Gouveia

3
@davidluzgouveia-严格来说,这不是“公平”的定义。在锦标赛中为玩家评分时,如果没有玩家拥有其他玩家没有的优势(不考虑技能),则结果为“公平”。话虽如此,我认为我们正在谈论的情况是朋友之间的偶然竞争。得分更多是关于鼓励参与而不是直接获胜。
布莱尔·霍洛威

是的,这是休闲比赛,而不是严格的比赛。我显然同意David的评论,这就是为什么我在这里寻求解决方案的原因。感谢您的输入!
Jemaclus 2011年

0

我不了解ELO算法,但您会奖励经常玩耍的人,而不是惩罚不经常玩的人?例如,如果您的分数类似:

Score = (Wins / Losses) * (Total Games Played) * Some_Scale_Factor

然后,经常玩游戏的人可能最终会玩更多的游戏,并且有更多机会获得更高的分数。

您可能需要更改的另一件事是防止清除旧分数对玩家的总分数产生影响。这是该球员排名上升的主要原因(也是他最终将完全跌出榜单的原因)。

同样,认真玩了一段时间并取得良好成绩的人们可能不会高兴,因为他们的成就最终会消失并消失。该系统严重令人沮丧。

仅保留每个玩家的“总比赛数”和“赢/输比”即可轻松解决此问题,即使您自己删除了分数也是如此。

有了这些信息,您就可以轻松地推断出玩家所获得的胜利和失败,并在他再次玩游戏时相应地进行更新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.