4

你好!

我正在关注本指南,了解 Microsoft TrueSkill 算法的工作原理http://www.moserware.com/2010/03/computing-your-skill.html信息非常好,但忽略了应该如何实际选择玩家(这很明显,因为我猜这对于每场比赛都是独一无二的)。

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

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

4

1 回答 1

7

我还用Python 中的 TrueSkill 算法实现了一个配对服务,我担心同样的问题。

我的匹配服务等待一段时间来收集匹配请求。然后它按用户的 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)

ps 你需要大量的用户和一个大的匹配池来获得评级系统和匹配服务的好处。

于 2013-05-02T02:06:53.103 回答