TrueSkill配对实施

时间:2013-02-24 16:46:55

标签: algorithm

您好!

我正在按照本指南关于Microsoft TrueSkill算法如何工作http://www.moserware.com/2010/03/computing-your-skill.html这些信息非常好但是不知道应该如何完成玩家的实际选择(这很明显,因为这对每个游戏都是独一无二的我猜)。

我的问题是我提出的所有算法看起来都很复杂(时间复杂度很高)。让我们说我有2支球队,每支球队应该包含4名球员。如果我蛮力,我需要检查当前可用的所有组合的匹配质量(遵循trueskill算法)。如果有很多玩家需要考虑,这将导致大量的迭代。

所以我问你是否可以给我任何关于如何更聪明地做到这一点的提示。也许你已经介绍了解决这个问题的一些信息?

1 个答案:

答案 0 :(得分:5)

我还与the TrueSkill algorithm in Python实施了配对服务,我担心同样的问题。

我的配对服务等待收集匹配请求一段时间。然后它按用户的TrueSkillμ值对请求进行排序并将它们分开。然后再等一下。它找不到最佳匹配,但速度很快。这是一个伪代码:

class Matchmaker(object):

    def matchmaking(self):
        sorted_pool = sorted(self.pool.itervalues(), key=by_rating)
        matches, self.pool = divide_uniformly(sorted_pool, expectation, minimum)
        return matches

    def run(self):
        while self.should_match():
            for match in self.matchmaking():
                if quality(match) < 0.5:
                    cancel(match)
                else:
                    succeed(match)
            time.sleep(self.interval)

P.S。您需要大量用户和大型匹配池才能获得评级系统和配对服务的好处。